diff options
author | 2016-10-20 18:17:04 +0000 | |
---|---|---|
committer | 2016-10-20 18:17:04 +0000 | |
commit | 1eb14a7b0bc3b5681b840e407a76766b8df6b31d (patch) | |
tree | 1c8e7847fe95657cef58169b6fe22ea5ca915fe8 /regress/sys/net/pf_fragment/frag_cutold.py | |
parent | Update to tzdata2016h from from ftp.iana.org. (diff) | |
download | wireguard-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.py | 24 |
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 \ |