summaryrefslogtreecommitdiffstats
path: root/regress/sys/net/pf_fragment/frag_cutold.py
diff options
context:
space:
mode:
authorbluhm <bluhm@openbsd.org>2016-10-20 18:17:04 +0000
committerbluhm <bluhm@openbsd.org>2016-10-20 18:17:04 +0000
commit1eb14a7b0bc3b5681b840e407a76766b8df6b31d (patch)
tree1c8e7847fe95657cef58169b6fe22ea5ca915fe8 /regress/sys/net/pf_fragment/frag_cutold.py
parentUpdate to tzdata2016h from from ftp.iana.org. (diff)
downloadwireguard-openbsd-1eb14a7b0bc3b5681b840e407a76766b8df6b31d.tar.xz
wireguard-openbsd-1eb14a7b0bc3b5681b840e407a76766b8df6b31d.zip
Replace fork() and sleep() with a Python thread for sniffing packets.
This reduces test execution time from 2m21.95s to 1m09.80s.
Diffstat (limited to 'regress/sys/net/pf_fragment/frag_cutold.py')
-rw-r--r--regress/sys/net/pf_fragment/frag_cutold.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/regress/sys/net/pf_fragment/frag_cutold.py b/regress/sys/net/pf_fragment/frag_cutold.py
index 5cf10af0d91..c43ba45dac3 100644
--- a/regress/sys/net/pf_fragment/frag_cutold.py
+++ b/regress/sys/net/pf_fragment/frag_cutold.py
@@ -11,9 +11,20 @@
# to be dropped in the end, meaning it will come again.
import os
+import threading
from addr import *
from scapy.all import *
+class Sniff1(threading.Thread):
+ filter = None
+ captured = None
+ packet = None
+ def run(self):
+ self.captured = sniff(iface=SRC_IF, filter=self.filter,
+ count=1, timeout=3)
+ if self.captured:
+ self.packet = self.captured[0]
+
dstaddr=sys.argv[1]
pid=os.getpid() & 0xffff
payload="ABCDEFGHIJKLOMNO"
@@ -27,14 +38,13 @@ eth=[]
eth.append(Ether(src=SRC_MAC, dst=PF_MAC)/pkt1)
eth.append(Ether(src=SRC_MAC, dst=PF_MAC)/pkt0)
-if os.fork() == 0:
- time.sleep(1)
- sendp(eth, iface=SRC_IF)
- os._exit(0)
+sniffer = Sniff1();
+sniffer.filter = "ip and src %s and dst %s and icmp" % (dstaddr, SRC_OUT)
+sniffer.start()
+sendp(eth, iface=SRC_IF)
+sniffer.join(timeout=5)
+a = sniffer.packet
-ans=sniff(iface=SRC_IF, timeout=3, filter=
- "ip and src "+dstaddr+" and dst "+SRC_OUT+" and icmp")
-a=ans[0]
if a and a.type == ETH_P_IP and \
a.payload.proto == 1 and \
a.payload.frag == 0 and a.payload.flags == 0 and \