(net_ifinfo/Win32) Adapter name shows up now - IP address doesn't yet

This commit is contained in:
twinaphex 2016-03-03 05:50:45 +01:00
parent 4617f792c5
commit 97eea9e71f

View File

@ -78,10 +78,8 @@ bool net_ifinfo_new(net_ifinfo_t *list)
DWORD size; DWORD size;
PIP_ADAPTER_ADDRESSES adapter_addresses, aa; PIP_ADAPTER_ADDRESSES adapter_addresses, aa;
PIP_ADAPTER_UNICAST_ADDRESS ua; PIP_ADAPTER_UNICAST_ADDRESS ua;
DWORD rv = GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_PREFIX, NULL, NULL, &size);
if (rv != ERROR_SUCCESS) DWORD rv = GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_PREFIX, NULL, NULL, &size);
goto error;
adapter_addresses = (PIP_ADAPTER_ADDRESSES)malloc(size); adapter_addresses = (PIP_ADAPTER_ADDRESSES)malloc(size);
@ -92,12 +90,16 @@ bool net_ifinfo_new(net_ifinfo_t *list)
for (aa = adapter_addresses; aa != NULL; aa = aa->Next) for (aa = adapter_addresses; aa != NULL; aa = aa->Next)
{ {
struct net_ifinfo_entry *ptr = NULL; char name[PATH_MAX_LENGTH];
memset(name, 0, sizeof(name));
WideCharToMultiByte(CP_ACP, 0, aa->FriendlyName, wcslen(aa->FriendlyName),
name, PATH_MAX_LENGTH, NULL, NULL);
for (ua = aa->FirstUnicastAddress; ua != NULL; ua = ua->Next) for (ua = aa->FirstUnicastAddress; ua != NULL; ua = ua->Next)
{ {
char host[PATH_MAX_LENGTH], name[PATH_MAX_LENGTH]; char host[PATH_MAX_LENGTH];
ptr = (struct net_ifinfo_entry*) struct net_ifinfo_entry *ptr = (struct net_ifinfo_entry*)
realloc(list->entries, (k+1) * sizeof(struct net_ifinfo_entry)); realloc(list->entries, (k+1) * sizeof(struct net_ifinfo_entry));
if (!ptr) if (!ptr)
@ -105,12 +107,10 @@ bool net_ifinfo_new(net_ifinfo_t *list)
list->entries = ptr; list->entries = ptr;
memset(host, 0, PATH_MAX_LENGTH); memset(host, 0, sizeof(host));
memset(name, 0, PATH_MAX_LENGTH);
getnameinfo(ua->Address.lpSockaddr, ua->Address.iSockaddrLength, getnameinfo(ua->Address.lpSockaddr, ua->Address.iSockaddrLength,
host, sizeof(host), NULL, 0, NI_NUMERICHOST); host, sizeof(host), NULL, NI_MAXSERV, NI_NUMERICHOST);
WideCharToMultiByte(CP_ACP, 0, aa->FriendlyName, wcslen(aa->FriendlyName),
name, PATH_MAX_LENGTH, NULL, NULL);
list->entries[k].name = strdup(name); list->entries[k].name = strdup(name);
list->entries[k].host = strdup(host); list->entries[k].host = strdup(host);