Module: wine Branch: master Commit: 60354102c054094565b094fc8f9e9c4ff75ceddd URL: http://source.winehq.org/git/wine.git/?a=commit;h=60354102c054094565b094fc8f...
Author: Juan Lang juan.lang@gmail.com Date: Mon Oct 11 13:17:45 2010 -0700
iphlpapi: Only return gateway addresses if GAA_FLAG_INCLUDE_ALL_GATEWAYS is specified.
---
dlls/iphlpapi/iphlpapi_main.c | 30 +++++++++++++++++------------- 1 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c index f14f337..fef5637 100644 --- a/dlls/iphlpapi/iphlpapi_main.c +++ b/dlls/iphlpapi/iphlpapi_main.c @@ -716,7 +716,8 @@ static PMIB_IPFORWARDROW findIPv4Gateway(DWORD index, return row; }
-static ULONG adapterAddressesFromIndex(ULONG family, DWORD index, IP_ADAPTER_ADDRESSES *aa, ULONG *size) +static ULONG adapterAddressesFromIndex(ULONG family, ULONG flags, DWORD index, + IP_ADAPTER_ADDRESSES *aa, ULONG *size) { ULONG ret, i, num_v4addrs = 0, num_v4_gateways = 0, num_v6addrs = 0, total_size; DWORD *v4addrs = NULL; @@ -725,26 +726,29 @@ static ULONG adapterAddressesFromIndex(ULONG family, DWORD index, IP_ADAPTER_ADD
if (family == WS_AF_INET) { - ret = AllocateAndGetIpForwardTableFromStack(&routeTable, FALSE, - GetProcessHeap(), 0); - if (!ret) + ret = v4addressesFromIndex(index, &v4addrs, &num_v4addrs); + if (!ret && flags & GAA_FLAG_INCLUDE_ALL_GATEWAYS) { - ret = v4addressesFromIndex(index, &v4addrs, &num_v4addrs); - num_v4_gateways = count_v4_gateways(index, routeTable); + ret = AllocateAndGetIpForwardTableFromStack(&routeTable, FALSE, + GetProcessHeap(), 0); + if (!ret) + num_v4_gateways = count_v4_gateways(index, routeTable); } } else if (family == WS_AF_INET6) ret = v6addressesFromIndex(index, &v6addrs, &num_v6addrs); else if (family == WS_AF_UNSPEC) { - ret = AllocateAndGetIpForwardTableFromStack(&routeTable, FALSE, - GetProcessHeap(), 0); - if (!ret) + ret = v4addressesFromIndex(index, &v4addrs, &num_v4addrs); + if (!ret && flags & GAA_FLAG_INCLUDE_ALL_GATEWAYS) { - ret = v4addressesFromIndex(index, &v4addrs, &num_v4addrs); - num_v4_gateways = count_v4_gateways(index, routeTable); + ret = AllocateAndGetIpForwardTableFromStack(&routeTable, FALSE, + GetProcessHeap(), 0); if (!ret) + { + num_v4_gateways = count_v4_gateways(index, routeTable); ret = v6addressesFromIndex(index, &v6addrs, &num_v6addrs); + } } } else @@ -929,7 +933,7 @@ ULONG WINAPI GetAdaptersAddresses(ULONG family, ULONG flags, PVOID reserved, for (i = 0; i < table->numIndexes; i++) { size = 0; - if ((ret = adapterAddressesFromIndex(family, table->indexes[i], NULL, &size))) + if ((ret = adapterAddressesFromIndex(family, flags, table->indexes[i], NULL, &size))) { HeapFree(GetProcessHeap(), 0, table); return ret; @@ -941,7 +945,7 @@ ULONG WINAPI GetAdaptersAddresses(ULONG family, ULONG flags, PVOID reserved, ULONG bytes_left = size = total_size; for (i = 0; i < table->numIndexes; i++) { - if ((ret = adapterAddressesFromIndex(family, table->indexes[i], aa, &size))) + if ((ret = adapterAddressesFromIndex(family, flags, table->indexes[i], aa, &size))) { HeapFree(GetProcessHeap(), 0, table); return ret;