Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_subr.c
Show First 20 Lines • Show All 1,599 Lines • ▼ Show 20 Lines | */ | ||||
INP_INFO_WLOCK(&V_tcbinfo); | INP_INFO_WLOCK(&V_tcbinfo); | ||||
LIST_FOREACH(inpb, V_tcbinfo.ipi_listhead, inp_list) { | LIST_FOREACH(inpb, V_tcbinfo.ipi_listhead, inp_list) { | ||||
if (inpb->inp_flags & INP_TIMEWAIT) | if (inpb->inp_flags & INP_TIMEWAIT) | ||||
continue; | continue; | ||||
INP_WLOCK(inpb); | INP_WLOCK(inpb); | ||||
if ((tcpb = intotcpcb(inpb)) != NULL) { | if ((tcpb = intotcpcb(inpb)) != NULL) { | ||||
tcp_reass_flush(tcpb); | tcp_reass_flush(tcpb); | ||||
tcp_clean_sackreport(tcpb); | tcp_clean_sackreport(tcpb); | ||||
#ifdef TCPPCAP | |||||
if (tcp_pcap_aggressive_free) { | |||||
/* Free the TCP PCAP queues. */ | |||||
tcp_pcap_drain(&(tcpb->t_inpkts)); | |||||
tcp_pcap_drain(&(tcpb->t_outpkts)); | |||||
} | |||||
#endif | |||||
} | } | ||||
INP_WUNLOCK(inpb); | INP_WUNLOCK(inpb); | ||||
} | } | ||||
INP_INFO_WUNLOCK(&V_tcbinfo); | INP_INFO_WUNLOCK(&V_tcbinfo); | ||||
CURVNET_RESTORE(); | CURVNET_RESTORE(); | ||||
} | } | ||||
VNET_LIST_RUNLOCK_NOSLEEP(); | VNET_LIST_RUNLOCK_NOSLEEP(); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,395 Lines • Show Last 20 Lines |