Mercurial > illumos > illumos-gate
changeset 5031:1f5ab9a5013c
6498936 TCP RST ignores IP_NEXTHOP for unexpected TCP data packets
author | rs200217 |
---|---|
date | Wed, 12 Sep 2007 10:43:00 -0700 |
parents | 15cab3a79834 |
children | f8f641f371f1 |
files | usr/src/uts/common/inet/ip/ip.c usr/src/uts/common/inet/ip/ip6.c usr/src/uts/common/inet/tcp.h usr/src/uts/common/inet/tcp/tcp.c |
diffstat | 4 files changed, 92 insertions(+), 81 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/inet/ip/ip.c Wed Sep 12 09:45:10 2007 -0700 +++ b/usr/src/uts/common/inet/ip/ip.c Wed Sep 12 10:43:00 2007 -0700 @@ -6788,7 +6788,7 @@ ip2dbg(("ip_fanout_tcp: no listener; send reset to zone %d\n", zoneid)); tcp_xmit_listeners_reset(first_mp, ip_hdr_len, zoneid, - ipst->ips_netstack->netstack_tcp); + ipst->ips_netstack->netstack_tcp, NULL); return; } @@ -6835,7 +6835,7 @@ } if (flags & TH_ACK) { tcp_xmit_listeners_reset(first_mp, ip_hdr_len, zoneid, - ipst->ips_netstack->netstack_tcp); + ipst->ips_netstack->netstack_tcp, connp); CONN_DEC_REF(connp); return; } @@ -13214,7 +13214,7 @@ } if (flags & TH_ACK) { tcp_xmit_listeners_reset(first_mp, ip_hdr_len, zoneid, - ipst->ips_netstack->netstack_tcp); + ipst->ips_netstack->netstack_tcp, connp); CONN_DEC_REF(connp); return (NULL); } @@ -13329,7 +13329,7 @@ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers); tcp_xmit_listeners_reset(first_mp, IPH_HDR_LENGTH(mp->b_rptr), zoneid, - ipst->ips_netstack->netstack_tcp); + ipst->ips_netstack->netstack_tcp, NULL); return (NULL); ipoptions: if (!ip_options_cksum(q, ill, first_mp, ipha, ire, ipst)) {
--- a/usr/src/uts/common/inet/ip/ip6.c Wed Sep 12 09:45:10 2007 -0700 +++ b/usr/src/uts/common/inet/ip/ip6.c Wed Sep 12 10:43:00 2007 -0700 @@ -3556,7 +3556,7 @@ } BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers); tcp_xmit_listeners_reset(first_mp, hdr_len, zoneid, - ipst->ips_netstack->netstack_tcp); + ipst->ips_netstack->netstack_tcp, connp); if (connp != NULL) CONN_DEC_REF(connp); return; @@ -3604,7 +3604,7 @@ } if (flags & TH_ACK) { tcp_xmit_listeners_reset(first_mp, hdr_len, zoneid, - ipst->ips_netstack->netstack_tcp); + ipst->ips_netstack->netstack_tcp, connp); CONN_DEC_REF(connp); return; }
--- a/usr/src/uts/common/inet/tcp.h Wed Sep 12 09:45:10 2007 -0700 +++ b/usr/src/uts/common/inet/tcp.h Wed Sep 12 10:43:00 2007 -0700 @@ -646,7 +646,7 @@ extern void tcp_ddi_g_destroy(void); extern void tcp_g_q_inactive(tcp_stack_t *); extern void tcp_xmit_listeners_reset(mblk_t *mp, uint_t ip_hdr_len, - zoneid_t zoneid, tcp_stack_t *); + zoneid_t zoneid, tcp_stack_t *, conn_t *connp); extern void tcp_conn_request(void *arg, mblk_t *mp, void *arg2); extern void tcp_conn_request_unbound(void *arg, mblk_t *mp, void *arg2); extern void tcp_input(void *arg, mblk_t *mp, void *arg2);
--- a/usr/src/uts/common/inet/tcp/tcp.c Wed Sep 12 09:45:10 2007 -0700 +++ b/usr/src/uts/common/inet/tcp/tcp.c Wed Sep 12 10:43:00 2007 -0700 @@ -854,7 +854,7 @@ static mblk_t *tcp_ack_mp(tcp_t *tcp); static void tcp_xmit_early_reset(char *str, mblk_t *mp, uint32_t seq, uint32_t ack, int ctl, uint_t ip_hdr_len, - zoneid_t zoneid, tcp_stack_t *); + zoneid_t zoneid, tcp_stack_t *, conn_t *connp); static void tcp_xmit_ctl(char *str, tcp_t *tcp, uint32_t seq, uint32_t ack, int ctl); static tcp_hsp_t *tcp_hsp_lookup(ipaddr_t addr, tcp_stack_t *); @@ -1509,7 +1509,7 @@ tcp_stack_t *tcps = tcp->tcp_tcps; tcp_squeue_priv_t *tcp_time_wait = *((tcp_squeue_priv_t **)squeue_getprivate(tcp->tcp_connp->conn_sqp, - SQPRIVATE_TCP)); + SQPRIVATE_TCP)); tcp_timers_stop(tcp); @@ -2504,7 +2504,7 @@ boolean_t ire_cacheable = B_FALSE; zoneid_t zoneid = connp->conn_zoneid; int match_flags = MATCH_IRE_RECURSIVE | MATCH_IRE_DEFAULT | - MATCH_IRE_SECATTR; + MATCH_IRE_SECATTR; ts_label_t *tsl = crgetlabel(CONN_CRED(connp)); ill_t *ill = NULL; boolean_t incoming = (ire_mp == NULL); @@ -2786,7 +2786,7 @@ */ if (ire_uinfo->iulp_rpipe > 0) { tcp->tcp_rwnd = MIN(ire_uinfo->iulp_rpipe, - tcps->tcps_max_buf); + tcps->tcps_max_buf); } if (ire_uinfo->iulp_rtomax > 0) { @@ -2913,7 +2913,7 @@ tcp->tcp_xmit_hiwater = hsp->tcp_hsp_sendspace; if (tcps->tcps_snd_lowat_fraction != 0) tcp->tcp_xmit_lowater = tcp->tcp_xmit_hiwater / - tcps->tcps_snd_lowat_fraction; + tcps->tcps_snd_lowat_fraction; } if (hsp->tcp_hsp_recvspace > tcp->tcp_rwnd) { @@ -3195,7 +3195,7 @@ requested_port = tcp->tcp_anon_priv_bind ? tcp_get_next_priv_port(tcp) : tcp_update_next_port(tcps->tcps_next_port_to_try, - tcp, B_TRUE); + tcp, B_TRUE); if (requested_port == 0) { tcp_err_ack(tcp, mp, TNOADDR, 0); return; @@ -3651,8 +3651,8 @@ if (quick_connect && (ltcp->tcp_state > TCPS_LISTEN) && ((tcp->tcp_fport != ltcp->tcp_fport) || - !IN6_ARE_ADDR_EQUAL(&tcp->tcp_remote_v6, - <cp->tcp_remote_v6))) + !IN6_ARE_ADDR_EQUAL(&tcp->tcp_remote_v6, + <cp->tcp_remote_v6))) continue; if (!reuseaddr) { @@ -3670,7 +3670,7 @@ !V6_OR_V4_INADDR_ANY( ltcp->tcp_bound_source_v6) && !IN6_ARE_ADDR_EQUAL(laddr, - <cp->tcp_bound_source_v6)) + <cp->tcp_bound_source_v6)) continue; if (ltcp->tcp_state >= TCPS_BOUND) { /* @@ -3698,7 +3698,7 @@ if (IN6_ARE_ADDR_EQUAL(laddr, <cp->tcp_bound_source_v6) && (ltcp->tcp_state == TCPS_LISTEN || - ltcp->tcp_state == TCPS_BOUND)) + ltcp->tcp_state == TCPS_BOUND)) break; } } @@ -3748,8 +3748,8 @@ */ port = tcp_update_next_port( - tcps->tcps_next_port_to_try, - tcp, B_TRUE); + tcps->tcps_next_port_to_try, + tcp, B_TRUE); user_specified = B_FALSE; } else { port = tcp_update_next_port(port + 1, tcp, @@ -3782,7 +3782,8 @@ freemsg(mp); if (tcp->tcp_state > TCPS_BOUND) - (void) tcp_clean_death(((conn_t *)arg)->conn_tcp, ETIMEDOUT, 5); + (void) tcp_clean_death(((conn_t *)arg)->conn_tcp, + ETIMEDOUT, 5); } /* @@ -4998,7 +4999,7 @@ IPPROTO_RAW) { tcp->tcp_ip6h = (ip6_t *)(tcp->tcp_iphc + - sizeof (ip6i_t)); + sizeof (ip6i_t)); } else { tcp->tcp_ip6h = (ip6_t *)(tcp->tcp_iphc); @@ -5386,7 +5387,7 @@ } mutex_exit(&tcp_time_wait->tcp_time_wait_lock); if ((connp = ipcl_conn_create(IPCL_TCPCONN, KM_NOSLEEP, - tcps->tcps_netstack)) == NULL) + tcps->tcps_netstack)) == NULL) return (NULL); tcp = connp->conn_tcp; tcp->tcp_tcps = tcps; @@ -6287,7 +6288,7 @@ conn_opts_mp = NULL; if (tcp_conprim_opt_process(tcp, mp, - &do_disconnect, &t_error, &sys_error) < 0) { + &do_disconnect, &t_error, &sys_error) < 0) { if (do_disconnect) { ASSERT(t_error == 0 && sys_error == 0); discon_mp = mi_tpi_discon_ind(NULL, @@ -7245,7 +7246,7 @@ if (listener->tcp_eager_last_q == listener->tcp_eager_next_q) { listener->tcp_eager_last_q = - NULL; + NULL; } else { /* * We won't get here if there @@ -7595,7 +7596,7 @@ */ taa->REMADDR_length = sizeof (sin_t); taa->REMADDR_offset = ROUNDUP32(taa->LOCADDR_offset + - taa->LOCADDR_length); + taa->LOCADDR_length); sin = (sin_t *)(ackmp->b_rptr + taa->REMADDR_offset); *sin = sin_null; @@ -7655,7 +7656,7 @@ */ taa->REMADDR_length = sizeof (sin6_t); taa->REMADDR_offset = ROUNDUP32(taa->LOCADDR_offset + - taa->LOCADDR_length); + taa->LOCADDR_length); sin6 = (sin6_t *)(ackmp->b_rptr + taa->REMADDR_offset); *sin6 = sin6_null; @@ -8310,7 +8311,7 @@ tcp->tcp_ip_hdr_len = sizeof (ipha_t); tcp->tcp_ipha->ipha_length = htons(sizeof (ipha_t) + sizeof (tcph_t)); tcp->tcp_ipha->ipha_version_and_hdr_length - = (IP_VERSION << 4) | IP_SIMPLE_HDR_LENGTH_IN_WORDS; + = (IP_VERSION << 4) | IP_SIMPLE_HDR_LENGTH_IN_WORDS; tcp->tcp_ipha->ipha_ident = 0; tcp->tcp_ttl = (uchar_t)tcps->tcps_ipv4_ttl; @@ -8850,7 +8851,7 @@ * length. */ new_mss = ntohs(icmp6->icmp6_mtu) - tcp->tcp_hdr_len - - tcp->tcp_ipsec_overhead; + tcp->tcp_ipsec_overhead; /* * Only update the MSS if the new one is @@ -10155,8 +10156,8 @@ return (-1); return (ip_fill_mtuinfo(&connp->conn_remv6, - connp->conn_fport, mtuinfo, - connp->conn_netstack)); + connp->conn_fport, mtuinfo, + connp->conn_netstack)); } default: return (-1); @@ -10266,11 +10267,13 @@ *(struct linger *)outvalp = *lgr; } else { if (!lgr->l_onoff) { - ((struct linger *)outvalp)->l_onoff = 0; - ((struct linger *)outvalp)->l_linger = 0; + ((struct linger *) + outvalp)->l_onoff = 0; + ((struct linger *) + outvalp)->l_linger = 0; } else { - /* struct copy */ - *(struct linger *)outvalp = *lgr; + /* struct copy */ + *(struct linger *)outvalp = *lgr; } } *outlenp = sizeof (struct linger); @@ -11220,7 +11223,7 @@ tcph_len = tcp->tcp_tcp_hdr_len; bcopy(tcp->tcp_tcph, buf, tcph_len); tcp->tcp_sum = (tcp->tcp_ipha->ipha_dst >> 16) + - (tcp->tcp_ipha->ipha_dst & 0xffff); + (tcp->tcp_ipha->ipha_dst & 0xffff); len = tcp_opt_rev_src_route(ipha, (char *)tcp->tcp_ipha + IP_SIMPLE_HDR_LENGTH, (uchar_t *)&tcp->tcp_ipha->ipha_dst); len += IP_SIMPLE_HDR_LENGTH; @@ -12513,7 +12516,7 @@ ASSERT(conn_ind->OPT_offset != 0 && conn_ind->OPT_length == sizeof (intptr_t)); bcopy(mp->b_rptr + conn_ind->OPT_offset, &tcp, - conn_ind->OPT_length); + conn_ind->OPT_length); /* * TLI/XTI applications will get confused by @@ -12620,7 +12623,7 @@ listener->tcp_syn_rcvd_timeout <= (tcps->tcps_conn_req_max_q0 >> 5) && 10*MINUTES < TICK_TO_MSEC(lbolt64 - - listener->tcp_last_rcv_lbolt)) { + listener->tcp_last_rcv_lbolt)) { /* * Turn off the defense mode if we * believe the SYN attack is over. @@ -12641,7 +12644,7 @@ * Cache it! */ addr_cache[IP_ADDR_CACHE_HASH( - tcp->tcp_remote)] = tcp->tcp_remote; + tcp->tcp_remote)] = tcp->tcp_remote; } mutex_exit(&listener->tcp_eager_lock); if (need_send_conn_ind) @@ -13626,7 +13629,7 @@ ASSERT((uintptr_t)(mp->b_wptr - mp->b_rptr) <= (uintptr_t)INT_MAX); seg_len = mp->b_cont ? msgdsize(mp) : - (int)(mp->b_wptr - mp->b_rptr); + (int)(mp->b_wptr - mp->b_rptr); seg_seq = tcp->tcp_rnxt; /* * A gap is filled and the seq num and len @@ -13889,9 +13892,9 @@ ASSERT(tcp->tcp_urp_mark_mp); tcp->tcp_urp_mark_mp->b_flag &= - ~MSGNOTMARKNEXT; + ~MSGNOTMARKNEXT; tcp->tcp_urp_mark_mp->b_flag |= - MSGMARKNEXT; + MSGMARKNEXT; } goto ack_check; } @@ -13945,7 +13948,7 @@ } else if (tcp->tcp_urp_mark_mp != NULL) { flags |= TH_SEND_URP_MARK; tcp->tcp_urp_mark_mp->b_flag &= - ~MSGNOTMARKNEXT; + ~MSGNOTMARKNEXT; tcp->tcp_urp_mark_mp->b_flag |= MSGMARKNEXT; } #ifdef DEBUG @@ -14636,7 +14639,7 @@ tcp->tcp_fin_acked = B_TRUE; if (tcp->tcp_linger_tid != 0 && TCP_TIMER_CANCEL(tcp, - tcp->tcp_linger_tid) >= 0) { + tcp->tcp_linger_tid) >= 0) { tcp_stop_lingering(tcp); freemsg(mp); mp = NULL; @@ -14662,7 +14665,7 @@ panic("Memory corruption " "detected for connection %s.", tcp_display(tcp, NULL, - DISP_ADDR_AND_PORT)); + DISP_ADDR_AND_PORT)); /*NOTREACHED*/ } goto pre_swnd_update; @@ -15010,9 +15013,10 @@ * do anything for a detached tcp. */ if (!TCP_IS_DETACHED(tcp)) - tcp->tcp_push_tid = TCP_TIMER(tcp, - tcp_push_timer, - MSEC_TO_TICK(tcps->tcps_push_timer_interval)); + tcp->tcp_push_tid = TCP_TIMER(tcp, + tcp_push_timer, + MSEC_TO_TICK( + tcps->tcps_push_timer_interval)); } } xmit_check: @@ -15331,8 +15335,8 @@ /* If app asked for dst headers before routing headers ... */ if ((tcp->tcp_ipv6_recvancillary & TCP_IPV6_RECVRTDSTOPTS) && ip_cmpbuf(tcp->tcp_rtdstopts, tcp->tcp_rtdstoptslen, - (ipp->ipp_fields & IPPF_RTDSTOPTS), - ipp->ipp_rtdstopts, ipp->ipp_rtdstoptslen)) { + (ipp->ipp_fields & IPPF_RTDSTOPTS), + ipp->ipp_rtdstopts, ipp->ipp_rtdstoptslen)) { optlen += sizeof (struct T_opthdr) + ipp->ipp_rtdstoptslen; addflag |= TCP_IPV6_RECVRTDSTOPTS; @@ -15544,7 +15548,7 @@ ipcl_hash_remove(connp); /* Reuse the mblk if possible */ ASSERT(mp->b_datap->db_lim - mp->b_datap->db_base >= - sizeof (*tea)); + sizeof (*tea)); mp->b_rptr = mp->b_datap->db_base; mp->b_wptr = mp->b_rptr + sizeof (*tea); tea = (struct T_error_ack *)mp->b_rptr; @@ -15747,7 +15751,8 @@ tcp->tcp_snd_sack_ok) { if (tcp->tcp_sack_info == NULL) { tcp->tcp_sack_info = - kmem_cache_alloc(tcp_sack_info_cache, + kmem_cache_alloc( + tcp_sack_info_cache, KM_SLEEP); } tcp->tcp_snd_sack_ok = B_TRUE; @@ -18282,8 +18287,8 @@ if (eager->tcp_ipversion == IPV4_VERSION) { sin6->sin6_flowinfo = 0; IN6_IPADDR_TO_V4MAPPED( - eager->tcp_ipha->ipha_src, - &sin6->sin6_addr); + eager->tcp_ipha->ipha_src, + &sin6->sin6_addr); } else { ASSERT(eager->tcp_ip6h != NULL); sin6->sin6_flowinfo = @@ -18845,7 +18850,7 @@ (ire->ire_nce == NULL) || ((ire_fp_mp = ire->ire_nce->nce_fp_mp) == NULL) || ((mp != NULL) && (ire->ire_max_frag < ntohs(ipha->ipha_length) || - MBLKL(ire_fp_mp) > MBLKHEAD(mp)))) { + MBLKL(ire_fp_mp) > MBLKHEAD(mp)))) { TCP_STAT(tcps, tcp_ip_ire_send); IRE_REFRELE(ire); return (B_FALSE); @@ -22106,7 +22111,7 @@ * back to a normal bind_req. */ if (mp->b_cont != NULL) { - ASSERT(MBLKL(mp->b_cont) >= sizeof (kssl_ent_t)); + ASSERT(MBLKL(mp->b_cont) >= sizeof (kssl_ent_t)); if (tcp->tcp_kssl_ent != NULL) { kssl_release_ent(tcp->tcp_kssl_ent, NULL, @@ -22417,8 +22422,9 @@ } /* - * Generate a reset based on an inbound packet for which there is no active - * tcp state that we can find. + * Generate a reset based on an inbound packet, connp is set by caller + * when RST is in response to an unexpected inbound packet for which + * there is active tcp state in the system. * * IPSEC NOTE : Try to send the reply with the same protection as it came * in. We still have the ipsec_mp that the packet was attached to. Thus @@ -22428,7 +22434,7 @@ static void tcp_xmit_early_reset(char *str, mblk_t *mp, uint32_t seq, uint32_t ack, int ctl, uint_t ip_hdr_len, zoneid_t zoneid, - tcp_stack_t *tcps) + tcp_stack_t *tcps, conn_t *connp) { ipha_t *ipha = NULL; ip6_t *ip6h = NULL; @@ -22463,7 +22469,10 @@ return; } - tcp = Q_TO_TCP(q); + if (connp != NULL) + tcp = connp->conn_tcp; + else + tcp = Q_TO_TCP(q); if (!tcp_send_rst_chk(tcps)) { tcps->tcps_rst_unsent++; @@ -22775,12 +22784,13 @@ /* * Generate a "no listener here" RST in response to an "unknown" segment. - * Note that we are reusing the incoming mp to construct the outgoing - * RST. + * connp is set by caller when RST is in response to an unexpected + * inbound packet for which there is active tcp state in the system. + * Note that we are reusing the incoming mp to construct the outgoing RST. */ void tcp_xmit_listeners_reset(mblk_t *mp, uint_t ip_hdr_len, zoneid_t zoneid, - tcp_stack_t *tcps) + tcp_stack_t *tcps, conn_t *connp) { uchar_t *rptr; uint32_t seg_len; @@ -22861,7 +22871,8 @@ freemsg(ipsec_mp); } else if (flags & TH_ACK) { tcp_xmit_early_reset("no tcp, reset", - ipsec_mp, seg_ack, 0, TH_RST, ip_hdr_len, zoneid, tcps); + ipsec_mp, seg_ack, 0, TH_RST, ip_hdr_len, zoneid, tcps, + connp); } else { if (flags & TH_SYN) { seg_len++; @@ -22880,7 +22891,7 @@ tcp_xmit_early_reset("no tcp, reset/ack", ipsec_mp, 0, seg_seq + seg_len, - TH_RST | TH_ACK, ip_hdr_len, zoneid, tcps); + TH_RST | TH_ACK, ip_hdr_len, zoneid, tcps, connp); } } @@ -24611,7 +24622,7 @@ for (i = 1; i < DEG_3; i++) tcp_random_state[i] = 1103515245 * tcp_random_state[i - 1] - + 12345; + + 12345; tcp_random_fptr = &tcp_random_state[SEP_3]; tcp_random_rptr = &tcp_random_state[0]; mutex_exit(&tcp_random_lock); @@ -24910,7 +24921,7 @@ } cr = zone_get_kcred(netstackid_to_zoneid( - tcps->tcps_netstack->netstack_stackid)); + tcps->tcps_netstack->netstack_stackid)); ASSERT(cr != NULL); /* * We set the tcp default queue to IPv6 because IPv4 falls @@ -25053,7 +25064,7 @@ if (servicing_interrupt()) { (void) taskq_dispatch(tcp_taskq, tcp_g_q_close, - (void *) tcps, TQ_SLEEP); + (void *) tcps, TQ_SLEEP); } else { tcp_g_q_close(tcps); } @@ -25507,7 +25518,7 @@ *((uint32_t *)mp->b_rptr) = TCP_IOC_ABORT_CONN; tacp = (tcp_ioc_abort_conn_t *)((uchar_t *)mp->b_rptr + - sizeof (uint32_t)); + sizeof (uint32_t)); tacp->ac_start = acp->ac_start; tacp->ac_end = acp->ac_end; @@ -25548,16 +25559,16 @@ if (af == AF_INET) { (void) inet_ntop(af, (const void *)&TCP_AC_V4LOCAL(acp), - lbuf, 128); + lbuf, 128); (void) inet_ntop(af, (const void *)&TCP_AC_V4REMOTE(acp), - rbuf, 128); + rbuf, 128); lport = ntohs(TCP_AC_V4LPORT(acp)); rport = ntohs(TCP_AC_V4RPORT(acp)); } else { (void) inet_ntop(af, (const void *)&TCP_AC_V6LOCAL(acp), - lbuf, 128); + lbuf, 128); (void) inet_ntop(af, (const void *)&TCP_AC_V6REMOTE(acp), - rbuf, 128); + rbuf, 128); lport = ntohs(TCP_AC_V6LPORT(acp)); rport = ntohs(TCP_AC_V6RPORT(acp)); } @@ -25570,9 +25581,9 @@ if (acp->ac_zoneid == GLOBAL_ZONEID || acp->ac_zoneid == ALL_ZONES) logflags |= SL_CONSOLE; (void) strlog(TCP_MOD_ID, 0, 1, logflags, - "TCP_IOC_ABORT_CONN: local = %s:%d, remote = %s:%d, " - "start = %d, end = %d\n", lbuf, lport, rbuf, rport, - acp->ac_start, acp->ac_end); + "TCP_IOC_ABORT_CONN: local = %s:%d, remote = %s:%d, " + "start = %d, end = %d\n", lbuf, lport, rbuf, rport, + acp->ac_start, acp->ac_end); } /* @@ -25709,7 +25720,7 @@ */ if (index != -1) { err = tcp_ioctl_abort_bucket(acp, index, - &count, exact, tcps); + &count, exact, tcps); } else { /* * loop through all entries for wildcard case @@ -25932,8 +25943,8 @@ arg.src = tcp->tcp_ip_src_v6; if (tcp->tcp_ipversion == IPV4_VERSION) { IN6_IPADDR_TO_V4MAPPED( - tcp->tcp_ipha->ipha_dst, - &arg.dst); + tcp->tcp_ipha->ipha_dst, + &arg.dst); } else { arg.dst = tcp->tcp_ip6h->ip6_dst; @@ -26800,20 +26811,20 @@ tcp_squeue_add(squeue_t *sqp) { tcp_squeue_priv_t *tcp_time_wait = kmem_zalloc( - sizeof (tcp_squeue_priv_t), KM_SLEEP); + sizeof (tcp_squeue_priv_t), KM_SLEEP); *squeue_getprivate(sqp, SQPRIVATE_TCP) = (intptr_t)tcp_time_wait; tcp_time_wait->tcp_time_wait_tid = timeout(tcp_time_wait_collector, sqp, TCP_TIME_WAIT_DELAY); if (tcp_free_list_max_cnt == 0) { int tcp_ncpus = ((boot_max_ncpus == -1) ? - max_ncpus : boot_max_ncpus); + max_ncpus : boot_max_ncpus); /* * Limit number of entries to 1% of availble memory / tcp_ncpus */ tcp_free_list_max_cnt = (freemem * PAGESIZE) / - (tcp_ncpus * sizeof (tcp_t) * 100); + (tcp_ncpus * sizeof (tcp_t) * 100); } tcp_time_wait->tcp_free_list_cnt = 0; }