Alex Henrie : iphlpapi/tests: Add tests for GetTcp6Table.

Alexandre Julliard julliard at winehq.org
Mon Feb 17 15:42:15 CST 2020


Module: wine
Branch: master
Commit: 748bed3d10737ad9b7c63df546f4d59608352318
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=748bed3d10737ad9b7c63df546f4d59608352318

Author: Alex Henrie <alexhenrie24 at gmail.com>
Date:   Thu Feb 13 23:51:50 2020 -0700

iphlpapi/tests: Add tests for GetTcp6Table.

Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/iphlpapi/tests/iphlpapi.c | 48 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/dlls/iphlpapi/tests/iphlpapi.c b/dlls/iphlpapi/tests/iphlpapi.c
index 7a4821aae7..8ccbf5f9b6 100644
--- a/dlls/iphlpapi/tests/iphlpapi.c
+++ b/dlls/iphlpapi/tests/iphlpapi.c
@@ -56,6 +56,7 @@ static DWORD (WINAPI *pAllocateAndGetTcpExTableFromStack)(void**,BOOL,HANDLE,DWO
 static DWORD (WINAPI *pGetIfEntry2)(PMIB_IF_ROW2);
 static DWORD (WINAPI *pGetIfTable2)(PMIB_IF_TABLE2*);
 static DWORD (WINAPI *pGetIfTable2Ex)(MIB_IF_TABLE_LEVEL,PMIB_IF_TABLE2*);
+static DWORD (WINAPI *pGetTcp6Table)(PMIB_TCP6TABLE,PDWORD,BOOL);
 static DWORD (WINAPI *pGetUdp6Table)(PMIB_UDP6TABLE,PDWORD,BOOL);
 static DWORD (WINAPI *pGetUnicastIpAddressEntry)(MIB_UNICASTIPADDRESS_ROW*);
 static DWORD (WINAPI *pGetUnicastIpAddressTable)(ADDRESS_FAMILY,MIB_UNICASTIPADDRESS_TABLE**);
@@ -86,6 +87,7 @@ static void loadIPHlpApi(void)
     pGetIfEntry2 = (void *)GetProcAddress(hLibrary, "GetIfEntry2");
     pGetIfTable2 = (void *)GetProcAddress(hLibrary, "GetIfTable2");
     pGetIfTable2Ex = (void *)GetProcAddress(hLibrary, "GetIfTable2Ex");
+    pGetTcp6Table = (void *)GetProcAddress(hLibrary, "GetTcp6Table");
     pGetUdp6Table = (void *)GetProcAddress(hLibrary, "GetUdp6Table");
     pGetUnicastIpAddressEntry = (void *)GetProcAddress(hLibrary, "GetUnicastIpAddressEntry");
     pGetUnicastIpAddressTable = (void *)GetProcAddress(hLibrary, "GetUnicastIpAddressTable");
@@ -2095,6 +2097,51 @@ static void test_ConvertLengthToIpv4Mask(void)
     ok( mask == INADDR_NONE, "ConvertLengthToIpv4Mask mask value 0x%08x, expected 0x%08x\n", mask, INADDR_NONE );
 }
 
+static void test_GetTcp6Table(void)
+{
+    DWORD ret;
+    ULONG size = 0;
+    PMIB_TCP6TABLE buf;
+
+    if (!pGetTcp6Table)
+    {
+        win_skip("GetTcp6Table not available\n");
+        return;
+    }
+
+    ret = pGetTcp6Table(NULL, &size, FALSE);
+    if (ret == ERROR_NOT_SUPPORTED)
+    {
+        skip("GetTcp6Table is not supported\n");
+        return;
+    }
+    ok(ret == ERROR_INSUFFICIENT_BUFFER,
+       "GetTcp6Table(NULL, &size, FALSE) returned %d, expected ERROR_INSUFFICIENT_BUFFER\n", ret);
+    if (ret != ERROR_INSUFFICIENT_BUFFER) return;
+
+    buf = HeapAlloc(GetProcessHeap(), 0, size);
+
+    ret = pGetTcp6Table(buf, &size, FALSE);
+    ok(ret == NO_ERROR,
+       "GetTcp6Table(buf, &size, FALSE) returned %d, expected NO_ERROR\n", ret);
+
+    if (ret == NO_ERROR && winetest_debug > 1)
+    {
+        DWORD i;
+        trace("TCP6 table: %u entries\n", buf->dwNumEntries);
+        for (i = 0; i < buf->dwNumEntries; i++)
+        {
+            trace("%u: local %s%%%u:%u remote %s%%%u:%u state %u\n", i,
+                  ntoa6(&buf->table[i].LocalAddr), ntohs(buf->table[i].dwLocalScopeId),
+                  ntohs(buf->table[i].dwLocalPort), ntoa6(&buf->table[i].RemoteAddr),
+                  ntohs(buf->table[i].dwRemoteScopeId), ntohs(buf->table[i].dwRemotePort),
+                  buf->table[i].State);
+        }
+    }
+
+    HeapFree(GetProcessHeap(), 0, buf);
+}
+
 static void test_GetUdp6Table(void)
 {
     DWORD apiReturn;
@@ -2268,6 +2315,7 @@ START_TEST(iphlpapi)
     test_GetUnicastIpAddressEntry();
     test_GetUnicastIpAddressTable();
     test_ConvertLengthToIpv4Mask();
+    test_GetTcp6Table();
     test_GetUdp6Table();
     test_ParseNetworkString();
     freeIPHlpApi();




More information about the wine-cvs mailing list