Annotation of embedaddon/pimd/ChangeLog.org, revision 1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>