View | Details | Raw Unified | Return to bug 85052
Collapse All | Expand All

(-)ip_fastfwd.c (-16 / +3 lines)
Lines 157-164 Link Here
157
	struct mbuf *m0 = NULL;
157
	struct mbuf *m0 = NULL;
158
	struct route ro;
158
	struct route ro;
159
	struct sockaddr_in *dst = NULL;
159
	struct sockaddr_in *dst = NULL;
160
	struct in_ifaddr *ia = NULL;
161
	struct ifaddr *ifa = NULL;
162
	struct ifnet *ifp;
160
	struct ifnet *ifp;
163
	struct in_addr odest, dest;
161
	struct in_addr odest, dest;
164
	u_short sum, ip_len;
162
	u_short sum, ip_len;
Lines 324-344 Link Here
324
		return 0;
322
		return 0;
325
323
326
	/*
324
	/*
327
	 * Or is it for a local IP broadcast address on this host?
325
	 * No L2 broadcast or multicast.
328
	 */
326
	 */
329
	if ((m->m_flags & M_BCAST) &&
327
	if (m->m_flags & (M_BCAST|M_MCAST))
330
	    (m->m_pkthdr.rcvif->if_flags & IFF_BROADCAST)) {
328
		return 0;
331
	        TAILQ_FOREACH(ifa, &m->m_pkthdr.rcvif->if_addrhead, ifa_link) {
332
			if (ifa->ifa_addr->sa_family != AF_INET)
333
				continue;
334
			ia = ifatoia(ifa);
335
			if (ia->ia_netbroadcast.s_addr == ip->ip_dst.s_addr)
336
				return 0;
337
			if (satosin(&ia->ia_broadaddr)->sin_addr.s_addr ==
338
			    ip->ip_dst.s_addr)
339
				return 0;
340
		}
341
	}
342
	ipstat.ips_total++;
329
	ipstat.ips_total++;
343
330
344
	/*
331
	/*

Return to bug 85052