From 972a2a5984b72965bfe8cbdddeda0953d61610fa Mon Sep 17 00:00:00 2001 From: Hans Petter Selasky Date: Tue, 10 Aug 2021 09:30:00 +0200 Subject: [PATCH] sysutils/usbtop: Fixes for FreeBSD. Add patches needed for proper operation under FreeBSD. Approved by: yuri (maintainer) --- sysutils/usbtop/files/patch-src_usb__bus.cpp | 47 ++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 sysutils/usbtop/files/patch-src_usb__bus.cpp diff --git a/sysutils/usbtop/files/patch-src_usb__bus.cpp b/sysutils/usbtop/files/patch-src_usb__bus.cpp new file mode 100644 index 000000000000..58cb2eb3ede6 --- /dev/null +++ b/sysutils/usbtop/files/patch-src_usb__bus.cpp @@ -0,0 +1,47 @@ +--- src/usb_bus.cpp.orig 2021-08-09 11:19:20 UTC ++++ src/usb_bus.cpp +@@ -28,6 +28,12 @@ + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + ++#ifdef __FreeBSD__ ++#include ++#include ++#include ++#endif ++ + #include + #include + +@@ -41,8 +47,26 @@ usbtop::UsbBus::~UsbBus() + } + } + ++#ifdef __FreeBSD__ + void usbtop::UsbBus::push(const pcap_pkthdr* h, const u_char* bytes) + { ++ const size_t psize = h->len; ++ const double time = (double)h->ts.tv_sec + ((double)h->ts.tv_usec) / 1000000.0; ++ const struct usbpf_pkthdr *up = (const struct usbpf_pkthdr *)bytes; ++ size_t payload; ++ UsbStats::direction_type direction; ++ ++ if (psize < sizeof(*up)) ++ return; ++ ++ payload = le32toh(up->up_totlen) - sizeof(*up) - le32toh(up->up_frames) * USBPF_FRAME_HDR_LEN; ++ direction = (up->up_type == USBPF_XFERTAP_DONE) ? UsbStats::from_device : UsbStats::to_device; ++ _stats.push(time, payload, direction); ++ get_device(up->up_address).push(time, payload, direction); ++} ++#else ++void usbtop::UsbBus::push(const pcap_pkthdr* h, const u_char* bytes) ++{ + // Get the packet size and timestamp + const size_t psize = h->len; + const double time = (double)h->ts.tv_sec + ((double)h->ts.tv_usec)/(1000000.0); +@@ -72,3 +96,4 @@ void usbtop::UsbBus::push(const pcap_pkthdr* h, const + _stats.push(time, psize, direction); + get_device(device_id).push(time, psize, direction); + } ++#endif