Lines Matching refs:ira
409 ip_recv_attr_t *ira, rtc_t *rtc)
413 ill_t *ill = ira->ira_ill;
415 ASSERT(ira->ira_tsl == NULL);
422 ira->ira_flags |= IRAF_SYSTEM_LABELED;
428 if (!tsol_get_pkt_label(mp, IPV6_VERSION, ira)) {
441 ill_input_short_v6(mp, ip6h, nexthop, ira, rtc);
478 ire_linklocal(const in6_addr_t *nexthop, ill_t *ill, ip_recv_attr_t *ira,
485 ire = ire_route_recursive_v6(nexthop, 0, ill, ALL_ZONES, ira->ira_tsl,
486 match_flags, irr_flags, ira->ira_xmit_hint, ipst, NULL, NULL, NULL);
500 ira->ira_ruifindex = ill->ill_phyint->phyint_ifindex;
503 ire = ire_route_recursive_v6(nexthop, 0, ill, ALL_ZONES, ira->ira_tsl,
504 match_flags, irr_flags, ira->ira_xmit_hint, ipst, NULL, NULL, NULL);
515 ip_recv_attr_t *ira, rtc_t *rtc)
518 ill_t *ill = ira->ira_ill;
556 pkt_len = ira->ira_pktlen;
561 mp = ip_check_length(mp, rptr, len, pkt_len, IPV6_HDR_LEN, ira);
585 if (ira->ira_flags & IRAF_L2DST_MULTICAST)
587 else if (ira->ira_flags & IRAF_L2DST_BROADCAST)
601 ira->ira_pktlen = ntohs(ip6h->ip6_plen) + IPV6_HDR_LEN;
602 pkt_len = ira->ira_pktlen;
627 dzone = ip_get_zoneid_v6(&nexthop, mp, ill, ira, ALL_ZONES);
644 ira->ira_ip_hdr_length = IPV6_HDR_LEN;
645 if ((ira->ira_protocol = ip6h->ip6_nxt) == IPPROTO_HOPOPTS) {
658 ip6h = ip_pullup(mp, IPV6_HDR_LEN + MIN_EHDR_LEN, ira);
677 ip6h = ip_pullup(mp, IPV6_HDR_LEN + ehdrlen, ira);
691 ira->ira_ip_hdr_length += ehdrlen;
692 ira->ira_protocol = hbhhdr->ip6h_nxt;
696 ehdrlen - 2, IPPROTO_HOPOPTS, ira)) {
713 ira->ira_flags |= IRAF_ROUTER_ALERT;
729 if (ilb_has_rules(ilbs) && ILB_SUPP_L4(ira->ira_protocol) &&
745 lb_ret = ilb_check_v6(ilbs, ill, mp, ip6h, ira->ira_protocol,
746 (uint8_t *)ip6h + ira->ira_ip_hdr_length, &lb_dst);
766 if (ira->ira_flags & IRAF_SYSTEM_LABELED) {
770 ire = ire_linklocal(&nexthop, ill, ira, irr_flags,
775 ALL_ZONES, ira->ira_tsl, MATCH_IRE_SECATTR,
776 irr_flags, ira->ira_xmit_hint, ipst, NULL, NULL,
794 ire = ire_linklocal(&nexthop, ill, ira, irr_flags,
798 irr_flags, ira->ira_xmit_hint, ipst);
820 (*ire->ire_recvfn)(ire, mp, ip6h, ira);
828 ire_recv_forward_v6(ire_t *ire, mblk_t *mp, void *iph_arg, ip_recv_attr_t *ira)
831 ill_t *ill = ira->ira_ill;
833 iaflags_t iraflags = ira->ira_flags;
925 GLOBAL_ZONEID, ira->ira_tsl, MATCH_IRE_SECATTR,
927 ira->ira_xmit_hint, ipst, NULL, NULL, NULL);
929 (*ire->ire_recvfn)(ire, mp, ip6h, ira);
978 ira->ira_pktlen = ntohs(ip6h->ip6_plen) + IPV6_HDR_LEN;
1028 ip_send_potential_redirect_v6(mp, ip6h, ire, ira);
1034 uint32_t old_pkt_len = ira->ira_pktlen;
1040 if ((mp1 = tsol_ip_forward(ire, mp, ira)) == NULL) {
1053 ira->ira_pktlen = ntohs(ip6h->ip6_plen) + IPV6_HDR_LEN;
1054 ira->ira_ip_hdr_length = IPV6_HDR_LEN;
1055 if (ira->ira_pktlen > old_pkt_len)
1056 added_tx_len = ira->ira_pktlen - old_pkt_len;
1062 ip_forward_xmit_v6(nce, mp, ip6h, ira, mtu, added_tx_len);
1073 ip_forward_xmit_v6(nce_t *nce, mblk_t *mp, ip6_t *ip6h, ip_recv_attr_t *ira,
1078 iaflags_t iraflags = ira->ira_flags;
1082 BUMP_MIB(ira->ira_ill->ill_ip_mib, ipIfStatsInDiscards);
1083 ip_drop_input("ICMP6_TIME_EXCEED_TRANSIT", mp, ira->ira_ill);
1085 ira);
1101 pkt_len = ira->ira_pktlen;
1118 icmp_pkt2big_v6(mp, mtu, B_TRUE, ira);
1132 pkt_len, ira->ira_xmit_hint, GLOBAL_ZONEID, 0, NULL);
1135 pkt_len, ira->ira_xmit_hint, GLOBAL_ZONEID, 0, NULL);
1145 ire_recv_noroute_v6(ire_t *ire, mblk_t *mp, void *iph_arg, ip_recv_attr_t *ira)
1148 ill_t *ill = ira->ira_ill;
1152 if (ira->ira_flags & (IRAF_L2DST_MULTICAST|IRAF_L2DST_BROADCAST)) {
1186 ira);
1198 ip_recv_attr_t *ira)
1201 ill_t *ill = ira->ira_ill;
1211 ip_hdr_length = ira->ira_ip_hdr_length;
1213 if (ira->ira_pktlen < (ip_hdr_length + ICMP6_MINLEN)) {
1219 ip6h = ip_pullup(mp, ip_hdr_length + ICMP6_MINLEN, ira);
1235 ire_recv_local_v6(ire, mp, ip6h, ira);
1243 ip_recv_attr_t *ira)
1246 ill_t *ill = ira->ira_ill;
1248 ASSERT(ire->ire_ill == ira->ira_ill);
1251 UPDATE_MIB(ill->ill_ip_mib, ipIfStatsHCInMcastOctets, ira->ira_pktlen);
1254 ira->ira_flags |= IRAF_MULTICAST;
1280 ASSERT(ill != ira->ira_ill);
1281 ASSERT(ire->ire_ill == ira->ira_ill);
1282 ira->ira_ill = ill;
1283 ira->ira_ruifindex = ill->ill_phyint->phyint_ifindex;
1285 ill = ira->ira_ill;
1312 retval = ip_mforward_v6(mp, ira);
1333 if (ira->ira_flags & IRAF_ROUTER_ALERT)
1345 if (ira->ira_flags & IRAF_ROUTER_ALERT)
1372 ira->ira_zoneid = ALL_ZONES;
1375 ip_input_local_v6(ire, mp, ip6h, ira);
1379 ira->ira_ill = ire->ire_ill;
1380 ira->ira_ruifindex = ira->ira_ill->ill_phyint->phyint_ifindex;
1390 ire_recv_multirt_v6(ire_t *ire, mblk_t *mp, void *iph_arg, ip_recv_attr_t *ira)
1392 ill_t *ill = ira->ira_ill;
1406 ire_recv_loopback_v6(ire_t *ire, mblk_t *mp, void *iph_arg, ip_recv_attr_t *ira)
1409 ill_t *ill = ira->ira_ill;
1412 ira->ira_zoneid = GLOBAL_ZONEID;
1421 ASSERT(ira->ira_ill == ira->ira_rill);
1422 ira->ira_ill = ire_ill;
1424 ip_input_local_v6(ire, mp, ip6h, ira);
1427 ASSERT(ira->ira_ill == ire_ill);
1428 ira->ira_ill = ill;
1432 ip_input_local_v6(ire, mp, ip6h, ira);
1439 ire_recv_local_v6(ire_t *ire, mblk_t *mp, void *iph_arg, ip_recv_attr_t *ira)
1442 ill_t *ill = ira->ira_ill;
1449 ira->ira_zoneid = ire->ire_zoneid;
1477 ASSERT(ira->ira_ill == ira->ira_rill);
1478 ira->ira_ill = new_ire->ire_ill;
1482 ira->ira_ruifindex = ill_get_upper_ifindex(ill);
1484 ip_input_local_v6(new_ire, mp, ip6h, ira);
1487 ASSERT(ira->ira_ill == new_ire->ire_ill);
1488 ira->ira_ill = ill;
1489 ira->ira_ruifindex = ill->ill_phyint->phyint_ifindex;
1496 ip_input_local_v6(ire, mp, ip6h, ira);
1504 ip_input_local_v6(ire_t *ire, mblk_t *mp, ip6_t *ip6h, ip_recv_attr_t *ira)
1506 iaflags_t iraflags = ira->ira_flags;
1514 ip_input_multicast_v6(ire, mp, ip6h, ira);
1517 ip_fanout_v6(mp, ip6h, ira);
1534 ip_input_multicast_v6(ire_t *ire, mblk_t *mp, ip6_t *ip6h, ip_recv_attr_t *ira)
1536 ill_t *ill = ira->ira_ill;
1537 iaflags_t iraflags = ira->ira_flags;
1543 uint_t ira_pktlen = ira->ira_pktlen;
1544 uint16_t ira_ip_hdr_length = ira->ira_ip_hdr_length;
1557 ira->ira_zoneid = GLOBAL_ZONEID;
1561 ira->ira_no_loop_zoneid == ira->ira_zoneid) {
1566 ip_fanout_v6(mp, ip6h, ira);
1588 ira->ira_zoneid = zoneid;
1592 ira->ira_no_loop_zoneid == ira->ira_zoneid)
1603 ip_fanout_v6(mp1, ip6h1, ira);
1608 ira->ira_pktlen = ira_pktlen;
1609 ira->ira_ip_hdr_length = ira_ip_hdr_length;
1613 ira->ira_zoneid = GLOBAL_ZONEID;
1616 ira->ira_no_loop_zoneid == ira->ira_zoneid) {
1620 ip_fanout_v6(mp, ip6h, ira);
1631 ip_recv_attr_t *ira)
1637 ASSERT(ira->ira_flags & IRAF_SYSTEM_LABELED);
1645 if (ira->ira_tsl != NULL && ira->ira_tsl->tsl_flags & TSLF_UNLABELED)
1646 ira->ira_flags |= IRAF_TX_MAC_EXEMPTABLE;
1648 if (ira->ira_zoneid != ALL_ZONES)
1651 ira->ira_flags |= IRAF_TX_SHARED_ADDR;
1684 zoneid = tsol_attr_to_zoneid(ira);
1686 ira->ira_flags &= ~IRAF_TX_MAC_EXEMPTABLE;
1690 zoneid = tsol_attr_to_zoneid(ira);
1693 ira->ira_zoneid = zoneid;
1736 ip_input_cksum_pseudo_v6(ip6_t *ip6h, ip_recv_attr_t *ira)
1740 uint8_t protocol = ira->ira_protocol;
1741 uint16_t ip_hdr_length = ira->ira_ip_hdr_length;
1747 ulp_len = ira->ira_pktlen - ip_hdr_length;
1773 ulp_len = ira->ira_pktlen - ip_hdr_length;
1798 ip_input_sw_cksum_v6(mblk_t *mp, ip6_t *ip6h, ip_recv_attr_t *ira)
1800 ip_stack_t *ipst = ira->ira_ill->ill_ipst;
1802 uint8_t protocol = ira->ira_protocol;
1803 uint16_t ip_hdr_length = ira->ira_ip_hdr_length;
1810 cksum = ip_input_cksum_pseudo_v6(ip6h, ira);
1815 ip_input_cksum_err_v6(protocol, 0, ira->ira_ill);
1827 ip_recv_attr_t *ira)
1829 ill_t *ill = ira->ira_rill;
1834 uint8_t protocol = ira->ira_protocol;
1835 uint16_t ip_hdr_length = ira->ira_ip_hdr_length;
1886 ira->ira_flags |= IRAF_SCTP_CSUM_ERR;
1904 return (ip_input_sw_cksum_v6(mp, ip6h, ira));
1932 ip_input_cksum_err_v6(protocol, hck_flags, ira->ira_ill);
1944 cksum = ip_input_cksum_pseudo_v6(ip6h, ira);
1970 ip_input_cksum_err_v6(protocol, hck_flags, ira->ira_ill);
1973 return (ip_input_sw_cksum_v6(mp, ip6h, ira));
1987 ip_fanout_v6(mblk_t *mp, ip6_t *ip6h, ip_recv_attr_t *ira)
1989 ill_t *ill = ira->ira_ill;
1990 iaflags_t iraflags = ira->ira_flags;
2001 ill_t *rill = ira->ira_rill;
2003 ASSERT(ira->ira_pktlen == ntohs(ip6h->ip6_plen) + IPV6_HDR_LEN);
2014 protocol = ira->ira_protocol;
2015 ip_hdr_length = ira->ira_ip_hdr_length;
2067 if (ira->ira_pktlen < ip_hdr_length + min_ulp_header_length)
2072 ira);
2083 /* This can update ira->ira_flags and ira->ira_zoneid */
2084 ip_fanout_tx_v6(mp, ip6h, protocol, ip_hdr_length, ira);
2085 iraflags = ira->ira_flags;
2091 if (!ip_input_cksum_v6(iraflags, mp, ip6h, ira)) {
2098 iraflags = ira->ira_flags;
2122 if (ira->ira_pktlen < offset)
2126 ip6h = ip_pullup(mp, offset, ira);
2138 if (ira->ira_sqp == NULL) {
2139 ira->ira_sqp = ip_squeue_get(ira->ira_ring);
2144 ira, ipst);
2148 tcp_xmit_listeners_reset(mp, ira, ipst, NULL);
2152 connp->conn_incoming_ifindex != ira->ira_ruifindex) {
2157 tcp_xmit_listeners_reset(mp, ira, ipst, NULL);
2163 NULL, ip6h, ira);
2174 ira->ira_ill = ira->ira_rill = NULL;
2177 (connp->conn_recv)(connp, mp, NULL, ira);
2179 ira->ira_ill = ill;
2180 ira->ira_rill = rill;
2190 if (ira->ira_target_sqp == connp->conn_sqp) {
2193 attrmp = ip_recv_attr_to_mblk(ira);
2205 ASSERT(ira->ira_target_sqp_mp == NULL);
2206 ira->ira_target_sqp_mp = attrmp;
2214 connp->conn_recv, connp, ira, SQ_FILL,
2219 connp, ira, ip_squeue_flag, SQTAG_IP6_TCP_INPUT);
2221 ira->ira_ill = ill;
2222 ira->ira_rill = rill;
2257 ip_fanout_sctp_raw(mp, NULL, ip6h, ports, ira);
2261 ira, mp, sctps, sctph);
2264 ip_fanout_sctp_raw(mp, NULL, ip6h, ports, ira);
2268 connp->conn_incoming_ifindex != ira->ira_ruifindex) {
2272 ip_fanout_sctp_raw(mp, NULL, ip6h, ports, ira);
2278 sctp_input(connp, NULL, ip6h, mp, ira);
2292 ip_fanout_udp_multi_v6(mp, ip6h, up[1], up[0], ira);
2298 ira, ipst);
2303 ASSERT(ira->ira_protocol == IPPROTO_UDP);
2304 ip_fanout_proto_v6(mp, ip6h, ira);
2307 ICMP6_DST_UNREACH_NOPORT, ira);
2313 connp->conn_incoming_ifindex != ira->ira_ruifindex) {
2328 NULL, ip6h, ira);
2341 ira->ira_ill = ira->ira_rill = NULL;
2342 (connp->conn_recv)(connp, mp, NULL, ira);
2344 ira->ira_ill = ill;
2345 ira->ira_rill = rill;
2381 NULL, ip6h, ira, ns);
2390 if (ira->ira_flags & IRAF_SYSTEM_LABELED) {
2391 if (!tsol_can_accept_raw(mp, ira, B_FALSE)) {
2401 mp = icmp_inbound_v6(mp, ira);
2416 mp = ipsec_early_ah_v6(mp, ira);
2427 if (ira->ira_pktlen - ip_hdr_length < MIN_EHDR_LEN)
2432 ip6h = ip_pullup(mp, ip_hdr_length + MIN_EHDR_LEN, ira);
2438 if (ira->ira_pktlen - ip_hdr_length < ehdrlen)
2442 ip6h = ip_pullup(mp, IPV6_HDR_LEN + ehdrlen, ira);
2454 ira->ira_ip_hdr_length += ehdrlen;
2456 ira->ira_protocol = desthdr->ip6d_nxt;
2468 ehdrlen - 2, IPPROTO_DSTOPTS, ira)) {
2499 if (ira->ira_pktlen - ip_hdr_length < sizeof (ip6_frag_t))
2505 ip_hdr_length + sizeof (ip6_frag_t), ira);
2555 if (!(ira->ira_flags & IRAF_L2SRC_SET))
2556 ip_setl2src(mp, ira, ira->ira_rill);
2559 ira->ira_pktlen - ip_hdr_length, ira);
2572 ip_hdr_length = ira->ira_ip_hdr_length;
2582 icmp_param_problem_nexthdr_v6(mp, B_FALSE, ira);
2590 mp = ipsec_early_ah_v6(mp, ira);
2601 if (ira->ira_pktlen - ip_hdr_length < MIN_EHDR_LEN)
2606 ip6h = ip_pullup(mp, ip_hdr_length + MIN_EHDR_LEN, ira);
2611 protocol = ira->ira_protocol = rthdr->ip6r_nxt;
2613 if (ira->ira_pktlen - ip_hdr_length < ehdrlen)
2617 ip6h = ip_pullup(mp, IPV6_HDR_LEN + ehdrlen, ira);
2624 if (ira->ira_flags &
2633 ip_process_rthdr(mp, ip6h, rthdr, ira);
2636 ira->ira_ip_hdr_length += ehdrlen;
2651 ip_proto_not_sup(mp, ira);
2660 mp = ipsec_inbound_esp_sa(mp, ira, &esph);
2665 ASSERT(ira->ira_flags & IRAF_IPSEC_SECURE);
2666 ASSERT(ira->ira_ipsec_esp_sa != NULL);
2667 ASSERT(ira->ira_ipsec_esp_sa->ipsa_input_func != NULL);
2669 mp = ira->ira_ipsec_esp_sa->ipsa_input_func(mp, esph,
2670 ira);
2674 mp = ipsec_inbound_ah_sa(mp, ira, &ah);
2679 ASSERT(ira->ira_flags & IRAF_IPSEC_SECURE);
2680 ASSERT(ira->ira_ipsec_ah_sa != NULL);
2681 ASSERT(ira->ira_ipsec_ah_sa->ipsa_input_func != NULL);
2682 mp = ira->ira_ipsec_ah_sa->ipsa_input_func(mp, ah,
2683 ira);
2694 ip_input_post_ipsec(mp, ira);
2707 ira, ipst);
2710 ira->ira_ill = ira->ira_rill = NULL;
2711 connp->conn_recv(connp, mp, NULL, ira);
2713 ira->ira_ill = ill;
2714 ira->ira_rill = rill;
2723 if (ira->ira_flags & IRAF_SYSTEM_LABELED) {
2724 if (!tsol_can_accept_raw(mp, ira, B_FALSE)) {
2739 ira->ira_protocol = protocol;
2742 ip_proto_not_sup(mp, ira);
2752 ASSERT(ira->ira_protocol == protocol);
2753 ip_fanout_proto_v6(mp, ip6h, ira);