iphlpapi: Use route table to find an adapter's default gateway in GetAdaptersInfo.
diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index eaccf83..858437d 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -678,9 +678,12 @@
       else {
         InterfaceIndexTable *table = NULL;
         PMIB_IPADDRTABLE ipAddrTable = NULL;
+        PMIB_IPFORWARDTABLE routeTable = NULL;
 
         ret = getIPAddrTable(&ipAddrTable, GetProcessHeap(), 0);
         if (!ret)
+          ret = getRouteTable(&routeTable, GetProcessHeap(), 0);
+        if (!ret)
           table = getNonLoopbackInterfaceIndexTable();
         if (table) {
           size = sizeof(IP_ADAPTER_INFO) * table->numIndexes;
@@ -753,6 +756,14 @@
                   }
                 }
               }
+              /* Find first router through this interface, which we'll assume
+               * is the default gateway for this adapter */
+              for (i = 0; i < routeTable->dwNumEntries; i++)
+                if (routeTable->table[i].dwForwardIfIndex == ptr->Index
+                 && routeTable->table[i].dwForwardType ==
+                 MIB_IPROUTE_TYPE_INDIRECT)
+                  toIPAddressString(routeTable->table[i].dwForwardNextHop,
+                   ptr->GatewayList.IpAddress.String);
               if (winsEnabled) {
                 ptr->HaveWins = TRUE;
                 memcpy(ptr->PrimaryWinsServer.IpAddress.String,
@@ -771,6 +782,7 @@
         }
         else
           ret = ERROR_OUTOFMEMORY;
+        HeapFree(GetProcessHeap(), 0, routeTable);
         HeapFree(GetProcessHeap(), 0, ipAddrTable);
       }
     }