diff options
author | dg <dg@FreeBSD.org> | 1995-10-07 03:48:44 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1995-10-07 03:48:44 +0000 |
commit | b000628524e27ef43f92d40f5bffe65e5df95b9f (patch) | |
tree | 71c8ec706c66c5e25e9be956f19bae153134691a /usr.sbin/mrouted/igmp.c | |
parent | d7818518789c0a5b14f57631dae1428ab3100150 (diff) | |
download | FreeBSD-src-b000628524e27ef43f92d40f5bffe65e5df95b9f.zip FreeBSD-src-b000628524e27ef43f92d40f5bffe65e5df95b9f.tar.gz |
- mrouted doesn't allow loopback of group-specific queries, thus if a
host sends a leave message for a group that the router is a member of
that membership gets forgotten until the next general query.
- the second group-specific query generated looks like a general query
sent to a specific group
Submitted by: Bill Fenner <fenner@parc.xerox.com>
Diffstat (limited to 'usr.sbin/mrouted/igmp.c')
-rw-r--r-- | usr.sbin/mrouted/igmp.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/usr.sbin/mrouted/igmp.c b/usr.sbin/mrouted/igmp.c index 00eeff5..e1bd064 100644 --- a/usr.sbin/mrouted/igmp.c +++ b/usr.sbin/mrouted/igmp.c @@ -7,7 +7,7 @@ * Leland Stanford Junior University. * * - * $Id: igmp.c,v 3.6 1995/06/25 18:52:55 fenner Exp $ + * $Id: igmp.c,v 1.7 1995/06/28 17:58:32 wollman Exp $ */ @@ -314,7 +314,8 @@ send_igmp(src, dst, type, code, group, datalen) IGMP_MINLEN + datalen); if (IN_MULTICAST(ntohl(dst))) k_set_if(src); - if (dst == allhosts_group) k_set_loop(TRUE); + if (dst == allhosts_group || type == IGMP_HOST_MEMBERSHIP_QUERY) + k_set_loop(TRUE); bzero(&sdst, sizeof(sdst)); sdst.sin_family = AF_INET; @@ -332,7 +333,8 @@ send_igmp(src, dst, type, code, group, datalen) inet_fmt(dst, s1), inet_fmt(src, s2)); } - if (dst == allhosts_group) k_set_loop(FALSE); + if (dst == allhosts_group || type == IGMP_HOST_MEMBERSHIP_QUERY) + k_set_loop(FALSE); log(LOG_DEBUG, 0, "SENT %s from %-15s to %s", packet_kind(type, code), inet_fmt(src, s1), inet_fmt(dst, s2)); |