Hello :) When I send packets with scapy from packages or lastest mercurial, on OpenBSD -current, I quickly end up with all my /dev/bpf devices used. I tried to find the problem in the scapy source without success. Also searched for the problem in scapy ml, but it seems that scapy v2 works for everybody ...
Here, scapy seems to use one bpf per paket sent : mia# /usr/local/bin/scapy INFO: Can't import python gnuplot wrapper . Won't be able to plot. INFO: Can't import PyX. Won't be able to use psdump() or pdfdump(). Welcome to Scapy (2.0.1) >>> sendp(Ether(dst="00:08:a1:88:26:19")/IP(dst="192.168.3.254")/ICMP(),iface="em0") . Sent 1 packets. >>> sendp(Ether(dst="00:08:a1:88:26:19")/IP(dst="192.168.3.254")/ICMP(),iface="em0") . Sent 1 packets. >>> sendp(Ether(dst="00:08:a1:88:26:19")/IP(dst="192.168.3.254")/ICMP(),iface="em0") . Sent 1 packets. >>> mia$ fstat |grep bpf root python2.6 13450 7 / 26794 crw------- rw bpf4 root python2.6 13450 8 / 26795 crw------- rw bpf5 root python2.6 13450 10 / 26796 crw------- rw bpf6 _tcpdump tcpdump 21353 3 / 26793 crw------- r bpf3 _dhcp dhclient 9089 8 / 26792 crw------- rw bpf2 _tcpdump tcpdump 13399 3 / 26791 crw------- r bpf1 _pflogd pflogd 24999 3 / 26790 crw------- rw bpf0 root pflogd 4077 3 / 26790 crw------- rw bpf0 After sending a few more packets, it has used all bpf devices, and i get >>> sendp(Ether(dst="00:08:a1:88:26:03")/IP(dst="192.168.3.254")/ICMP(),iface="em0") Traceback (most recent call last): File "<console>", line 1, in <module> File "/usr/local/lib/python2.6/site-packages/scapy/sendrecv.py", line 243, in sendp __gen_send(conf.L2socket(iface=iface, *args, **kargs), x, inter=inter, loop=loop, count=count, verbose=verbose) File "/usr/local/lib/python2.6/site-packages/scapy/arch/pcapdnet.py", line 293, in __init__ self.outs = dnet.eth(iface) File "dnet.pyx", line 112, in dnet.eth.__init__ OSError: No such file or directory and for all the following tries >>> sendp(Ether(dst="00:08:a1:88:26:03")/IP(dst="192.168.3.254")/ICMP(),iface="em0") Traceback (most recent call last): File "<console>", line 1, in <module> File "/usr/local/lib/python2.6/site-packages/scapy/sendrecv.py", line 243, in sendp __gen_send(conf.L2socket(iface=iface, *args, **kargs), x, inter=inter, loop=loop, count=count, verbose=verbose) File "/usr/local/lib/python2.6/site-packages/scapy/arch/pcapdnet.py", line 270, in __init__ self.ins = open_pcap(iface, 1600, 0, 100) File "/usr/local/lib/python2.6/site-packages/scapy/arch/pcapdnet.py", line 53, in <lambda> open_pcap = lambda *args,**kargs: _PcapWrapper_libpcap(*args,**kargs) File "/usr/local/lib/python2.6/site-packages/scapy/arch/pcapdnet.py", line 42, in __init__ self.pcap.open_live(*args, **kargs) File "/usr/local/lib/python2.6/site-packages/pcap.py", line 86, in open_live def open_live(*args): return _pcap.pcapObject_open_live(*args) Exception: /dev/bpf11: No such file or directory It tries bpf11 because i created bpf10 just to see. I specify the mac address manualy because if i don't i get "WARNING: Mac address to reach destination not found. Using broadcast." and it uses one more bpf device per paket sent. Huhu. Help appreciated :) laurent