From 2de65adb7dc6c7b18a33a777a1f9068cfee395d7 Mon Sep 17 00:00:00 2001
From: Ray Donnelly <mingw.android@gmail.com>
Date: Mon, 12 Jan 2015 18:15:39 +0000
Subject: [PATCH] Fix compilation errors since 'Update netioa-API'

iphlpapi.h needs to include <tcpmib.h>
{Get,Set}PerTcp{,6}ConnectionEStats is only
  for #if NTDDI_VERSION >= 0x06000000
IF_COUNTED_STRING was not defined in ifdef.h
NET_IF_OPER_STATUS was not defined in ifdef.h
---
 mingw-w64-headers/include/ifdef.h    | 24 ++++++++++++++++++++++++
 mingw-w64-headers/include/iphlpapi.h |  4 ++--
 mingw-w64-headers/include/iprtrmib.h |  2 ++
 3 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/mingw-w64-headers/include/ifdef.h b/mingw-w64-headers/include/ifdef.h
index 8c5b028..0d78a00 100644
--- a/mingw-w64-headers/include/ifdef.h
+++ b/mingw-w64-headers/include/ifdef.h
@@ -33,6 +33,16 @@ typedef enum _IF_OPER_STATUS {
   IfOperStatusLowerLayerDown 
 } IF_OPER_STATUS;
 
+typedef enum _NET_IF_OPER_STATUS {
+  NET_IF_OPER_STATUS_UP                = 1,
+  NET_IF_OPER_STATUS_DOWN,
+  NET_IF_OPER_STATUS_TESTING,
+  NET_IF_OPER_STATUS_UNKNOWN,
+  NET_IF_OPER_STATUS_DORMANT,
+  NET_IF_OPER_STATUS_NOT_PRESENT,
+  NET_IF_OPER_STATUS_LOWER_LAYER_DOWN
+} NET_IF_OPER_STATUS, *PNET_IF_OPER_STATUS;
+
 typedef enum _NET_IF_ADMIN_STATUS {
   NET_IF_ADMIN_STATUS_UP        = 1,
   NET_IF_ADMIN_STATUS_DOWN,
@@ -94,6 +104,20 @@ typedef union _NET_LUID {
 
 typedef NET_LUID IF_LUID, *PIF_LUID;
 
+typedef struct _IF_COUNTED_STRING_LH {
+    USHORT Length;
+    WCHAR  String[IF_MAX_STRING_SIZE + 1];
+} IF_COUNTED_STRING_LH, *PIF_COUNTED_STRING_LH;
+typedef IF_COUNTED_STRING_LH IF_COUNTED_STRING;
+typedef IF_COUNTED_STRING *PIF_COUNTED_STRING;
+
+typedef struct _IF_PHYSICAL_ADDRESS_LH {
+    USHORT Length;
+    UCHAR  Address[IF_MAX_PHYS_ADDRESS_LENGTH];
+} IF_PHYSICAL_ADDRESS_LH, *PIF_PHYSICAL_ADDRESS_LH;
+typedef IF_PHYSICAL_ADDRESS_LH IF_PHYSICAL_ADDRESS;
+typedef IF_PHYSICAL_ADDRESS *PIF_PHYSICAL_ADDRESS;
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/mingw-w64-headers/include/iphlpapi.h b/mingw-w64-headers/include/iphlpapi.h
index a237c8a..03aed33 100644
--- a/mingw-w64-headers/include/iphlpapi.h
+++ b/mingw-w64-headers/include/iphlpapi.h
@@ -43,13 +43,13 @@ extern "C" {
 #if NTDDI_VERSION >= 0x06000000
   ULONG WINAPI GetTcp6Table (PMIB_TCP6TABLE TcpTable, PULONG SizePointer, WINBOOL Order);
   ULONG WINAPI GetTcp6Table2 (PMIB_TCP6TABLE2 TcpTable, PULONG SizePointer, WINBOOL Order);
-#endif
   ULONG WINAPI GetPerTcpConnectionEStats (PMIB_TCPROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, PUCHAR Ros, ULONG RosVersion, ULONG RosSize, PUCHAR Rod, ULONG RodVersion, ULONG RodSize);
   ULONG WINAPI SetPerTcpConnectionEStats (PMIB_TCPROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, ULONG Offset);
   ULONG WINAPI GetPerTcp6ConnectionEStats (PMIB_TCP6ROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, PUCHAR Ros, ULONG RosVersion, ULONG RosSize, PUCHAR Rod, ULONG RodVersion, ULONG RodSize);
   ULONG WINAPI SetPerTcp6ConnectionEStats (PMIB_TCP6ROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, ULONG Offset);
-  DWORD WINAPI GetOwnerModuleFromTcp6Entry (PMIB_TCP6ROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
   ULONG WINAPI GetUdp6Table (PMIB_UDP6TABLE Udp6Table, PULONG SizePointer, WINBOOL Order);
+#endif
+  DWORD WINAPI GetOwnerModuleFromTcp6Entry (PMIB_TCP6ROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
   DWORD WINAPI GetOwnerModuleFromUdp6Entry (PMIB_UDP6ROW_OWNER_MODULE pUdpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
 #endif
   DWORD GetOwnerModuleFromPidAndInfo (ULONG ulPid, ULONGLONG *pInfo, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
diff --git a/mingw-w64-headers/include/iprtrmib.h b/mingw-w64-headers/include/iprtrmib.h
index f5f826b..2e814fe 100644
--- a/mingw-w64-headers/include/iprtrmib.h
+++ b/mingw-w64-headers/include/iprtrmib.h
@@ -359,6 +359,8 @@ typedef struct _MIB_TCP6ROW_OWNER_MODULE {
    We simply typedef it to int.  */
 typedef int MIB_TCP_STATE;
 
+#include <tcpmib.h>
+
 typedef struct _MIB_TCPTABLE {
   DWORD dwNumEntries;
   MIB_TCPROW table[ANY_SIZE];
-- 
2.2.1

