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 #endif +#include + #include "ws_attributes.h" /* @@ -44,8 +46,6 @@ */ #if defined(HAVE_PCAP_CREATE) && defined(__linux__) -#include - /* * If we're building for a Linux version that supports bonding, * HAVE_BONDING will be defined. @@ -690,6 +690,23 @@ get_interface_list_findalldevs(int *err, char **err_st 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; }