Print this page
*** NO COMMENTS ***


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 {