forked from troglobit/pimd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
908 lines (636 loc) · 34.2 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
#+TITLE: pimd | Change Log
#+AUTHOR: Ahmed Helmy, George Edmond Eddy, Pavlin Ivanov Radoslavov
* Version 2.1.8: October 22, 2011
** Changes & New Features
- Update docs of static Rendez-Vous Point, rp_address, configuration in man page
and example pimd.conf. Thanks to Andriy Senkovych <andriysenkovych@gmail.com>
and YAMAMOTO Shigeru <shigeru@iij.ad.jp>
- Replaced malloc() with calloc() to mitigate risk of accessing junk data and ease
debugging. Thanks to YAMAMOTO Shigeru <shigeru@iij.ad.jp>
- Extend .conf file 'rp_address' option with 'priority' field. Code changes and
documentation updates by YAMAMOTO Shigeru <shigeru@iij.ad.jp>
** Bug Fixes
- A serious bug in pim_proto.c:receive_pim_register() was found and fixed by
Jean-Pascal Billaud. In essence, the RP check was broken since the code only
looked at my_cand_rp_address, which is not set when using the rp_address config.
Everything works fine with auto-RP mode though. This issue completely breaks the
register path since the JOIN(S,G) is never sent back...
- Fix FTBFS issues reported from Debian. Later GCC versions trigger unused
variable warnings. Patches and cleanup Antonin Kral <a.kral@bobek.cz>
* Version 2.1.7: January 9, 2011
** Changes & New Features
- The previous move of runtime dump files to /var/lib/misc have been changed to
/var/run/pimd instead. This to accomodate *BSD systems that do not have the
/var/lib tree, and also recommended in the Filesystem Hierarchy Standard,
http://www.pathname.com/fhs/pub/fhs-2.3.html#VARRUNRUNTIMEVARIABLEDATA
* Version 2.1.6: January 8, 2011
** Changes & New Features
- Debian package now conflicts with smcroute, in addition to mrouted. It is only
possible to run one multicast routing daemon at a time, kernel limitation.
- The location of the dump file(s) have been moved from /var/tmp to /var/lib/misc
due to the insecure nature of /var/tmp. See more below.
** Bug Fixes
- kern.c:k_del_vif(): Fix build error on GNU/kFreeBSD
- CVE-2011-0007: Insecure file creation in /var/tmp. "On USR1, pimd will write to
/var/tmp/pimd.dump a dump of the multicast route table. Since /var/tmp is
writable by any user, a user can create a symlink to any file he wants to destroy
with the content of the multicast routing table."
* Version 2.1.5: November 21, 2010
** Changes & New Features
- Improved error messages in kern.c
- Renamed CHANGES to ChangeLog
** Bug Fixes
- Import mrouted fix: on GNU/Linux systems (only!) the call to ~kern.c:k_del_vif()~
fails with: ="setsockopt MRT_DEL_VIF on vif 3: Invalid argument"=. This is due
to differences in the Linux and *BSD ~MRT_DEL_VIF~ API. The Linux kernel expects
to receive a ~struct vifctl~ associated with the VIF to be deleted, *BSD systems
on the other hand expect to receive the index of that VIF.
Bug reported and fixed on mrouted by Dan Kruchinin <mailto:dkruchinin@acm.org>
* Version 2.1.4: September 25, 2010
** Changes & New Features
- Updates for support on Debian GNU/kFreeBSD, FreeBSD kernel with GNU userland.
** Bug Fixes
- Lior Dotan <mailto:liodot@gmail.com> reports that pimd 2.1.2 and 2.1.3 are
severely broken w.r.t. uninformed systematic replace of ~bcopy()~ with ~memcpy()~
API.
* Version 2.1.3: September 8, 2010
** Changes & New Features
- ~debug.c:syslog()~: Removed GNU:ism %m, use =strerror(errno)= instead.
- Cleanup and ansification of a couple of files: rp.c, mrt.c, vif.c, route.c
- Initialize stack variables to silence overzealous GCC on PowerPC and S/390.
Debian bug 595584, this closes pimd issue #3 on GitHub.
** Bug Fixes
- Merge bug fix for static-rp configurations from Kame's pim6sd route.c r1.28
- Close TODO item by merging in relevant changes from Kame's pim6sd vif.c r1.3
- Tried fixing ~debug.c:logit()~ build failure on Sparc due to mixup in headers
for ~tv_usec~ type.
* Version 2.1.2: September 4, 2010
** Changes & New Features
- License change on mrouted code from OpenBSD team => pimd fully free under
3-clause BSD! This was also covered in v2.1.0-alpha29.17, but now all files
have been updated, including LICENSE.mrouted.
- Code cleanup and ansification.
- Simplified Makefile so that it works seamlessly on GNU Make and BSD PMake.
- Replaced all calls to ~bzero()~ and ~bcopy()~ with ~memset()~ and ~memcpy()~.
- Use ~getopt_long()~ for argument parsing.
- Add, and improve, -h,--help output.
- Add -f,--foreground option.
- Add -v,--version option.
- Add -l,--reload-config which sends SIGHUP to a running daemon.
- Add -r,--show-routes which sends SIGUSR1 to a running daemon.
- Add -q,--quit-daemon which sends SIGTERM to a running daemon.
- Make it possible to call pimd as a regular user, for --help and --version.
- Man page cleaned up, a lot, and updated with new options.
** Bug Fixes
- Replaced dangerous old string functions with safer ~snprintf()~ and ~strlcpy()~
- Added checks for ~malloc()~ return values, all over the code base.
- Fixed issues reported by Sparse (CC=cgcc).
- Make sure to retry syscalls ~recvfrom()~ and ~sendto()~ on signal (SIGINT).
- Fix build issues on OpenBSD 4.7 and FreeBSD 8.1 thanks to Guillaume Sellier.
- Kernel include issues on Ubuntu 8.04, Linux <= 2.6.25, by Nikola Knežević
- Fix build issues on NetBSD
* Version 2.1.1: January 17, 2010
** Changes & New Features
- Bumping version again to celebrate the changes and make it easier for
distributions to handle the upgrade.
** Bug Fixes
Merged all patches from http://lintrack.org.
- ~001-debian-6.diff~: Already merged, no-op - only documenting in case anyone
wonders about it.
- ~002-better-rp_address.diff~: Support multicast group address in static
Rendez-Vous Point .conf option.
- ~003-ltfixes.diff~: Various bug fixes and error handling improvements.
- ~004-disableall.diff~: Add -N option to pimd.
- ~005-vifenable.diff~: Add enable keyword to phyint .conf option.
- ~006-dot19.diff~: The lost alpha29.18 and alpha29.19 fixes by Pavlin Radoslavov.
* Version 2.1.0, January 16, 2010
** Changes & New Features
- Integrated the latest Debian patches from ~pimd_2.1.0-alpha29.17-9.diff.gz~
- Fixed the new file include/linux/netinet/in-my.h (Debian) so that the
#else fallback uses the system netinet/in.h, which seems to work now.
- Bumped version number, this code has been available for a while now.
* Version 2.1.0-alpha29.19: January 14, 2005
** Bug Fixes
- Don't ignore PIM Null Register messages if the IP version of the
inner header is not valid.
- Add a missing bracket inside rsrr.c (a bug report and a fix by
<mailto:seyon@oullim.co.kr>)
* Version 2.1.0-alpha29.18: May 21, 2003
** Changes & New Features
- Compilation fix for Solaris 8. Though, no guarantee pimd still works on that
platform.
- Define ~BYTE_ORDER~ if missing.
- Update include/netinet/pim.h file with its lastest version
- Update the copyright message of ~include/netinet/pim_var.h~
* Version 2.1.0-alpha29.17: March 20, 2003
** Changes & New Features
- The mrouted license, LICENSE.mrouted, updated with BSD-like license!! Thanks to
the OpenBSD folks for the 2 years of hard work to make this happen:
http://www.openbsd.org/cgi-bin/cvsweb/src/usr.sbin/mrouted/LICENSE
- Moved the pimd contact email address upfront in README. Let me repeat that here:
If you have any questions, suggestions, bug reports, etc., do NOT send them to
the PIM IETF Working Group mailing list! Instead, use the contact email address
specified in README.
* Version 2.1.0-alpha29.16: February 18, 2003
** Bug Fixes
- Compilation bugfix for Linux. Bug report by Serdar Uezuemcue
<mailto:serdar@eikon.tum.de>
* Version 2.1.0-alpha29.15: February 12, 2003
** Bug Fixes
- Routing socket descriptor leak. Bug report and fix by SUZUKI Shinsuke
<mailto:suz@crl.hitachi.co.jp>; incorporated back from pim6sd.
- PIM join does not go upstream. Bug report and fix by SUZUKI Shinsuke
<mailto:suz@crl.hitachi.co.jp>; incorporated back from pim6sd.
#+BEGIN_EXAMPLE
[problem]
PIM join does not go upstream in the following topology, because oif-list
is NULL after subtracting iif from oif-list.
receiver---rtr1---|
rtr2---|---rtr3----sender
rtr1's nexthop to sender = rtr2
rtr2's nexthop to sender = rtr3
[reason]
Owing to a difference between RFC2362 and the new pim-sm draft.
[solution]
Prunes iif from oiflist when installing it into kernel, instead of
PIM route calculation time.
#+END_EXAMPLE
* Version 2.1.0-alpha29.14: February 10, 2003
** Bug Fixes
- Bugfix in calculating the netmask for POINTOPOINT interface in config.c.
Bug report by J.W. (Bill) Atwood <mailto:bill@cs.concordia.ca>
- ~rp.c:rp_grp_match()~: SERIOUS bugfix in calculating the RP per group when there
are a number of group prefixes in the Cand-RP set. Bug report by Eva Pless
<mailto:eva.pless@imk.fraunhofer.de>
* Version 2.1.0-alpha29.13: November 7, 2002
** Bug Fixes
- Bugfix in rp.c ~bootstrap_initial_delay()~ in calculating BSR election delay.
Fix by SAKAI Hiroaki <mailto:sakai.hiroaki@finet.fujitsu.com>
* Version 2.1.0-alpha29.12: September 26, 2002
** Bug Fixes
- Increase size of send buffers in the kernel. Bug report by Andrea Gambirasio
<mailto:andrea.gambirasio@softsolutions.it>
* Version 2.1.0-alpha29.11: July 8, 2002
** Bug Fixes
Bug reports and fixes by SAKAI Hiroaki <mailto:sakai.hiroaki@finet.fujitsu.com>
- ~init_routesock()~: Bugfix: initializing a forgotten variable. The particular
code related to that variable is commented-out by default, but a bug is a bug.
- ~main.c:restart()~: Bugfix: close the ~udp_socket~ only when it is
is different from ~igmp_socket~.
- ~main.c:main()~: if SIGHUP signal is received, reconstruct readers and nfds
- Three serious bug fixes thanks to Jiahao Wang <mailto:jiahaow@yahoo.com.cn> and
Bo Cheng <mailto:bobobocheng@hotmail.com>:
- ~pim_proto.c:receive_pim_join_prune()~: two bugfixes related to the processing of (*,*,RP)
- ~pim_proto.c:add_jp_entry()~: Bugfix regarding adding prune entries
- Remove the FTP URL from the various README files, and replace it with an HTTP
URL, because the FTP server on catarina.usc.edu is not operational anymore.
* Version 2.1.0-alpha29.10: April 26, 2002
** Bug Fixes
- Widen the space for "Subnet" addresses printed under "Virtual Interface Table"
- Added (commented-out code) to enable different interfaces
to belong to overlapping subnets. See around line 200 in config.c
- Bugfix in handling of Join/Prune messages when there is one join and one prune
for the same group. Thanks to Xiaofeng Liu <mailto:liu_xiao_feng@yahoo.com>.
* Version 2.1.0-alpha29.9: November 13, 2001
** Changes & New Features
First three entries contributed by Hiroyuki Komatsu <mailto:komatsu@taiyaki.org>
- Print line number if there is conf file error.
- If there is an error in the conf file, pimd won't start.
- GRE configuration examples added to README.config.
- New file README.debug (still very short though).
** Bug Fixes
- Increase the config line buffer size to 1024. Bug fix by Hiroyuki Komatsu
<mailto:komatsu@taiyaki.org>
* Version 2.1.0-alpha29.8: September 16, 2001
** Changes & New Features
- Better log messages for point-to-point links in config.c. Thanks to Hitoshi
Asaeda <mailto:asaeda@yamato.ibm.com>
* Version 2.1.0-alpha29.7: September 10, 2001
** Changes & New Features
- Added "phyint altnet" (see pimd.conf for usage) for allowing some senders look
like directly connected to a local subnet. Implemented by Marian Stagarescu
<mailto:marian@bile.cidera.com>
- Added "phyint scoped" (see pimd.conf for usage) for administartively disabling
the forwarding of multicast groups. Implemented by Marian Stagarescu
<mailto:marian@bile.cidera.com>
- The License has changed from the original USC to the more familiar BSD-like (the
KAME+OpenBSD guys brought to my attention that the original working in the USC
license "...and without fee..." is ambiguous and makes it sound that noone can
distribute pimd as part of some other software distribution and charge for that
distribution.
- RSRR disabled by default in Makefile
** Bug Fixes
- Memory leaks bugs fixed in rp.c, thanks to Sri V <mailto:vallepal@yahoo.com>
- Compilation problems for RedHat-7.1 fixed. Bug report by Philip Ho
<mailto:cbho@ie.cuhk.edu.hk>
- PID computation fixed (it should be recomputed after a child ~fork()~).
Thanks to Marian Stagarescu <mailto:marian@bile.cidera.com>
- ~find_route()~-related bug fixes (always explicitly check for NULL return). Bug
report by Marian Stagarescu <mailto:marian@bile.cidera.com>
- Bug fix re. adding a local member with older ciscos (in ~add_leaf()~). Bug report
by Marian Stagarescu <mailto:marian@bile.cidera.com>
- Added explicit check whether ~BYTE_ORDER~ in pimd.h is defined. Bug report by
<mailto:mistkhan@indiatimes.com>
* Version 2.1.0-alpha29.6: May 4, 2001
** Bug Fixes
- Bug fixes in processing Join/Prune messages. Thanks to Sri V
<mailto:vallepal@yahoo.com>
* Version 2.1.0-alpha29.5: February 22, 2001
** Changes & New Features
- ~VIFM_FORWARDER()~ macro renamed to ~VIFM_LASTHOP_ROUTER~.
- Mini-FAQ entries added to README.
** Bug Fixes
- When there is a new member, ~add_leaf()~ is called by IGMP code for any router,
not only for a DR. The reason is because not only the DR must know about local
members, but the last-hop router as well (so eventually it will initiate a SPT
switch). Similar fixes to ~add_leaf()~ inside route.c as well. Problem
reported by Hitoshi Asaeda <mailto:asaeda@yamato.ibm.com>. XXX: Note the
lenghty comment in the beginning of ~add_leaf()~ about a pimd desing problem
that may result in SPT switch not initiated immediately by the last-hop router.
- DR entry timer bug fix in timer.c: When (*,G)'s iif and (S,G)'s iif are not
same, (S,G)'s timer for the DR doesn't increase. Reported indirectly by
<mailto:toshiaki.nakatsu@fujixerox.co.jp>
* Version 2.1.0-alpha29.4: December 1, 2000
** Changes & New Features
- README cleanup + Mini-FAQ added
- ~igmp_proto.c~: printf argument cleanup (courtesy KAME)
- ~main.c:restart()~: forgotten printf argument added (courtesy KAME)
** Bug Fixes
- ~kern.c:k_stop_pim()~: Fix the ordering of ~MRT_PIM~ and ~MRT_DONE~,
thanks to Hitoshi Asaeda <mailto:asaeda@yamato.ibm.co.jp>.
- ~route.c:add_leaf()~: mrtentry creation logic bug fix. If the router is not a
DR, a mrtentry is never created. Tanks to Hitoshi Asaeda
<mailto:asaeda@yamato.ibm.co.jp> & (indirectly)
<mailto:toshiaki.nakatsu@fujixerox.co.jp>
- ~pim_proto.c~: Two critical bug fixes. J/P prune suppression related message
and J/P message with (*,*,RP) entry inside. Thanks to Azzurra Pantella
<mailto:s198804@studenti.ing.unipi.it> and Nicola Dicosmo from University of
Pisa
- ~pim_proto.c:receive_pim_bootstrap()~: BSR-related fix from Kame's pim6sd.
Even when the BSR changes, just schedule an immediate advertisemnet of C-RP-ADV,
instead of sending message, in order to avoid sending the advertisement to the
old BSR. In response to comment from <mailto:toshiaki.nakatsu@fujixerox.co.jp>
* Version 2.1.0-alpha29.3: October 13, 2000
** Bug Fixes
- ~ADVANCE()~ bug fix in routesock.c (if your system doesn't have ~SA_LEN~)
thanks to Eric S. Johnson <mailto:esj@cs.fiu.edu>
* Version 2.1.0-alpha29.2: October 13, 2000
NB: THIS pimd VERSION WON'T WORK WITH OLDER PIM-SM KERNEL PATCHES (kernel
patches released prior to this version)!
** Changes & New Features
- The daemon that the kernel will prepare completely the inner multicast packet for
PIM register messages that the kernel is supposed to encapsulate and send to the
RP.
- Now pimd compiles on OpenBSD-2.7. PIM control messages exchange test passed.
Ddon't have the infrastructure to perform more complete testing.
- ~main.c:cleanup()~: Send ~PIM_HELLO~ with holdtime of '0' if pimd is going away,
thanks to JINMEI Tatuya <mailto:jinmei@isl.rdc.toshiba.co.jp>
- =include/netinet/pim.h= updated
- pimd code adapted to the new =struct pim= definition.
- Added ~PIM_OLD_KERNEL~ and ~BROKEN_CISCO_CHECKSUM~ entries in the Makefile.
- Don't ignore kernel signals if any of src or dst are NULL.
- Don't touch ~ip_id~ on a PIM register message
- README cleanup: kernel patches location, obsoleted systems clarification, etc.
- ~k_stop_pim()~ added to ~cleanup()~ in ~main.c~ (courtesy Kame)
** Bug Fixes
- ~RANDOM()~-related bug fix re. ~jp_value~ calculation in ~pim_proto.c~,
thanks to JINMEI Tatuya <mailto:jinmei@isl.rdc.toshiba.co.jp>
- ~realloc()~ related memory leak bug in ~config_vifs_from_kernel()~ in config.c
courtesy Kame's pim6sd code.
- Solaris-8 fixes thanks to Eric S. Johnson <mailto:esj@cs.fiu.edu>
- ~BROKEN_CISCO_CHECKSUM~ bug fix thanks to Eric S. Johnson
<mailto:esj@cs.fiu.edu> and Hitoshi Asaeda.
- ~main.c~: 1000000 usec -> 1 sec 0 usec. Fix courtesy of the Kame project
- ~main.c:restart()~ fixup courtesy of the Kame project
- various min. message length check for the received control messages
courtesy of the Kame project. XXX: the pimd check is not enough!
- VIF name string comparison fix in ~routesock.c:getmsg()~ courtesy of the Kame
project
- missing brackets added inside ~age_routes()~ (a bug that will show up
only if ~KERNEL_MFC_WC_G~ was defined); courtesy of the Kame project
* Version 2.1.0-alpha28: March 15, 2000
** Changes & New Features
- added #ifdef ~BROKEN_CISCO_CHECKSUM~ (disabled by default) to make cisco RPs
happy (read the comments in pim.c)
- added #ifdef ~PIM_TYPEVERS_DECL~ in netinet/pim.h as a workaround that ANSI-C
doesn't guarantee that bit-fields are tightly packed together (although all
modern C compilers should not create a problem).
** Bug Fixes
- Fixes to enable point-to-point interfaces being added correctly, thanks to
Roger Venning <mailto:Roger.Venning@corpmail.telstra.com.au>
- A number of minor bug fixes
* Version 2.1.0-alpha27: January 21, 2000
NB: this release may the the last one from 2.1.0. The next release will be 2.2.0 and
there will be lots of changes inside.
** Bug Fixes
- Bug fix in ~rp.c:add_grp_mask()~ and ~rp.c:delete_grp_mask()~: in some cases if
the RPs are configured with nested multicast prefixes, the add/delete may
fail. Thanks to Hitoshi Asaeda and the KAME team for pointing out this one.
* Version 2.1.0-alpha26: October 28, 1999
** Bug Fixes
- Bug fix in ~receive_pim_register()~ in ~pim_proto.c:ntohl()~ was missing
inside ~IN_MULTICAST()~. Thanks to Fred Griffoul <mailto:griffoul@ccrle.nec.de>
- Bug report and fix by Hitoshi Asaeda <mailto:asaeda@yamato.ibm.co.jp> in
~pim_proto.c:receive_pim_cand_rp_adv()~ (if a router is not a BSR). Another bug
in ~rp.c:delete_grp_mask_entry()~: an entry not in the head of the list was not
deleted propertly.
- Some ~VIFF_TUNNEL~ checks added or deleted in various places. Slowly preparing
pimd to be able to work with GRE tunnels...
* Version 2.1.0-alpha25: August 30, 1999
Bug reports and fixes by Hitoshi Asaeda <mailto:asaeda@yamato.ibm.co.jp> inside
~parse_reg_threshold()~ and ~parse_data_threshold()~ in config.c
** Changes & New Features
- Successfully added multicast prefixes configured in pimd.conf are displayed at
startup
- Use =include/freebsd= as FreeBSD-3.x include files and =include/freebsd2= for
FreeBSD-2.x.
** Bug Fixes
- Test is performed whether a ~PIM_REGISTER~ has invalid source and/or group
address of the internal packet.
* Version 2.1.0-alpha24: August 9, 1999
** Changes & New Features
- ~PIM_DEFAULT_CAND_RP_ADV_PERIOD~ definition set to 60, but default 'time' value
for inter Cand-RP messages is set in pimd.conf to 30 sec.
- ~PIM_REGISTER~ checksum verification in ~receive_pim_register()~ relaxed for
compatibility with some older routers. The checksum has to be computed only over
the first 8 bytes of the PIM Register (i.e. only over the header), but some older
routers might compute it over the whole packet. Hence, the checksum verification
is over the first 8 bytes first, and if if it fails, then over the whole
packet. Thus, pimd that is RP should still work with older routers that act as
DR, but if an older router is the RP, then pimd cannot be the DR. Sorry, don't
know which particular routers and models create the checksum over the whole PIM
Register (if there are still any left).
* Version 2.1.0-alpha23: May 24, 1999
** Changes & New Features
- Finally pimd works under Linux (probably 2.1.126, 2.2.x and 2.3.x). However, a
small fix in the kernel ~linux/net/ipv4/ipmr.c~ is necessary. In function
~pim_rcv()~, remove the call to ~ip_compute_csum()~:
#+BEGIN_SRC c
--- linux/net/ipv4/ipmr.c.org Thu Mar 25 09:23:34 1999
+++ linux/net/ipv4/ipmr.c Mon May 24 15:42:45 1999
@@ -1342,8 +1342,7 @@
if (len < sizeof(*pim) + sizeof(*encap) ||
pim->type != ((PIM_VERSION<<4)|(PIM_REGISTER)) ||
(pim->flags&PIM_NULL_REGISTER) ||
- reg_dev == NULL ||
- ip_compute_csum((void *)pim, len)) {
+ reg_dev == NULL) {
kfree_skb(skb);
return -EINVAL;
}
#+END_SRC
- in pimd.conf "phyint" can be specified not only by IP address, but
by name too (e.g. "phyint de1 disable")
- in pimd.conf 'preference' and 'metric' can be specified per "phyint"
Note that these 'preference' and 'metric' are like per iif.
- ~MRT_PIM~ used (again) instead of ~MRT_ASSERT~ in kern.c. The problem is that
Linux has both ~MRT_ASSERT~ and ~MRT_PIM~, while *BSD has only ~MRT_ASSERT~.
#+BEGIN_SRC c
#ifndef MRT_PIM
#define MRT_PIM MRT_ASSERT
#endif
#+END_SRC
- Rely on ~__bsdi__~, which is defined by the OS, instead of -DBSDI in Makefile,
change by Hitoshi Asaeda. Similarly, use ~__FreeBSD__~ instead of -DFreeBSD
- Linux patches by Fred Griffoul <mailto:griffoul@ccrle.nec.de> including
a ~netlink.c~ instead of ~routesock.c~
- ~vif.c:zero_vif()~: New function
** Bug Fixes
All bug reports thanks to Kaifu Wu <mailto:kaifu@3com.com>
- Linux-related bug fixes regarding raw IP packets byte ordering
- Join/Prune message bug fixed if the message contains several groups joined/pruned
* Version 2.1.0-alpha22: November 11, 1998
Bug reports by Jonathan Day <mailto:jd9812@my-dejanews.com>
** Bug Fixes
- Bug fixes to compile under newer Linux kernel (linux-2.1.127) To compile for
older kernels ( ver < ???), add ~-Dold_Linux~ to the Makefile
- For convenience, the ~include/linux/netinet/{in.h,mroute.h}~ files are added,
with few modifications applied.
* Version 2.1.0-alpha21: November 4, 1998
** Bug Fixes
- ~pim_proto.c:join_or_prune()~: Bug fixes in case of (S,G) overlapping with
(*,G). Bug report by Dirk Ooms <mailto:Dirk.Ooms@alcatel.be>
- ~route.c:change_interfaces()~: Join/Prune (*,G), (*,*,RP) fire timer
optimization/fix.
* Version 2.1.0-alpha20: August 26, 1998
** Changes & New Features
- (Almost) all timers manipulation now use macros
- ~pim.h~ and ~pim_var.h~ are in separate common directory
- Added BSDI definition to ~pim_var.h~, thanks to Hitoshi Asaeda.
** Bug Fixes
- fix TIMEOUT definitions in difs.h (bug report by Nidhi Bhaskar)
(originally, if timer value less than 5 seconds, it won't become 0)
It is HIGHLY recommended to apply that fix, so here it is:
#+BEGIN_SRC c
-------------BEGIN BUG FIX-------------------
1) Add the following lines to defs.h (after #define FALSE):
#ifndef MAX
#define MAX(a,b) (((a) >= (b))? (a) : (b))
#define MIN(a,b) (((a) <= (b))? (a) : (b))
#endif /* MAX & MIN */
2) Change the listed below TIMEOUT macros to:
#define IF_TIMEOUT(timer) \
if (!((timer) -= (MIN(timer, TIMER_INTERVAL))))
#define IF_NOT_TIMEOUT(timer) \
if ((timer) -= (MIN(timer, TIMER_INTERVAL)))
#define TIMEOUT(timer) \
(!((timer) -= (MIN(timer, TIMER_INTERVAL))))
#define NOT_TIMEOUT(timer) \
((timer) -= (MIN(timer, TIMER_INTERVAL)))
---------------END BUG FIX-------
#+END_SRC
* Version 2.1.0-alpha19: July 29, 1998
Both bug reports by Chirayu Shah <mailto:shahzad@torrentnet.com>-
** Bug Fixes
- bug fix in ~find_route()~ when searching for (*,*,RP)
- bug fix in ~move_kernel_cache()~: no need to do ~move_kernel_cache()~
from (*,*,R) to (*,G) first when we call ~move_kernel_cache()~ for (S,G)
* Version 2.1.0-alpha18: May 29, 1998
** Changes & New Features
- Now compiles under Linux (haven't checked whether the PIMv2 kernel support in
linux-2.1.103 works)
** Bug Fixes
- ~parse_default_source*()~ bug fix (bug reports by Nidhi Bhaskar)
- allpimrouters deleted from igmp.c (already defined in pim.c)
- igmpmsg defined for IRIX
* Version 2.1.0-alpha17: May 21, 1998
** Changes & New Features
- (*,G) MFC kernel support completed and verified. Compile with ~KERNEL_MFC_WC_G~
defined in Makefile, but then must use it only with a kernel that supports (*,G),
e.g. =pimkern-PATCH_7=. Currently, kernel patches available for FreeBSD and
SunOS only.
** Bug Fixes
- ~MRTF_MFC_CLONE_SG~ flag set after ~delete_single_kernel_cache()~ is called
* Version 2.1.0-alpha16: May 19, 1998
** Changes & New Features
- PIM registers kernel encapsulation support. Build with ~PIM_REG_KERNEL_ENCAP~
defined in Makefile.
- (*,G) MFC support. Build with ~KERNEL_MFC_WC_G~ defined in Makefile. However,
~MFC_WC_G~ is still not supported with ~pimkern-PATCH_6~, must disable it for now.
- ~mrt.c:delete_single_kernel_cache_addr()~: New function, uses source, group to
specify an MFC to be deleted
* Version 2.1.0-alpha15: May 14, 1998
- Another few bug fixes related to NetBSD definitions thanks to Heiko W.Rupp
<mailto:hwr@pilhuhn.de>
* Version 2.1.0-alpha14: May 12, 1998
- A few bug fixes related to NetBSD definitions thanks to Heiko W.Rupp
<mailto:hwr@pilhuhn.de>
* Version 2.1.0-alpha13: May 11, 1998
** Changes & New Features
- If the RP changes, the necessary actions are taken to pass the new RP address to
the kernel. To be used for kernel register encap. support. Wnat needs to be done
is: (a) add =rp_addr= entry to the mfcctl structure, and then just set it in
~kern.c:k_chf_mfc()~. Obviously, the kernel needs to support the register
encapsulation (instead of sending WHOLEPKT to the user level). In the near few
days will make the necessary kernel changes.
- ~change_interfaces()~: Added "flags" argument. The only valid flag is
~MFC_UPDATE_FORCE~, used for forcing kernel call when only the RP changes.
- ~k_chg_mfc()~ has a new argument: rp_addr. To be used for kernel register
encapsulation support
- ~MRT_PIM~ completely replaced by ~MRT_ASSERT~
- ~move_kernel_cache()~: Argument ~MFC_MOVE_FORCE~ is a flag instead of TRUE/FALSE
- ~process_cache_miss()~: removed unneeded piece of code
* Version 2.1.0-alpha12: May 10, 1998
** Changes & New Features
- Use the cleaned up ~netinet/pim.h~
- Remove the no needed anymore pim header definition in ~pimd.h~
- Don't use ~MRT_PIM~ in in kern.c anymore, replaced back with ~MRT_ASSERT~.
- ~added default_source_metric~ and ~default_source_preference~ (1024) because the
kernel's unicast routing table is not a good source of info; configurable in
pimd.conf
- Can now compile under NetBSD-1.3, thanks to Heiko W.Rupp <mailto:hwr@pilhuhn.de>
** Bug Fixes
- Incorrect setup of the borderBit and nullRegisterBit (different for big and
little endian machines) fixed; ~*_BORDER_BIT~ and ~*NULL_REGISTER_BIT~ redefined
- don't send ~pim_assert~ on tunnels or register vifs (if for whatever reason we
receive on such interface)
- ignore ~WRONGVIF~ messages for register and tunnel vifs (the cleaned up
kernel mods dont send such signal, but the older (before May 9 '98) pimd
mods that signaling was enabled
* Version 2.1.0-alpha11: March 16, 1998
** Changes & New Features
- ~vif.c:find_vif_direct_local()~: New function, used in ~routesock.c~, ~igmp_proto.c~
- Use ~MFC_MOVE_FORCE/MFC_MOVE_DONT_FORCE~ flag in ~mrt.c~, ~route.c~,
~pim_proto.c~, when need to move the kernel cache entries between (*,*,RP),
(*,G), (S,G)
- new timer related macros: ~SET_TIMER()~, ~FIRE_TIMER()~, ~IF_TIMER_SET()~,
~IF_TIMER_NOT_SET()~
** Bug Fixes
- ~timer.c:age_routes()~: bunch of fixes regarding J/P message fragmentation
- ~route.c:process_wrong_iif()~: (S,G) SPT switch bug fix: ANDed =MRTF_RP=
fixed to =~MRTF_RP=
- ~pim_proto.c~ & ~timer.c~: (S,G) Prune now is sent toward RP, when iif
toward S and iif toward RP are different
- ~pim_proto.c:join_or_prune()~ bug fixes
- ~pim_proto.c~: (S,G)Prune entry's timer now set to J/P message holdtime
- ~pim_proto.c:receive_pim_join_prune()~: Ensure pruned interfaces are correctly
reestablished
- ~timer.c:age_routes()~: now (S,G) entry with local members (inherited from
(*,G)) is timeout propertly
- ~timer.c:age_routes()~: (S,G) J/P timer restarted propertly
- ~timer.c:age_routes()~: check also the (S,G)RPbit entries in the forwarders and
RP and eventually switch to the shortest path if data rate too high
- ~route.c:process_wrong_vif()~ fire J/P timer
- ~route.c:switch_shortest_path()~: reset the iif toward S if there is already
(S,G)RPbit entry
* Version 2.1.0-alpha10: March 3, 1998
Temp. non-public release.
** Changes & New Features
- `interval` can be applied for data rate check. The statement in ~pimd.conf~
that only the default value will be used is not true anymore.
- The RP-initiated and the forwarder-initiated (S,G) switch threshold rate
can be different.
- ~pim_proto.c:receive_pim_register()~: check if I am the RP for that group,
and if "no", send ~PIM_REGISTER_STOP~ (XXX: not in the spec, but should be!)
- ~pim_proto.c:receive_pim_register_stop()~: check if the ~PIM_REGISTER_STOP~
originator is really the RP, before suppressing the sending of the PIM
registers. (XXX: not in the spec but should be there)
- ~rp.c:check_mrtentry_rp()~: new function added to check whether the RP
address is the corresponding one for the given mrtentry
- ~debug.c:dump_mrt()~ timer values added
- ~route.c~: ~add_leaf()~, ~process_cache_miss()~, ~process_wrong_iif()~
no routing entries created for the LAN scoped addresses
- ~DEBUG_DVMRP_DETAIL~ and ~DEBUG_PIM_DETAIL~ added
** Bug Fixes
- ~mrt.c:add_kernel_cache()~: no kernel cache duplicates
- ~mrt.c:move_kernel_cache()~: if the iif of the (*,*,R) (or (*,G))
and (S,G) are different, dont move the cache entry "UP"
- ~timer.c:age_routes()~: (S,G) ~add_jp_entry()~ flag fixed, SPT switch related.
- ~kern.c:k_get_sg_cnt()~: modified to compensate for the kernel's return code
bug for getting (S,G) byte count (~SIOCGETSGCNT~)
- ~pim_proto.c:receive_pim_register()~: if the (S,G) oif is NULL, now
checks whether the iif is ~register_vif~
* Version 2.1.0-alpha9: February 18, 1997
** Changes & New Features
- "non-commersial" statement deleted from the copyright message
- mrinfo support added
- mtrace support added (not completed and not enough tested)
- if invalid local address for =cand_rp= or =cand_bootstrap_router= in =pimd.conf=,
automatically will use the largest local multicast enabled address
- "include" directory for FreeBSD and SunOS added, so now pimd can be compiled
without having the necesary "include" files added to your system. Probably a bad
idea and may remove it later.
- some default values for the IP headers of the IGMP and PIM packets are fixed
- ~VIFF_PIM_NBR~ and ~VIFF_DVMRP_NBR~ flags added
- ~VIFF_REGISTER~ now included in the RSRR vifs report
- ~find_route()~ debug messages removed
- #ifdef for ~HAVE_SA_LEN~ corrected
- ~debug.c~: small fixes
* Version 2.1.0-alpha8: November 23, 1997
** Bug Fixes
- BSDI related bug fix in defs.h
- small changes in Makefile
* Version 2.1.0-alpha7: November 23, 1997
** Changes & New Features
- RSRR support for (*,G) completed
- BSDI 3.0/3.1 support by Hitoshi Asaeda <mailto:asaeda@yamato.ibm.co.jp>
(the kernel patches will be available soon)
- Improved debug messages format (thanks to Hitoshi Asaeda)
- A new function ~netname()~ for network IP address print instead of ~inet_fmts()~,
thanks to Hitoshi Asaeda.
- ~pimd.conf~: format changed
* Version 2.1.0-alpha6: November 20, 1997
** Bug Fixes
- Remove the inherited leaves from (S,G) when a receiver drops membership
- some parameters when calling ~change_interface()~ fixed
- use ~send_pim_null_register~ + take the appropriate action when the register
suppression timer expires
- bug fix related to choosing the largest local IP address for little endian
machines.
* Version 2.1.0-alpha5
** Bug Fixes
- ~main.c:main()~: startup message fix
- ~timer.c:age_routes()~: bug fix in debug code
* Version 2.1.0-alpha4: October 31, 1997
** Changes & New Features
- Minor changes, so pimd now compiles for SunOS 4.1.3 (cc, gcc)
** Bug Fixes
- ~pim_proto.csend_periodic_pim_join_prune()~: bug fix thanks to SunOS cc
warning(!), only affects the (*,*,RP) stuff.
- ~pimd.conf~: two errors, related to the rate limit fixed
* Version 2.1.0-alpha3: October 13, 1997
** Changes & New Features
- ~Makefile~: cleanup
- ~defs.h~: cleanup
- ~routesock.c~: cleanup
** Bug Fixes
- ~igmp_proto.c:accept_group_report()~: bug fixes
- ~pim_proto.c:receive_pim_hello()~: bug fixes
- ~route.c:change_interfaces()~: bug fixes
- ~rp.c~: bug fixes in ~init_rp_and_bsr()~, ~add_cand_rp()~, and
~create_pim_bootstrap_message()~
* Version 2.1.0-alpha2: September 23, 1997
** Changes & New Features
- ~Makefile~: "make diff" code added
- ~debug.c~: debug output slightly changed
** Bug Fixes
- ~defs.h:*TIMEOUT()~: definitions fixed
- ~route.c~: bugs fixed in ~change_interface()~ and ~switch_shortest_path()~
- ~timer.c:age_routes()~: number of bugs fixed
* Version 2.1.0-alpha1: August 26, 1997
** Changes & New Features
First alpha version of the "new, up to date" pimd. RSRR support + Solaris
support added. Many functions rewritten and/or modified.
# Local Variables:
# mode: org
# End: