Changeset View
Changeset View
Standalone View
Standalone View
tests/sys/netpfil/common/sniffer.py
- This file was copied to tests/sys/net/pcp.py.
Show All 22 Lines | |||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||
# SUCH DAMAGE. | # SUCH DAMAGE. | ||||
# | # | ||||
import threading | import threading | ||||
import scapy.all as sp | import scapy.all as sp | ||||
import sys | |||||
class Sniffer(threading.Thread): | class Sniffer(threading.Thread): | ||||
def __init__(self, args, check_function, recvif=None): | def __init__(self, args, check_function, recvif=None, timeout=3): | ||||
threading.Thread.__init__(self) | threading.Thread.__init__(self) | ||||
self._args = args | self._args = args | ||||
self._timeout = timeout | |||||
if recvif is not None: | if recvif is not None: | ||||
self._recvif = recvif | self._recvif = recvif | ||||
else: | else: | ||||
self._recvif = args.recvif[0] | self._recvif = args.recvif[0] | ||||
self._check_function = check_function | self._check_function = check_function | ||||
self.foundCorrectPacket = False | self.foundCorrectPacket = False | ||||
self.start() | self.start() | ||||
def _checkPacket(self, packet): | def _checkPacket(self, packet): | ||||
ret = self._check_function(self._args, packet) | ret = self._check_function(self._args, packet) | ||||
if ret: | if ret: | ||||
self.foundCorrectPacket = True | self.foundCorrectPacket = True | ||||
return ret | return ret | ||||
def run(self): | def run(self): | ||||
self.packets = [] | |||||
try: | |||||
self.packets = sp.sniff(iface=self._recvif, | self.packets = sp.sniff(iface=self._recvif, | ||||
stop_filter=self._checkPacket, timeout=3) | stop_filter=self._checkPacket, timeout=self._timeout) | ||||
except Exception as e: | |||||
print(e, file=sys.stderr) |