Juan Lang : iphlpapi: Combine #ifdef HAVE_IFADDRS_H blocks.

Alexandre Julliard julliard at winehq.org
Mon Nov 14 13:33:59 CST 2011


Module: wine
Branch: master
Commit: cd0ee464cdd4b719e3245d33d5a7bd87dd948e1c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cd0ee464cdd4b719e3245d33d5a7bd87dd948e1c

Author: Juan Lang <juan.lang at gmail.com>
Date:   Sun Nov 13 08:25:52 2011 -0800

iphlpapi: Combine #ifdef HAVE_IFADDRS_H blocks.

---

 dlls/iphlpapi/ifenum.c |  130 +++++++++++++++++++++++------------------------
 1 files changed, 64 insertions(+), 66 deletions(-)

diff --git a/dlls/iphlpapi/ifenum.c b/dlls/iphlpapi/ifenum.c
index d84caed..7e0caf2 100644
--- a/dlls/iphlpapi/ifenum.c
+++ b/dlls/iphlpapi/ifenum.c
@@ -764,6 +764,69 @@ DWORD getIPAddrTable(PMIB_IPADDRTABLE *ppIpAddrTable, HANDLE heap, DWORD flags)
   return ret;
 }
 
+ULONG v6addressesFromIndex(DWORD index, SOCKET_ADDRESS **addrs, ULONG *num_addrs)
+{
+  struct ifaddrs *ifa;
+  ULONG ret;
+
+  if (!getifaddrs(&ifa))
+  {
+    struct ifaddrs *p;
+    ULONG n;
+    char name[IFNAMSIZ];
+
+    getInterfaceNameByIndex(index, name);
+    for (p = ifa, n = 0; p; p = p->ifa_next)
+      if (p->ifa_addr && p->ifa_addr->sa_family == AF_INET6 &&
+          !strcmp(name, p->ifa_name))
+        n++;
+    if (n)
+    {
+      *addrs = HeapAlloc(GetProcessHeap(), 0, n * (sizeof(SOCKET_ADDRESS) +
+                         sizeof(struct WS_sockaddr_in6)));
+      if (*addrs)
+      {
+        struct WS_sockaddr_in6 *next_addr = (struct WS_sockaddr_in6 *)(
+            (BYTE *)*addrs + n * sizeof(SOCKET_ADDRESS));
+
+        for (p = ifa, n = 0; p; p = p->ifa_next)
+        {
+          if (p->ifa_addr && p->ifa_addr->sa_family == AF_INET6 &&
+              !strcmp(name, p->ifa_name))
+          {
+            struct sockaddr_in6 *addr = (struct sockaddr_in6 *)p->ifa_addr;
+
+            next_addr->sin6_family = WS_AF_INET6;
+            next_addr->sin6_port = addr->sin6_port;
+            next_addr->sin6_flowinfo = addr->sin6_flowinfo;
+            memcpy(&next_addr->sin6_addr, &addr->sin6_addr,
+             sizeof(next_addr->sin6_addr));
+            next_addr->sin6_scope_id = addr->sin6_scope_id;
+            (*addrs)[n].lpSockaddr = (LPSOCKADDR)next_addr;
+            (*addrs)[n].iSockaddrLength = sizeof(struct WS_sockaddr_in6);
+            next_addr++;
+            n++;
+          }
+        }
+        *num_addrs = n;
+        ret = ERROR_SUCCESS;
+      }
+      else
+        ret = ERROR_OUTOFMEMORY;
+    }
+    else
+    {
+      *addrs = NULL;
+      *num_addrs = 0;
+      ret = ERROR_SUCCESS;
+    }
+    freeifaddrs(ifa);
+  }
+  else
+    ret = ERROR_NO_DATA;
+  return ret;
+}
+
 #else
 
 /* Enumerates the IP addresses in the system using SIOCGIFCONF, returning
@@ -886,78 +949,13 @@ DWORD getIPAddrTable(PMIB_IPADDRTABLE *ppIpAddrTable, HANDLE heap, DWORD flags)
   return ret;
 }
 
-#endif
-
-#ifdef HAVE_IFADDRS_H
-ULONG v6addressesFromIndex(DWORD index, SOCKET_ADDRESS **addrs, ULONG *num_addrs)
-{
-  struct ifaddrs *ifa;
-  ULONG ret;
-
-  if (!getifaddrs(&ifa))
-  {
-    struct ifaddrs *p;
-    ULONG n;
-    char name[IFNAMSIZ];
-
-    getInterfaceNameByIndex(index, name);
-    for (p = ifa, n = 0; p; p = p->ifa_next)
-      if (p->ifa_addr && p->ifa_addr->sa_family == AF_INET6 &&
-          !strcmp(name, p->ifa_name))
-        n++;
-    if (n)
-    {
-      *addrs = HeapAlloc(GetProcessHeap(), 0, n * (sizeof(SOCKET_ADDRESS) +
-                         sizeof(struct WS_sockaddr_in6)));
-      if (*addrs)
-      {
-        struct WS_sockaddr_in6 *next_addr = (struct WS_sockaddr_in6 *)(
-            (BYTE *)*addrs + n * sizeof(SOCKET_ADDRESS));
-
-        for (p = ifa, n = 0; p; p = p->ifa_next)
-        {
-          if (p->ifa_addr && p->ifa_addr->sa_family == AF_INET6 &&
-              !strcmp(name, p->ifa_name))
-          {
-            struct sockaddr_in6 *addr = (struct sockaddr_in6 *)p->ifa_addr;
-
-            next_addr->sin6_family = WS_AF_INET6;
-            next_addr->sin6_port = addr->sin6_port;
-            next_addr->sin6_flowinfo = addr->sin6_flowinfo;
-            memcpy(&next_addr->sin6_addr, &addr->sin6_addr,
-             sizeof(next_addr->sin6_addr));
-            next_addr->sin6_scope_id = addr->sin6_scope_id;
-            (*addrs)[n].lpSockaddr = (LPSOCKADDR)next_addr;
-            (*addrs)[n].iSockaddrLength = sizeof(struct WS_sockaddr_in6);
-            next_addr++;
-            n++;
-          }
-        }
-        *num_addrs = n;
-        ret = ERROR_SUCCESS;
-      }
-      else
-        ret = ERROR_OUTOFMEMORY;
-    }
-    else
-    {
-      *addrs = NULL;
-      *num_addrs = 0;
-      ret = ERROR_SUCCESS;
-    }
-    freeifaddrs(ifa);
-  }
-  else
-    ret = ERROR_NO_DATA;
-  return ret;
-}
-#else
 ULONG v6addressesFromIndex(DWORD index, SOCKET_ADDRESS **addrs, ULONG *num_addrs)
 {
   *addrs = NULL;
   *num_addrs = 0;
   return ERROR_SUCCESS;
 }
+
 #endif
 
 char *toIPAddressString(unsigned int addr, char string[16])




More information about the wine-cvs mailing list