File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / pimd / ChangeLog.org
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Jun 12 07:59:37 2017 UTC (6 years, 11 months ago) by misho
Branches: pimd, MAIN
CVS tags: v2_3_2, HEAD
pimd 2.3.2

    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>