6681 !CONN_INBOUND_POLICY_PRESENT(connp, ipss) &&
6682 !secure &&
6683 !IPP_ENABLED(IPP_LOCAL_IN, ipst) && !ip_policy &&
6684 IPCL_IS_TCP(Q_TO_CONN(q))) {
6685 ASSERT(Q_TO_CONN(q)->conn_sqp != NULL);
6686 sqp = Q_TO_CONN(q)->conn_sqp;
6687 } else {
6688 sqp = IP_SQUEUE_GET(lbolt);
6689 }
6690
6691 mp->b_datap->db_struioflag |= STRUIO_EAGER;
6692 DB_CKSUMSTART(mp) = (intptr_t)sqp;
6693 syn_present = B_TRUE;
6694 }
6695 }
6696
6697 if (IPCL_IS_TCP(connp) && IPCL_IS_BOUND(connp) && !syn_present) {
6698 uint_t flags = (unsigned int)tcph->th_flags[0] & 0xFF;
6699 BUMP_MIB(recv_ill->ill_ip_mib, ipIfStatsHCInDelivers);
6700 if ((flags & TH_RST) || (flags & TH_URG)) {
6701 CONN_DEC_REF(connp);
6702 freemsg(first_mp);
6703 return;
6704 }
6705 if (flags & TH_ACK) {
6706 tcp_xmit_listeners_reset(first_mp, ip_hdr_len, zoneid,
6707 ipst->ips_netstack->netstack_tcp, connp);
6708 CONN_DEC_REF(connp);
6709 return;
6710 }
6711
6712 CONN_DEC_REF(connp);
6713 freemsg(first_mp);
6714 return;
6715 }
6716
6717 if (CONN_INBOUND_POLICY_PRESENT(connp, ipss) || secure) {
6718 first_mp = ipsec_check_inbound_policy(first_mp, connp, ipha,
6719 NULL, mctl_present);
6720 if (first_mp == NULL) {
6721 BUMP_MIB(recv_ill->ill_ip_mib, ipIfStatsInDiscards);
6722 CONN_DEC_REF(connp);
6723 return;
6724 }
6725 if (IPCL_IS_TCP(connp) && IPCL_IS_BOUND(connp)) {
6726 ASSERT(syn_present);
6727 if (mctl_present) {
6728 ASSERT(first_mp != mp);
6729 first_mp->b_datap->db_struioflag |=
6730 STRUIO_POLICY;
6731 } else {
13120 } else if (IPCL_IS_BOUND(connp) && !mctl_present &&
13121 !CONN_INBOUND_POLICY_PRESENT(connp, ipss)) {
13122 BUMP_MIB(ill->ill_ip_mib,
13123 ipIfStatsHCInDelivers);
13124 ip_squeue_enter_unbound++;
13125 SET_SQUEUE(mp, tcp_conn_request_unbound,
13126 connp);
13127 return (mp);
13128 }
13129 syn_present = B_TRUE;
13130 }
13131
13132 }
13133
13134 if (IPCL_IS_TCP(connp) && IPCL_IS_BOUND(connp) && !syn_present) {
13135 uint_t flags = (unsigned int)tcph->th_flags[0] & 0xFF;
13136
13137 BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers);
13138 /* No need to send this packet to TCP */
13139 if ((flags & TH_RST) || (flags & TH_URG)) {
13140 CONN_DEC_REF(connp);
13141 freemsg(first_mp);
13142 return (NULL);
13143 }
13144 if (flags & TH_ACK) {
13145 tcp_xmit_listeners_reset(first_mp, ip_hdr_len, zoneid,
13146 ipst->ips_netstack->netstack_tcp, connp);
13147 CONN_DEC_REF(connp);
13148 return (NULL);
13149 }
13150
13151 CONN_DEC_REF(connp);
13152 freemsg(first_mp);
13153 return (NULL);
13154 }
13155
13156 if (CONN_INBOUND_POLICY_PRESENT(connp, ipss) || mctl_present) {
13157 first_mp = ipsec_check_inbound_policy(first_mp, connp,
13158 ipha, NULL, mctl_present);
13159 if (first_mp == NULL) {
13160 BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
13161 CONN_DEC_REF(connp);
13162 return (NULL);
13163 }
13164 if (IPCL_IS_TCP(connp) && IPCL_IS_BOUND(connp)) {
13165 ASSERT(syn_present);
13166 if (mctl_present) {
13167 ASSERT(first_mp != mp);
13168 first_mp->b_datap->db_struioflag |=
13169 STRUIO_POLICY;
13170 } else {
|
6681 !CONN_INBOUND_POLICY_PRESENT(connp, ipss) &&
6682 !secure &&
6683 !IPP_ENABLED(IPP_LOCAL_IN, ipst) && !ip_policy &&
6684 IPCL_IS_TCP(Q_TO_CONN(q))) {
6685 ASSERT(Q_TO_CONN(q)->conn_sqp != NULL);
6686 sqp = Q_TO_CONN(q)->conn_sqp;
6687 } else {
6688 sqp = IP_SQUEUE_GET(lbolt);
6689 }
6690
6691 mp->b_datap->db_struioflag |= STRUIO_EAGER;
6692 DB_CKSUMSTART(mp) = (intptr_t)sqp;
6693 syn_present = B_TRUE;
6694 }
6695 }
6696
6697 if (IPCL_IS_TCP(connp) && IPCL_IS_BOUND(connp) && !syn_present) {
6698 uint_t flags = (unsigned int)tcph->th_flags[0] & 0xFF;
6699 BUMP_MIB(recv_ill->ill_ip_mib, ipIfStatsHCInDelivers);
6700 if ((flags & TH_RST) || (flags & TH_URG)) {
6701 DTRACE_TCP5(receive, mblk_t *, NULL, conn_t *, NULL,
6702 void_ip_t *, ipha, tcp_t *, NULL, tcph_t *, tcph);
6703 CONN_DEC_REF(connp);
6704 freemsg(first_mp);
6705 return;
6706 }
6707 if (flags & TH_ACK) {
6708 tcp_xmit_listeners_reset(first_mp, ip_hdr_len, zoneid,
6709 ipst->ips_netstack->netstack_tcp, connp);
6710 CONN_DEC_REF(connp);
6711 return;
6712 }
6713
6714 DTRACE_TCP5(receive, mblk_t *, NULL, conn_t *, NULL,
6715 void_ip_t *, ipha, tcp_t *, NULL, tcph_t *, tcph);
6716 CONN_DEC_REF(connp);
6717 freemsg(first_mp);
6718 return;
6719 }
6720
6721 if (CONN_INBOUND_POLICY_PRESENT(connp, ipss) || secure) {
6722 first_mp = ipsec_check_inbound_policy(first_mp, connp, ipha,
6723 NULL, mctl_present);
6724 if (first_mp == NULL) {
6725 BUMP_MIB(recv_ill->ill_ip_mib, ipIfStatsInDiscards);
6726 CONN_DEC_REF(connp);
6727 return;
6728 }
6729 if (IPCL_IS_TCP(connp) && IPCL_IS_BOUND(connp)) {
6730 ASSERT(syn_present);
6731 if (mctl_present) {
6732 ASSERT(first_mp != mp);
6733 first_mp->b_datap->db_struioflag |=
6734 STRUIO_POLICY;
6735 } else {
13124 } else if (IPCL_IS_BOUND(connp) && !mctl_present &&
13125 !CONN_INBOUND_POLICY_PRESENT(connp, ipss)) {
13126 BUMP_MIB(ill->ill_ip_mib,
13127 ipIfStatsHCInDelivers);
13128 ip_squeue_enter_unbound++;
13129 SET_SQUEUE(mp, tcp_conn_request_unbound,
13130 connp);
13131 return (mp);
13132 }
13133 syn_present = B_TRUE;
13134 }
13135
13136 }
13137
13138 if (IPCL_IS_TCP(connp) && IPCL_IS_BOUND(connp) && !syn_present) {
13139 uint_t flags = (unsigned int)tcph->th_flags[0] & 0xFF;
13140
13141 BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers);
13142 /* No need to send this packet to TCP */
13143 if ((flags & TH_RST) || (flags & TH_URG)) {
13144 DTRACE_TCP5(receive, mblk_t *, NULL, conn_t *, NULL,
13145 void_ip_t *, ipha, tcp_t *, NULL, tcph_t *, tcph);
13146 CONN_DEC_REF(connp);
13147 freemsg(first_mp);
13148 return (NULL);
13149 }
13150 if (flags & TH_ACK) {
13151 tcp_xmit_listeners_reset(first_mp, ip_hdr_len, zoneid,
13152 ipst->ips_netstack->netstack_tcp, connp);
13153 CONN_DEC_REF(connp);
13154 return (NULL);
13155 }
13156
13157 DTRACE_TCP5(receive, mblk_t *, NULL, conn_t *, NULL,
13158 void_ip_t *, ipha, tcp_t *, NULL, tcph_t *, tcph);
13159
13160 CONN_DEC_REF(connp);
13161 freemsg(first_mp);
13162 return (NULL);
13163 }
13164
13165 if (CONN_INBOUND_POLICY_PRESENT(connp, ipss) || mctl_present) {
13166 first_mp = ipsec_check_inbound_policy(first_mp, connp,
13167 ipha, NULL, mctl_present);
13168 if (first_mp == NULL) {
13169 BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
13170 CONN_DEC_REF(connp);
13171 return (NULL);
13172 }
13173 if (IPCL_IS_TCP(connp) && IPCL_IS_BOUND(connp)) {
13174 ASSERT(syn_present);
13175 if (mctl_present) {
13176 ASSERT(first_mp != mp);
13177 first_mp->b_datap->db_struioflag |=
13178 STRUIO_POLICY;
13179 } else {
|