Lines Matching refs:ip6h

202 	ip6_t		*ip6h;		/* Outer header */  in icmp_inbound_v6()  local
209 ip6h = (ip6_t *)mp->b_rptr; in icmp_inbound_v6()
214 if (IN6_IS_ADDR_MULTICAST(&ip6h->ip6_src)) { in icmp_inbound_v6()
233 ip6h = ip_pullup(mp, ip_hdr_length + ICMP6_MINLEN, ira); in icmp_inbound_v6()
234 if (ip6h == NULL) { in icmp_inbound_v6()
242 DTRACE_PROBE2(icmp__inbound__v6, ip6_t *, ip6h, icmp6_t *, icmp6); in icmp_inbound_v6()
273 if (IN6_IS_ADDR_MULTICAST(&ip6h->ip6_dst) && in icmp_inbound_v6()
295 ip6h = (ip6_t *)mp->b_rptr; in icmp_inbound_v6()
300 icmp_send_reply_v6(mp, ip6h, icmp6, ira); in icmp_inbound_v6()
404 ip6h = (ip6_t *)mp->b_rptr; in icmp_inbound_v6()
413 icmp_redirect_v6(mp, ip6h, (nd_redirect_t *)icmp6, ira); in icmp_inbound_v6()
434 icmp_send_reply_v6(mblk_t *mp, ip6_t *ip6h, icmp6_t *icmp6, in icmp_send_reply_v6() argument
455 ip6h = (ip6_t *)mp->b_rptr; in icmp_send_reply_v6()
456 ip6h->ip6_nxt = IPPROTO_ICMPV6; in icmp_send_reply_v6()
457 i = ntohs(ip6h->ip6_plen); in icmp_send_reply_v6()
459 ip6h->ip6_plen = htons(i); in icmp_send_reply_v6()
461 ASSERT(ntohs(ip6h->ip6_plen) + IPV6_HDR_LEN == msgdsize(mp)); in icmp_send_reply_v6()
463 ip6h->ip6_vcf &= ~IPV6_FLOWINFO_FLOWLABEL; in icmp_send_reply_v6()
466 origsrc = ip6h->ip6_src; in icmp_send_reply_v6()
467 ip6h->ip6_src = ip6h->ip6_dst; in icmp_send_reply_v6()
468 ip6h->ip6_dst = origsrc; in icmp_send_reply_v6()
471 ip6h->ip6_hops = ipst->ips_ipv6_def_hops; in icmp_send_reply_v6()
477 icmp6->icmp6_cksum = ip6h->ip6_plen; in icmp_send_reply_v6()
497 if (!ipsec_in_to_out(ira, &ixas, mp, NULL, ip6h)) { in icmp_send_reply_v6()
505 if (IN6_IS_ADDR_LINKSCOPE(&ip6h->ip6_src)) { in icmp_send_reply_v6()
518 ip6h->ip6_src = ipv6_all_zeros; in icmp_send_reply_v6()
548 ip6_t *ip6h; /* Inner header */ in icmp_inbound_verify_v6() local
550 ip6h = (ip6_t *)&icmp6[1]; in icmp_inbound_verify_v6()
551 if ((uchar_t *)ip6h + IPV6_HDR_LEN > mp->b_wptr) in icmp_inbound_verify_v6()
557 if ((IPH_HDR_VERSION(ip6h) != IPV6_VERSION)) in icmp_inbound_verify_v6()
562 if ((uchar_t *)ip6h + hdr_length > mp->b_wptr) in icmp_inbound_verify_v6()
574 if (!ip_hdr_length_nexthdr_v6(mp, ip6h, &hdr_length, &nexthdrp)) in icmp_inbound_verify_v6()
585 if ((uchar_t *)ip6h + hdr_length + ICMP_MIN_TP_HDR_LEN > in icmp_inbound_verify_v6()
596 if ((uchar_t *)ip6h + hdr_length + ICMP_MIN_TP_HDR_LEN > in icmp_inbound_verify_v6()
600 tcpha = (tcpha_t *)((uchar_t *)ip6h + hdr_length); in icmp_inbound_verify_v6()
605 connp = ipcl_tcp_lookup_reversed_ipv6(ip6h, tcpha, TCPS_LISTEN, in icmp_inbound_verify_v6()
623 if ((uchar_t *)ip6h + hdr_length + ICMP_MIN_TP_HDR_LEN > in icmp_inbound_verify_v6()
635 in_ip6h = (ip6_t *)((uint8_t *)ip6h + hdr_length); in icmp_inbound_verify_v6()
681 ip6_t *ip6h; /* Inner IP header */ in icmp_inbound_too_big_v6() local
684 ip6h = (ip6_t *)&icmp6[1]; in icmp_inbound_too_big_v6()
685 final_dst = ip_get_dst_v6(ip6h, NULL, NULL); in icmp_inbound_too_big_v6()
760 ip6_t *ip6h; /* Inner IP header */ in icmp_inbound_error_fanout_v6() local
771 ip6h = (ip6_t *)&icmp6[1]; in icmp_inbound_error_fanout_v6()
773 ASSERT((uchar_t *)&ip6h[1] <= mp->b_wptr); in icmp_inbound_error_fanout_v6()
775 if (!ip_hdr_length_nexthdr_v6(mp, ip6h, &hdr_length, &nexthdrp)) in icmp_inbound_error_fanout_v6()
785 rip6h.ip6_src = ip6h->ip6_dst; in icmp_inbound_error_fanout_v6()
786 rip6h.ip6_dst = ip6h->ip6_src; in icmp_inbound_error_fanout_v6()
793 up = (uint16_t *)((uchar_t *)ip6h + hdr_length); in icmp_inbound_error_fanout_v6()
807 tcpha = (tcpha_t *)((uchar_t *)ip6h + hdr_length); in icmp_inbound_error_fanout_v6()
812 connp = ipcl_tcp_lookup_reversed_ipv6(ip6h, tcpha, in icmp_inbound_error_fanout_v6()
821 NULL, ip6h, ira); in icmp_inbound_error_fanout_v6()
851 up = (uint16_t *)((uchar_t *)ip6h + hdr_length); in icmp_inbound_error_fanout_v6()
889 ip6h = (ip6_t *)mp->b_rptr; in icmp_inbound_error_fanout_v6()
891 if (ip6h->ip6_nxt != IPPROTO_ICMPV6) in icmp_inbound_error_fanout_v6()
892 hdr_length = ip_hdr_length_v6(mp, ip6h); in icmp_inbound_error_fanout_v6()
910 in_ip6h = (ip6_t *)((uint8_t *)ip6h + hdr_length); in icmp_inbound_error_fanout_v6()
912 if (IN6_ARE_ADDR_EQUAL(&in_ip6h->ip6_src, &ip6h->ip6_src) && in icmp_inbound_error_fanout_v6()
913 IN6_ARE_ADDR_EQUAL(&in_ip6h->ip6_dst, &ip6h->ip6_dst)) { in icmp_inbound_error_fanout_v6()
935 bcopy(in_ip6h, ip6h, mp->b_wptr - (uchar_t *)in_ip6h); in icmp_inbound_error_fanout_v6()
942 ip6h = (ip6_t *)mp->b_rptr; in icmp_inbound_error_fanout_v6()
944 if (ip6h->ip6_nxt != IPPROTO_ICMPV6) in icmp_inbound_error_fanout_v6()
945 hdr_length = ip_hdr_length_v6(mp, ip6h); in icmp_inbound_error_fanout_v6()
1003 icmp_redirect_v6(mblk_t *mp, ip6_t *ip6h, nd_redirect_t *rd, in icmp_redirect_v6() argument
1039 src = &ip6h->ip6_src; in icmp_redirect_v6()
1045 (ip6h->ip6_hops != IPV6_MAX_HOPS) || in icmp_redirect_v6()
1254 ip6_t *ip6h; in icmp_pkt_v6() local
1265 ip6h = (ip6_t *)mp->b_rptr; in icmp_pkt_v6()
1281 if (IN6_IS_ADDR_LINKSCOPE(&ip6h->ip6_src)) { in icmp_pkt_v6()
1298 if (!ipsec_in_to_out(ira, &ixas, mp, NULL, ip6h)) { in icmp_pkt_v6()
1323 if (IN6_IS_ADDR_LINKLOCAL(&ip6h->ip6_src) || in icmp_pkt_v6()
1324 IN6_IS_ADDR_LINKLOCAL(&ip6h->ip6_dst)) in icmp_pkt_v6()
1327 ire = ire_ftable_lookup_v6(&ip6h->ip6_dst, 0, 0, in icmp_pkt_v6()
1331 v6src = ip6h->ip6_dst; in icmp_pkt_v6()
1338 v6dst = ip6h->ip6_src; in icmp_pkt_v6()
1367 ip6h = (ip6_t *)mp->b_rptr; in icmp_pkt_v6()
1368 mp1->b_wptr = (uchar_t *)ip6h + (IPV6_HDR_LEN + len); in icmp_pkt_v6()
1370 ip6h->ip6_vcf = IPV6_DEFAULT_VERS_AND_FLOW; in icmp_pkt_v6()
1371 ip6h->ip6_nxt = IPPROTO_ICMPV6; in icmp_pkt_v6()
1372 ip6h->ip6_hops = ipst->ips_ipv6_def_hops; in icmp_pkt_v6()
1373 ip6h->ip6_dst = v6dst; in icmp_pkt_v6()
1374 ip6h->ip6_src = v6src; in icmp_pkt_v6()
1380 ip6h->ip6_plen = htons((uint16_t)(msgdsize(mp) - IPV6_HDR_LEN)); in icmp_pkt_v6()
1381 icmp6 = (icmp6_t *)&ip6h[1]; in icmp_pkt_v6()
1387 icmp6->icmp6_cksum = ip6h->ip6_plen; in icmp_pkt_v6()
1389 ip6h->ip6_hops = IPV6_MAX_HOPS; in icmp_pkt_v6()
1479 ip6_t *ip6h; in icmp_pkt_err_ok_v6() local
1487 ip6h = (ip6_t *)mp->b_rptr; in icmp_pkt_err_ok_v6()
1491 if (IN6_IS_ADDR_MULTICAST(&ip6h->ip6_src) || in icmp_pkt_err_ok_v6()
1492 IN6_IS_ADDR_V4MAPPED(&ip6h->ip6_src) || in icmp_pkt_err_ok_v6()
1493 IN6_IS_ADDR_UNSPECIFIED(&ip6h->ip6_src)) { in icmp_pkt_err_ok_v6()
1498 if (ip6h->ip6_nxt == IPPROTO_ICMPV6) { in icmp_pkt_err_ok_v6()
1509 ip6h = (ip6_t *)mp->b_rptr; in icmp_pkt_err_ok_v6()
1511 icmp6 = (icmp6_t *)&ip6h[1]; in icmp_pkt_err_ok_v6()
1525 (llbcast || IN6_IS_ADDR_MULTICAST(&ip6h->ip6_dst))) { in icmp_pkt_err_ok_v6()
1556 ip_send_potential_redirect_v6(mblk_t *mp, ip6_t *ip6h, ire_t *ire, in ip_send_potential_redirect_v6() argument
1570 if (ip_source_routed_v6(ip6h, mp, ipst)) in ip_send_potential_redirect_v6()
1575 v6targ = &ip6h->ip6_dst; in ip_send_potential_redirect_v6()
1595 src_ire_v6 = ire_ftable_lookup_v6(&ip6h->ip6_src, in ip_send_potential_redirect_v6()
1610 icmp_send_redirect_v6(mp1, v6targ, &ip6h->ip6_dst, ira); in ip_send_potential_redirect_v6()
1812 ip6_t *ip6h = (ip6_t *)mp->b_rptr; in icmp_param_problem_nexthdr_v6() local
1819 if (!ip_hdr_length_nexthdr_v6(mp, ip6h, &hdr_length, &nexthdrp)) { in icmp_param_problem_nexthdr_v6()
2288 ip_fanout_proto_v6(mblk_t *mp, ip6_t *ip6h, ip_recv_attr_t *ira) in ip_fanout_proto_v6() argument
2291 in6_addr_t laddr = ip6h->ip6_dst; in ip_fanout_proto_v6()
2303 if (IPCL_PROTO_MATCH_V6(connp, ira, ip6h) && in ip_fanout_proto_v6()
2334 if (IPCL_PROTO_MATCH_V6(connp, ira, ip6h) && in ip_fanout_proto_v6()
2372 ip_fanout_proto_conn(connp, mp, NULL, ip6h, ira); in ip_fanout_proto_v6()
2390 ip6_t *ip6h; in ip_fanout_send_icmp_v6() local
2406 ip6h = (ip6_t *)mp->b_rptr; in ip_fanout_send_icmp_v6()
2408 mp = ipsec_check_global_policy(mp, NULL, NULL, ip6h, ira, ns); in ip_fanout_send_icmp_v6()
2471 ip_fanout_udp_multi_v6(mblk_t *mp, ip6_t *ip6h, uint16_t lport, uint16_t fport, in ip_fanout_udp_multi_v6() argument
2483 laddr = ip6h->ip6_dst; in ip_fanout_udp_multi_v6()
2484 faddr = ip6h->ip6_src; in ip_fanout_udp_multi_v6()
2492 conn_wantpacket_v6(connp, ira, ip6h) && in ip_fanout_udp_multi_v6()
2514 conn_wantpacket_v6(connp, ira, ip6h) && in ip_fanout_udp_multi_v6()
2555 ip_fanout_udp_conn(connp, mp, NULL, ip6h, ira); in ip_fanout_udp_multi_v6()
2568 ip_fanout_proto_v6(mp, ip6h, ira); in ip_fanout_udp_multi_v6()
2596 ip_find_hdr_v6(mblk_t *mp, ip6_t *ip6h, boolean_t label_separate, ip_pkt_t *ipp, in ip_find_hdr_v6() argument
2608 ipp->ipp_hoplimit = ip6h->ip6_hops; in ip_find_hdr_v6()
2609 ipp->ipp_tclass = IPV6_FLOW_TCLASS(ip6h->ip6_flow); in ip_find_hdr_v6()
2610 ipp->ipp_addr = ip6h->ip6_dst; in ip_find_hdr_v6()
2613 whereptr = ((uint8_t *)&ip6h[1]); /* point to next hdr */ in ip_find_hdr_v6()
2616 nexthdr = ip6h->ip6_nxt; in ip_find_hdr_v6()
2738 ip_hdr_length_v6(mblk_t *mp, ip6_t *ip6h) in ip_hdr_length_v6() argument
2742 if (!ip_hdr_length_nexthdr_v6(mp, ip6h, &hdr_len, NULL)) in ip_hdr_length_v6()
2743 hdr_len = sizeof (*ip6h); in ip_hdr_length_v6()
2766 ip_process_options_v6(mblk_t *mp, ip6_t *ip6h, in ip_process_options_v6() argument
2879 tmp = ip6h->ip6_src; in ip_process_options_v6()
2881 ip6h->ip6_src = *(in6_addr_t *)oh->ip6oh_addr; in ip_process_options_v6()
2931 (uint8_t *)ip6h), in ip_process_options_v6()
2942 (uint8_t *)ip6h), in ip_process_options_v6()
2959 (uint32_t)(optptr - (uint8_t *)ip6h), in ip_process_options_v6()
2969 ip_process_rthdr(mblk_t *mp, ip6_t *ip6h, ip6_rthdr_t *rth, in ip_process_rthdr() argument
2988 (uint32_t)((uchar_t *)&rth->ip6r_type - (uchar_t *)ip6h), in ip_process_rthdr()
3048 ip6_t *ip6h; in ipsec_needs_processing_v6() local
3059 ip6h = (ip6_t *)mp->b_rptr; in ipsec_needs_processing_v6()
3061 whereptr = ((uint8_t *)&ip6h[1]); /* point to next hdr */ in ipsec_needs_processing_v6()
3069 nexthdrp = &ip6h->ip6_nxt; in ipsec_needs_processing_v6()
3193 ip_input_fragment_v6(mblk_t *mp, ip6_t *ip6h, in ip_input_fragment_v6() argument
3280 prev_nexthdr_offset = (uint8_t *)&ip6h->ip6_nxt - (uint8_t *)ip6h; in ip_input_fragment_v6()
3281 prev_nexthdr = ip6h->ip6_nxt; in ip_input_fragment_v6()
3282 ptr = (uint8_t *)&ip6h[1]; in ip_input_fragment_v6()
3292 - (uint8_t *)ip6h; in ip_input_fragment_v6()
3303 - (uint8_t *)ip6h; in ip_input_fragment_v6()
3313 - (uint8_t *)ip6h; in ip_input_fragment_v6()
3337 if (more_frags && (ntohs(ip6h->ip6_plen) & 7)) { in ip_input_fragment_v6()
3340 (uint32_t)((char *)&ip6h->ip6_plen - in ip_input_fragment_v6()
3341 (char *)ip6h), B_FALSE, ira); in ip_input_fragment_v6()
3345 v6src_ptr = &ip6h->ip6_src; in ip_input_fragment_v6()
3346 v6dst_ptr = &ip6h->ip6_dst; in ip_input_fragment_v6()
3349 hdr_length = (uint_t)((char *)&fraghdr[1] - (char *)ip6h); in ip_input_fragment_v6()
3361 (char *)ip6h), B_FALSE, ira); in ip_input_fragment_v6()
3383 ecn_info = (uint8_t)(ntohl(ip6h->ip6_vcf & htonl(~0xFFCFFFFF)) >> 20); in ip_input_fragment_v6()
3763 ip6h = (ip6_t *)mp->b_rptr; in ip_input_fragment_v6()
3764 ((char *)ip6h)[prev_nexthdr_offset] = nexthdr; in ip_input_fragment_v6()
3768 ip6h->ip6_plen = htons((uint16_t)(packet_size - IPV6_HDR_LEN)); in ip_input_fragment_v6()
3770 ip6h->ip6_vcf &= htonl(0xFFCFFFFF); in ip_input_fragment_v6()
3771 ip6h->ip6_vcf |= htonl(ecn_info << 20); in ip_input_fragment_v6()
3837 ip_get_dst_v6(ip6_t *ip6h, const mblk_t *mp, boolean_t *is_fragment) in ip_get_dst_v6() argument
3845 whereptr = (uint8_t *)ip6h; in ip_get_dst_v6()
3852 rv = ip6h->ip6_dst; in ip_get_dst_v6()
3853 nexthdr = ip6h->ip6_nxt; in ip_get_dst_v6()
3878 mp, mblk_t *, current_mp, ip6_t *, ip6h); in ip_get_dst_v6()
3914 ip_source_routed_v6(ip6_t *ip6h, mblk_t *mp, ip_stack_t *ipst) in ip_source_routed_v6() argument
3925 nexthdr = ip6h->ip6_nxt; in ip_source_routed_v6()
3931 byteptr = (uint8_t *)ip6h + ehdrlen; in ip_source_routed_v6()
3949 byteptr = (uint8_t *)ip6h + ehdrlen; in ip_source_routed_v6()
4007 ip6_t *ip6h = (ip6_t *)mp->b_rptr; in ip_fragment_v6() local
4037 ASSERT(ntohs(ip6h->ip6_plen) + IPV6_HDR_LEN == pkt_len); in ip_fragment_v6()
4046 nexthdr = ip6h->ip6_nxt; in ip_fragment_v6()
4047 ptr = (uint8_t *)&ip6h[1]; in ip_fragment_v6()
4084 unfragmentable_len = (uint_t)(ptr - (uint8_t *)ip6h); in ip_fragment_v6()
4106 bcopy(ip6h, fip6h, unfragmentable_len); in ip_fragment_v6()
4218 ip6_t *ip6h = (ip6_t *)mp->b_rptr; in ip_fraghdr_add_v6() local
4235 nexthdr = ip6h->ip6_nxt; in ip_fraghdr_add_v6()
4236 prev_nexthdr_offset = (uint8_t *)&ip6h->ip6_nxt - (uint8_t *)ip6h; in ip_fraghdr_add_v6()
4237 ptr = (uint8_t *)&ip6h[1]; in ip_fraghdr_add_v6()
4247 - (uint8_t *)ip6h; in ip_fraghdr_add_v6()
4259 - (uint8_t *)ip6h; in ip_fraghdr_add_v6()
4270 - (uint8_t *)ip6h; in ip_fraghdr_add_v6()
4274 unfragmentable_len = (uint_t)(ptr - (uint8_t *)ip6h); in ip_fraghdr_add_v6()
4297 bcopy(ip6h, fip6h, unfragmentable_len); in ip_fraghdr_add_v6()
4323 conn_wantpacket_v6(conn_t *connp, ip_recv_attr_t *ira, ip6_t *ip6h) in conn_wantpacket_v6() argument
4328 in6_addr_t *v6dst_ptr = &ip6h->ip6_dst; in conn_wantpacket_v6()
4329 in6_addr_t *v6src_ptr = &ip6h->ip6_src; in conn_wantpacket_v6()
4470 ip6_t *ip6h = (ip6_t *)buf; in ip_build_hdrs_v6() local
4473 ip6h->ip6_vcf = in ip_build_hdrs_v6()
4479 ip6h->ip6_vcf = IPV6_TCLASS_FLOW(ip6h->ip6_vcf, in ip_build_hdrs_v6()
4484 ip6h->ip6_hops = ipp->ipp_hoplimit; in ip_build_hdrs_v6()
4486 ip6h->ip6_hops = ipp->ipp_unicast_hops; in ip_build_hdrs_v6()
4490 ip6h->ip6_src = ipp->ipp_addr; in ip_build_hdrs_v6()
4492 nxthdr_ptr = (uint8_t *)&ip6h->ip6_nxt; in ip_build_hdrs_v6()
4493 cp = (uint8_t *)&ip6h[1]; in ip_build_hdrs_v6()
4601 ip_find_rthdr_v6(ip6_t *ip6h, uint8_t *endptr) in ip_find_rthdr_v6() argument
4607 uint8_t *ptr = (uint8_t *)&ip6h[1]; in ip_find_rthdr_v6()
4609 if (ip6h->ip6_nxt == IPPROTO_ROUTING) in ip_find_rthdr_v6()
4623 nexthdr = ip6h->ip6_nxt; in ip_find_rthdr_v6()
4668 ip_massage_options_v6(ip6_t *ip6h, ip6_rthdr_t *rth, netstack_t *ns) in ip_massage_options_v6() argument
4693 ptr = (uint16_t *)&ip6h->ip6_dst; in ip_massage_options_v6()
4713 *addrptr = ip6h->ip6_dst; in ip_massage_options_v6()
4714 ip6h->ip6_dst = tmp; in ip_massage_options_v6()
4723 ptr = (uint16_t *)&ip6h->ip6_dst; in ip_massage_options_v6()
4841 ip6_t *ip6h; in ipsec_ah_get_hdr_size_v6() local
4851 ip6h = (ip6_t *)mp->b_rptr; in ipsec_ah_get_hdr_size_v6()
4853 nexthdr = ip6h->ip6_nxt; in ipsec_ah_get_hdr_size_v6()
4854 whereptr = (uint8_t *)&ip6h[1]; in ipsec_ah_get_hdr_size_v6()