| version 1.17, 1995/05/15 02:09:58 |
version 1.18, 1995/06/01 21:36:27 |
|
|
| ia->ia_ifp == m->m_pkthdr.rcvif && |
ia->ia_ifp == m->m_pkthdr.rcvif && |
| #endif |
#endif |
| (ia->ia_ifp->if_flags & IFF_BROADCAST)) { |
(ia->ia_ifp->if_flags & IFF_BROADCAST)) { |
| u_int32_t t; |
if (ip->ip_dst.s_addr == |
| |
satosin(&ia->ia_broadaddr)->sin_addr.s_addr) |
| if (satosin(&ia->ia_broadaddr)->sin_addr.s_addr == |
|
| ip->ip_dst.s_addr) |
|
| goto ours; |
goto ours; |
| if (ip->ip_dst.s_addr == ia->ia_netbroadcast.s_addr) |
if (ip->ip_dst.s_addr == ia->ia_netbroadcast.s_addr) |
| goto ours; |
goto ours; |
|
|
| * Look for all-0's host part (old broadcast addr), |
* Look for all-0's host part (old broadcast addr), |
| * either for subnet or net. |
* either for subnet or net. |
| */ |
*/ |
| t = ntohl(ip->ip_dst.s_addr); |
if (ip->ip_dst.s_addr == ia->ia_subnet || |
| if (t == ia->ia_subnet) |
ip->ip_dst.s_addr == ia->ia_net) |
| goto ours; |
|
| if (t == ia->ia_net) |
|
| goto ours; |
goto ours; |
| } |
} |
| } |
} |
| if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) { |
if (IN_MULTICAST(ip->ip_dst.s_addr)) { |
| struct in_multi *inm; |
struct in_multi *inm; |
| #ifdef MROUTING |
#ifdef MROUTING |
| extern struct socket *ip_mrouter; |
extern struct socket *ip_mrouter; |
|
|
| } |
} |
| goto ours; |
goto ours; |
| } |
} |
| if (ip->ip_dst.s_addr == (u_int32_t)INADDR_BROADCAST) |
if (ip->ip_dst.s_addr == INADDR_BROADCAST) |
| goto ours; |
goto ours; |
| if (ip->ip_dst.s_addr == INADDR_ANY) |
if (ip->ip_dst.s_addr == INADDR_ANY) |
| goto ours; |
goto ours; |
|
|
| /* |
/* |
| * Let ip_intr's mcast routing check handle mcast pkts |
* Let ip_intr's mcast routing check handle mcast pkts |
| */ |
*/ |
| forward = !IN_MULTICAST(ntohl(ip->ip_dst.s_addr)); |
forward = !IN_MULTICAST(ip->ip_dst.s_addr); |
| break; |
break; |
| |
|
| case IPOPT_RR: |
case IPOPT_RR: |
| Line 1083 ip_forward(m, srcrt) |
|
| Line 1079 ip_forward(m, srcrt) |
|
| satosin(rt_key(rt))->sin_addr.s_addr != 0 && |
satosin(rt_key(rt))->sin_addr.s_addr != 0 && |
| ipsendredirects && !srcrt) { |
ipsendredirects && !srcrt) { |
| #define RTA(rt) ((struct in_ifaddr *)(rt->rt_ifa)) |
#define RTA(rt) ((struct in_ifaddr *)(rt->rt_ifa)) |
| u_int32_t src = ntohl(ip->ip_src.s_addr); |
|
| |
|
| if (RTA(rt) && |
if (RTA(rt) && |
| (src & RTA(rt)->ia_subnetmask) == RTA(rt)->ia_subnet) { |
(ip->ip_src.s_addr & RTA(rt)->ia_subnetmask) == |
| |
RTA(rt)->ia_subnet) { |
| if (rt->rt_flags & RTF_GATEWAY) |
if (rt->rt_flags & RTF_GATEWAY) |
| dest = satosin(rt->rt_gateway)->sin_addr.s_addr; |
dest = satosin(rt->rt_gateway)->sin_addr.s_addr; |
| else |
else |