| version 1.164, 2003/02/26 06:31:14 |
version 1.165, 2003/04/11 19:41:37 |
| Line 196 int ip_mtudisc_timeout = IPMTUDISCTIMEOU |
|
| Line 196 int ip_mtudisc_timeout = IPMTUDISCTIMEOU |
|
| #ifdef DIAGNOSTIC |
#ifdef DIAGNOSTIC |
| int ipprintfs = 0; |
int ipprintfs = 0; |
| #endif |
#endif |
| |
/* |
| |
* XXX - Setting ip_checkinterface mostly implements the receive side of |
| |
* the Strong ES model described in RFC 1122, but since the routing table |
| |
* and transmit implementation do not implement the Strong ES model, |
| |
* setting this to 1 results in an odd hybrid. |
| |
* |
| |
* XXX - ip_checkinterface currently must be disabled if you use ipnat |
| |
* to translate the destination address to another local interface. |
| |
* |
| |
* XXX - ip_checkinterface must be disabled if you add IP aliases |
| |
* to the loopback interface instead of the interface where the |
| |
* packets for those addresses are received. |
| |
*/ |
| |
int ip_checkinterface = 0; |
| |
|
| |
|
| struct rttimer_queue *ip_mtudisc_timeout_q = NULL; |
struct rttimer_queue *ip_mtudisc_timeout_q = NULL; |
| |
|
| Line 407 ip_input(struct mbuf *m) |
|
| Line 422 ip_input(struct mbuf *m) |
|
| struct ipqent *ipqe; |
struct ipqent *ipqe; |
| int hlen = 0, mff, len; |
int hlen = 0, mff, len; |
| int downmatch; |
int downmatch; |
| |
int checkif; |
| |
|
| MCLAIM(m, &ip_rx_mowner); |
MCLAIM(m, &ip_rx_mowner); |
| #ifdef DIAGNOSTIC |
#ifdef DIAGNOSTIC |
| Line 593 ip_input(struct mbuf *m) |
|
| Line 609 ip_input(struct mbuf *m) |
|
| return; |
return; |
| |
|
| /* |
/* |
| |
* Enable a consistency check between the destination address |
| |
* and the arrival interface for a unicast packet (the RFC 1122 |
| |
* strong ES model) if IP forwarding is disabled and the packet |
| |
* is not locally generated. |
| |
* |
| |
* XXX - Checking also should be disabled if the destination |
| |
* address is ipnat'ed to a different interface. |
| |
* |
| |
* XXX - Checking is incompatible with IP aliases added |
| |
* to the loopback interface instead of the interface where |
| |
* the packets are received. |
| |
* |
| |
* XXX - We need to add a per ifaddr flag for this so that |
| |
* we get finer grain control. |
| |
*/ |
| |
checkif = ip_checkinterface && (ipforwarding == 0) && |
| |
(m->m_pkthdr.rcvif != NULL) && |
| |
((m->m_pkthdr.rcvif->if_flags & IFF_LOOPBACK) == 0); |
| |
|
| |
/* |
| * Check our list of addresses, to see if the packet is for us. |
* Check our list of addresses, to see if the packet is for us. |
| * |
* |
| * Traditional 4.4BSD did not consult IFF_UP at all. |
* Traditional 4.4BSD did not consult IFF_UP at all. |
| Line 602 ip_input(struct mbuf *m) |
|
| Line 638 ip_input(struct mbuf *m) |
|
| downmatch = 0; |
downmatch = 0; |
| LIST_FOREACH(ia, &IN_IFADDR_HASH(ip->ip_dst.s_addr), ia_hash) { |
LIST_FOREACH(ia, &IN_IFADDR_HASH(ip->ip_dst.s_addr), ia_hash) { |
| if (in_hosteq(ia->ia_addr.sin_addr, ip->ip_dst)) { |
if (in_hosteq(ia->ia_addr.sin_addr, ip->ip_dst)) { |
| |
if (checkif && ia->ia_ifp != m->m_pkthdr.rcvif) |
| |
continue; |
| if ((ia->ia_ifp->if_flags & IFF_UP) != 0) |
if ((ia->ia_ifp->if_flags & IFF_UP) != 0) |
| break; |
break; |
| else |
else |
| Line 1943 ip_sysctl(name, namelen, oldp, oldlenp, |
|
| Line 1981 ip_sysctl(name, namelen, oldp, oldlenp, |
|
| return (sysctl_int(oldp, oldlenp, newp, newlen, |
return (sysctl_int(oldp, oldlenp, newp, newlen, |
| &ip_maxfragpackets)); |
&ip_maxfragpackets)); |
| |
|
| |
case IPCTL_CHECKINTERFACE: |
| |
return (sysctl_int(oldp, oldlenp, newp, newlen, |
| |
&ip_checkinterface)); |
| default: |
default: |
| return (EOPNOTSUPP); |
return (EOPNOTSUPP); |
| } |
} |