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