|
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 |
/* |