| version 1.103, 2007/05/02 20:40:27 |
version 1.104, 2007/05/05 21:23:50 |
| Line 246 ip6_input(struct mbuf *m) |
|
| Line 246 ip6_input(struct mbuf *m) |
|
| int off = sizeof(struct ip6_hdr), nest; |
int off = sizeof(struct ip6_hdr), nest; |
| u_int32_t plen; |
u_int32_t plen; |
| u_int32_t rtalert = ~0; |
u_int32_t rtalert = ~0; |
| int nxt, ours = 0; |
int nxt, ours = 0, rh_present = 0; |
| struct ifnet *deliverifp = NULL; |
struct ifnet *deliverifp = NULL; |
| int srcrt = 0; |
int srcrt = 0; |
| const struct sockaddr_in6 *cdst; |
const struct sockaddr_in6 *cdst; |
| Line 755 ip6_input(struct mbuf *m) |
|
| Line 755 ip6_input(struct mbuf *m) |
|
| in6_ifstat_inc(deliverifp, ifs6_in_deliver); |
in6_ifstat_inc(deliverifp, ifs6_in_deliver); |
| nest = 0; |
nest = 0; |
| |
|
| |
rh_present = 0; |
| while (nxt != IPPROTO_DONE) { |
while (nxt != IPPROTO_DONE) { |
| if (ip6_hdrnestlimit && (++nest > ip6_hdrnestlimit)) { |
if (ip6_hdrnestlimit && (++nest > ip6_hdrnestlimit)) { |
| ip6stat.ip6s_toomanyhdr++; |
ip6stat.ip6s_toomanyhdr++; |
| |
in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_hdrerr); |
| goto bad; |
goto bad; |
| } |
} |
| |
|
| Line 771 ip6_input(struct mbuf *m) |
|
| Line 773 ip6_input(struct mbuf *m) |
|
| goto bad; |
goto bad; |
| } |
} |
| |
|
| |
if (nxt == IPPROTO_ROUTING) { |
| |
if (rh_present++) { |
| |
in6_ifstat_inc(m->m_pkthdr.rcvif, |
| |
ifs6_in_hdrerr); |
| |
ip6stat.ip6s_badoptions++; |
| |
goto bad; |
| |
} |
| |
} |
| |
|
| #ifdef IPSEC |
#ifdef IPSEC |
| /* |
/* |
| * enforce IPsec policy checking if we are seeing last header. |
* enforce IPsec policy checking if we are seeing last header. |