diff --git a/.travis.yml b/.travis.yml index 7c69529..7d76b47 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,15 +29,6 @@ matrix: packages: - libpcap-dev - autogen - deploy: - provider: pypi - distributions: bdist_wheel - user: aouinizied - skip_cleanup: true - password: - secure: W+ApjHVG6W1RgXwbXgC+Ucg/+ReoZDvUubQk4238iu78phjJuIpum/EMXa0pw6/eVMzuT1RSr8rGLZS81NyqLySiDQ13zXso+cjEcAq33DthAbOgIb3/q5M1HNHSzMZgF3E509QWumMtmcR4dO6ddxRYWWEk2ElLEUcYiLi2THmSDJi2w0V3Mh7CAHv24XCuyWKAXyVKbJ3ZxM5tq7HetkOT+8IAc9KxNQOp8sbIWRulpgz4LXwiLFqQBQqQ7caoubDaqzLdzIK7Yp6qtnnTBQRrVNAjNO1JDGMZduIqxnye3DyLJ/j4qQuafMaRRFyd+wZHTw3BD/AUfZ2s/aT2Yajp5mq1JJU1qd35qq+OdkiDLYYTtSPrgbr2K9639lGwP75/apGmyInasBuExdktzFHU74uE4s8aMK2xmlCNP71kJpQtp7dsPH0TdkA1eEyJWvx45K9QS2+acNnQMOIv/vtPjina7thBfTyetFVtY7/A3/Bt9PhP79qijVtgZMW4zI+8mBJSE8Gsw9QJ2RR6ztvgDqBuIanNrZA4B8Vii+6tUUm6FY0Ak3A+olxs/75hQygdbNiSsvijEsa4pSNvsJZnvh8aQhkpCm7l2Xn2eXrdJj9o6a+OjdBuracFU279mV3xqsdf22PBjnx/+klPpJFnlOlsxwZ8T5Ok7IdDtqU= - on: - tags: true - os: linux @@ -49,15 +40,6 @@ matrix: packages: - libpcap-dev - autogen - deploy: - provider: pypi - distributions: bdist_wheel - user: aouinizied - skip_cleanup: true - password: - secure: W+ApjHVG6W1RgXwbXgC+Ucg/+ReoZDvUubQk4238iu78phjJuIpum/EMXa0pw6/eVMzuT1RSr8rGLZS81NyqLySiDQ13zXso+cjEcAq33DthAbOgIb3/q5M1HNHSzMZgF3E509QWumMtmcR4dO6ddxRYWWEk2ElLEUcYiLi2THmSDJi2w0V3Mh7CAHv24XCuyWKAXyVKbJ3ZxM5tq7HetkOT+8IAc9KxNQOp8sbIWRulpgz4LXwiLFqQBQqQ7caoubDaqzLdzIK7Yp6qtnnTBQRrVNAjNO1JDGMZduIqxnye3DyLJ/j4qQuafMaRRFyd+wZHTw3BD/AUfZ2s/aT2Yajp5mq1JJU1qd35qq+OdkiDLYYTtSPrgbr2K9639lGwP75/apGmyInasBuExdktzFHU74uE4s8aMK2xmlCNP71kJpQtp7dsPH0TdkA1eEyJWvx45K9QS2+acNnQMOIv/vtPjina7thBfTyetFVtY7/A3/Bt9PhP79qijVtgZMW4zI+8mBJSE8Gsw9QJ2RR6ztvgDqBuIanNrZA4B8Vii+6tUUm6FY0Ak3A+olxs/75hQygdbNiSsvijEsa4pSNvsJZnvh8aQhkpCm7l2Xn2eXrdJj9o6a+OjdBuracFU279mV3xqsdf22PBjnx/+klPpJFnlOlsxwZ8T5Ok7IdDtqU= - on: - tags: true install: - pip install -r requirements.txt diff --git a/nfstream/classifier.py b/nfstream/classifier.py index 2d1e19a..79de663 100644 --- a/nfstream/classifier.py +++ b/nfstream/classifier.py @@ -1,5 +1,5 @@ from .ndpi_bindings import ndpi, NDPI_PROTOCOL_BITMASK, ndpi_flow_struct, ndpi_protocol, ndpi_id_struct -from ctypes import pointer, memset, sizeof, cast, c_char_p, c_void_p, POINTER, c_uint8, addressof, c_ubyte +from ctypes import pointer, memset, sizeof, cast, c_char_p, c_void_p, POINTER, c_uint8, addressof class NFStreamClassifier: diff --git a/nfstream/observer.py b/nfstream/observer.py index 2feaf6b..773d939 100644 --- a/nfstream/observer.py +++ b/nfstream/observer.py @@ -198,17 +198,6 @@ class _PcapFfi(object): return self._ffi def _process_packet(self, xdev, header, packet, decode_tunnels=True): - # Declare pointers to packets headers - # Ethernet header - ethernet = self._ffi.new("const struct nfstream_ethhdr *") - # LLC header - llc = self._ffi.new("const struct nfstream_llc_header_snap *") - # Cisco HDLC header - chdlc = self._ffi.new("const struct nfstream_chdlc *") - # Radio tap header - radiotap = self._ffi.new("const struct nfstream_radiotap_header *") - # Wifi header - wifi = self._ffi.new("const struct nfstream_wifi_header *") # MPLS header mpls = self._ffi.new("union mpls *") # IP header @@ -399,7 +388,6 @@ class _PcapFfi(object): eth_offset = offset datalink_check = True - l3 = self._ffi.new("uint8_t *") l4_offset = 0 ipsize = 0 src_addr = 0 @@ -422,7 +410,6 @@ class _PcapFfi(object): options = self._ffi.cast('uint8_t *', iph6) + self._ffi.sizeof('struct nfstream_ipv6hdr') proto = options[0] l4_packet_len = ntohs(iph6.ip6_hdr.ip6_un1_plen) - ipsize = self._ffi.sizeof('struct nfstream_ipv6hdr') if version == 4: if ipsize < 20: @@ -593,6 +580,7 @@ class PcapReader(object): self._user_callback = callback handle = self._ffi.new_handle(self) rv = self._libpcap.pcap_loop(self._pcapdev.pcap, count, _pcap_callback, handle) + return rv def _callback(self, pkt): self._user_callback(pkt) @@ -829,6 +817,7 @@ class PcapLiveDevice(object): self._user_callback = callback handle = self._ffi.new_handle(self) rv = self._libpcap.pcap_loop(self._pcapdev.pcap, count, _pcap_callback, handle) + return rv def _callback(self, pkt): self._user_callback(pkt) @@ -837,14 +826,12 @@ class PcapLiveDevice(object): self._libpcap.pcap_breakloop(self._pcapdev.pcap) def recv_packet(self, timeout=None): - # FIXME: ugly and long if timeout is None or timeout < 0: timeout = None - if self._fd >= 0: try: xread, xwrite, xerr = select([self._fd], [], [self._fd], timeout) - except: + except PcapException: return None if xread: return self._base._recv_packet(self._pcapdev.pcap) @@ -951,14 +938,12 @@ class Observer: def __iter__(self): if self.packet_generator is not None: try: - continue_reading = True - while continue_reading: + while True: try: r = self.packet_generator.recv_packet() if r is None: pass elif r == -2: - continue_reading = False return elif r == 0: pass