/* find all active interface */ void find_interface() { struct ifconf ifc; struct ifreq ifr; struct ifreq *pifr; int len, lastlen; int i; int fd; char *buf; fd = socket(AF_INET, SOCK_DGRAM, 0); if (fd < 0) { perror("[-] socket \n"); exit(1); } len = 10 * sizeof(struct ifreq); while (1) { buf = (char *)malloc(len); ifc.ifc_len = len; ifc.ifc_buf = buf; if (ioctl(fd, SIOCGIFCONF, &ifc) < 0) { if (errno != EINVAL || lastlen != 0) { perror("ioctl \n"); free(buf); exit(1); } } else { if (ifc.ifc_len == lastlen) break; lastlen = ifc.ifc_len; } len += 5 * sizeof(struct ifreq); free(buf); } pifr = ifc.ifc_req; for (i = ifc.ifc_len / sizeof(struct ifreq); --i >= 0 ; ++pifr) { strcpy(ifr.ifr_name, pifr->ifr_name); if (ioctl(fd, SIOCGIFFLAGS, &ifr) == 0) { if (!(ifr.ifr_flags & IFF_LOOPBACK)) show_interface(ifr.ifr_name); } } }
static status_t show_all() { BNetworkRoster& roster = BNetworkRoster::Default(); BNetworkInterface interface; uint32 cookie = 0; while (roster.GetNextInterface(&cookie, interface) == B_OK) { BNetworkAddress linkAddress; status_t status = interface.GetHardwareAddress(linkAddress); if (status == B_OK && linkAddress.LinkLevelType() == IFT_TUN) show_interface(interface.Name()); } return B_OK; }
static void show_config(struct libusb_config_descriptor *config, int num) { int i; printf("Configuration information:%d\n", num); printf("bLength: %d\n", config->bLength); printf("bDescriptorType: %d\n", config->bDescriptorType); printf("wTotalLength: %d\n", config->wTotalLength); printf("bNumInterfaces: %d\n", config->bNumInterfaces); printf("bConfigurationValue: %d\n", config->bConfigurationValue); printf("iConfiguration: %d\n", config->iConfiguration); printf("bmAttributes: %d\n", config->bmAttributes); printf("MaxPower: %d\n", config->MaxPower); for (i = 0; i < config->bNumInterfaces; i++) { show_interface(config->interface); } }