Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_timewait.c
Show First 20 Lines • Show All 445 Lines • ▼ Show 20 Lines | #endif | ||||
* Drop the segment if it does not contain an ACK. | * Drop the segment if it does not contain an ACK. | ||||
*/ | */ | ||||
if ((thflags & TH_ACK) == 0) | if ((thflags & TH_ACK) == 0) | ||||
goto drop; | goto drop; | ||||
/* | /* | ||||
* If timestamps were negotiated during SYN/ACK and a | * If timestamps were negotiated during SYN/ACK and a | ||||
* segment without a timestamp is received, silently drop | * segment without a timestamp is received, silently drop | ||||
* the segment. | * the segment, unless the missing timestamps are tolerated. | ||||
* See section 3.2 of RFC 7323. | * See section 3.2 of RFC 7323. | ||||
*/ | */ | ||||
if (((to->to_flags & TOF_TS) == 0) && (tw->t_recent != 0)) { | if (((to->to_flags & TOF_TS) == 0) && (tw->t_recent != 0) && | ||||
(!V_tcp_tolerate_missing_ts)) { | |||||
goto drop; | goto drop; | ||||
} | } | ||||
/* | /* | ||||
* Reset the 2MSL timer if this is a duplicate FIN. | * Reset the 2MSL timer if this is a duplicate FIN. | ||||
*/ | */ | ||||
if (thflags & TH_FIN) { | if (thflags & TH_FIN) { | ||||
seq = th->th_seq + tlen + (thflags & TH_SYN ? 1 : 0); | seq = th->th_seq + tlen + (thflags & TH_SYN ? 1 : 0); | ||||
▲ Show 20 Lines • Show All 296 Lines • Show Last 20 Lines |