def received(self, src=None, dst=None, lbda=None, seq=None, type=None, raw=False): packet_list = PacketList(raw and self.__raw_buffer[:] or self.__receive_buffer[:]) def packet_dst_in(dsts, p): dsts = isinstance(dsts, list) and dsts or [dsts] for d in dsts: d = IPAddress.identify(d) if d.version() == 4 and p.haslayer(IP) and IPAddress.identify( p.getlayer(IP).dst) == d: return True elif d.version() == 6 and p.haslayer( IPv6) and IPAddress.identify( p.getlayer(IPv6).dst) == d: return True return False def packet_src_in(srcs, p): srcs = isinstance(srcs, list) and srcs or [srcs] for s in srcs: s = IPAddress.identify(s) if s.version() == 4 and p.haslayer(IP) and IPAddress.identify( p.getlayer(IP).src) == s: return True elif s.version() == 6 and p.haslayer( IPv6) and IPAddress.identify( p.getlayer(IPv6).src) == s: return True return False if not (src == None and dst == None and lbda == None and seq == None and type == None): packet_list = packet_list.filter(lambda p: (src == None or hasattr(p, 'haslayer') and packet_src_in(src, p)) and \ (dst == None or hasattr(p, 'haslayer') and packet_dst_in(dst, p)) and \ (seq == None or hasattr(p, 'haslayer') and (p.haslayer(ICMPv6EchoRequest) and p.getlayer(ICMPv6EchoRequest).seq == seq or p.haslayer(ICMPv6EchoReply) and p.getlayer(ICMPv6EchoReply).seq == seq)) and \ (type == None or hasattr(p, 'haslayer') and p.getlayer(type)) and \ (lbda == None or lbda(p))) return packet_list
def received(self, src=None, dst=None, lbda=None, seq=None, type=None, raw=False): packet_list = PacketList(raw and self.__raw_buffer[:] or self.__receive_buffer[:]) def packet_dst_in(dsts, p): dsts = isinstance(dsts, list) and dsts or [dsts] for d in dsts: d = IPAddress.identify(d) if d.version() == 4 and p.haslayer(IP) and IPAddress.identify(p.getlayer(IP).dst) == d: return True elif d.version() == 6 and p.haslayer(IPv6) and IPAddress.identify(p.getlayer(IPv6).dst) == d: return True return False def packet_src_in(srcs, p): srcs = isinstance(srcs, list) and srcs or [srcs] for s in srcs: s = IPAddress.identify(s) if s.version() == 4 and p.haslayer(IP) and IPAddress.identify(p.getlayer(IP).src) == s: return True elif s.version() == 6 and p.haslayer(IPv6) and IPAddress.identify(p.getlayer(IPv6).src) == s: return True return False if not (src == None and dst == None and lbda == None and seq == None and type == None): packet_list = packet_list.filter(lambda p: (src == None or hasattr(p, 'haslayer') and packet_src_in(src, p)) and \ (dst == None or hasattr(p, 'haslayer') and packet_dst_in(dst, p)) and \ (seq == None or hasattr(p, 'haslayer') and (p.haslayer(ICMPv6EchoRequest) and p.getlayer(ICMPv6EchoRequest).seq == seq or p.haslayer(ICMPv6EchoReply) and p.getlayer(ICMPv6EchoReply).seq == seq)) and \ (type == None or hasattr(p, 'haslayer') and p.getlayer(type)) and \ (lbda == None or lbda(p))) return packet_list