Lines Matching defs:ira

426     ip_recv_attr_t *ira, rtc_t *rtc)
430 ill_t *ill = ira->ira_ill;
434 ASSERT(ira->ira_tsl == NULL);
441 ira->ira_flags |= IRAF_SYSTEM_LABELED;
447 if (!tsol_get_pkt_label(mp, IPV4_VERSION, ira)) {
503 ipha = ip_pullup(mp, sizeof (ipha_t) + sizeof (udpha_t), ira);
521 ira->ira_flags |= IRAF_DHCP_UNICAST;
545 ira->ira_flags |= IRAF_RSVP;
548 ill_input_short_v4(mp, ipha, &nexthop, ira, rtc);
557 ip_recv_attr_t *ira, rtc_t *rtc)
561 ill_t *ill = ira->ira_ill;
588 pkt_len = ira->ira_pktlen;
594 IP_SIMPLE_HDR_LENGTH, ira);
619 if (ira->ira_flags & IRAF_L2DST_MULTICAST)
621 else if (ira->ira_flags & IRAF_L2DST_BROADCAST)
634 ira->ira_pktlen = ntohs(ipha->ipha_length);
635 pkt_len = ira->ira_pktlen;
658 dzone = ip_get_zoneid_v4(nexthop, mp, ira, ALL_ZONES);
670 ira->ira_flags &= ~IRAF_VERIFY_IP_CKSUM;
733 ira->ira_ip_hdr_length = IP_SIMPLE_HDR_LENGTH;
737 ira->ira_ip_hdr_length += (opt_len << 2);
738 ira->ira_flags |= IRAF_IPV4_OPTIONS;
741 mp = ip_check_optlen(mp, ipha, opt_len, pkt_len, ira);
749 if ((ira->ira_flags & IRAF_VERIFY_IP_CKSUM) &&
756 ira->ira_flags &= ~IRAF_VERIFY_IP_CKSUM;
765 nexthop = ip_input_options(ipha, nexthop, mp, ira, &error);
781 if (ira->ira_flags & IRAF_SYSTEM_LABELED) {
787 ALL_ZONES, ira->ira_tsl, MATCH_IRE_SECATTR,
788 irr_flags, ira->ira_xmit_hint, ipst, NULL, NULL,
807 ira->ira_xmit_hint, ipst);
829 (*ire->ire_recvfn)(ire, mp, ipha, ira);
837 ire_recv_forward_v4(ire_t *ire, mblk_t *mp, void *iph_arg, ip_recv_attr_t *ira)
840 ill_t *ill = ira->ira_ill;
848 if (ira->ira_flags & (IRAF_L2DST_MULTICAST|IRAF_L2DST_BROADCAST)) {
919 icmp_unreachable(mp, ICMP_SOURCE_ROUTE_FAILED, ira);
940 if (ira->ira_flags & IRAF_IPV4_OPTIONS) {
943 dst = ip_input_options(ipha, dst, mp, ira, &error);
947 ira->ira_tsl, MATCH_IRE_SECATTR,
949 ira->ira_xmit_hint, ipst, NULL, NULL, NULL);
951 (*ire->ire_recvfn)(ire, mp, ipha, ira);
1001 ira->ira_pktlen = ntohs(ipha->ipha_length);
1014 if (!(ira->ira_flags & IRAF_VERIFIED_SRC) ||
1015 src != ira->ira_verified_src) {
1046 ira->ira_flags |= IRAF_VERIFIED_SRC;
1047 ira->ira_verified_src = src;
1055 ip_send_potential_redirect_v4(mp, ipha, ire, ira);
1059 if (ira->ira_flags & IRAF_SYSTEM_LABELED) {
1061 uint32_t old_pkt_len = ira->ira_pktlen;
1064 if ((ira->ira_flags & IRAF_VERIFY_IP_CKSUM) &&
1072 ira->ira_flags &= ~IRAF_VERIFY_IP_CKSUM;
1078 if ((mp1 = tsol_ip_forward(ire, mp, ira)) == NULL) {
1091 ira->ira_pktlen = ntohs(ipha->ipha_length);
1092 ira->ira_ip_hdr_length = IPH_HDR_LENGTH(ipha);
1093 if (ira->ira_pktlen > old_pkt_len)
1094 added_tx_len = ira->ira_pktlen - old_pkt_len;
1097 if (ira->ira_ip_hdr_length != IP_SIMPLE_HDR_LENGTH)
1098 ira->ira_flags |= IRAF_IPV4_OPTIONS;
1100 ira->ira_flags &= ~IRAF_IPV4_OPTIONS;
1106 ip_forward_xmit_v4(nce, ill, mp, ipha, ira, mtu, added_tx_len);
1116 ip_recv_attr_t *ira, uint32_t mtu, uint32_t added_tx_len)
1121 iaflags_t iraflags = ira->ira_flags;
1135 icmp_time_exceeded(mp, ICMP_TTL_EXCEEDED, ira);
1149 if (!ip_forward_options(mp, ipha, dst_ill, ira)) {
1170 pkt_len = ira->ira_pktlen;
1205 icmp_frag_needed(mp, mtu, ira);
1210 ira->ira_xmit_hint, GLOBAL_ZONEID, 0, ip_xmit, NULL);
1222 pkt_len, ira->ira_xmit_hint, GLOBAL_ZONEID, 0, NULL);
1224 (void) ip_xmit(mp, nce, ixaflags, pkt_len, ira->ira_xmit_hint,
1235 ire_recv_noroute_v4(ire_t *ire, mblk_t *mp, void *iph_arg, ip_recv_attr_t *ira)
1238 ill_t *ill = ira->ira_ill;
1242 if (ira->ira_flags & (IRAF_L2DST_MULTICAST|IRAF_L2DST_BROADCAST)) {
1276 icmp_unreachable(mp, ICMP_SOURCE_ROUTE_FAILED, ira);
1278 icmp_unreachable(mp, ICMP_HOST_UNREACHABLE, ira);
1291 ip_recv_attr_t *ira)
1293 ill_t *ill = ira->ira_ill;
1305 ip_recv_attr_t *ira)
1308 ill_t *ill = ira->ira_ill;
1318 ira->ira_flags |= IRAF_BROADCAST;
1349 ira->ira_ruifindex = ill_get_upper_ifindex(ill);
1356 ira->ira_zoneid = ALL_ZONES;
1366 ip_input_local_v4(ire, mp, ipha, ira);
1368 ira->ira_ruifindex = ill->ill_phyint->phyint_ifindex;
1373 ipha_dst = ((ira->ira_flags & IRAF_DHCP_UNICAST) ? INADDR_BROADCAST :
1376 ALL_ZONES, ira->ira_tsl,
1407 ill_t *orig_ill = ira->ira_ill;
1411 ira->ira_ill = ill;
1412 ip_input_local_v4(ire, mp, ipha, ira);
1415 ira->ira_ill = orig_ill;
1416 ira->ira_ruifindex =
1423 ip_input_local_v4(ire, mp, ipha, ira);
1438 (ira->ira_flags & (IRAF_L2DST_MULTICAST|IRAF_L2DST_BROADCAST))) {
1443 if ((ira->ira_flags & IRAF_VERIFY_IP_CKSUM) && ip_csum_hdr(ipha)) {
1469 ira->ira_flags |= IRAF_LOOPBACK_COPY;
1479 ip_forward_xmit_v4(nce, ill, mp, ipha, ira, dst_ill->ill_mc_mtu, 0);
1483 ira->ira_ruifindex = ill->ill_phyint->phyint_ifindex;
1491 ip_recv_attr_t *ira)
1494 ill_t *ill = ira->ira_ill;
1497 ASSERT(ire->ire_ill == ira->ira_ill);
1500 UPDATE_MIB(ill->ill_ip_mib, ipIfStatsHCInMcastOctets, ira->ira_pktlen);
1503 if (ira->ira_flags & IRAF_RSVP)
1507 ira->ira_flags |= IRAF_MULTICAST;
1533 ASSERT(ill != ira->ira_ill);
1534 ASSERT(ire->ire_ill == ira->ira_ill);
1535 ira->ira_ill = ill;
1536 ira->ira_ruifindex = ill->ill_phyint->phyint_ifindex;
1538 ill = ira->ira_ill;
1564 retval = ip_mforward(mp, ira);
1625 ira->ira_zoneid = ALL_ZONES;
1628 ip_input_local_v4(ire, mp, ipha, ira);
1632 ira->ira_ill = ire->ire_ill;
1633 ira->ira_ruifindex = ira->ira_ill->ill_phyint->phyint_ifindex;
1643 ire_recv_multirt_v4(ire_t *ire, mblk_t *mp, void *iph_arg, ip_recv_attr_t *ira)
1645 ill_t *ill = ira->ira_ill;
1659 ire_recv_loopback_v4(ire_t *ire, mblk_t *mp, void *iph_arg, ip_recv_attr_t *ira)
1662 ill_t *ill = ira->ira_ill;
1665 ira->ira_zoneid = GLOBAL_ZONEID;
1674 ASSERT(ira->ira_ill == ira->ira_rill);
1675 ira->ira_ill = ire_ill;
1677 ip_input_local_v4(ire, mp, ipha, ira);
1680 ASSERT(ira->ira_ill == ire_ill);
1681 ira->ira_ill = ill;
1685 ip_input_local_v4(ire, mp, ipha, ira);
1692 ire_recv_local_v4(ire_t *ire, mblk_t *mp, void *iph_arg, ip_recv_attr_t *ira)
1695 ill_t *ill = ira->ira_ill;
1702 ira->ira_zoneid = ire->ire_zoneid;
1730 ASSERT(ira->ira_ill == ira->ira_rill);
1731 ira->ira_ill = new_ire->ire_ill;
1735 ira->ira_ruifindex = ill_get_upper_ifindex(ill);
1737 ip_input_local_v4(new_ire, mp, ipha, ira);
1740 ASSERT(ira->ira_ill == new_ire->ire_ill);
1741 ira->ira_ill = ill;
1742 ira->ira_ruifindex = ill->ill_phyint->phyint_ifindex;
1749 ip_input_local_v4(ire, mp, ipha, ira);
1757 ip_input_local_v4(ire_t *ire, mblk_t *mp, ipha_t *ipha, ip_recv_attr_t *ira)
1759 ill_t *ill = ira->ira_ill;
1760 iaflags_t iraflags = ira->ira_flags;
1775 if (!ip_input_local_options(mp, ipha, ira)) {
1798 if (!(ira->ira_flags & IRAF_L2SRC_SET))
1799 ip_setl2src(mp, ira, ira->ira_rill);
1801 mp = ip_input_fragment(mp, ipha, ira);
1815 ip_input_broadcast_v4(ire, mp, ipha, ira);
1817 ip_input_multicast_v4(ire, mp, ipha, ira);
1820 ip_fanout_v4(mp, ipha, ira);
1835 ip_input_broadcast_v4(ire_t *ire, mblk_t *mp, ipha_t *ipha, ip_recv_attr_t *ira)
1837 ill_t *ill = ira->ira_ill;
1844 uint_t ira_pktlen = ira->ira_pktlen;
1845 uint16_t ira_ip_hdr_length = ira->ira_ip_hdr_length;
1855 ira->ira_zoneid = ire->ire_zoneid;
1857 ip_fanout_v4(mp, ipha, ira);
1885 ira->ira_zoneid = ire1->ire_zoneid;
1887 ip_fanout_v4(mp1, ipha1, ira);
1892 ira->ira_pktlen = ira_pktlen;
1893 ira->ira_ip_hdr_length = ira_ip_hdr_length;
1897 ira->ira_zoneid = ire->ire_zoneid;
1898 ip_fanout_v4(mp, ipha, ira);
1915 ip_input_multicast_v4(ire_t *ire, mblk_t *mp, ipha_t *ipha, ip_recv_attr_t *ira)
1917 ill_t *ill = ira->ira_ill;
1918 iaflags_t iraflags = ira->ira_flags;
1924 uint_t ira_pktlen = ira->ira_pktlen;
1925 uint16_t ira_ip_hdr_length = ira->ira_ip_hdr_length;
1938 ira->ira_zoneid = GLOBAL_ZONEID;
1942 ira->ira_no_loop_zoneid == ira->ira_zoneid) {
1947 ip_fanout_v4(mp, ipha, ira);
1969 ira->ira_zoneid = zoneid;
1973 ira->ira_no_loop_zoneid == ira->ira_zoneid)
1984 ip_fanout_v4(mp1, ipha1, ira);
1989 ira->ira_pktlen = ira_pktlen;
1990 ira->ira_ip_hdr_length = ira_ip_hdr_length;
1994 ira->ira_zoneid = GLOBAL_ZONEID;
1997 ira->ira_no_loop_zoneid == ira->ira_zoneid) {
2001 ip_fanout_v4(mp, ipha, ira);
2012 uint_t ip_hdr_length, ip_recv_attr_t *ira)
2018 ASSERT(ira->ira_flags & IRAF_SYSTEM_LABELED);
2026 if (ira->ira_tsl != NULL && ira->ira_tsl->tsl_flags & TSLF_UNLABELED)
2027 ira->ira_flags |= IRAF_TX_MAC_EXEMPTABLE;
2029 if (ira->ira_zoneid != ALL_ZONES)
2032 ira->ira_flags |= IRAF_TX_SHARED_ADDR;
2065 zoneid = tsol_attr_to_zoneid(ira);
2067 ira->ira_flags &= ~IRAF_TX_MAC_EXEMPTABLE;
2071 zoneid = tsol_attr_to_zoneid(ira);
2074 ira->ira_zoneid = zoneid;
2116 ip_input_cksum_pseudo_v4(ipha_t *ipha, ip_recv_attr_t *ira)
2120 uint8_t protocol = ira->ira_protocol;
2121 uint16_t ip_hdr_length = ira->ira_ip_hdr_length;
2127 ulp_len = ira->ira_pktlen - ip_hdr_length;
2162 ip_input_sw_cksum_v4(mblk_t *mp, ipha_t *ipha, ip_recv_attr_t *ira)
2164 ip_stack_t *ipst = ira->ira_ill->ill_ipst;
2166 uint8_t protocol = ira->ira_protocol;
2167 uint16_t ip_hdr_length = ira->ira_ip_hdr_length;
2173 cksum = ip_input_cksum_pseudo_v4(ipha, ira);
2178 ip_input_cksum_err_v4(protocol, 0, ira->ira_ill);
2190 ip_recv_attr_t *ira)
2192 ill_t *ill = ira->ira_rill;
2197 uint8_t protocol = ira->ira_protocol;
2198 uint16_t ip_hdr_length = ira->ira_ip_hdr_length;
2236 ira->ira_flags |= IRAF_SCTP_CSUM_ERR;
2253 return (ip_input_sw_cksum_v4(mp, ipha, ira));
2281 ip_input_cksum_err_v4(protocol, hck_flags, ira->ira_ill);
2293 cksum = ip_input_cksum_pseudo_v4(ipha, ira);
2319 ip_input_cksum_err_v4(protocol, hck_flags, ira->ira_ill);
2322 return (ip_input_sw_cksum_v4(mp, ipha, ira));
2336 ip_fanout_v4(mblk_t *mp, ipha_t *ipha, ip_recv_attr_t *ira)
2338 ill_t *ill = ira->ira_ill;
2339 iaflags_t iraflags = ira->ira_flags;
2350 ill_t *rill = ira->ira_rill;
2352 ASSERT(ira->ira_pktlen == ntohs(ipha->ipha_length));
2354 ip_hdr_length = ira->ira_ip_hdr_length;
2355 ira->ira_protocol = protocol;
2399 if (ira->ira_pktlen < ip_hdr_length + min_ulp_header_length) {
2407 ira);
2418 /* This can update ira->ira_flags and ira->ira_zoneid */
2419 ip_fanout_tx_v4(mp, ipha, protocol, ip_hdr_length, ira);
2420 iraflags = ira->ira_flags;
2426 if (!ip_input_cksum_v4(iraflags, mp, ipha, ira)) {
2433 iraflags = ira->ira_flags;
2457 if (ira->ira_pktlen < offset) {
2467 ipha = ip_pullup(mp, offset, ira);
2479 if (ira->ira_sqp == NULL) {
2480 ira->ira_sqp = ip_squeue_get(ira->ira_ring);
2485 ira, ipst);
2489 tcp_xmit_listeners_reset(mp, ira, ipst, NULL);
2493 connp->conn_incoming_ifindex != ira->ira_ruifindex) {
2498 tcp_xmit_listeners_reset(mp, ira, ipst, NULL);
2504 ipha, NULL, ira);
2515 ira->ira_ill = ira->ira_rill = NULL;
2518 (connp->conn_recv)(connp, mp, NULL, ira);
2520 ira->ira_ill = ill;
2521 ira->ira_rill = rill;
2531 if (ira->ira_target_sqp == connp->conn_sqp) {
2534 attrmp = ip_recv_attr_to_mblk(ira);
2546 ASSERT(ira->ira_target_sqp_mp == NULL);
2547 ira->ira_target_sqp_mp = attrmp;
2555 connp->conn_recv, connp, ira, SQ_FILL,
2560 connp, ira, ip_squeue_flag, SQTAG_IP_TCP_INPUT);
2562 ira->ira_ill = ill;
2563 ira->ira_rill = rill;
2601 ip_fanout_sctp_raw(mp, ipha, NULL, ports, ira);
2604 connp = sctp_fanout(&map_src, &map_dst, ports, ira, mp,
2608 ip_fanout_sctp_raw(mp, ipha, NULL, ports, ira);
2612 connp->conn_incoming_ifindex != ira->ira_ruifindex) {
2615 ip_fanout_sctp_raw(mp, ipha, NULL, ports, ira);
2621 sctp_input(connp, ipha, NULL, mp, ira);
2634 ip_fanout_udp_multi_v4(mp, ipha, up[1], up[0], ira);
2640 ira, ipst);
2645 ASSERT(ira->ira_protocol == IPPROTO_UDP);
2646 ip_fanout_proto_v4(mp, ipha, ira);
2650 ICMP_PORT_UNREACHABLE, ira);
2656 connp->conn_incoming_ifindex != ira->ira_ruifindex) {
2671 ipha, NULL, ira);
2687 ip_drop_packet(mp, B_TRUE, ira->ira_ill,
2694 mp = zero_spi_check(mp, ira);
2706 ira->ira_protocol = protocol;
2711 ira->ira_ill = ira->ira_rill = NULL;
2712 (connp->conn_recv)(connp, mp, NULL, ira);
2714 ira->ira_ill = ill;
2715 ira->ira_rill = rill;
2743 ipha, NULL, ira, ns);
2752 if (ira->ira_flags & IRAF_SYSTEM_LABELED) {
2753 if (!tsol_can_accept_raw(mp, ira, B_FALSE)) {
2772 mp = icmp_inbound_v4(mp, ira);
2786 ipha, NULL, ira, ns);
2790 if ((ira->ira_flags & IRAF_SYSTEM_LABELED) &&
2791 !tsol_can_accept_raw(mp, ira, B_TRUE)) {
2808 mp = igmp_input(mp, ira);
2821 ipha, NULL, ira, ns);
2825 if ((ira->ira_flags & IRAF_SYSTEM_LABELED) &&
2826 !tsol_can_accept_raw(mp, ira, B_TRUE)) {
2835 mp = pim_input(mp, ira);
2852 ip_proto_not_sup(mp, ira);
2863 mp = ipsec_inbound_esp_sa(mp, ira, &esph);
2868 ASSERT(ira->ira_flags & IRAF_IPSEC_SECURE);
2869 ASSERT(ira->ira_ipsec_esp_sa != NULL);
2870 ASSERT(ira->ira_ipsec_esp_sa->ipsa_input_func != NULL);
2872 esp_in_udp_sa = ((ira->ira_ipsec_esp_sa->ipsa_flags &
2875 (ira->ira_flags & IRAF_ESP_UDP_PORTS) != 0;
2885 ip_drop_packet(mp, B_TRUE, ira->ira_ill,
2890 mp = ira->ira_ipsec_esp_sa->ipsa_input_func(mp, esph,
2891 ira);
2895 mp = ipsec_inbound_ah_sa(mp, ira, &ah);
2900 ASSERT(ira->ira_flags & IRAF_IPSEC_SECURE);
2901 ASSERT(ira->ira_ipsec_ah_sa != NULL);
2902 ASSERT(ira->ira_ipsec_ah_sa->ipsa_input_func != NULL);
2903 mp = ira->ira_ipsec_ah_sa->ipsa_input_func(mp, ah,
2904 ira);
2915 ip_input_post_ipsec(mp, ira);
2927 if (ira->ira_pktlen <
2937 sizeof (ipha_t) - mp->b_rptr, ira);
2977 if (ira->ira_pktlen <
2987 (uchar_t *)ipha + ip_hdr_length - mp->b_rptr, ira);
3000 dst = ip_input_options(ipha, dst, mp, ira, &error);
3019 ira);
3023 if (!(ira->ira_flags & IRAF_IPSEC_SECURE)) {
3033 ira->ira_protocol = protocol;
3038 ira->ira_ip_hdr_length = ip_hdr_length;
3039 ira->ira_pktlen = ntohs(ipha->ipha_length);
3041 if (ira->ira_flags & IRAF_IPSEC_DECAPS) {
3052 ASSERT(ira->ira_flags & IRAF_IPSEC_SECURE);
3053 ira->ira_flags |= IRAF_IPSEC_DECAPS;
3055 ip_input_post_ipsec(mp, ira);
3063 ira, ipst);
3066 ira->ira_ill = ira->ira_rill = NULL;
3067 (connp->conn_recv)(connp, mp, NULL, ira);
3069 ira->ira_ill = ill;
3070 ira->ira_rill = rill;
3079 if (ira->ira_flags & IRAF_SYSTEM_LABELED) {
3080 if (!tsol_can_accept_raw(mp, ira, B_FALSE)) {
3095 ira->ira_protocol = protocol = ipha->ipha_protocol;
3111 ipha, NULL, ira, ns);
3113 ip_mroute_decap(mp, ira);
3116 ip_proto_not_sup(mp, ira);
3127 ASSERT(ira->ira_protocol == ipha->ipha_protocol);
3128 ip_fanout_proto_v4(mp, ipha, ira);