From c9f6bae5a2dfc9ee8a077cf20acf908d1e113979 Mon Sep 17 00:00:00 2001 From: Gwen Blum <19484478+gwenblum@users.noreply.github.com> Date: Fri, 18 Oct 2024 21:41:27 +0200 Subject: [PATCH] Fix PCAPReader (#4) Fixing #4 * Change file_name to filename (ValueError: PCAPReader) * Use Cython for conversion PyBytes as *char (string) * Add Cython missing dep * Update version 24.10.1 --- CHANGELOG | 5 ++++- setup.py | 3 ++- steelscript/packets/core/pcap.pyx | 15 +++++++++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f7bb91d..27be56d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,10 @@ CHANGELOG --------- +[24.10.1] +* Add python dependency in setup.py (Cython) +* Bugfix in pcap.py (pcap_info, PCAPREADER) + [1.1.1] * Minor fixes for doc updates @@ -14,4 +18,3 @@ CHANGELOG [1.0] * Initial commit - diff --git a/setup.py b/setup.py index b533ad7..ec5248c 100644 --- a/setup.py +++ b/setup.py @@ -26,6 +26,7 @@ install_requires = ( 'steelscript>=24.2.0', 'tzlocal', + 'Cython' ) @@ -36,7 +37,7 @@ setup_args = { 'name': 'steelscript.packets', - 'version': '24.2.1', + 'version': '24.10.1', 'author': 'Riverbed Technology', 'author_email': 'eng-github@riverbed.com', 'url': 'http://pythonhosted.org/steelscript', diff --git a/steelscript/packets/core/pcap.pyx b/steelscript/packets/core/pcap.pyx index be57446..bc93853 100644 --- a/steelscript/packets/core/pcap.pyx +++ b/steelscript/packets/core/pcap.pyx @@ -9,6 +9,8 @@ from libc.stdlib cimport malloc, free from libc.stdint cimport uint32_t, uint64_t, uint16_t +from cpython.bytes cimport PyBytes_AsString + import time import socket import struct @@ -457,10 +459,15 @@ cdef class PCAPReader(PCAPBase): fname_srt = kwargs.get('filename', '') fname_bytes = fname_srt.encode() - fname_p = fname_bytes - self.filename = fname_p + + # Convert bytes object to char * + fname_p = PyBytes_AsString(fname_bytes) + + # Store the bytes object + self.filename = fname_bytes + self.have_dumper = 0 - self.reader = open_offline(self.filename, errors) + self.reader = open_offline(fname_p, errors) if self.reader is NULL: v_err = ValueError("PCAPReader failed to open {0} for reading. " @@ -570,7 +577,7 @@ cpdef dict pcap_info(str filename): double first_ts dict rval - rdr = PCAPReader(file_name=filename) + rdr = PCAPReader(filename=filename) ts, hdr, pkt = next(rdr) first_ts = ts pkts = 1