summaryrefslogtreecommitdiffstats
path: root/regress/sys/kern/sosplice/scapy/scapy-delay-synack.py
diff options
context:
space:
mode:
authorbluhm <bluhm@openbsd.org>2018-07-29 09:25:58 +0000
committerbluhm <bluhm@openbsd.org>2018-07-29 09:25:58 +0000
commit925939b706654eeebe43e597bffe0e97c52fc5a2 (patch)
treebba97d5af0e38f6eef1594efa7c7560649998009 /regress/sys/kern/sosplice/scapy/scapy-delay-synack.py
parentUse strtonum in host() (diff)
downloadwireguard-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.py16
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"