Annotation of embedaddon/mrouted/ChangeLog, revision 1.1

1.1     ! misho       1: #+TITLE:    mrouted | Change Log
        !             2: #+AUTHOR:    Steve Deering, Ajit Thyagarajan, Bill Fenner
        !             3: 
        !             4: * Release 3.9.5: March 5, 2011
        !             5: ** Changes & New Features
        !             6:   - The location of dump files have been moved from /var/tmp to /var/run/mrouted
        !             7:     due to the insecure nature of /var/tmp.  See more below.
        !             8: 
        !             9:   - Add -r,--show-routes which sends SIGUSR1 to a running daemon, waits for the
        !            10:     file /var/run/mrouted/mrouted.dump to be updated, and then displays the
        !            11:     result on stdout.
        !            12: 
        !            13: ** Bug Fixes
        !            14:   - The linked list implementation used in route.c caused several problems and
        !            15:     as a result has been refactored.  This fixes several SIGSEGV crashes a couple
        !            16:     of memory leaks as well as GitHub issue #7.
        !            17: 
        !            18:   - Ported from pimd after CVE-2011-0007: Insecure file creation in /var/tmp.
        !            19:     "On USR1, pimd will write to /var/tmp/pimd.dump a dump of the multicast route
        !            20:     table. Since /var/tmp is writable by any user, a user can create a symlink to any
        !            21:     file he wants to destroy with the content of the multicast routing table."
        !            22: 
        !            23: * Release 3.9.4: November 19, 2010
        !            24: 
        !            25: ** Bug Fixes
        !            26:   - ~kern.c:k_del_vif()~ does not work properly in Linux.
        !            27: 
        !            28:     When some interface (known by mrouted) goes down, mrouted tries to remove
        !            29:     related VIF by calling ~stop_vif()~, which in turn calls ~k_del_vif()~.  After
        !            30:     ~k_del_vif()~ is called, mrouted exits with the following error:
        !            31: 
        !            32:     setsockopt ~MRT_DEL_VIF~ on vif 3: Invalid argument
        !            33: 
        !            34:     The reason for this is due to differences in the Linux and *BSD ~MRT_DEL_VIF~
        !            35:     API.  The Linux kernel expects to receive a ~struct vifctl~ associated with the
        !            36:     VIF to be deleted, *BSD systems on the other hand expect to receive the index
        !            37:     of that VIF.
        !            38: 
        !            39:     Fix contributed by Dan Kruchinin <mailto:dkruchinin@acm.org>
        !            40: 
        !            41: * Release 3.9.3: October 11, 2010
        !            42: 
        !            43: ** Changes & New Features
        !            44:   - Update man page with =--long-options=, missing sections and improve debug help.
        !            45: 
        !            46:   - Cleanup Makefile for use with BSD PMake as well as GNU Make.
        !            47: 
        !            48: ** Bug Fixes
        !            49: 
        !            50:   - Fix =NULL= pointer dereference in conf file parser.  Problem will arise for all
        !            51:     interfaces that at one point might not have an address.
        !            52: 
        !            53:     Reported by Dan Kruchinin <mailto:dkruchinin@acm.org>
        !            54: 
        !            55:   - Fix problem with running the tunnel directive on OpenVPN, PPTP, L2TP tunnels as
        !            56:     well as PPP links.  All of which use a 255.255.255.255 netmask on their interfaces.
        !            57: 
        !            58:     See http://openvpn.net/archive/openvpn-users/2004-04/msg00003.html for original
        !            59:     problem report.
        !            60: 
        !            61:     Fix contributed by Dan Kruchinin <mailto:dkruchinin@acm.org>
        !            62: 
        !            63:   - ~route.c:accept_probe()~: Fix missing check of ~malloc()~ return value.
        !            64: 
        !            65:   - ~vif.c:SetTimer()~: Dito.
        !            66: 
        !            67:   - ~route.c:accept_report()~: Fix potential stack overflow issue.  Also added checks
        !            68:     to prevent overstepping array boundaries in local ~rt[]~ array when parsing route
        !            69:     report messages.
        !            70: 
        !            71: * Release 3.9.2: August 16, 2010
        !            72: 
        !            73: ** Changes & New Features
        !            74: 
        !            75:   - Reduce code duplication on platforms carrying ~strlcpy()~ and ~strtonum()~.
        !            76: 
        !            77: ** Bug Fixes
        !            78:   - Fix file paths for GNU/Linux installations, they too use ~/var/tmp~ rather than
        !            79:     ~/usr/tmp~ today.
        !            80: 
        !            81:   - Code fixes in RSRR code (disabled by default).
        !            82: 
        !            83:   - Fix possible build error in strtonum.c on platforms not supporting ~LLONG_MIN/MAX~
        !            84: 
        !            85: * Release 3.9.1: April 10, 2010
        !            86: 
        !            87: Biggest news in this release is that all OpenBSD patches as of this date are merged.
        !            88: 
        !            89: ** Changes & New Featues
        !            90: 
        !            91:   - Change license to 3-clause BSD on mrinfo, RSRR and mrouted sources, thanks to
        !            92:     hard working OpenBSD team!
        !            93: 
        !            94:   - Support for older yacc versions.
        !            95: 
        !            96: ** Bug Fixes
        !            97: 
        !            98:   - OpenBSD, all patches from their CVS repository have been merged.  Things like
        !            99:     missing free for malloc, missing checks for malloc return value, restart syscalls
        !           100:     after signal (=EINTR=).  As well as a heap of neat code cleanup and modernization.
        !           101: 
        !           102: * Release 3.9.0: January 23, 2010
        !           103: 
        !           104: ** Changes & New Features
        !           105: 
        !           106:   - Debian, build fixes for GNU/Linux.
        !           107: 
        !           108:   - FreeBSD ports collection, major API cleanups.
        !           109: 
        !           110:   - Buildroot, some minor cleanups of old deprecated APIs
        !           111: 
        !           112:   - Philippe Troin <mailto:phil@fifi.org>, added more compiler warnings and fixed the
        !           113:     problems uncovered by that.
        !           114: 
        !           115: * 3.9-beta3: April 26, 1999
        !           116: 
        !           117: ** Changes & New Features
        !           118: 
        !           119:   - A ~blaster~ keyword for mrouted.conf, to turn on handling of routers (mostly
        !           120:     ciscos) which overwhelm the socket buffers by blasting the whole routing table at
        !           121:     once.
        !           122: 
        !           123:   - A ~notransit~ keyword; routes learned on a ~notransit~ vif will not be
        !           124:     readvertised onto another ~notransit~ vif.
        !           125: 
        !           126:   - The 500 kbps default rate limit on tunnels has been removed.
        !           127: 
        !           128:   - An ICMP listener which logs ICMP errors which appear to be in response to
        !           129:     tunnel packets that we sent.
        !           130: 
        !           131:   - A tunnel traffic encapsulator, which encapsulates control traffic inside the
        !           132:     tunnel instead of unicasting it ~beside~ the tunnel.  This is turned off by
        !           133:     default; use ~beside off~ to turn it on.
        !           134: 
        !           135:   - A ~force_leaf~ flag to ignore any potential neighbors on a given interface.
        !           136: 
        !           137: ** Bug Fixes
        !           138: 
        !           139:   - There was a bug handling routing updates which caused random black holes.
        !           140: 
        !           141:   - There was a race condition in the timer handlers causing free'd memory
        !           142:     to sometimes get touched.
        !           143: 
        !           144:   - ~allow_nonpruners~ wasn't allowed in the configuration file (and almost
        !           145:     nobody noticed! - probably a good sign)
        !           146: 
        !           147:   - When a prune times out and the source has been active "recently", mrouted now
        !           148:     waits for further traffic instead of triggering a new prune.
        !           149: 
        !           150:   - mrouted now ignores unreachable routes when making a routing decision
        !           151:     (previously it would blackhole, now it can find a less-specific)
        !           152: 
        !           153: * 3.9-beta2: June 11, 1997
        !           154: 
        !           155: There is no need to upgrade to 3.9-beta2 if you are not experiencing one of the
        !           156: following bugs.
        !           157: 
        !           158: ** Bug Fixes
        !           159: 
        !           160:   - There was a bug in 3.9-beta1's raw socket buffer processing that
        !           161:     would cause an immediate lockup on startup on some systems.
        !           162: 
        !           163:   - RSRR would not clear out the group membership information if
        !           164:     further notification of changes to this route entry was not possible.
        !           165: 
        !           166: * 3.9-beta1: June 6, 1997
        !           167: 
        !           168: ** Changes & New Features
        !           169: 
        !           170:   - Longer prune lifetimes (2 hours) by default.  Prune lifetimes may be configured
        !           171:     per-vif, with the ~prune_lifetime N~ mrouted.conf configuration file entry
        !           172:     (where N is in seconds).  This helps to work around the black holes caused on
        !           173:     restart when you have a Cisco upstream which does not handle genid's; if this is
        !           174:     your situation the recommended value is 300.
        !           175: 
        !           176:   - mrouted's behavior of flooding new routes by default at startup in order to speed
        !           177:     healing of paths during startup can be turned off per-vif or globally with the
        !           178:     ~noflood~ configuration option.  Turning this option off means you are likely to
        !           179:     experience black holes for a minute or two when you restart a router.  The
        !           180:     default is to flood for a minute or two until mrouted is able to learn
        !           181:     subordinate relationships.
        !           182: 
        !           183:   - mrouted now retransmits prunes by default on point-to-point links.  The
        !           184:     mrouted.conf command ~rexmit_prunes [on|off]~ can be used to enable or disable
        !           185:     this feature on a per-vif basis.  Prune retransmission helps on lossy links, and
        !           186:     also helps when a router has forgotten about a prune (e.g. if it is out of memory
        !           187:     and needs to shed state, or due to a bug).
        !           188: 
        !           189:   - The new ~passive~ mode causes mrouted to not actively send probes looking for
        !           190:     neighbors.  This allows a dialup link to become quiescent if there is no DVMRP
        !           191:     neighbor on the other end.  Configuring ~passive~ on both ends of a link will
        !           192:     cause it to never come up.
        !           193: 
        !           194:   - mrouted defaults to not peering with DVMRP routers that do not prune.  Use the
        !           195:     ~allow_nonpruners~ mrouted.conf option on a vif on which you want to allow such
        !           196:     peerings.
        !           197: 
        !           198:   - mrouted now allows route filtering using ~allow~ and ~deny~ in ~mrouted.conf~.
        !           199:     - Only ~accept~ or ~deny~ is allowed, no combinations.
        !           200: 
        !           201:     - Add ~bidir~ to apply the filter to output too, otherwise it's input only.
        !           202: 
        !           203:     - Expected usage:
        !           204:       - Providers filter routes that customers send them
        !           205:       - Martian removal
        !           206:       - Topology modification (e.g. don't let the existence of private tunnel foo out
        !           207:         into the world).
        !           208: 
        !           209:     - Syntax:
        !           210:         - accept 13/8 :: All routes matching 13/8 (e.g. 13.2.116/22)
        !           211:         - accept 13/8 exact :: If you want to accept exactly 13/8
        !           212:         - deny 10/8 64/2 130/8 exact 172/8 exact :: Common MBone martians
        !           213: 
        !           214:   - mrouted now malloc's the buffer it uses for ~SIOCGIFCONF~, to allow
        !           215:     for more interfaces.  Thanks to Danny Mitzel
        !           216: 
        !           217:   - mrouted now ignores multiple entries for a single interface name (temporary hack
        !           218:     until mrouted understands interface aliases)
        !           219: 
        !           220:   - mrouted's ~-d~ flag has been modified to accept the names of the systems which
        !           221:     you would like to debug:  packet, prunes, routes, peers, cache, timeout,
        !           222:     interface, membership, traceroute, igmp
        !           223: 
        !           224:   - mrouted now times neighbors out fater, and fully detects and ignores routes from
        !           225:     one-way peerings.
        !           226: 
        !           227:   - mrouted's route processing has been sped up, especially at startup.
        !           228: 
        !           229:   - mrouted uses the biggest ~SO_RCVBUF~ the operating system allows (up to 256 kb)
        !           230: 
        !           231:   - mrouted uses TOS =0xC0= ("Internet Control") for DVMRP messages.
        !           232: 
        !           233: ** Known Bugs
        !           234: 
        !           235:   - The startup message doesn't print properly if you have too many interfaces.
        !           236: 
        !           237: ** Bug Fixes
        !           238: 
        !           239:   - mrouted did not properly keep track of subordinates, and would not time out
        !           240:     subordinateness.  This caused 2 major problems:
        !           241: 
        !           242:     1. pruning did not happen when there were equal-cost paths to the same
        !           243:        multi-access link
        !           244:     2. subordinateness which did not get cancelled by a non-poisoned route (e.g. in
        !           245:        the face of route filtering) did not time out, causing traffic to continue to
        !           246:        flow.
        !           247: 
        !           248:   - mrouted's IGMPv2 processing when it is not the querier now conforms to
        !           249:     draft-ietf-idmr-igmp-v2-06.txt Thanks to Lorenzo VICISANO
        !           250:     <mailto:L.Vicisano@cs.ucl.ac.uk> for finding a problem.
        !           251: 
        !           252:   - mrouted is much more careful about forgetting prunes; 3.8 would forget prunes
        !           253:     whenever any route change ocurred.
        !           254: 
        !           255: * Release 3.8: November 29, 1995
        !           256: 
        !           257: ** Bug Fixes
        !           258: 
        !           259:   - mrouted would fail to forget prunes when a neighbor went away, thus potentially
        !           260:     sending traffic down a tunnel after the tunnel endpoint has gone down.  This was
        !           261:     due to some research code making it into the "emergency" 3.7 release, sigh.
        !           262: 
        !           263:   - mrouted could send prunes with negative lifetimes.  This causes slightly higher
        !           264:     prune traffic but shouldn't be any major problem.
        !           265: 
        !           266: * Release 3.7: November 28, 1995
        !           267: 
        !           268: ** Changes & New Features
        !           269: 
        !           270:   - The configuration file can accept a hostname as the other end of a tunnel.  There
        !           271:     must be a single name=>ip mapping for the given name, however, or mrouted will
        !           272:     fail to start up.
        !           273: 
        !           274:   - mrinfo now sends requests to all interfaces of a multihomed host.
        !           275: 
        !           276:   - mtrace's passive mode has been implemented.
        !           277: 
        !           278:   - The first screen of mtrace statistics is shorter and more likely
        !           279:     to fit on one screen.
        !           280: 
        !           281: ** Bug Fixes
        !           282: 
        !           283:   - mrouted now ignores route reports that include bogus netmasks.
        !           284:     There was a bug in 3.5 that would mangle default routes into
        !           285:     tens of bogus routes; this should prevent that bug from killing
        !           286:     the MBONE.
        !           287: 
        !           288:     This solution can cause route flaps and black holes until the
        !           289:     3.5's are gone or all of the 3.5's neighbors are 3.7 .
        !           290: 
        !           291:   - mrouted now ignores duplicate routes.  Ciscos and the above 3.5
        !           292:     bug could cause two copies of the same route to appear in a single
        !           293:     routing update; mrouted would insert two copies of the same route
        !           294:     into its routing table and wreak all sorts of havoc.
        !           295: 
        !           296:   - mrouted now sends a group-specific query for both retransmissions
        !           297:     of a g-s query; previous versions sent a general query the second
        !           298:     time.
        !           299: 
        !           300:   - mrouted now loops back multicasted mtrace responses and
        !           301:     group-specific membership queries
        !           302: 
        !           303:   - mrouted now performs deterministic tiebreaking between two
        !           304:     neighbors on the same vif.
        !           305: 
        !           306:   - mrouted now only does duplicate suppression on traceroute requests,
        !           307:     not all traceroute packets, so that a loop can be nicely detected
        !           308:     via a duplicate router instead of just a timeout.
        !           309: 
        !           310:   - the buffer size that mrouted uses has been increased to allow
        !           311:     more than 16 hops in mtrace messages.
        !           312: 
        !           313:   - mtrace's hop-by-hop termination is now more likely to be correct.
        !           314: 
        !           315:   - mrinfo now waits for the responses to its retransmitted queries.
        !           316: 
        !           317: * Release 3.6: June 26, 1995
        !           318: 
        !           319: ** Bug Fixes
        !           320: 
        !           321:   - mrouted would dump core when attempting to report no routes (i.e. upon
        !           322:     startup, if you have no enabled phyint's)
        !           323: 
        !           324:   - mrouted would dump core if requested to traceroute a source for which it
        !           325:     had no route
        !           326: 
        !           327:   - neighbor flags were not always properly updated on probe or report
        !           328: 
        !           329:   - mrouted would sometimes reply to a multicast traceroute on a disabled
        !           330:     phyint; now it uses the first configured phyint to reply to traceroutes.
        !           331: 
        !           332:   - host routes (i.e. netmask =0xffffffff=) works now; it was discarding
        !           333:     IGMP from the host because it was coming from the "broadcast address"
        !           334:     of the subnet.
        !           335: 
        !           336:   - ~send_igmp()~ now treats the failure to send an mtrace or a neighbor
        !           337:     reply as informational, as opposed to warning.
        !           338: 
        !           339:   - mrouted would go into an infinite loop trying to respond to a traceroute
        !           340:     for a source with a netmask of =0xffffffff=.
        !           341: 
        !           342:   - ~vifs_with_neighbors~ was not being reset if the mrouted was restarted
        !           343:     with =SIGHUP=.
        !           344: 
        !           345:   - the default route was not being properly advertised to neighbors (although
        !           346:     it was accepted if it was advertised to it)
        !           347: 
        !           348:   - ANSI-fication for those who it helps, still-K&R-ish for those it doesn't.
        !           349: 
        !           350:   - mtrace now attempts to trace three hops past a non-responding router,
        !           351:     in the hopes that it does support traceroute but just couldn't respond
        !           352:     (i.e. unicast didn't work and it can't source multicast because all its
        !           353:     phyints are disabled).
        !           354: 
        !           355:   - mrinfo now times out even on a multicast router.
        !           356: 
        !           357: * Release 3.5: May 8, 1995
        !           358: 
        !           359: ** Changes & New Features
        !           360: 
        !           361:   - The kernel and mrouted make sure that each is the correct version, to
        !           362:     prevent problems with mismatched kernel/mrouted versions.  A too-old
        !           363:     mrouted will die with the error:
        !           364: 
        !           365:     can't enable DVMRP routing in kernel: Option not supported by protocol
        !           366: 
        !           367:   - mrouted can accept and propogate a default route (essential for
        !           368:     heirarchical multicast routing)
        !           369: 
        !           370:   - Kernel route cache keeps source-specific routes instead of subnet routes,
        !           371:     eliminating hashing and longest-match problems.
        !           372:     (allows classless routing, longest-match and default routing)
        !           373: 
        !           374:   - Cached kernel routes only get deleted if no traffic is flowing, to
        !           375:     facilitate multicast traceroute
        !           376: 
        !           377:   - mrouted has a new configuration file parser, which provides better error
        !           378:     messages than before, and allows named boundaries (see man page)
        !           379: 
        !           380:   - added ~netmask~ to phyint configuration, at the suggestion of
        !           381:     Anders Klemets
        !           382: 
        !           383:   - System V and FreeBSD compatibility from John Brezak <mailto:brezak@ch.hp.com>
        !           384: 
        !           385:   - phyint's can have additional subnets configured, for people with multiple
        !           386:     subnets on one physical network.  mrouted.conf syntax is altnet 1.2.3.0,
        !           387:     or altnet 1.2.3.0/24 if you need to specify a different netmask.  There
        !           388:     can be as many altnet statements as you need.
        !           389: 
        !           390:   - both mrouted and the kernel now support classless addresses.
        !           391: 
        !           392:   - the kernel supports PIM assert processing by notifying the router
        !           393:     when a packet arrives on the wrong interface
        !           394: 
        !           395:   - the kernel keeps additional counters, and mrouted can be compiled to
        !           396:     support SNMP and the Multicast MIB
        !           397: 
        !           398:   - the packet classifier in the kernel now uses the following udp port
        !           399:     ranges.  A future release of a session directory will allocate ports in
        !           400:     these ranges:
        !           401: 
        !           402:     - ~[0, 16384)~: lowest priority, unclassified
        !           403: 
        !           404:     - ~[16384, 32768)~: highest priority, i.e. audio
        !           405: 
        !           406:     - ~[32768, 49152)~: medium priority, i.e. whiteboard
        !           407: 
        !           408:     - ~[49152, 65536)~: low priority, i.e. video
        !           409: 
        !           410:   - the configuration code has been modified to default tunnels' ~rate_limit~
        !           411:     parameters to 500kbps.  This is easily modified with a ~rate_limit~ keyword
        !           412:     in mrouted.conf, but should be a good default for the MBONE in general.
        !           413: 
        !           414:   - The tunnel sending code now caches a route for ~ip_output()~, this should
        !           415:     help performance on machines with lots of tunnels.
        !           416: 
        !           417:   - Dispatching for de-capsulating packets is now via protosw[], making
        !           418:     reception of other raw protocols more efficient
        !           419: 
        !           420:   - Neighbor capabilities are discovered via a bitmask as opposed to
        !           421:     version number.
        !           422: 
        !           423:   - Multicast traceroute code improved
        !           424: 
        !           425:   - mrouted can be compiled with Routing Support for Resource Reservation
        !           426:     (RSRR), required for RSVP.
        !           427: 
        !           428: ** Bug Fixes
        !           429: 
        !           430:   - The IGMPv2 query timeout field was interpreted as being in units of 200ms
        !           431:     as opposed to 100ms, thus the maximum timeout was set to twice the
        !           432:     expected value.  This is not fatal, as mrouted always queries twice in the
        !           433:     expectation that a packet could get loss, but it does make it less robust
        !           434:     in the face of packet loss.
        !           435: 
        !           436:   - IGMP could report membership in local-only groups (i.e. 224.0.0.X)
        !           437: 
        !           438:   - IGMP could get confused by hearing its own new membership reports, thus
        !           439:     a router would never perform fast leave.
        !           440: 
        !           441:   - IGMP could reset timers for the wrong interface.
        !           442: 
        !           443:   - mrouted put a bogus value in the maximum timeout field of IGMPv2 query
        !           444:     packets.
        !           445: 
        !           446:   - Non-querier mrouters would respond to IGMP leave messages
        !           447: 
        !           448:   - mrouted was not performing fast leave properly
        !           449: 
        !           450:   - If the last member goes away on a transit network, the upstream router
        !           451:     would stop forwarding even if there are downstream members.
        !           452: 
        !           453:   - Kernel hash function improved
        !           454: 
        !           455:   - Eliminated possibility of ~panic()~: timeout in cache maintenance
        !           456: 
        !           457:   - Reordered resource allocation when sending upcall to handle failure properly
        !           458: 
        !           459:   - some endian-ness bugs squashed in mrouted, probably more to go.
        !           460: 
        !           461:   - Multicast traceroute could send a reply on a disabled interface.
        !           462: 
        !           463: ** Included Files
        !           464: 
        !           465: | README-3.8.mrouted | this file                                             |
        !           466: | mrouted/*          | version 3.8 of mrouted, mrinfo, map-mbone and mtrace. |
        !           467: | ifconfig/*         | Changes to ifconfig to show multicast interfaces      |
        !           468: | netstat/*          | Diffs to netstat                                      |
        !           469: | ping/*             | sources for ping which support multicasting           |
        !           470: | mtest/*            | utility for testing multicast group membership        |
        !           471: 
        !           472: # Local Variables:
        !           473: #  mode: org
        !           474: # End:

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