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>