mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-01 08:33:24 +00:00
Merge state reuse for tcp.
PR: kern/125261 Obtained from: OpenBSD MFC after: 1 week
This commit is contained in:
commit
9f21c07f14
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=181295
@ -1,4 +1,5 @@
|
||||
/* $OpenBSD: pf.c,v 1.527 2007/02/22 15:23:23 pyr Exp $ */
|
||||
/* add: $OpenBSD: pf.c,v 1.559 2007/09/18 18:45:59 markus Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001 Daniel Hartmeier
|
||||
@ -4779,6 +4780,22 @@ pf_test_state_tcp(struct pf_state **state, int direction, struct pfi_kif *kif,
|
||||
}
|
||||
}
|
||||
|
||||
if (((th->th_flags & (TH_SYN|TH_ACK)) == TH_SYN) &&
|
||||
dst->state >= TCPS_FIN_WAIT_2 &&
|
||||
src->state >= TCPS_FIN_WAIT_2) {
|
||||
if (pf_status.debug >= PF_DEBUG_MISC) {
|
||||
printf("pf: state reuse ");
|
||||
pf_print_state(*state);
|
||||
pf_print_flags(th->th_flags);
|
||||
printf("\n");
|
||||
}
|
||||
/* XXX make sure it's the same direction ?? */
|
||||
(*state)->src.state = (*state)->dst.state = TCPS_CLOSED;
|
||||
pf_unlink_state(*state);
|
||||
*state = NULL;
|
||||
return (PF_DROP);
|
||||
}
|
||||
|
||||
if (src->wscale && dst->wscale && !(th->th_flags & TH_SYN)) {
|
||||
sws = src->wscale & PF_WSCALE_MASK;
|
||||
dws = dst->wscale & PF_WSCALE_MASK;
|
||||
|
Loading…
Reference in New Issue
Block a user