diff options
author | peter <peter@FreeBSD.org> | 1996-01-06 21:10:30 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1996-01-06 21:10:30 +0000 |
commit | d4c03f31b99ac4bd269582b4d2fee704364a2c1e (patch) | |
tree | f1d0a40a2a6e33e9f309cdfe59bfbb0d9a7d4628 /usr.sbin/mrouted/mapper.c | |
parent | a8e9d6a2eaa9df5881201d40c5c05c6154333fef (diff) | |
download | FreeBSD-src-d4c03f31b99ac4bd269582b4d2fee704364a2c1e.zip FreeBSD-src-d4c03f31b99ac4bd269582b4d2fee704364a2c1e.tar.gz |
Resync our mainline to mrouted release 3.8.
This will make FreeBSD boxes better behaved 'MBONE Citizens', based on
a couple of the comments about the severity of fixes..
Agreed to by: wollman, fenner@parc.xerox.com
Diffstat (limited to 'usr.sbin/mrouted/mapper.c')
-rw-r--r-- | usr.sbin/mrouted/mapper.c | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/usr.sbin/mrouted/mapper.c b/usr.sbin/mrouted/mapper.c index 8c1c5fd..1eacd04 100644 --- a/usr.sbin/mrouted/mapper.c +++ b/usr.sbin/mrouted/mapper.c @@ -1,7 +1,7 @@ /* Mapper for connections between MRouteD multicast routers. * Written by Pavel Curtis <Pavel@PARC.Xerox.Com> * - * $Id: mapper.c,v 3.6 1995/06/25 18:59:02 fenner Exp $ + * $Id: mapper.c,v 3.8 1995/11/29 22:36:57 fenner Rel $ */ /* @@ -302,7 +302,7 @@ void accept_neighbors(src, dst, p, datalen, level) /* if node is running a recent mrouted, ask for additional info */ if (level != 0) { node->version = level; - node->tries = 0; + node->tries = 1; ask2(src); return; } @@ -374,7 +374,7 @@ void accept_neighbors(src, dst, p, datalen, level) for (nb_n = old_neighbors; nb_n; nb_n = nb_n->next) if (nb_i->addr == nb_n->addr) { if (nb_i->metric != nb_n->metric - || nb_i->threshold != nb_i->threshold) + || nb_i->threshold != nb_n->threshold) log(LOG_WARNING, 0, "inconsistent %s for neighbor %s of %s", "metric/threshold", @@ -451,6 +451,8 @@ void accept_neighbors2(src, dst, p, datalen, level) int datalen; { Node *node = find_node(src, &routers); + u_int broken_cisco = ((level & 0xffff) == 0x020a); /* 10.2 */ + /* well, only possibly_broken_cisco, but that's too long to type. */ if (node->tries == 0) /* Never heard of 'em; must have hit them at */ node->tries = 1; /* least once, though...*/ @@ -478,6 +480,11 @@ void accept_neighbors2(src, dst, p, datalen, level) ncount = *p++; datalen -= 4 + 4; + if (broken_cisco && ncount == 0) /* dumb Ciscos */ + ncount = 1; + if (broken_cisco && ncount > 15) /* dumb Ciscos */ + ncount = ncount & 0xf; + /* Fix up any alias information */ ifc_node = find_node(ifc_addr, &routers); if (ifc_node->tries == 0) { /* new node */ @@ -837,11 +844,7 @@ int main(argc, argv) { int flood = FALSE, graph = FALSE; -#ifdef SYSV - setvbuf(stderr, NULL, _IOLBF, 0); -#else setlinebuf(stderr); -#endif if (geteuid() != 0) { fprintf(stderr, "must be root\n"); @@ -1017,3 +1020,15 @@ void accept_membership_query(src, dst, group, tmo) int tmo; { } +void accept_info_request(src, dst, p, datalen) + u_int32 src, dst; + u_char *p; + int datalen; +{ +} +void accept_info_reply(src, dst, p, datalen) + u_int32 src, dst; + u_char *p; + int datalen; +{ +} |