| version 1.158, 2007/03/04 06:03:22 |
version 1.158.2.3, 2007/10/09 13:44:52 |
| Line 384 udp_input(struct mbuf *m, ...) |
|
| Line 384 udp_input(struct mbuf *m, ...) |
|
| goto badcsum; |
goto badcsum; |
| |
|
| /* construct source and dst sockaddrs. */ |
/* construct source and dst sockaddrs. */ |
| bzero(&src, sizeof(src)); |
sockaddr_in_init(&src, &ip->ip_src, uh->uh_sport); |
| src.sin_family = AF_INET; |
sockaddr_in_init(&dst, &ip->ip_dst, uh->uh_dport); |
| src.sin_len = sizeof(struct sockaddr_in); |
|
| bcopy(&ip->ip_src, &src.sin_addr, sizeof(src.sin_addr)); |
|
| src.sin_port = uh->uh_sport; |
|
| bzero(&dst, sizeof(dst)); |
|
| dst.sin_family = AF_INET; |
|
| dst.sin_len = sizeof(struct sockaddr_in); |
|
| bcopy(&ip->ip_dst, &dst.sin_addr, sizeof(dst.sin_addr)); |
|
| dst.sin_port = uh->uh_dport; |
|
| |
|
| if ((n = udp4_realinput(&src, &dst, &m, iphlen)) == -1) { |
if ((n = udp4_realinput(&src, &dst, &m, iphlen)) == -1) { |
| udpstat.udps_hdrops++; |
udpstat.udps_hdrops++; |
| Line 625 udp4_sendup(struct mbuf *m, int off /* o |
|
| Line 617 udp4_sendup(struct mbuf *m, int off /* o |
|
| /* check AH/ESP integrity. */ |
/* check AH/ESP integrity. */ |
| if (so != NULL && ipsec4_in_reject_so(m, so)) { |
if (so != NULL && ipsec4_in_reject_so(m, so)) { |
| ipsecstat.in_polvio++; |
ipsecstat.in_polvio++; |
| if ((n = m_copy(m, 0, M_COPYALL)) != NULL) |
if ((n = m_copypacket(m, M_DONTWAIT)) != NULL) |
| icmp_error(n, ICMP_UNREACH, ICMP_UNREACH_ADMIN_PROHIBIT, |
icmp_error(n, ICMP_UNREACH, ICMP_UNREACH_ADMIN_PROHIBIT, |
| 0, 0); |
0, 0); |
| return; |
return; |
| } |
} |
| #endif /*IPSEC*/ |
#endif /*IPSEC*/ |
| |
|
| if ((n = m_copy(m, 0, M_COPYALL)) != NULL) { |
if ((n = m_copypacket(m, M_DONTWAIT)) != NULL) { |
| if (inp && (inp->inp_flags & INP_CONTROLOPTS |
if (inp && (inp->inp_flags & INP_CONTROLOPTS |
| || so->so_options & SO_TIMESTAMP)) { |
|| so->so_options & SO_TIMESTAMP)) { |
| struct ip *ip = mtod(n, struct ip *); |
struct ip *ip = mtod(n, struct ip *); |
| Line 672 udp6_sendup(struct mbuf *m, int off /* o |
|
| Line 664 udp6_sendup(struct mbuf *m, int off /* o |
|
| /* check AH/ESP integrity. */ |
/* check AH/ESP integrity. */ |
| if (so != NULL && ipsec6_in_reject_so(m, so)) { |
if (so != NULL && ipsec6_in_reject_so(m, so)) { |
| ipsec6stat.in_polvio++; |
ipsec6stat.in_polvio++; |
| if ((n = m_copy(m, 0, M_COPYALL)) != NULL) |
if ((n = m_copypacket(m, M_DONTWAIT)) != NULL) |
| icmp6_error(n, ICMP6_DST_UNREACH, |
icmp6_error(n, ICMP6_DST_UNREACH, |
| ICMP6_DST_UNREACH_ADMIN, 0); |
ICMP6_DST_UNREACH_ADMIN, 0); |
| return; |
return; |
| } |
} |
| #endif /*IPSEC*/ |
#endif /*IPSEC*/ |
| |
|
| if ((n = m_copy(m, 0, M_COPYALL)) != NULL) { |
if ((n = m_copypacket(m, M_DONTWAIT)) != NULL) { |
| if (in6p && (in6p->in6p_flags & IN6P_CONTROLOPTS |
if (in6p && (in6p->in6p_flags & IN6P_CONTROLOPTS |
| || in6p->in6p_socket->so_options & SO_TIMESTAMP)) { |
|| in6p->in6p_socket->so_options & SO_TIMESTAMP)) { |
| struct ip6_hdr *ip6 = mtod(n, struct ip6_hdr *); |
struct ip6_hdr *ip6 = mtod(n, struct ip6_hdr *); |
| Line 1536 udp4_espinudp(struct mbuf **mp, int off, |
|
| Line 1528 udp4_espinudp(struct mbuf **mp, int off, |
|
| m_tag_prepend(n, tag); |
m_tag_prepend(n, tag); |
| |
|
| #ifdef FAST_IPSEC |
#ifdef FAST_IPSEC |
| ipsec4_common_input(n, iphdrlen); |
ipsec4_common_input(n, iphdrlen, IPPROTO_ESP); |
| #else |
#else |
| esp4_input(n, iphdrlen); |
esp4_input(n, iphdrlen); |
| #endif |
#endif |