diff options
author | jkh <jkh@FreeBSD.org> | 1995-05-16 00:28:50 +0000 |
---|---|---|
committer | jkh <jkh@FreeBSD.org> | 1995-05-16 00:28:50 +0000 |
commit | 87a603cb4db64797ef2b3bfea6e637abf603a108 (patch) | |
tree | 568dda545a8895d56389de42401be9d79d1fb5ed /usr.sbin/mrouted/igmp.c | |
parent | e472db9bf5bf92db4b6e3d8bc71bbad2fe61eee3 (diff) | |
download | FreeBSD-src-87a603cb4db64797ef2b3bfea6e637abf603a108.zip FreeBSD-src-87a603cb4db64797ef2b3bfea6e637abf603a108.tar.gz |
A number of bug fixes to mrouted (no functionality enhancements from 3.5, just
the fixes!):
o Scoped addresses might let traffic in
o IGMP queries sent with wrong timeouts
o Possible core dump in mtrace if we get a request for which we have no route
o If a member on a transit network left a group, mrouted would stop forwarding
even if there was a downstream router
o Various code cleanups and logging changes
Reviewed by: wollman
Submitted by: Bill Fenner <fenner@parc.xerox.com>
Diffstat (limited to 'usr.sbin/mrouted/igmp.c')
-rw-r--r-- | usr.sbin/mrouted/igmp.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/usr.sbin/mrouted/igmp.c b/usr.sbin/mrouted/igmp.c index ce5c1ce..f7a04df 100644 --- a/usr.sbin/mrouted/igmp.c +++ b/usr.sbin/mrouted/igmp.c @@ -109,7 +109,6 @@ static char *packet_kind(type, code) void accept_igmp(recvlen) int recvlen; { - register vifi_t vifi; register u_long src, dst, group; struct ip *ip; struct igmp *igmp; @@ -131,7 +130,7 @@ void accept_igmp(recvlen) * necessary to install a route into the kernel for this. */ if (ip->ip_p == 0) { - if (src == NULL || dst == NULL) + if (src == 0 || dst == 0) log(LOG_WARNING, 0, "kernel request not accurate"); else add_table_entry(src, dst); @@ -280,8 +279,12 @@ void send_igmp(src, dst, type, code, group, datalen) sdst.sin_addr.s_addr = dst; if (sendto(igmp_socket, send_buf, ip->ip_len, 0, (struct sockaddr *)&sdst, sizeof(sdst)) < 0) { - if (errno == ENETDOWN) check_vif_state(); - else log(LOG_WARNING, errno, "sendto on %s", inet_fmt(src, s1)); + if (errno == ENETDOWN) + check_vif_state(); + else + log(LOG_WARNING, errno, + "sendto to %s on %s", + inet_fmt(dst, s1), inet_fmt(src, s2)); } if (dst == allhosts_group) k_set_loop(FALSE); |