ports/net/wireshark/patches/patch-capture_capture-pcap-util_c

51 lines
1.1 KiB
Text
Raw Normal View History

2023-08-16 22:26:55 +00:00
hunks 1/2: ioctl is needed on !linux
hunk 3: pcap_findalldevs() doesn't include controllers dumpable via
usbpcap, do a separate lookup and add to the list
Index: capture/capture-pcap-util.c
--- capture/capture-pcap-util.c.orig
+++ capture/capture-pcap-util.c
@@ -30,6 +30,8 @@
#include <dlfcn.h>
#endif
+#include <sys/ioctl.h>
+
#include "ws_attributes.h"
/*
@@ -44,8 +46,6 @@
*/
#if defined(HAVE_PCAP_CREATE) && defined(__linux__)
-#include <sys/ioctl.h>
-
/*
* If we're building for a Linux version that supports bonding,
* HAVE_BONDING will be defined.
2023-08-28 01:43:33 +00:00
@@ -690,6 +690,23 @@ get_interface_list_findalldevs(int *err, char **err_st
2023-08-16 22:26:55 +00:00
if_info_ip(if_info, dev);
}
pcap_freealldevs(alldevs);
+
+#ifdef __OpenBSD__
+ int i, f;
+ char buf[50];
+ for (i = 0; i < 10; i++) {
+ snprintf(buf, sizeof buf, "/dev/usb%d", i);
+ f = open(buf, O_RDONLY);
+ if (f >= 0) {
+ snprintf(buf, sizeof buf, "usb%d", i);
+ if_info = if_info_new(buf, "USB", FALSE);
+ il = g_list_append(il, if_info);
+ close(f);
+ } else if (errno == ENOENT || errno == ENXIO) {
+ continue;
+ }
+ }
+#endif
return il;
}