Annotation of embedaddon/pimd/ChangeLog.org, revision 1.1.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>