diff --git a/scapy/arch/pcapdnet.py b/scapy/arch/pcapdnet.py index d3fb250fbafc9bf3848aa7d5cf77e0d045d3dad9..60fe74258636181cd7972bb2f246d4bb055b86de 100644 --- a/scapy/arch/pcapdnet.py +++ b/scapy/arch/pcapdnet.py @@ -37,7 +37,17 @@ if conf.use_pcap: BIOCIMMEDIATE=-2147204496 if hasattr(pcap,"pcap"): # python-pypcap - open_pcap = pcap.pcap + class _PcapWrapper_pypcap: + def __init__(self, device, snaplen, promisc, to_ms): + # Normal pypcap module has no timeout parameter, + # only the specially patched "scapy" variant has. + if "scapy" in pcap.__version__.lower(): + self.pcap = pcap.pcap(device, snaplen, promisc, immediate=1, timeout_ms=to_ms) + else: + self.pcap = pcap.pcap(device, snaplen, promisc, immediate=1) + def __getattr__(self, attr): + return getattr(self.pcap, attr) + open_pcap = lambda *args,**kargs: _PcapWrapper_pypcap(*args,**kargs) elif hasattr(pcap,"pcapObject"): # python-libpcap class _PcapWrapper_libpcap: def __init__(self, *args, **kargs):