Date: Wed, 14 Jul 1999 17:54:46 +0100 From: Kevin Bracey <kbracey@e-14.com> To: freebsd-net@freebsd.org Subject: IGMP reports not sent if no multicast route Message-ID: <e5bd942149%kbracey@kbracey.acorn.co.uk>
next in thread | raw e-mail | index | archive | help
I've just stumbled across a bug in ip_output() while testing a multicast TFTP client on a system with a FreeBSD-derived network stack. The system has no default route or route for 224.0.0.0 set up. It is not sending any multicasts, except for the IGMP reports generated by its group joins. The problem is that ip_output() will not output multicast packets if it can't find a route for the destination group, even if the caller has provided an interface in the multicast options, as igmp_sendpkt() does. The same problem would arise a user process wanted to multicast on a specified interface. And when it does work, various stats to do with the default multicast route end up being interpreted, even though that route ends up not being used! A quick fix would appear to be the following: line 214 of ip_output.c: ifp = ia->ia_ifp; ip->ip_ttl = 1; isbroadcast = in_broadcast(dst->sin_addr, ifp); ! } else { /* * If this is the case, we probably don't want to allocate * a protocol-cloned route since we didn't get one from the change to: ifp = ia->ia_ifp; ip->ip_ttl = 1; isbroadcast = in_broadcast(dst->sin_addr, ifp); ! } else if (!(imo && imo->imo_multicast_ifp && ! IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) { /* * If this is the case, we probably don't want to allocate * a protocol-cloned route since we didn't get one from the Any comments? -- Kevin Bracey, Senior Software Engineer Pace Micro Technology plc Tel: +44 (0) 1223 725228 645 Newmarket Road Fax: +44 (0) 1223 725328 Cambridge, CB5 8PB, United Kingdom WWW: http://www.acorn.co.uk/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?e5bd942149%kbracey>