diff options
author | 2018-07-29 09:25:58 +0000 | |
---|---|---|
committer | 2018-07-29 09:25:58 +0000 | |
commit | 925939b706654eeebe43e597bffe0e97c52fc5a2 (patch) | |
tree | bba97d5af0e38f6eef1594efa7c7560649998009 /regress/sys/kern/sosplice/scapy/scapy-delay-synack.py | |
parent | Use strtonum in host() (diff) | |
download | wireguard-openbsd-925939b706654eeebe43e597bffe0e97c52fc5a2.tar.xz wireguard-openbsd-925939b706654eeebe43e597bffe0e97c52fc5a2.zip |
New scapy 2.4.0 buffers packets at the bfp layer. Call sniff() to
clear this list when starting the sniffer thread. The TCP sequence
number check in sr1() became more strict. Use the sniffer thread
to capture retransmitted packetes which the new TCP answers() check
ignores now.
Diffstat (limited to 'regress/sys/kern/sosplice/scapy/scapy-delay-synack.py')
-rw-r--r-- | regress/sys/kern/sosplice/scapy/scapy-delay-synack.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/regress/sys/kern/sosplice/scapy/scapy-delay-synack.py b/regress/sys/kern/sosplice/scapy/scapy-delay-synack.py index 913b5887fde..00a5dc914b1 100644 --- a/regress/sys/kern/sosplice/scapy/scapy-delay-synack.py +++ b/regress/sys/kern/sosplice/scapy/scapy-delay-synack.py @@ -15,6 +15,10 @@ class Sniff1(threading.Thread): filter = None captured = None packet = None + def __init__(self): + # clear packets buffered by scapy bpf + sniff(iface=LOCAL_IF, timeout=1) + super(Sniff1, self).__init__() def run(self): self.captured = sniff(iface=LOCAL_IF, filter=self.filter, count=1, timeout=5) @@ -97,8 +101,18 @@ if spliced_payload.len-20-20 != len(data): (len(data), spliced_payload.len-20-20) exit(1) +print "Expect spliced ACK retransmission" +sniffer = Sniff1(); +sniffer.filter = "src %s and dst %s and tcp port %u " \ + "and tcp[tcpflags] = tcp-ack" % (ip.dst, ip.src, server) +sniffer.start() +time.sleep(1) + print "Retransmit spliced SYN+ACK packet to trigger ACK" -spliced_ack_retrans=sr1(ip/spliced_synack, iface=LOCAL_IF) +send(ip/spliced_synack, iface=LOCAL_IF) + +sniffer.join(timeout=7) +spliced_ack_retrans = sniffer.packet if spliced_ack_retrans is None: print "ERROR: No spliced ACK retransmit packet received" |