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); |
} |
} |