def to_dataframe(self, n=-1): packets = [] def decode_ip_packet(header, data): seconds, fractional = header.getts( ) # fractional is in microseconds ts = seconds * 10**9 + fractional * 10**3 # convert to nanoseconds packet = IPPacket(data) if self._payload: return FullPacket(ts, packet.source_ip_address, packet.source_ip_port, packet.destination_ip_address, packet.destination_ip_port, packet.ip_protocol, data[packet.header_size:]) return BasePacket(ts, packet.source_ip_address, packet.source_ip_port, packet.destination_ip_address, packet.destination_ip_port, packet.ip_protocol) def decoder(header, data): packets.append(decode_ip_packet(header, data)) self._reader.setfilter(self._bpf) self._reader.loop(n, decoder) columns = FullPacket._fields if self._payload else BasePacket._fields df = pd.DataFrame(packets, columns=columns) # DataFrame.astype doesn't work with extension types (yet). # https://github.com/pandas-dev/pandas/issues/20557 known_types = { k: v for k, v in self.dtype.items() if k not in ('src_host', 'dst_host') } df = df.astype(known_types) df['src_host'] = to_ipaddress(df['src_host']) df['dst_host'] = to_ipaddress(df['dst_host']) return df
def test_equality(): v1 = ip.to_ipaddress([ u'192.168.1.1', u'2001:0db8:85a3:0000:0000:8a2e:0370:7334', ]) assert np.all(v1 == v1) assert v1.equals(v1) v2 = ip.to_ipaddress([ u'192.168.1.2', u'2001:0db8:85a3:0000:0000:8a2e:0370:7334', ]) result = v1 == v2 expected = np.array([False, True]) tm.assert_numpy_array_equal(result, expected) result = bool(v1.equals(v2)) assert result is False with pytest.raises(TypeError): v1.equals("a")
def test_isip(): v = ip.to_ipaddress([ u'192.168.1.1', u'2001:0db8:85a3:0000:0000:8a2e:0370:7334', ]) result = v.is_ipv4 expected = np.array([True, False]) tm.assert_numpy_array_equal(result, expected) result = v.is_ipv6 expected = np.array([False, True]) tm.assert_numpy_array_equal(result, expected)