Lines Matching refs:ip6h
200 ip6_t *ip6h; /* Outer header */ in icmp_inbound_v6() local
207 ip6h = (ip6_t *)mp->b_rptr; in icmp_inbound_v6()
212 if (IN6_IS_ADDR_MULTICAST(&ip6h->ip6_src)) { in icmp_inbound_v6()
231 ip6h = ip_pullup(mp, ip_hdr_length + ICMP6_MINLEN, ira); in icmp_inbound_v6()
232 if (ip6h == NULL) { in icmp_inbound_v6()
240 DTRACE_PROBE2(icmp__inbound__v6, ip6_t *, ip6h, icmp6_t *, icmp6); in icmp_inbound_v6()
271 if (IN6_IS_ADDR_MULTICAST(&ip6h->ip6_dst) && in icmp_inbound_v6()
293 ip6h = (ip6_t *)mp->b_rptr; in icmp_inbound_v6()
298 icmp_send_reply_v6(mp, ip6h, icmp6, ira); in icmp_inbound_v6()
402 ip6h = (ip6_t *)mp->b_rptr; in icmp_inbound_v6()
411 icmp_redirect_v6(mp, ip6h, (nd_redirect_t *)icmp6, ira); in icmp_inbound_v6()
432 icmp_send_reply_v6(mblk_t *mp, ip6_t *ip6h, icmp6_t *icmp6, in icmp_send_reply_v6() argument
453 ip6h = (ip6_t *)mp->b_rptr; in icmp_send_reply_v6()
454 ip6h->ip6_nxt = IPPROTO_ICMPV6; in icmp_send_reply_v6()
455 i = ntohs(ip6h->ip6_plen); in icmp_send_reply_v6()
457 ip6h->ip6_plen = htons(i); in icmp_send_reply_v6()
459 ASSERT(ntohs(ip6h->ip6_plen) + IPV6_HDR_LEN == msgdsize(mp)); in icmp_send_reply_v6()
461 ip6h->ip6_vcf &= ~IPV6_FLOWINFO_FLOWLABEL; in icmp_send_reply_v6()
464 origsrc = ip6h->ip6_src; in icmp_send_reply_v6()
465 ip6h->ip6_src = ip6h->ip6_dst; in icmp_send_reply_v6()
466 ip6h->ip6_dst = origsrc; in icmp_send_reply_v6()
469 ip6h->ip6_hops = ipst->ips_ipv6_def_hops; in icmp_send_reply_v6()
475 icmp6->icmp6_cksum = ip6h->ip6_plen; in icmp_send_reply_v6()
495 if (!ipsec_in_to_out(ira, &ixas, mp, NULL, ip6h)) { in icmp_send_reply_v6()
503 if (IN6_IS_ADDR_LINKSCOPE(&ip6h->ip6_src)) { in icmp_send_reply_v6()
516 ip6h->ip6_src = ipv6_all_zeros; in icmp_send_reply_v6()
546 ip6_t *ip6h; /* Inner header */ in icmp_inbound_verify_v6() local
548 ip6h = (ip6_t *)&icmp6[1]; in icmp_inbound_verify_v6()
549 if ((uchar_t *)ip6h + IPV6_HDR_LEN > mp->b_wptr) in icmp_inbound_verify_v6()
555 if ((IPH_HDR_VERSION(ip6h) != IPV6_VERSION)) in icmp_inbound_verify_v6()
560 if ((uchar_t *)ip6h + hdr_length > mp->b_wptr) in icmp_inbound_verify_v6()
572 if (!ip_hdr_length_nexthdr_v6(mp, ip6h, &hdr_length, &nexthdrp)) in icmp_inbound_verify_v6()
583 if ((uchar_t *)ip6h + hdr_length + ICMP_MIN_TP_HDR_LEN > in icmp_inbound_verify_v6()
594 if ((uchar_t *)ip6h + hdr_length + ICMP_MIN_TP_HDR_LEN > in icmp_inbound_verify_v6()
598 tcpha = (tcpha_t *)((uchar_t *)ip6h + hdr_length); in icmp_inbound_verify_v6()
603 connp = ipcl_tcp_lookup_reversed_ipv6(ip6h, tcpha, TCPS_LISTEN, in icmp_inbound_verify_v6()
621 if ((uchar_t *)ip6h + hdr_length + ICMP_MIN_TP_HDR_LEN > in icmp_inbound_verify_v6()
633 in_ip6h = (ip6_t *)((uint8_t *)ip6h + hdr_length); in icmp_inbound_verify_v6()
679 ip6_t *ip6h; /* Inner IP header */ in icmp_inbound_too_big_v6() local
682 ip6h = (ip6_t *)&icmp6[1]; in icmp_inbound_too_big_v6()
683 final_dst = ip_get_dst_v6(ip6h, NULL, NULL); in icmp_inbound_too_big_v6()
770 ip6_t *ip6h; /* Inner IP header */ in icmp_inbound_error_fanout_v6() local
781 ip6h = (ip6_t *)&icmp6[1]; in icmp_inbound_error_fanout_v6()
783 ASSERT((uchar_t *)&ip6h[1] <= mp->b_wptr); in icmp_inbound_error_fanout_v6()
785 if (!ip_hdr_length_nexthdr_v6(mp, ip6h, &hdr_length, &nexthdrp)) in icmp_inbound_error_fanout_v6()
795 rip6h.ip6_src = ip6h->ip6_dst; in icmp_inbound_error_fanout_v6()
796 rip6h.ip6_dst = ip6h->ip6_src; in icmp_inbound_error_fanout_v6()
803 up = (uint16_t *)((uchar_t *)ip6h + hdr_length); in icmp_inbound_error_fanout_v6()
817 tcpha = (tcpha_t *)((uchar_t *)ip6h + hdr_length); in icmp_inbound_error_fanout_v6()
822 connp = ipcl_tcp_lookup_reversed_ipv6(ip6h, tcpha, in icmp_inbound_error_fanout_v6()
831 NULL, ip6h, ira); in icmp_inbound_error_fanout_v6()
861 up = (uint16_t *)((uchar_t *)ip6h + hdr_length); in icmp_inbound_error_fanout_v6()
899 ip6h = (ip6_t *)mp->b_rptr; in icmp_inbound_error_fanout_v6()
901 if (ip6h->ip6_nxt != IPPROTO_ICMPV6) in icmp_inbound_error_fanout_v6()
902 hdr_length = ip_hdr_length_v6(mp, ip6h); in icmp_inbound_error_fanout_v6()
920 in_ip6h = (ip6_t *)((uint8_t *)ip6h + hdr_length); in icmp_inbound_error_fanout_v6()
922 if (IN6_ARE_ADDR_EQUAL(&in_ip6h->ip6_src, &ip6h->ip6_src) && in icmp_inbound_error_fanout_v6()
923 IN6_ARE_ADDR_EQUAL(&in_ip6h->ip6_dst, &ip6h->ip6_dst)) { in icmp_inbound_error_fanout_v6()
945 bcopy(in_ip6h, ip6h, mp->b_wptr - (uchar_t *)in_ip6h); in icmp_inbound_error_fanout_v6()
952 ip6h = (ip6_t *)mp->b_rptr; in icmp_inbound_error_fanout_v6()
954 if (ip6h->ip6_nxt != IPPROTO_ICMPV6) in icmp_inbound_error_fanout_v6()
955 hdr_length = ip_hdr_length_v6(mp, ip6h); in icmp_inbound_error_fanout_v6()
1013 icmp_redirect_v6(mblk_t *mp, ip6_t *ip6h, nd_redirect_t *rd, in icmp_redirect_v6() argument
1049 src = &ip6h->ip6_src; in icmp_redirect_v6()
1055 (ip6h->ip6_hops != IPV6_MAX_HOPS) || in icmp_redirect_v6()
1264 ip6_t *ip6h; in icmp_pkt_v6() local
1275 ip6h = (ip6_t *)mp->b_rptr; in icmp_pkt_v6()
1291 if (IN6_IS_ADDR_LINKSCOPE(&ip6h->ip6_src)) { in icmp_pkt_v6()
1308 if (!ipsec_in_to_out(ira, &ixas, mp, NULL, ip6h)) { in icmp_pkt_v6()
1333 if (IN6_IS_ADDR_LINKLOCAL(&ip6h->ip6_src) || in icmp_pkt_v6()
1334 IN6_IS_ADDR_LINKLOCAL(&ip6h->ip6_dst)) in icmp_pkt_v6()
1337 ire = ire_ftable_lookup_v6(&ip6h->ip6_dst, 0, 0, in icmp_pkt_v6()
1341 v6src = ip6h->ip6_dst; in icmp_pkt_v6()
1348 v6dst = ip6h->ip6_src; in icmp_pkt_v6()
1377 ip6h = (ip6_t *)mp->b_rptr; in icmp_pkt_v6()
1378 mp1->b_wptr = (uchar_t *)ip6h + (IPV6_HDR_LEN + len); in icmp_pkt_v6()
1380 ip6h->ip6_vcf = IPV6_DEFAULT_VERS_AND_FLOW; in icmp_pkt_v6()
1381 ip6h->ip6_nxt = IPPROTO_ICMPV6; in icmp_pkt_v6()
1382 ip6h->ip6_hops = ipst->ips_ipv6_def_hops; in icmp_pkt_v6()
1383 ip6h->ip6_dst = v6dst; in icmp_pkt_v6()
1384 ip6h->ip6_src = v6src; in icmp_pkt_v6()
1390 ip6h->ip6_plen = htons((uint16_t)(msgdsize(mp) - IPV6_HDR_LEN)); in icmp_pkt_v6()
1391 icmp6 = (icmp6_t *)&ip6h[1]; in icmp_pkt_v6()
1397 icmp6->icmp6_cksum = ip6h->ip6_plen; in icmp_pkt_v6()
1399 ip6h->ip6_hops = IPV6_MAX_HOPS; in icmp_pkt_v6()
1489 ip6_t *ip6h; in icmp_pkt_err_ok_v6() local
1497 ip6h = (ip6_t *)mp->b_rptr; in icmp_pkt_err_ok_v6()
1501 if (IN6_IS_ADDR_MULTICAST(&ip6h->ip6_src) || in icmp_pkt_err_ok_v6()
1502 IN6_IS_ADDR_V4MAPPED(&ip6h->ip6_src) || in icmp_pkt_err_ok_v6()
1503 IN6_IS_ADDR_UNSPECIFIED(&ip6h->ip6_src)) { in icmp_pkt_err_ok_v6()
1508 if (ip6h->ip6_nxt == IPPROTO_ICMPV6) { in icmp_pkt_err_ok_v6()
1519 ip6h = (ip6_t *)mp->b_rptr; in icmp_pkt_err_ok_v6()
1521 icmp6 = (icmp6_t *)&ip6h[1]; in icmp_pkt_err_ok_v6()
1535 (llbcast || IN6_IS_ADDR_MULTICAST(&ip6h->ip6_dst))) { in icmp_pkt_err_ok_v6()
1566 ip_send_potential_redirect_v6(mblk_t *mp, ip6_t *ip6h, ire_t *ire, in ip_send_potential_redirect_v6() argument
1580 if (ip_source_routed_v6(ip6h, mp, ipst)) in ip_send_potential_redirect_v6()
1585 v6targ = &ip6h->ip6_dst; in ip_send_potential_redirect_v6()
1605 src_ire_v6 = ire_ftable_lookup_v6(&ip6h->ip6_src, in ip_send_potential_redirect_v6()
1620 icmp_send_redirect_v6(mp1, v6targ, &ip6h->ip6_dst, ira); in ip_send_potential_redirect_v6()
1822 ip6_t *ip6h = (ip6_t *)mp->b_rptr; in icmp_param_problem_nexthdr_v6() local
1829 if (!ip_hdr_length_nexthdr_v6(mp, ip6h, &hdr_length, &nexthdrp)) { in icmp_param_problem_nexthdr_v6()
2298 ip_fanout_proto_v6(mblk_t *mp, ip6_t *ip6h, ip_recv_attr_t *ira) in ip_fanout_proto_v6() argument
2301 in6_addr_t laddr = ip6h->ip6_dst; in ip_fanout_proto_v6()
2313 if (IPCL_PROTO_MATCH_V6(connp, ira, ip6h) && in ip_fanout_proto_v6()
2344 if (IPCL_PROTO_MATCH_V6(connp, ira, ip6h) && in ip_fanout_proto_v6()
2382 ip_fanout_proto_conn(connp, mp, NULL, ip6h, ira); in ip_fanout_proto_v6()
2400 ip6_t *ip6h; in ip_fanout_send_icmp_v6() local
2416 ip6h = (ip6_t *)mp->b_rptr; in ip_fanout_send_icmp_v6()
2418 mp = ipsec_check_global_policy(mp, NULL, NULL, ip6h, ira, ns); in ip_fanout_send_icmp_v6()
2481 ip_fanout_udp_multi_v6(mblk_t *mp, ip6_t *ip6h, uint16_t lport, uint16_t fport, in ip_fanout_udp_multi_v6() argument
2493 laddr = ip6h->ip6_dst; in ip_fanout_udp_multi_v6()
2494 faddr = ip6h->ip6_src; in ip_fanout_udp_multi_v6()
2502 conn_wantpacket_v6(connp, ira, ip6h) && in ip_fanout_udp_multi_v6()
2524 conn_wantpacket_v6(connp, ira, ip6h) && in ip_fanout_udp_multi_v6()
2565 ip_fanout_udp_conn(connp, mp, NULL, ip6h, ira); in ip_fanout_udp_multi_v6()
2578 ip_fanout_proto_v6(mp, ip6h, ira); in ip_fanout_udp_multi_v6()
2606 ip_find_hdr_v6(mblk_t *mp, ip6_t *ip6h, boolean_t label_separate, ip_pkt_t *ipp, in ip_find_hdr_v6() argument
2618 ipp->ipp_hoplimit = ip6h->ip6_hops; in ip_find_hdr_v6()
2619 ipp->ipp_tclass = IPV6_FLOW_TCLASS(ip6h->ip6_flow); in ip_find_hdr_v6()
2620 ipp->ipp_addr = ip6h->ip6_dst; in ip_find_hdr_v6()
2623 whereptr = ((uint8_t *)&ip6h[1]); /* point to next hdr */ in ip_find_hdr_v6()
2626 nexthdr = ip6h->ip6_nxt; in ip_find_hdr_v6()
2753 ip_hdr_length_nexthdr_v6(mblk_t *mp, ip6_t *ip6h, uint16_t *hdr_length_ptr, in ip_hdr_length_nexthdr_v6() argument
2765 ASSERT(IPH_HDR_VERSION(ip6h) == IPV6_VERSION); in ip_hdr_length_nexthdr_v6()
2767 whereptr = ((uint8_t *)&ip6h[1]); /* point to next hdr */ in ip_hdr_length_nexthdr_v6()
2770 nexthdrp = &ip6h->ip6_nxt; in ip_hdr_length_nexthdr_v6()
2840 ip_hdr_length_v6(mblk_t *mp, ip6_t *ip6h) in ip_hdr_length_v6() argument
2845 (void) ip_hdr_length_nexthdr_v6(mp, ip6h, &hdr_len, &nexthdrp); in ip_hdr_length_v6()
2868 ip_process_options_v6(mblk_t *mp, ip6_t *ip6h, in ip_process_options_v6() argument
2981 tmp = ip6h->ip6_src; in ip_process_options_v6()
2983 ip6h->ip6_src = *(in6_addr_t *)oh->ip6oh_addr; in ip_process_options_v6()
3033 (uint8_t *)ip6h), in ip_process_options_v6()
3044 (uint8_t *)ip6h), in ip_process_options_v6()
3061 (uint32_t)(optptr - (uint8_t *)ip6h), in ip_process_options_v6()
3071 ip_process_rthdr(mblk_t *mp, ip6_t *ip6h, ip6_rthdr_t *rth, in ip_process_rthdr() argument
3090 (uint32_t)((uchar_t *)&rth->ip6r_type - (uchar_t *)ip6h), in ip_process_rthdr()
3149 ip6_t *ip6h; in ipsec_needs_processing_v6() local
3160 ip6h = (ip6_t *)mp->b_rptr; in ipsec_needs_processing_v6()
3162 whereptr = ((uint8_t *)&ip6h[1]); /* point to next hdr */ in ipsec_needs_processing_v6()
3170 nexthdrp = &ip6h->ip6_nxt; in ipsec_needs_processing_v6()
3294 ip_input_fragment_v6(mblk_t *mp, ip6_t *ip6h, in ip_input_fragment_v6() argument
3381 prev_nexthdr_offset = (uint8_t *)&ip6h->ip6_nxt - (uint8_t *)ip6h; in ip_input_fragment_v6()
3382 prev_nexthdr = ip6h->ip6_nxt; in ip_input_fragment_v6()
3383 ptr = (uint8_t *)&ip6h[1]; in ip_input_fragment_v6()
3393 - (uint8_t *)ip6h; in ip_input_fragment_v6()
3404 - (uint8_t *)ip6h; in ip_input_fragment_v6()
3414 - (uint8_t *)ip6h; in ip_input_fragment_v6()
3438 if (more_frags && (ntohs(ip6h->ip6_plen) & 7)) { in ip_input_fragment_v6()
3441 (uint32_t)((char *)&ip6h->ip6_plen - in ip_input_fragment_v6()
3442 (char *)ip6h), B_FALSE, ira); in ip_input_fragment_v6()
3446 v6src_ptr = &ip6h->ip6_src; in ip_input_fragment_v6()
3447 v6dst_ptr = &ip6h->ip6_dst; in ip_input_fragment_v6()
3450 hdr_length = (uint_t)((char *)&fraghdr[1] - (char *)ip6h); in ip_input_fragment_v6()
3462 (char *)ip6h), B_FALSE, ira); in ip_input_fragment_v6()
3484 ecn_info = (uint8_t)(ntohl(ip6h->ip6_vcf & htonl(~0xFFCFFFFF)) >> 20); in ip_input_fragment_v6()
3864 ip6h = (ip6_t *)mp->b_rptr; in ip_input_fragment_v6()
3865 ((char *)ip6h)[prev_nexthdr_offset] = nexthdr; in ip_input_fragment_v6()
3869 ip6h->ip6_plen = htons((uint16_t)(packet_size - IPV6_HDR_LEN)); in ip_input_fragment_v6()
3871 ip6h->ip6_vcf &= htonl(0xFFCFFFFF); in ip_input_fragment_v6()
3872 ip6h->ip6_vcf |= htonl(ecn_info << 20); in ip_input_fragment_v6()
3938 ip_get_dst_v6(ip6_t *ip6h, const mblk_t *mp, boolean_t *is_fragment) in ip_get_dst_v6() argument
3946 whereptr = (uint8_t *)ip6h; in ip_get_dst_v6()
3953 rv = ip6h->ip6_dst; in ip_get_dst_v6()
3954 nexthdr = ip6h->ip6_nxt; in ip_get_dst_v6()
3979 mp, mblk_t *, current_mp, ip6_t *, ip6h); in ip_get_dst_v6()
4015 ip_source_routed_v6(ip6_t *ip6h, mblk_t *mp, ip_stack_t *ipst) in ip_source_routed_v6() argument
4026 nexthdr = ip6h->ip6_nxt; in ip_source_routed_v6()
4032 byteptr = (uint8_t *)ip6h + ehdrlen; in ip_source_routed_v6()
4050 byteptr = (uint8_t *)ip6h + ehdrlen; in ip_source_routed_v6()
4108 ip6_t *ip6h = (ip6_t *)mp->b_rptr; in ip_fragment_v6() local
4138 ASSERT(ntohs(ip6h->ip6_plen) + IPV6_HDR_LEN == pkt_len); in ip_fragment_v6()
4147 nexthdr = ip6h->ip6_nxt; in ip_fragment_v6()
4148 ptr = (uint8_t *)&ip6h[1]; in ip_fragment_v6()
4185 unfragmentable_len = (uint_t)(ptr - (uint8_t *)ip6h); in ip_fragment_v6()
4207 bcopy(ip6h, fip6h, unfragmentable_len); in ip_fragment_v6()
4319 ip6_t *ip6h = (ip6_t *)mp->b_rptr; in ip_fraghdr_add_v6() local
4336 nexthdr = ip6h->ip6_nxt; in ip_fraghdr_add_v6()
4337 prev_nexthdr_offset = (uint8_t *)&ip6h->ip6_nxt - (uint8_t *)ip6h; in ip_fraghdr_add_v6()
4338 ptr = (uint8_t *)&ip6h[1]; in ip_fraghdr_add_v6()
4348 - (uint8_t *)ip6h; in ip_fraghdr_add_v6()
4360 - (uint8_t *)ip6h; in ip_fraghdr_add_v6()
4371 - (uint8_t *)ip6h; in ip_fraghdr_add_v6()
4375 unfragmentable_len = (uint_t)(ptr - (uint8_t *)ip6h); in ip_fraghdr_add_v6()
4398 bcopy(ip6h, fip6h, unfragmentable_len); in ip_fraghdr_add_v6()
4424 conn_wantpacket_v6(conn_t *connp, ip_recv_attr_t *ira, ip6_t *ip6h) in conn_wantpacket_v6() argument
4429 in6_addr_t *v6dst_ptr = &ip6h->ip6_dst; in conn_wantpacket_v6()
4430 in6_addr_t *v6src_ptr = &ip6h->ip6_src; in conn_wantpacket_v6()
4571 ip6_t *ip6h = (ip6_t *)buf; in ip_build_hdrs_v6() local
4574 ip6h->ip6_vcf = in ip_build_hdrs_v6()
4580 ip6h->ip6_vcf = IPV6_TCLASS_FLOW(ip6h->ip6_vcf, in ip_build_hdrs_v6()
4585 ip6h->ip6_hops = ipp->ipp_hoplimit; in ip_build_hdrs_v6()
4587 ip6h->ip6_hops = ipp->ipp_unicast_hops; in ip_build_hdrs_v6()
4591 ip6h->ip6_src = ipp->ipp_addr; in ip_build_hdrs_v6()
4593 nxthdr_ptr = (uint8_t *)&ip6h->ip6_nxt; in ip_build_hdrs_v6()
4594 cp = (uint8_t *)&ip6h[1]; in ip_build_hdrs_v6()
4702 ip_find_rthdr_v6(ip6_t *ip6h, uint8_t *endptr) in ip_find_rthdr_v6() argument
4708 uint8_t *ptr = (uint8_t *)&ip6h[1]; in ip_find_rthdr_v6()
4710 if (ip6h->ip6_nxt == IPPROTO_ROUTING) in ip_find_rthdr_v6()
4724 nexthdr = ip6h->ip6_nxt; in ip_find_rthdr_v6()
4769 ip_massage_options_v6(ip6_t *ip6h, ip6_rthdr_t *rth, netstack_t *ns) in ip_massage_options_v6() argument
4794 ptr = (uint16_t *)&ip6h->ip6_dst; in ip_massage_options_v6()
4814 *addrptr = ip6h->ip6_dst; in ip_massage_options_v6()
4815 ip6h->ip6_dst = tmp; in ip_massage_options_v6()
4824 ptr = (uint16_t *)&ip6h->ip6_dst; in ip_massage_options_v6()
4942 ip6_t *ip6h; in ipsec_ah_get_hdr_size_v6() local
4952 ip6h = (ip6_t *)mp->b_rptr; in ipsec_ah_get_hdr_size_v6()
4954 nexthdr = ip6h->ip6_nxt; in ipsec_ah_get_hdr_size_v6()
4955 whereptr = (uint8_t *)&ip6h[1]; in ipsec_ah_get_hdr_size_v6()