Module: wine Branch: master Commit: 317fd11e85157e0b9eaca1d001914706072d3f7f URL: http://source.winehq.org/git/wine.git/?a=commit;h=317fd11e85157e0b9eaca1d001...
Author: Bruno Jesus 00cpxxx@gmail.com Date: Thu Jan 15 10:13:34 2015 -0200
iphlpapi: Set 0.0.0.0 as the IP and mask of disconnected interfaces.
---
dlls/iphlpapi/iphlpapi_main.c | 6 ++++++ dlls/iphlpapi/tests/iphlpapi.c | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c index 59f3593..d2f36fe 100644 --- a/dlls/iphlpapi/iphlpapi_main.c +++ b/dlls/iphlpapi/iphlpapi_main.c @@ -604,6 +604,12 @@ DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen) } } } + /* If no IP was found it probably means that the interface is not + * configured. In this case we have to return a zeroed IP and mask. */ + if (firstIPAddr) { + strcpy(ptr->IpAddressList.IpAddress.String, "0.0.0.0"); + strcpy(ptr->IpAddressList.IpMask.String, "0.0.0.0"); + } /* Find first router through this interface, which we'll assume * is the default gateway for this adapter */ for (i = 0; i < routeTable->dwNumEntries; i++) diff --git a/dlls/iphlpapi/tests/iphlpapi.c b/dlls/iphlpapi/tests/iphlpapi.c index b2d81c0..14bbc5d 100644 --- a/dlls/iphlpapi/tests/iphlpapi.c +++ b/dlls/iphlpapi/tests/iphlpapi.c @@ -1118,12 +1118,20 @@ static void testGetAdaptersInfo(void) if (apiReturn == ERROR_NO_DATA) ; /* no adapter's, that's okay */ else if (apiReturn == ERROR_BUFFER_OVERFLOW) { - PIP_ADAPTER_INFO buf = HeapAlloc(GetProcessHeap(), 0, len); + PIP_ADAPTER_INFO ptr, buf = HeapAlloc(GetProcessHeap(), 0, len);
apiReturn = pGetAdaptersInfo(buf, &len); ok(apiReturn == NO_ERROR, "GetAdaptersInfo(buf, &dwSize) returned %d, expected NO_ERROR\n", apiReturn); + ptr = buf; + while (ptr) { + ok(ptr->IpAddressList.IpAddress.String[0], "A valid IP must be present\n"); + ok(ptr->IpAddressList.IpMask.String[0], "A valid mask must be present\n"); + trace("Adapter '%s', IP %s, Mask %s\n", ptr->AdapterName, + ptr->IpAddressList.IpAddress.String, ptr->IpAddressList.IpMask.String); + ptr = ptr->Next; + } HeapFree(GetProcessHeap(), 0, buf); } }