int fd;
#else
HANDLE handle;
+ DWORD index;
#endif
unsigned timeout;
uint8_t hwaddr[6];
return true;
}
-static bool get_hwaddr_from_intf(const char *intf, uint8_t *hwaddr)
+static bool get_intf_info(const char *intf, uint8_t *hwaddr, void *dummy)
{
struct ifaddrs *ifas, *ifa;
bool found;
}
}
-static bool get_hwaddr_from_intf(const char *intf, uint8_t *hwaddr)
+static bool get_intf_info(const char *intf, uint8_t *hwaddr, DWORD *index)
{
PIP_ADAPTER_INFO adapters, adapter;
DWORD ret;
* AdapterName from GetAdaptersInfo is just "{GUID}".*/
if (strstr(intf, adapter->AdapterName)) {
if (adapter->AddressLength == 6) {
- for (i = 0; i != 6; ++i) {
- hwaddr[i] = adapter->Address[i];
+ memcpy(hwaddr, adapter->Address, 6);
+ if (index) {
+ *index = adapter->Index;
}
-
found = true;
break;
}
goto cleanup_pcap;
}
- if (!get_hwaddr_from_intf(intf, sock->hwaddr)) {
- fprintf(stderr, "Failed to get MAC address of interface.\n");
+#ifndef NMRPFLASH_WINDOWS
+ err = !get_intf_info(intf, sock->hwaddr, NULL);
+#else
+ err = !get_intf_info(intf, sock->hwaddr, &sock->index);
+#endif
+ if (err) {
+ fprintf(stderr, "Failed to get interface info.\n");
goto cleanup_malloc;
}
}
#endif
- return get_hwaddr_from_intf(dev->name, hwaddr);
+ return get_intf_info(dev->name, hwaddr, NULL);
}
int ethsock_list_all(void)