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