TCP: Fix Reset segment processing

When a received RST segment contains data, this is diagnostic data that
explains the cause of the RST.

So we have to stop processing, even if we don't print the data (no "-v").

Rename two test outputs, with "-v" in the names.
Add two test cases (existing pcap printed without "-v").
This commit is contained in:
Francois-Xavier Le Bail 2024-11-01 22:20:24 +01:00 committed by fxlb
parent 803b7028e0
commit 7eb03bc0da
6 changed files with 15 additions and 8 deletions

View File

@ -729,8 +729,11 @@ tcp_print(netdissect_options *ndo,
nd_trunc_longjmp(ndo);
}
bp += header_len;
if ((flags & TH_RST) && ndo->ndo_vflag) {
print_tcp_rst_data(ndo, bp, length);
if (flags & TH_RST) {
if(ndo->ndo_vflag)
print_tcp_rst_data(ndo, bp, length);
else
ND_TCHECK_LEN(bp, length);
return;
}

View File

@ -39,9 +39,11 @@ tcp-handshake-nano-tttt tcp-handshake-nano.pcap tcp-handshake-nano-tttt.out -ttt
tcp-handshake-nano-ttttt tcp-handshake-nano.pcap tcp-handshake-nano-ttttt.out -ttttt -q --nano SPECIAL_t
# TCP with data in the RST segment
tcp_rst_data tcp_rst_data.pcap tcp_rst_data.out -v
tcp_rst_data tcp_rst_data.pcap tcp_rst_data-v.out -v
tcp_rst_data tcp_rst_data.pcap tcp_rst_data.out
# TCP with data in the RST segment, truncated example
tcp_rst_data-trunc tcp_rst_data-trunc.pcap tcp_rst_data-trunc.out -v
tcp_rst_data-trunc tcp_rst_data-trunc.pcap tcp_rst_data-trunc-v.out -v
tcp_rst_data-trunc tcp_rst_data-trunc.pcap tcp_rst_data-trunc.out
# TCP
tcp_eight_lowest_weight_flags_set tcp_eight_lowest_weight_flags_set.pcap tcp_eight_lowest_weight_flags_set.out

View File

@ -0,0 +1,2 @@
1 2013-02-26 22:03:19.190965 IP (tos 0x20, ttl 243, id 8243, offset 0, flags [DF], proto TCP (6), length 98)
199.204.31.89.80 > 172.16.133.41.52875: Flags [R.], seq 1617159969:1617160027, ack 1936660873, win 5785, length 58 [!RST+ BIG-IP: [0x11c5672:3045] {peer]

View File

@ -1,2 +1 @@
1 2013-02-26 22:03:19.190965 IP (tos 0x20, ttl 243, id 8243, offset 0, flags [DF], proto TCP (6), length 98)
199.204.31.89.80 > 172.16.133.41.52875: Flags [R.], seq 1617159969:1617160027, ack 1936660873, win 5785, length 58 [!RST+ BIG-IP: [0x11c5672:3045] {peer]
1 2013-02-26 22:03:19.190965 IP 199.204.31.89.80 > 172.16.133.41.52875: Flags [R.], seq 1617159969:1617160027, ack 1936660873, win 5785, length 58 [|tcp]

2
tests/tcp_rst_data-v.out Normal file
View File

@ -0,0 +1,2 @@
1 2013-02-26 22:03:19.190965 IP (tos 0x20, ttl 243, id 8243, offset 0, flags [DF], proto TCP (6), length 98)
199.204.31.89.80 > 172.16.133.41.52875: Flags [R.], cksum 0x8471 (correct), seq 1617159969:1617160027, ack 1936660873, win 5785, length 58 [RST+ BIG-IP: [0x11c5672:3045] {peer]

View File

@ -1,2 +1 @@
1 2013-02-26 22:03:19.190965 IP (tos 0x20, ttl 243, id 8243, offset 0, flags [DF], proto TCP (6), length 98)
199.204.31.89.80 > 172.16.133.41.52875: Flags [R.], cksum 0x8471 (correct), seq 1617159969:1617160027, ack 1936660873, win 5785, length 58 [RST+ BIG-IP: [0x11c5672:3045] {peer]
1 2013-02-26 22:03:19.190965 IP 199.204.31.89.80 > 172.16.133.41.52875: Flags [R.], seq 1617159969:1617160027, ack 1936660873, win 5785, length 58