static int _find_ifindex(intf_t *intf, const char *device) { char *p = (char *)device; int n, type = _ifcombo_type(device); while (isalpha(*p)) p++; n = atoi(p); return (intf->ifcombo[type].idx[n]); }
static IP_ADAPTER_ADDRESSES * _find_adapter_address(intf_t *intf, const char *device) { IP_ADAPTER_ADDRESSES *a; char *p = (char *)device; int n, type = _ifcombo_type(device); while (isalpha((int) (unsigned char) *p)) p++; n = atoi(p); for (a = intf->iftable; a != NULL; a = a->Next) { if (intf->ifcombo[type].idx[n].ipv4 == a->IfIndex && intf->ifcombo[type].idx[n].ipv6 == a->Ipv6IfIndex) { return a; } } return NULL; }
/* Map an MIB interface type into an internal interface type. The internal types are never exposed to users of this library; they exist only for the sake of ordering interface types within an intf_handle, which has an array of ifcombo structures ordered by type. Entries in an intf_handle must not be stored or accessed by a raw MIB type number because they will not be able to be found by a device name such as "net0" if the device name does not map exactly to the type. */ static int _if_type_canonicalize(int type) { return _ifcombo_type(_ifcombo_name(type)); }