summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1995-10-07 03:48:44 +0000
committerdg <dg@FreeBSD.org>1995-10-07 03:48:44 +0000
commitb000628524e27ef43f92d40f5bffe65e5df95b9f (patch)
tree71c8ec706c66c5e25e9be956f19bae153134691a
parentd7818518789c0a5b14f57631dae1428ab3100150 (diff)
downloadFreeBSD-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>
-rw-r--r--usr.sbin/mrouted/igmp.c8
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));
OpenPOWER on IntegriCloud