summaryrefslogtreecommitdiffstats
path: root/sys/netinet/ip_fw.c
diff options
context:
space:
mode:
authorbillf <billf@FreeBSD.org>2001-02-27 10:20:44 +0000
committerbillf <billf@FreeBSD.org>2001-02-27 10:20:44 +0000
commit7a0c52088d1fee0f7e7e2d805b3902f3c27f6172 (patch)
tree48ad5fcac544ca172575483ab6eaae50270c9fda /sys/netinet/ip_fw.c
parent3b5bbecd16a6e87df244b51ceea490fb78b53db5 (diff)
downloadFreeBSD-src-7a0c52088d1fee0f7e7e2d805b3902f3c27f6172.zip
FreeBSD-src-7a0c52088d1fee0f7e7e2d805b3902f3c27f6172.tar.gz
The TCP header-specific section suffered a little bit of bitrot recently:
When we recieve a fragmented TCP packet (other than the first) we can't extract header information (we don't have state to reference). In a rather unelegant fashion we just move on and assume a non-match. Recent additions to the TCP header-specific section of the code neglected to add the logic to the fragment code so in those cases the match was assumed to be positive and those parts of the rule (which should have resulted in a non-match/continue) were instead skipped (which means the processing of the rule continued even though it had already not matched). Fault can be spread out over Rich Steenbergen (tcpoptions) and myself (tcp{seq,ack,win}). rwatson sent me a patch that got me thinking about this whole situation (but what I'm committing / this description is mine so don't blame him).
Diffstat (limited to 'sys/netinet/ip_fw.c')
-rw-r--r--sys/netinet/ip_fw.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/netinet/ip_fw.c b/sys/netinet/ip_fw.c
index a17e0ad..ebb1370 100644
--- a/sys/netinet/ip_fw.c
+++ b/sys/netinet/ip_fw.c
@@ -1259,7 +1259,7 @@ again:
* we consider the rule a non-match.
*/
if (f->fw_nports != 0 ||
- f->fw_tcpf != f->fw_tcpnf)
+ f->fw_ipflg & IP_FW_IF_TCPMSK)
continue;
break;
OpenPOWER on IntegriCloud