From 067489b904f74af62da93425f1195a93ea40d293 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 14 Jul 2011 19:16:09 +0000 Subject: 2011-07-14 Gene Smith PR 1381/networking * libnetworking/netinet/ip_output.c: If a null or unreachable gateway is specified either statically in networkconfig.h or from dhcp/bootp, sendto() fails on multicast send with errno 118 Host --- cpukit/libnetworking/netinet/ip_output.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'cpukit/libnetworking/netinet') diff --git a/cpukit/libnetworking/netinet/ip_output.c b/cpukit/libnetworking/netinet/ip_output.c index 510f9d046b..cf112de564 100644 --- a/cpukit/libnetworking/netinet/ip_output.c +++ b/cpukit/libnetworking/netinet/ip_output.c @@ -167,6 +167,15 @@ ip_output(struct mbuf *m0, struct mbuf *opt, struct route *ro, int flags, ifp = ia->ia_ifp; ip->ip_ttl = 1; isbroadcast = in_broadcast(dst->sin_addr, ifp); + } else if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr)) && + imo != NULL && imo->imo_multicast_ifp != NULL) { + /* + * Bypass the normal routing lookup for multicast + * packets if the interface is specified. + */ + ifp = imo->imo_multicast_ifp; + IFP_TO_IA(ifp, ia); + isbroadcast = 0; /* fool gcc */ } else { /* * If this is the case, we probably don't want to allocate -- cgit v1.2.3