Lines Matching refs:m

139 esp4_input_strip_udp_encap(struct mbuf *m, int iphlen)  in esp4_input_strip_udp_encap()  argument
145 ip = mtod(m, __typeof__(ip)); in esp4_input_strip_udp_encap()
147 m->m_data += stripsiz; in esp4_input_strip_udp_encap()
148 m->m_len -= stripsiz; in esp4_input_strip_udp_encap()
149 m->m_pkthdr.len -= stripsiz; in esp4_input_strip_udp_encap()
150 ip = mtod(m, __typeof__(ip)); in esp4_input_strip_udp_encap()
157 esp6_input_strip_udp_encap(struct mbuf *m, int ip6hlen) in esp6_input_strip_udp_encap() argument
163 ip6 = mtod(m, __typeof__(ip6)); in esp6_input_strip_udp_encap()
165 m->m_data += stripsiz; in esp6_input_strip_udp_encap()
166 m->m_len -= stripsiz; in esp6_input_strip_udp_encap()
167 m->m_pkthdr.len -= stripsiz; in esp6_input_strip_udp_encap()
168 ip6 = mtod(m, __typeof__(ip6)); in esp6_input_strip_udp_encap()
175 esp_input_log(struct mbuf *m, struct secasvar *sav, u_int32_t spi, u_int32_t seq) in esp_input_log() argument
184 struct ip *inner_ip = mtod(m, struct ip *); in esp_input_log()
189 struct ip6_hdr *inner_ip6 = mtod(m, struct ip6_hdr *); in esp_input_log()
195 if ((int)(iphlen + sizeof(th)) <= m->m_pkthdr.len) { in esp_input_log()
196 m_copydata(m, iphlen, sizeof(th), (u_int8_t *)&th); in esp_input_log()
199 proto_len = m->m_pkthdr.len - iphlen - (th.th_off << 2); in esp_input_log()
209 esp4_input(struct mbuf *m, int off) in esp4_input() argument
211 (void)esp4_input_extended(m, off, NULL); in esp4_input()
215 esp4_input_extended(struct mbuf *m, int off, ifnet_t interface) in esp4_input_extended() argument
238 if (off % 4 != 0 || m->m_pkthdr.len % 4 != 0) { in esp4_input_extended()
240 "(off=%d, pktlen=%d)\n", off, m->m_pkthdr.len)); in esp4_input_extended()
245 if (m->m_len < off + ESPMAXLEN) { in esp4_input_extended()
246 m = m_pullup(m, off + ESPMAXLEN); in esp4_input_extended()
247 if (!m) { in esp4_input_extended()
255 m->m_pkthdr.csum_flags &= ~CSUM_RX_FLAGS; in esp4_input_extended()
258 MBUF_STRICT_DATA_ALIGNMENT_CHECK_32(m); in esp4_input_extended()
260 ip = mtod(m, struct ip *); in esp4_input_extended()
355 if (m->m_pkthdr.len < off + ESPMAXLEN + siz) { in esp4_input_extended()
358 m->m_pkthdr.len)); in esp4_input_extended()
362 m_copydata(m, m->m_pkthdr.len - (u_short)siz, (u_short)siz, (caddr_t) saved_icv); in esp4_input_extended()
374 if (m->m_pkthdr.len < off + ESPMAXLEN + siz) { in esp4_input_extended()
377 m->m_pkthdr.len)); in esp4_input_extended()
389 m_copydata(m, m->m_pkthdr.len - (int)siz, (int)siz, (caddr_t) &sum0[0]); in esp4_input_extended()
391 if (esp_auth(m, off, m->m_pkthdr.len - off - siz, sav, sum)) { in esp4_input_extended()
405 m->m_flags |= M_AUTHIPDGM; in esp4_input_extended()
421 m_adj(m, (int)-siz); in esp4_input_extended()
422 ip = mtod(m, struct ip *); in esp4_input_extended()
444 if (m->m_pkthdr.len < off + esplen + ivlen + sizeof(esptail)) { in esp4_input_extended()
451 if (m->m_len < off + esplen + ivlen) { in esp4_input_extended()
452 m = m_pullup(m, (int)(off + esplen + ivlen)); in esp4_input_extended()
453 if (!m) { in esp4_input_extended()
459 ip = mtod(m, struct ip *); in esp4_input_extended()
477 if ((*algo->decrypt)(m, off, sav, algo, ivlen)) { in esp4_input_extended()
479 m = NULL; in esp4_input_extended()
489 m->m_flags |= M_DECRYPTED; in esp4_input_extended()
499 m->m_flags |= M_AUTHIPDGM; in esp4_input_extended()
517 m_copydata(m, m->m_pkthdr.len - sizeof(esptail), sizeof(esptail), in esp4_input_extended()
522 if (m->m_pkthdr.len < taillen in esp4_input_extended()
523 || m->m_pkthdr.len - taillen < hlen) { /*?*/ in esp4_input_extended()
532 m_adj(m, (int)-taillen); in esp4_input_extended()
533 ip = mtod(m, struct ip *); in esp4_input_extended()
541 if (m->m_len < off) { in esp4_input_extended()
542 m = m_pullup(m, off); in esp4_input_extended()
543 if (!m) { in esp4_input_extended()
549 ip = mtod(m, struct ip *); in esp4_input_extended()
565 ip = esp4_input_strip_udp_encap(m, off); in esp4_input_extended()
570 if (ipsec4_tunnel_validate(m, (int)(off + esplen + ivlen), nxt, sav, &ifamily)) { in esp4_input_extended()
586 m_adj(m, (int)(off + esplen + ivlen)); in esp4_input_extended()
590 if (m->m_len < sizeof(*ip)) { in esp4_input_extended()
591 m = m_pullup(m, sizeof(*ip)); in esp4_input_extended()
592 if (!m) { in esp4_input_extended()
597 ip = mtod(m, struct ip *); in esp4_input_extended()
637 if (m->m_len < sizeof(*ip6)) { in esp4_input_extended()
638 m = m_pullup(m, sizeof(*ip6)); in esp4_input_extended()
639 if (!m) { in esp4_input_extended()
649 MBUF_STRICT_DATA_ALIGNMENT_CHECK_32(m); in esp4_input_extended()
651 ip6 = mtod(m, struct ip6_hdr *); in esp4_input_extended()
681 key_sa_recordxfer(sav, m->m_pkthdr.len); in esp4_input_extended()
682 if (ipsec_incr_history_count(m, IPPROTO_ESP, spi) != 0 || in esp4_input_extended()
683 ipsec_incr_history_count(m, IPPROTO_IPV4, 0) != 0) { in esp4_input_extended()
691 m->m_pkthdr.rcvif = ifa->ifa_ifp; in esp4_input_extended()
696 m->m_pkthdr.csum_flags = 0; in esp4_input_extended()
707 if ((m->m_pkthdr.pkt_flags & PKTF_WAKE_PKT) == PKTF_WAKE_PKT) { in esp4_input_extended()
708 if (m->m_pkthdr.rcvif != NULL) { in esp4_input_extended()
709 if_ports_used_match_mbuf(m->m_pkthdr.rcvif, ifamily, m); in esp4_input_extended()
716 esp_input_log(m, sav, spi, seq); in esp4_input_extended()
721 out_m = m; in esp4_input_extended()
726 errno_t inject_error = ipsec_inject_inbound_packet(ipsec_if, m); in esp4_input_extended()
730 m = NULL; in esp4_input_extended()
737 if (proto_input(ifamily == AF_INET ? PF_INET : PF_INET6, m) != 0) { in esp4_input_extended()
753 ip = mtod(m, struct ip *); in esp4_input_extended()
755 m->m_data += stripsiz; in esp4_input_extended()
756 m->m_len -= stripsiz; in esp4_input_extended()
757 m->m_pkthdr.len -= stripsiz; in esp4_input_extended()
759 ip = mtod(m, struct ip *); in esp4_input_extended()
767 key_sa_recordxfer(sav, m->m_pkthdr.len); in esp4_input_extended()
768 if (ipsec_incr_history_count(m, IPPROTO_ESP, spi) != 0) { in esp4_input_extended()
780 m->m_pkthdr.csum_flags = CSUM_DATA_VALID | CSUM_PSEUDO_HDR; in esp4_input_extended()
781 m->m_pkthdr.csum_data = 0xFFFF; in esp4_input_extended()
787 ipsec4_in_reject(m, NULL)) { in esp4_input_extended()
802 if (m->m_len < off + sizeof(struct udphdr)) { in esp4_input_extended()
803 m = m_pullup(m, off + sizeof(struct udphdr)); in esp4_input_extended()
804 if (!m) { in esp4_input_extended()
810 ip = mtod(m, struct ip *); in esp4_input_extended()
827 DTRACE_IP6(receive, struct mbuf *, m, struct inpcb *, NULL, in esp4_input_extended()
828 struct ip *, ip, struct ifnet *, m->m_pkthdr.rcvif, in esp4_input_extended()
841 if ((mlen = m_length2(m, NULL)) < hlen) { in esp4_input_extended()
852 ip->ip_sum = ip_cksum_hdr_in(m, hlen); in esp4_input_extended()
854 esp_input_log(m, sav, spi, seq); in esp4_input_extended()
856 if ((m->m_pkthdr.pkt_flags & PKTF_WAKE_PKT) == PKTF_WAKE_PKT) { in esp4_input_extended()
857 if_ports_used_match_mbuf(ipsec_if, PF_INET, m); in esp4_input_extended()
863 out_m = m; in esp4_input_extended()
868 errno_t inject_error = ipsec_inject_inbound_packet(ipsec_if, m); in esp4_input_extended()
872 m = NULL; in esp4_input_extended()
879 if ((m->m_pkthdr.pkt_flags & PKTF_WAKE_PKT) == PKTF_WAKE_PKT) { in esp4_input_extended()
880 if_ports_used_match_mbuf(m->m_pkthdr.rcvif, PF_INET, m); in esp4_input_extended()
881 if (m->m_pkthdr.rcvif == NULL) { in esp4_input_extended()
886 ip_proto_dispatch_in(m, off, (u_int8_t)nxt, 0); in esp4_input_extended()
888 m_freem(m); in esp4_input_extended()
890 m = NULL; in esp4_input_extended()
909 if (m) { in esp4_input_extended()
910 m_freem(m); in esp4_input_extended()
927 struct mbuf *m = *mp; in esp6_input_extended() local
945 if (off % 4 != 0 || m->m_pkthdr.len % 4 != 0) { in esp6_input_extended()
947 "(off=%d, pktlen=%d)\n", off, m->m_pkthdr.len)); in esp6_input_extended()
953 IP6_EXTHDR_CHECK(m, off, ESPMAXLEN, {return IPPROTO_DONE;}); in esp6_input_extended()
954 esp = (struct esp *)(void *)(mtod(m, caddr_t) + off); in esp6_input_extended()
956 IP6_EXTHDR_GET(esp, struct esp *, m, off, ESPMAXLEN); in esp6_input_extended()
962 m->m_pkthdr.csum_flags &= ~CSUM_RX_FLAGS; in esp6_input_extended()
965 MBUF_STRICT_DATA_ALIGNMENT_CHECK_32(m); in esp6_input_extended()
967 ip6 = mtod(m, struct ip6_hdr *); in esp6_input_extended()
1068 if (m->m_pkthdr.len < off + ESPMAXLEN + siz) { in esp6_input_extended()
1071 m->m_pkthdr.len)); in esp6_input_extended()
1075 m_copydata(m, m->m_pkthdr.len - (int)siz, (int)siz, (caddr_t) saved_icv); in esp6_input_extended()
1087 if (m->m_pkthdr.len < off + ESPMAXLEN + siz) { in esp6_input_extended()
1090 m->m_pkthdr.len)); in esp6_input_extended()
1102 m_copydata(m, m->m_pkthdr.len - (int)siz, (int)siz, (caddr_t) &sum0[0]); in esp6_input_extended()
1104 if (esp_auth(m, off, m->m_pkthdr.len - off - siz, sav, sum)) { in esp6_input_extended()
1118 m->m_flags |= M_AUTHIPDGM; in esp6_input_extended()
1133 m_adj(m, (int)-siz); in esp6_input_extended()
1134 ip6 = mtod(m, struct ip6_hdr *); in esp6_input_extended()
1152 if (m->m_pkthdr.len < off + esplen + ivlen + sizeof(esptail)) { in esp6_input_extended()
1160 IP6_EXTHDR_CHECK(m, off, (int)(esplen + ivlen), goto bad); /*XXX*/ in esp6_input_extended()
1162 IP6_EXTHDR_GET(esp, struct esp *, m, off, esplen + ivlen); in esp6_input_extended()
1165 m = NULL; in esp6_input_extended()
1169 ip6 = mtod(m, struct ip6_hdr *); /*set it again just in case*/ in esp6_input_extended()
1186 if ((*algo->decrypt)(m, off, sav, algo, ivlen)) { in esp6_input_extended()
1188 m = NULL; in esp6_input_extended()
1198 m->m_flags |= M_DECRYPTED; in esp6_input_extended()
1208 m->m_flags |= M_AUTHIPDGM; in esp6_input_extended()
1226 m_copydata(m, m->m_pkthdr.len - sizeof(esptail), sizeof(esptail), in esp6_input_extended()
1231 if (m->m_pkthdr.len < taillen in esp6_input_extended()
1232 || m->m_pkthdr.len - taillen < sizeof(struct ip6_hdr)) { /*?*/ in esp6_input_extended()
1241 m_adj(m, -taillen); in esp6_input_extended()
1242 ip6 = mtod(m, struct ip6_hdr *); in esp6_input_extended()
1247 if (m->m_len < off) { in esp6_input_extended()
1248 m = m_pullup(m, off); in esp6_input_extended()
1249 if (!m) { in esp6_input_extended()
1255 ip6 = mtod(m, struct ip6_hdr *); in esp6_input_extended()
1271 ip6 = esp6_input_strip_udp_encap(m, off); in esp6_input_extended()
1277 if (ipsec6_tunnel_validate(m, (int)(off + esplen + ivlen), nxt, sav, &ifamily)) { in esp6_input_extended()
1291 m_adj(m, (int)(off + esplen + ivlen)); in esp6_input_extended()
1295 if (m->m_len < sizeof(*ip6)) { in esp6_input_extended()
1304 m = m_pullup(m, sizeof(*ip6)); in esp6_input_extended()
1305 if (!m) { in esp6_input_extended()
1310 ip6 = mtod(m, struct ip6_hdr *); in esp6_input_extended()
1336 if (m->m_len < sizeof(*ip)) { in esp6_input_extended()
1337 m = m_pullup(m, sizeof(*ip)); in esp6_input_extended()
1338 if (!m) { in esp6_input_extended()
1347 ip = mtod(m, struct ip *); in esp6_input_extended()
1381 key_sa_recordxfer(sav, m->m_pkthdr.len); in esp6_input_extended()
1382 if (ipsec_incr_history_count(m, IPPROTO_ESP, spi) != 0 || in esp6_input_extended()
1383 ipsec_incr_history_count(m, IPPROTO_IPV6, 0) != 0) { in esp6_input_extended()
1391 m->m_pkthdr.rcvif = ifa->ifa_ifp; in esp6_input_extended()
1404 if ((m->m_pkthdr.pkt_flags & PKTF_WAKE_PKT) == PKTF_WAKE_PKT) { in esp6_input_extended()
1405 if_ports_used_match_mbuf(m->m_pkthdr.rcvif, ifamily, m); in esp6_input_extended()
1406 if (m->m_pkthdr.rcvif == NULL) { in esp6_input_extended()
1412 esp_input_log(m, sav, spi, seq); in esp6_input_extended()
1421 errno_t inject_error = ipsec_inject_inbound_packet(ipsec_if, m); in esp6_input_extended()
1425 m = NULL; in esp6_input_extended()
1433 if (proto_input(ifamily == AF_INET ? PF_INET : PF_INET6, m) != 0) { in esp6_input_extended()
1449 prvnxtp = ip6_get_prevhdr(m, off); /* XXX */ in esp6_input_extended()
1455 ip6 = mtod(m, struct ip6_hdr *); in esp6_input_extended()
1456 if (m->m_len >= stripsiz + off) { in esp6_input_extended()
1458 m->m_data += stripsiz; in esp6_input_extended()
1459 m->m_len -= stripsiz; in esp6_input_extended()
1460 m->m_pkthdr.len -= stripsiz; in esp6_input_extended()
1468 n = m_split(m, off, M_DONTWAIT); in esp6_input_extended()
1475 m->m_pkthdr.len += n->m_pkthdr.len; in esp6_input_extended()
1476 m_cat(m, n); in esp6_input_extended()
1486 if (m->m_len != m->m_pkthdr.len) { in esp6_input_extended()
1493 M_COPY_PKTHDR(n, m); in esp6_input_extended()
1495 if (n && m->m_pkthdr.len > maxlen) { in esp6_input_extended()
1508 if (m->m_pkthdr.len <= maxlen) { in esp6_input_extended()
1509 m_copydata(m, 0, m->m_pkthdr.len, mtod(n, caddr_t)); in esp6_input_extended()
1510 n->m_len = m->m_pkthdr.len; in esp6_input_extended()
1511 n->m_pkthdr.len = m->m_pkthdr.len; in esp6_input_extended()
1513 m_freem(m); in esp6_input_extended()
1515 m_copydata(m, 0, maxlen, mtod(n, caddr_t)); in esp6_input_extended()
1517 n->m_pkthdr.len = m->m_pkthdr.len; in esp6_input_extended()
1518 n->m_next = m; in esp6_input_extended()
1519 m_adj(m, maxlen); in esp6_input_extended()
1520 m->m_flags &= ~M_PKTHDR; in esp6_input_extended()
1522 m = n; in esp6_input_extended()
1525 ip6 = mtod(m, struct ip6_hdr *); in esp6_input_extended()
1528 key_sa_recordxfer(sav, m->m_pkthdr.len); in esp6_input_extended()
1529 if (ipsec_incr_history_count(m, IPPROTO_ESP, spi) != 0) { in esp6_input_extended()
1541 m->m_pkthdr.csum_flags = CSUM_DATA_VALID | CSUM_PSEUDO_HDR; in esp6_input_extended()
1542 m->m_pkthdr.csum_data = 0xFFFF; in esp6_input_extended()
1555 esp_input_log(m, sav, spi, seq); in esp6_input_extended()
1557 if ((m->m_pkthdr.pkt_flags & PKTF_WAKE_PKT) == PKTF_WAKE_PKT) { in esp6_input_extended()
1558 if_ports_used_match_mbuf(ipsec_if, PF_INET6, m); in esp6_input_extended()
1568 errno_t inject_error = ipsec_inject_inbound_packet(ipsec_if, m); in esp6_input_extended()
1572 m = NULL; in esp6_input_extended()
1579 if ((m->m_pkthdr.pkt_flags & PKTF_WAKE_PKT) == PKTF_WAKE_PKT) { in esp6_input_extended()
1580 if_ports_used_match_mbuf(m->m_pkthdr.rcvif, PF_INET, m); in esp6_input_extended()
1581 if (m->m_pkthdr.rcvif == NULL) { in esp6_input_extended()
1590 *mp = m; in esp6_input_extended()
1607 if (m) { in esp6_input_extended()
1608 m_freem(m); in esp6_input_extended()
1626 struct mbuf *m; in esp6_ctlinput() local
1641 m = ip6cp->ip6c_m; in esp6_ctlinput()
1645 m = NULL; in esp6_ctlinput()
1674 if (m->m_pkthdr.len < off + sizeof(esp)) { in esp6_ctlinput()
1678 if (m->m_len < off + sizeof(esp)) { in esp6_ctlinput()
1683 m_copydata(m, off, sizeof(esp), (caddr_t)&esp); in esp6_ctlinput()
1686 espp = (struct newesp*)(void *)(mtod(m, caddr_t) + off); in esp6_ctlinput()