75#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
99#define ConvertInterfaceAliasToLuid pConvertInterfaceAliasToLuid
100#define ConvertInterfaceLuidToAlias pConvertInterfaceLuidToAlias
101#define ConvertGuidToStringA pConvertGuidToStringA
102#define ConvertGuidToStringW pConvertGuidToStringW
103#define ConvertStringToGuidW pConvertStringToGuidW
104#define GetIfEntry2 pGetIfEntry2
105#define GetIfTable2 pGetIfTable2
106#define GetIfTable2Ex pGetIfTable2Ex
107#define GetIpForwardTable2 pGetIpForwardTable2
108#define GetIpNetTable2 pGetIpNetTable2
109#define FreeMibTable pFreeMibTable
110#define ConvertInterfaceGuidToLuid pConvertInterfaceGuidToLuid
111#define ConvertInterfaceIndexToLuid pConvertInterfaceIndexToLuid
112#define ConvertInterfaceLuidToGuid pConvertInterfaceLuidToGuid
113#define ConvertInterfaceLuidToIndex pConvertInterfaceLuidToIndex
114#define ConvertInterfaceLuidToNameA pConvertInterfaceLuidToNameA
115#define ConvertInterfaceLuidToNameW pConvertInterfaceLuidToNameW
116#define ConvertInterfaceNameToLuidA pConvertInterfaceNameToLuidA
117#define ConvertInterfaceNameToLuidW pConvertInterfaceNameToLuidW
118#define GetCurrentThreadCompartmentId pGetCurrentThreadCompartmentId
119#define if_indextoname pif_indextoname
120#define if_nametoindex pif_nametoindex
123#define GetUnicastIpAddressTable pGetUnicastIpAddressTable
124#define ConvertLengthToIpv4Mask pConvertLengthToIpv4Mask
135 pAllocateAndGetTcpExTableFromStack = (
void *)
GetProcAddress(
hLibrary,
"AllocateAndGetTcpExTableFromStack");
147#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
199 unsigned short *
p =
ip->u.Word;
222 DWORD apiReturn, numInterfaces;
230 "GetNumberOfInterfaces(NULL) returned %ld, expected ERROR_INVALID_PARAMETER\n",
236 "GetNumberOfInterfaces returned %ld, expected 0\n", apiReturn);
247 skip(
"GetIfEntry is not supported\n");
251 "GetIfEntry(NULL) returned %ld, expected ERROR_INVALID_PARAMETER\n",
257 "GetIfEntry(bogus row) returned %ld, expected ERROR_INVALID_DATA or ERROR_FILE_NOT_FOUND\n",
262 "GetIfEntry returned %ld, expected NO_ERROR\n", apiReturn);
272 skip(
"GetIpAddrTable is not supported\n");
276 "GetIpAddrTable(NULL, NULL, FALSE) returned %ld, expected ERROR_INVALID_PARAMETER\n",
280 "GetIpAddrTable(NULL, &dwSize, FALSE) returned %ld, expected ERROR_INSUFFICIENT_BUFFER\n",
287 "GetIpAddrTable(buf, &dwSize, FALSE) returned %ld, expected NO_ERROR\n",
293 for (
i = 0;
i <
buf->dwNumEntries;
i++)
295 ok (
buf->table[
i].wType != 0,
"Test[%d]: expected wType > 0\n",
i);
296 ok (
buf->table[
i].dwBCastAddr == 1,
"Test[%d]: got %08lx\n",
i,
buf->table[
i].dwBCastAddr);
297 ok (
buf->table[
i].dwReasmSize == 0xffff,
"Test[%d]: got %08lx\n",
i,
buf->table[
i].dwReasmSize);
298 trace(
"Entry[%d]: addr %s, dwIndex %lu, wType 0x%x\n",
i,
311#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
313 skip(
"Missing APIs!\n");
317 skip(
"GetIfTable is not supported\n");
321 "GetIfTable(NULL, NULL, FALSE) returned %ld, expected ERROR_INVALID_PARAMETER\n",
325 "GetIfTable(NULL, &dwSize, FALSE) returned %ld, expected ERROR_INSUFFICIENT_BUFFER\n",
332 "GetIfTable(buf, &dwSize, FALSE) returned %ld, expected NO_ERROR\n\n",
342#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
345 for (
i = 0;
i <
buf->dwNumEntries;
i++)
353 trace(
"%lu: '%s' type %lu mtu %lu speed %lu\n",
355 trace(
" in: bytes %lu upkts %lu nupkts %lu disc %lu err %lu unk %lu\n",
356 row->dwInOctets,
row->dwInUcastPkts,
row->dwInNUcastPkts,
357 row->dwInDiscards,
row->dwInErrors,
row->dwInUnknownProtos );
358 trace(
" out: bytes %lu upkts %lu nupkts %lu disc %lu err %lu\n",
359 row->dwOutOctets,
row->dwOutUcastPkts,
row->dwOutNUcastPkts,
360 row->dwOutDiscards,
row->dwOutErrors );
363 ok( !apiReturn,
"got %ld\n", apiReturn );
366 "got %ld vs %ld\n",
index,
row->dwIndex );
367 memset( &row2, 0,
sizeof(row2) );
386#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
401#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
403 skip(
"Missing APIs!\n");
426 trace(
"IP forward table: %lu entries\n",
buf->dwNumEntries );
427 for (
i = 0;
i <
buf->dwNumEntries;
i++)
435 trace(
"dest %s mask %s gw %s if %lu type %lu proto %lu\n",
437 ntoa(
row->dwForwardNextHop ),
row->dwForwardIfIndex,
438 row->dwForwardType,
row->dwForwardProto );
442 ok(
row->dwForwardMask ==
mask,
"got %08lx vs %08lx\n",
row->dwForwardMask,
mask );
443 ok(
row->dwForwardPolicy == 0,
"got %ld\n",
row->dwForwardPolicy );
457 ok(
row->dwForwardNextHop == next_hop,
"got %08lx vs %08lx\n",
row->dwForwardNextHop, next_hop );
465 ok(
row->dwForwardAge == row2->
Age ||
row->dwForwardAge + 1 == row2->
Age,
466 "got %ld vs %ld\n",
row->dwForwardAge, row2->
Age );
467 ok(
row->dwForwardNextHopAS == 0,
"got %08lx\n",
row->dwForwardNextHopAS );
469 ok(
row->dwForwardMetric1 >= row2->
Metric,
"got %ld vs %ld\n",
row->dwForwardMetric1, row2->
Metric );
470 ok(
row->dwForwardMetric2 == 0,
"got %ld\n",
row->dwForwardMetric2 );
471 ok(
row->dwForwardMetric3 == 0,
"got %ld\n",
row->dwForwardMetric3 );
472 ok(
row->dwForwardMetric4 == 0,
"got %ld\n",
row->dwForwardMetric4 );
473 ok(
row->dwForwardMetric5 == 0,
"got %ld\n",
row->dwForwardMetric5 );
485 BOOL igmp3_found, ssdp_found;
486 DWORD igmp3_addr, ssdp_addr;
490#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
492 skip(
"Missing APIs!\n");
496 ssdp_addr =
ipv4_addr( 239, 255, 255, 250 );
500 skip(
"GetIpNetTable is not supported\n");
504 "GetIpNetTable(NULL, NULL, FALSE) returned %ld, expected ERROR_INVALID_PARAMETER\n",
508 "GetIpNetTable(NULL, &dwSize, FALSE) returned %ld, expected ERROR_NO_DATA or ERROR_INSUFFICIENT_BUFFER\n",
518 "got apiReturn %lu, dwSize %lu, buf->dwNumEntries %lu.\n",
523 for (
i = 0;
i <
buf->dwNumEntries - 1; ++
i)
525 ok(
buf->table[
i].dwIndex <=
buf->table[
i + 1].dwIndex,
526 "Entries are not sorted by index, i %u.\n",
i );
527 if (
buf->table[
i].dwIndex ==
buf->table[
i + 1].dwIndex)
529 "Entries are not sorted by address, i %u.\n",
i );
532 igmp3_found = ssdp_found =
FALSE;
534 for (
i = 0;
i <
buf->dwNumEntries; ++
i)
536 if (
buf->table[
i].dwIndex != prev_idx)
540 ok( igmp3_found,
"%s not found, iface index %lu.\n",
ntoa( igmp3_addr ), prev_idx);
541 ok( ssdp_found ||
broken(!ssdp_found) ,
542 "%s not found.\n",
ntoa( ssdp_addr ));
544 prev_idx =
buf->table[
i].dwIndex;
545 igmp3_found = ssdp_found =
FALSE;
547 if (
buf->table[
i].dwAddr == igmp3_addr)
549 else if (
buf->table[
i].dwAddr == ssdp_addr)
552#if defined(__REACTOS__)
555 ok( igmp3_found,
"%s not found.\n",
ntoa( igmp3_addr ));
556 ok( ssdp_found ||
broken(!ssdp_found) ,
557 "%s not found.\n",
ntoa( ssdp_addr ));
559#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
567 if (
row->Address.Ipv4.sin_addr.s_addr == igmp3_addr
568 ||
row->Address.Ipv4.sin_addr.s_addr == ssdp_addr)
571 ok( !
row->IsRouter,
"IsRouter is set.\n" );
572 ok( !
row->IsUnreachable,
"IsUnreachable is set.\n" );
576#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
585 trace(
"IP net table: %lu entries\n",
buf->dwNumEntries );
586 for (
i = 0;
i <
buf->dwNumEntries;
i++)
588 trace(
"%lu: idx %lu type %lu addr %s phys",
590 for (
j = 0;
j <
buf->table[
i].dwPhysAddrLen;
j++)
610 "GetIcmpStatistics(NULL) returned %ld, expected ERROR_INVALID_PARAMETER\n",
617 skip(
"GetIcmpStatistics is not supported\n");
621 "GetIcmpStatistics returned %ld, expected NO_ERROR\n", apiReturn);
624 trace(
"ICMP stats: %8s %8s\n",
"in",
"out" );
648 skip(
"GetIpStatistics is not supported\n");
652 "GetIpStatistics(NULL) returned %ld, expected ERROR_INVALID_PARAMETER\n",
656 "GetIpStatistics returned %ld, expected NO_ERROR\n", apiReturn);
659 trace(
"IP stats:\n" );
693 skip(
"GetTcpStatistics is not supported\n");
697 "GetTcpStatistics(NULL) returned %ld, expected ERROR_INVALID_PARAMETER\n",
701 "GetTcpStatistics returned %ld, expected NO_ERROR\n", apiReturn);
704 trace(
"TCP stats:\n" );
730 skip(
"GetUdpStatistics is not supported\n");
734 "GetUdpStatistics(NULL) returned %ld, expected ERROR_INVALID_PARAMETER\n",
738 "GetUdpStatistics returned %ld, expected NO_ERROR\n", apiReturn);
741 trace(
"UDP stats:\n" );
759 "GetIcmpStatisticsEx(NULL, AF_INET) returned %ld, expected ERROR_INVALID_PARAMETER\n", apiReturn);
764 "GetIcmpStatisticsEx(&stats, AF_BAN) returned %ld, expected ERROR_INVALID_PARAMETER\n", apiReturn);
767 ok(apiReturn ==
NO_ERROR,
"GetIcmpStatisticsEx returned %ld, expected NO_ERROR\n", apiReturn);
771 trace(
"ICMP IPv4 Ex stats: %8s %8s\n",
"in",
"out" );
774 for (
i = 0;
i < 256;
i++)
780 "GetIcmpStatisticsEx returned %ld, expected NO_ERROR\n", apiReturn);
784 trace(
"ICMP IPv6 Ex stats: %8s %8s\n",
"in",
"out" );
787 for (
i = 0;
i < 256;
i++)
799 "GetIpStatisticsEx(NULL, AF_INET) returned %ld, expected ERROR_INVALID_PARAMETER\n", apiReturn);
803 "GetIpStatisticsEx(&stats, AF_BAN) returned %ld, expected ERROR_INVALID_PARAMETER\n", apiReturn);
806 ok(apiReturn ==
NO_ERROR,
"GetIpStatisticsEx returned %ld, expected NO_ERROR\n", apiReturn);
809 trace(
"IP IPv4 Ex stats:\n" );
837 "GetIpStatisticsEx returned %ld, expected NO_ERROR\n", apiReturn);
840 trace(
"IP IPv6 Ex stats:\n" );
874 "GetTcpStatisticsEx(NULL, AF_INET); returned %ld, expected ERROR_INVALID_PARAMETER\n", apiReturn);
878 "GetTcpStatisticsEx(&stats, AF_BAN) returned %ld, expected ERROR_INVALID_PARAMETER\n", apiReturn);
881 ok(apiReturn ==
NO_ERROR,
"GetTcpStatisticsEx returned %ld, expected NO_ERROR\n", apiReturn);
884 trace(
"TCP IPv4 Ex stats:\n" );
904 "GetTcpStatisticsEx returned %ld, expected NO_ERROR\n", apiReturn);
907 trace(
"TCP IPv6 Ex stats:\n" );
933 "GetUdpStatisticsEx(NULL, AF_INET); returned %ld, expected ERROR_INVALID_PARAMETER\n", apiReturn);
937 "GetUdpStatisticsEx(&stats, AF_BAN) returned %ld, expected ERROR_INVALID_PARAMETER\n", apiReturn);
940 ok(apiReturn ==
NO_ERROR,
"GetUdpStatisticsEx returned %ld, expected NO_ERROR\n", apiReturn);
943 trace(
"UDP IPv4 Ex stats:\n" );
953 "GetUdpStatisticsEx returned %ld, expected NO_ERROR\n", apiReturn);
956 trace(
"UDP IPv6 Ex stats:\n" );
972 skip(
"GetTcpTable is not supported\n");
976 "GetTcpTable(NULL, &dwSize, FALSE) returned %ld, expected ERROR_INSUFFICIENT_BUFFER\n",
983 "GetTcpTable(buf, &dwSize, FALSE) returned %ld, expected NO_ERROR\n",
989 trace(
"TCP table: %lu entries\n",
buf->dwNumEntries );
990 for (
i = 0;
i <
buf->dwNumEntries;
i++)
992 trace(
"%lu: local %s:%u remote %s:%u state %lu\n",
i,
995 buf->table[
i].dwState );
1009 skip(
"GetUdpTable is not supported\n");
1013 "GetUdpTable(NULL, &dwSize, FALSE) returned %ld, expected ERROR_INSUFFICIENT_BUFFER\n",
1020 "GetUdpTable(buf, &dwSize, FALSE) returned %ld, expected NO_ERROR\n",
1026 trace(
"UDP table: %lu entries\n",
buf->dwNumEntries );
1027 for (
i = 0;
i <
buf->dwNumEntries;
i++)
1028 trace(
"%lu: %s:%u\n",
1050 win_skip(
"SetTcpEntry failed with access error. Skipping test.\n");
1074 "Got IO Information %Iu\n",
io_status->Information);
1084 char senddata[32], replydata[
sizeof(senddata) +
sizeof(
ICMP_ECHO_REPLY)];
1092 memset(senddata, 0,
sizeof(senddata));
1098 ok (!
ret,
"IcmpSendEcho succeeded unexpectedly\n");
1101 "expected 87, got %ld\n",
error);
1105 ret =
IcmpSendEcho2(
INVALID_HANDLE_VALUE,
NULL,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL, replydata, replysz, 1000);
1107 ok (!
ret,
"IcmpSendEcho2 succeeded unexpectedly\n");
1110 "expected 87, got %ld\n",
error);
1119 ok (!
ret,
"IcmpSendEcho succeeded unexpectedly\n");
1122 "expected 1214, got %ld\n",
error);
1128 ok (!
ret,
"IcmpSendEcho succeeded unexpectedly\n");
1136 skip(
"ICMP is not available.\n" );
1139 ok (
ret,
"IcmpSendEcho failed unexpectedly with error %ld\n",
error);
1144 ok (
ret,
"IcmpSendEcho failed unexpectedly with error %ld\n",
error);
1149 ok (!
ret,
"IcmpSendEcho succeeded unexpectedly\n");
1155 ok (!
ret,
"IcmpSendEcho succeeded unexpectedly\n");
1158 "expected 87, got %ld\n",
error);
1163 ok (!
ret,
"IcmpSendEcho succeeded unexpectedly\n");
1166 "expected 87, got %ld\n",
error);
1169 replysz =
sizeof(replydata) - 1;
1172 ok (!
ret,
"IcmpSendEcho succeeded unexpectedly\n");
1175 "expected 11050, got %ld\n",
error);
1181 ok (
ret,
"IcmpSendEcho failed unexpectedly with error %ld\n",
error);
1187 ok (
ret,
"IcmpSendEcho failed unexpectedly with error %ld\n",
error);
1193 ok (!
ret,
"IcmpSendEcho succeeded unexpectedly\n");
1196 "expected 11050, got %ld\n",
error);
1201 ok (!
ret,
"IcmpSendEcho succeeded unexpectedly\n");
1204 "expected 11050, got %ld\n",
error);
1208 replysz =
sizeof(replydata);
1225 skip (
"Failed to ping with error %ld, is lo interface down?.\n",
error);
1232 trace (
"reply size : %lu\n", replysz);
1247 ok(
ret,
"IcmpSendEcho failed unexpectedly\n");
1260 replysz =
sizeof(replydata2);
1261 memset(senddata, 0,
sizeof(senddata));
1264 ret =
IcmpSendEcho2(
icmp,
NULL,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL, replydata2, replysz, 1000);
1266 ok(!
ret,
"IcmpSendEcho2 succeeded unexpectedly\n");
1269 "expected 1214, got %ld\n",
error);
1275 ret =
IcmpSendEcho2(
icmp,
event,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL, replydata2, replysz, 1000);
1277 ok(!
ret,
"IcmpSendEcho2 returned success unexpectedly\n");
1280 "Got last error: 0x%08lx\n",
error);
1289 ret =
IcmpSendEcho2(
icmp,
NULL,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL,
NULL, replysz, 1000);
1291 ok(!
ret,
"IcmpSendEcho2 succeeded unexpectedly\n");
1294 "expected 87, got %ld\n",
error);
1297 ret =
IcmpSendEcho2(
icmp,
event,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL,
NULL, replysz, 1000);
1299 ok(!
ret,
"IcmpSendEcho2 succeeded unexpectedly\n");
1302 "expected 87, got %ld\n",
error);
1306 ret =
IcmpSendEcho2(
icmp,
NULL,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL, replydata2, 0, 1000);
1308 ok(!
ret,
"IcmpSendEcho2 succeeded unexpectedly\n");
1311 "expected 87, got %ld\n",
error);
1314 ret =
IcmpSendEcho2(
icmp,
event,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL, replydata2, 0, 1000);
1316 ok(!
ret,
"IcmpSendEcho2 succeeded unexpectedly\n");
1319 "expected 87, got %ld\n",
error);
1323 ret =
IcmpSendEcho2(
icmp,
NULL,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL,
NULL, 0, 1000);
1325 ok(!
ret,
"IcmpSendEcho2 succeeded unexpectedly\n");
1328 "expected 87, got %ld\n",
error);
1331 ret =
IcmpSendEcho2(
icmp,
event,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL,
NULL, 0, 1000);
1333 ok(!
ret,
"IcmpSendEcho2 succeeded unexpectedly\n");
1336 "expected 87, got %ld\n",
error);
1346 ret =
IcmpSendEcho2(
icmp,
NULL,
NULL,
NULL,
address, senddata, 0,
NULL, replydata2, replysz, 1000);
1350 ret =
IcmpSendEcho2(
icmp,
NULL,
NULL,
NULL,
address,
NULL, 0,
NULL, replydata2, replysz, 1000);
1354 ret =
IcmpSendEcho2(
icmp,
NULL,
NULL,
NULL,
address, senddata, 0,
NULL, replydata2, replysz, 1000);
1359 ret =
IcmpSendEcho2(
icmp,
NULL,
NULL,
NULL,
address, senddata,
ICMP_MINLEN,
NULL, replydata2, replysz, 1000);
1363 replysz =
sizeof(replydata2);
1364 ret =
IcmpSendEcho2(
icmp,
NULL,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL, replydata2, replysz, 1000);
1368 skip(
"Failed to ping with error %ld, is lo interface down?\n",
error);
1375 trace(
"reply size : %lu\n", replysz);
1385 ret =
IcmpSendEcho2(
icmp,
NULL,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL, replydata2, replysz, 1000);
1388 ok(
ret,
"IcmpSendEcho2 failed unexpectedly\n");
1401 replysz =
sizeof(replydata2);
1403 memset(senddata, 0,
sizeof(senddata));
1404 ret =
IcmpSendEcho2(
icmp,
event,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL, replydata2, replysz, 1000);
1408 skip(
"Failed to ping with error %ld, is lo interface down?\n",
error);
1412 ok(!
ret,
"IcmpSendEcho2 returned success unexpectedly\n");
1432 trace(
"reply size : %lu\n", replysz);
1443 ret =
IcmpSendEcho2(
icmp,
event,
NULL,
NULL,
address, senddata,
sizeof(senddata),
NULL, replydata2, replysz, 1000);
1445 ok(!
ret,
"IcmpSendEcho2 returned success unexpectedly\n");
1461 ok(!
memcmp(senddata, reply + 1,
min(
sizeof(senddata), reply->
DataSize)),
"Data mismatch\n");
1467 replysz =
sizeof(replydata2) + 10;
1474#if defined(__REACTOS__) && defined(_MSC_VER)
1479 ret =
IcmpSendEcho2(
icmp,
NULL,
apc, (
void*)0xdeadc0de,
address, senddata,
sizeof(senddata),
NULL, replydata2, replysz, 1000);
1481 ok(!
ret,
"IcmpSendEcho2 returned success unexpectedly\n");
1492 ok(!
memcmp(senddata, reply + 1,
min(
sizeof(senddata), reply->
DataSize)),
"Data mismatch\n");
1493#if defined(__REACTOS__) && defined(_MSC_VER)
1525#if defined(__REACTOS__) && defined(_MSC_VER)
1536#if defined(__REACTOS__) && defined(_MSC_VER)
1570 skip(
"GetInterfaceInfo is not supported\n");
1574 "GetInterfaceInfo returned %ld, expected ERROR_INVALID_PARAMETER\n",
1578 "GetInterfaceInfo returned %ld, expected ERROR_INSUFFICIENT_BUFFER\n",
1585 "GetInterfaceInfo(buf, &dwSize) returned %ld, expected NO_ERROR\n",
1588 for (
i = 0;
i <
buf->NumAdapters;
i++)
1615#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
1617 skip(
"Missing APIs!\n");
1634 trace(
"adapter '%s', address %s/%s gateway %s/%s\n",
ptr->AdapterName,
1635 ptr->IpAddressList.IpAddress.String,
ptr->IpAddressList.IpMask.String,
1636 ptr->GatewayList.IpAddress.String,
ptr->GatewayList.IpMask.String );
1637 row.dwIndex =
ptr->Index;
1641 sprintf(
name,
"{%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
1646 ok( !
strcmp(
ptr->Description, (
char *)
row.bDescr ),
"got %s vs %s\n",
ptr->Description, (
char *)
row.bDescr );
1647 ok(
ptr->AddressLength ==
row.dwPhysAddrLen,
"got %d vs %ld\n",
ptr->AddressLength,
row.dwPhysAddrLen );
1649 ok(
ptr->Type ==
row.dwType,
"got %d vs %ld\n",
ptr->Type,
row.dwType );
1651 ok(
ptr->IpAddressList.IpAddress.String[0],
"A valid IP address must be present\n" );
1652 ok(
ptr->IpAddressList.IpMask.String[0],
"A valid mask must be present\n" );
1653 ok(
ptr->GatewayList.IpAddress.String[0],
"A valid IP address must be present\n" );
1654 ok(
ptr->GatewayList.IpMask.String[0],
"A valid mask must be present\n" );
1667 skip(
"GetNetworkParams is not supported\n");
1671 "GetNetworkParams returned %ld, expected ERROR_INVALID_PARAMETER\n",
1675 "GetNetworkParams returned %ld, expected ERROR_BUFFER_OVERFLOW\n",
1682 "GetNetworkParams(buf, &dwSize) returned %ld, expected NO_ERROR\n",
1694 trace(
"GetBestInterface([0.0.0.0], {%lu}) = %lu\n", bestIfIndex, apiReturn );
1697 skip(
"GetBestInterface is not supported\n" );
1703 "GetBestInterface([127.0.0.1], NULL) returned %lu, expected %d\n",
1708 "GetBestInterface([127.0.0.1], {%lu}) returned %lu, expected %d\n",
1709 bestIfIndex, apiReturn,
NO_ERROR );
1715 DWORD bestIfIndex = 0;
1722 trace(
"GetBestInterfaceEx([0.0.0.0], {%lu}) = %lu\n", bestIfIndex, apiReturn );
1725 skip(
"GetBestInterfaceEx not supported\n" );
1731 "GetBestInterfaceEx(NULL, NULL) returned %lu, expected %d\n",
1736 "GetBestInterfaceEx(NULL, {%lu}) returned %lu, expected %d\n",
1742 "GetBestInterfaceEx(<AF_UNSPEC>, NULL) returned %lu, expected %d\n",
1748 "GetBestInterfaceEx(<INVALID>, NULL) returned %lu, expected %d\n",
1756 "GetBestInterfaceEx([127.0.0.1], NULL) returned %lu, expected %d\n",
1764 "GetBestInterfaceEx([127.0.0.1], {%lu}) returned %lu, expected %d\n",
1774 trace(
"GetBestRoute([0.0.0.0], 0, [...]) = %lu\n", apiReturn );
1777 skip(
"GetBestRoute is not supported\n" );
1783 "GetBestRoute([0.0.0.0], 0, NULL) returned %lu, expected %d\n",
1788 "GetBestRoute([127.0.0.1], 0, NULL) returned %lu, expected %d\n",
1815 needed = 0xdeadbeef;
1819 ok( needed != 0xdeadbeef,
"needed not set\n" );
1835 skip(
"FIXME: testNotifyAddrChange() hangs on ReactOS! (works on Windows)\n");
1846 ok(
success ==
TRUE,
"CancelIPChangeNotify returned FALSE, expected TRUE\n");
1852 ok(
success ==
FALSE,
"CancelIPChangeNotify returned TRUE, expected FALSE\n");
1861 ok(
success ==
FALSE,
"GetOverlappedResult returned TRUE, expected FALSE\n");
1865 ok(
success ==
TRUE,
"CancelIPChangeNotify returned FALSE, expected TRUE\n");
1874 trace(
"Testing asynchronous ipv4 address change notification. Please "
1875 "change the ipv4 address of one of your network interfaces\n");
1879 ok(
success ==
TRUE,
"GetOverlappedResult returned FALSE, expected TRUE\n");
1885 trace(
"Testing synchronous ipv4 address change notification. Please "
1886 "change the ipv4 address of one of your network interfaces\n");
1888 ok(
ret ==
NO_ERROR,
"NotifyAddrChange returned %ld, expected NO_ERROR\n",
ret);
1915 IP_ADAPTER_ADDRESSES *aa, *
ptr;
1916 IP_ADAPTER_UNICAST_ADDRESS *ua;
1918#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
1920 skip(
"Missing APIs!\n");
1938 ok(osize ==
size,
"expected %ld, got %ld\n",
size, osize);
1942 ok(!
ret,
"expected ERROR_SUCCESS got %lu\n",
ret);
1957 ok(!
ret,
"expected ERROR_SUCCESS got %lu\n",
ret);
1958 ok(osize ==
size,
"expected %ld, got %ld\n",
size, osize);
1960 for (aa =
ptr; !
ret && aa; aa = aa->Next)
1963 IP_ADAPTER_PREFIX *
prefix;
1967 ok(aa->Length ==
sizeof(IP_ADAPTER_ADDRESSES_LH) ||
1968 aa->Length ==
sizeof(IP_ADAPTER_ADDRESSES_XP),
1969 "Unknown structure size of %lu bytes\n", aa->Length);
1970 ok(aa->DnsSuffix !=
NULL,
"DnsSuffix is not a valid pointer\n");
1971 ok(aa->Description !=
NULL,
"Description is not a valid pointer\n");
1972 ok(aa->FriendlyName !=
NULL,
"FriendlyName is not a valid pointer\n");
1974 for (
i = 0;
i < aa->PhysicalAddressLength;
i++)
1976 temp[
i ?
i * 3 - 1 : 0] =
'\0';
1977 trace(
"idx %lu name %s %s dns %s descr %s phys %s mtu %lu flags %08lx type %lu\n",
1978 aa->IfIndex, aa->AdapterName,
1981 ua = aa->FirstUnicastAddress;
1984 ok(ua->Length ==
sizeof(IP_ADAPTER_UNICAST_ADDRESS_LH) ||
1985 ua->Length ==
sizeof(IP_ADAPTER_UNICAST_ADDRESS_XP),
1986 "Unknown structure size of %lu bytes\n", ua->Length);
1988 "bad address config value %d\n", ua->PrefixOrigin);
1990 "bad address config value %d\n", ua->PrefixOrigin);
1995 ok(ua->ValidLifetime,
"expected non-zero value\n");
1996 ok(ua->PreferredLifetime,
"expected non-zero value\n");
1997 ok(ua->LeaseLifetime,
"expected non-zero\n");
2001 "bad address duplication value %d\n", ua->DadState);
2002 trace(
" flags %08lx origin %u/%u state %u lifetime %lu/%lu/%lu prefix %u\n",
2003 ua->Flags, ua->PrefixOrigin, ua->SuffixOrigin, ua->DadState,
2004 ua->ValidLifetime, ua->PreferredLifetime, ua->LeaseLifetime,
2005 ua->Length <
sizeof(IP_ADAPTER_UNICAST_ADDRESS_LH) ? 0 : ua->OnLinkPrefixLength);
2007 if (ua->Flags & IP_ADAPTER_ADDRESS_DNS_ELIGIBLE)
2008 dns_eligible_found =
TRUE;
2013 if(ua->Address.lpSockaddr->sa_family ==
AF_INET)
2014 ok(aa->Ipv4Enabled ==
TRUE,
"expected Ipv4Enabled flag to be set in interface %ls\n", aa->FriendlyName);
2015 else if(ua->Address.lpSockaddr->sa_family ==
AF_INET6)
2016 ok(aa->Ipv6Enabled ==
TRUE,
"expected Ipv6Enabled flag to be set in interface %ls\n", aa->FriendlyName);
2025 trace(
"status %u index %lu zone %s\n", aa->OperStatus, aa->Ipv6IfIndex,
temp );
2026 prefix = aa->FirstPrefix;
2029 trace(
" prefix %u/%lu flags %08lx\n",
prefix->Address.iSockaddrLength,
2034 if (aa->Length <
sizeof(IP_ADAPTER_ADDRESSES_LH))
continue;
2035 trace(
"speed %s/%s metrics %lu/%lu guid %s type %u/%u\n",
2039 aa->ConnectionType, aa->TunnelType);
2041#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
2046 sprintf(
buf,
"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
2050 ok(!
strcasecmp(aa->AdapterName,
buf),
"expected '%s' got '%s'\n", aa->AdapterName,
buf);
2051#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
2055 ok(dns_eligible_found,
"Did not find any dns eligible addresses.\n");
2084 if (!pGetExtendedTcpTable)
2086 win_skip(
"GetExtendedTcpTable not available\n");
2110 free( table_module );
2114 free( table_module );
2124 void *raw_table =
NULL;
2128 skip(
"This test is invalid for this NT version.\n");
2140 int addr_len =
sizeof(
addr);
2156 int addr_len =
sizeof(
addr);
2175 skip(
"error %lu getting TCP table\n",
ret );
2183 for (
i = 0;
i <
table->dwNumEntries;
i++)
2194 ok( found_it,
"no table entry for socket\n" );
2200 for (
i = 0;
i <
table->dwNumEntries;
i++)
2211 ok( found_it,
"no table entry for socket\n" );
2226 if (!pAllocateAndGetTcpExTableFromStack)
2228 win_skip(
"AllocateAndGetTcpExTableFromStack not available\n");
2252 trace(
"AllocateAndGetTcpExTableFromStack table: %lu entries\n", table_ex->
dwNumEntries );
2258 trace(
"%lu: local %s:%u remote %s:%u state %lu pid %lu\n",
i,
2295 if (!pGetExtendedUdpTable)
2297 win_skip(
"GetExtendedUdpTable not available\n");
2313 free( table_module );
2323 void *raw_table =
NULL;
2327 skip(
"This test is invalid for this NT version.\n");
2339 int addr_len =
sizeof(
addr);
2355 int addr_len =
sizeof(
addr);
2372 skip(
"error %lu getting UDP table\n",
ret );
2380 for (
i = 0;
i <
table->dwNumEntries;
i++)
2390 ok( found_it,
"no table entry for socket\n" );
2396 for (
i = 0;
i <
table->dwNumEntries;
i++)
2406 ok( found_it,
"no table entry for socket\n" );
2423 if (!pCreateSortedAddressPairs)
2425 win_skip(
"CreateSortedAddressPairs not available\n" );
2431 dst[0].sin6_addr.u.Word[5] = 0xffff;
2432 dst[0].sin6_addr.u.Word[6] = 0x0808;
2433 dst[0].sin6_addr.u.Word[7] = 0x0808;
2435 pair_count = 0xdeadbeef;
2436 ret = pCreateSortedAddressPairs(
NULL, 0,
dst, 1, 0,
NULL, &pair_count );
2438 ok( pair_count == 0xdeadbeef,
"got %lu\n", pair_count );
2441 pair_count = 0xdeadbeef;
2442 ret = pCreateSortedAddressPairs(
NULL, 0,
NULL, 1, 0, &
pair, &pair_count );
2445 ok( pair_count == 0xdeadbeef,
"got %lu\n", pair_count );
2448 pair_count = 0xdeadbeef;
2449 ret = pCreateSortedAddressPairs(
NULL, 0,
dst, 1, 0, &
pair, &pair_count );
2452 ok( pair_count >= 1,
"got %lu\n", pair_count );
2458 dst[1].sin6_addr.u.Word[5] = 0xffff;
2459 dst[1].sin6_addr.u.Word[6] = 0x0404;
2460 dst[1].sin6_addr.u.Word[7] = 0x0808;
2463 pair_count = 0xdeadbeef;
2464 ret = pCreateSortedAddressPairs(
NULL, 0,
dst, 2, 0, &
pair, &pair_count );
2467 ok( pair_count >= 2,
"got %lu\n", pair_count );
2478 IP_ADAPTER_ADDRESSES *tmp, *
ret;
2496 IP_ADAPTER_ADDRESSES *
buf, *aa;
2501 for (aa =
buf; aa; aa = aa->Next)
2569#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
2574 !pConvertInterfaceAliasToLuid || !pConvertInterfaceLuidToAlias ||
2576 skip(
"Missing APIs!\n");
2583 for (
i = 0;
i <
table->NumEntries;
i++)
2588 memset( &luid, 0xff,
sizeof(luid) );
2591 ok( !luid.
Info.Reserved,
"got %x\n", luid.
Info.Reserved );
2592 ok( !luid.
Info.NetLuidIndex,
"got %u\n", luid.
Info.NetLuidIndex );
2593 ok( !luid.
Info.IfType,
"got %u\n", luid.
Info.IfType );
2595 luid.
Info.Reserved = luid.
Info.NetLuidIndex = luid.
Info.IfType = 0xdead;
2598 ok( luid.
Value ==
row->InterfaceLuid.Value,
"mismatch\n" );
2606 ok(
index ==
row->InterfaceIndex,
"mismatch\n" );
2623 luid.
Info.NetLuidIndex = 1;
2626 ok( luid.
Info.NetLuidIndex == 1,
"got %u\n", luid.
Info.NetLuidIndex );
2631 luid.
Info.Reserved = luid.
Info.NetLuidIndex = luid.
Info.IfType = 0xdead;
2634 ok( luid.
Value ==
row->InterfaceLuid.Value ||
2637 if (luid.
Value !=
row->InterfaceLuid.Value)
continue;
2664 ok( nameA[0],
"name not set\n" );
2667 luid.
Info.Reserved = luid.
Info.NetLuidIndex = luid.
Info.IfType = 0xdead;
2670 ok( !luid.
Info.Reserved,
"got %x\n", luid.
Info.Reserved );
2671 ok( luid.
Info.NetLuidIndex != 0xdead,
"index not set\n" );
2672 ok( !luid.
Info.IfType,
"got %u\n", luid.
Info.IfType );
2677 luid.
Info.Reserved = luid.
Info.NetLuidIndex = luid.
Info.IfType = 0xdead;
2680 ok( luid.
Value ==
row->InterfaceLuid.Value,
"mismatch\n" );
2683 luid.
Info.Reserved = luid.
Info.NetLuidIndex = luid.
Info.IfType = 0xdead;
2686#if defined(__REACTOS__) && defined(_MSC_VER)
2687 ok( luid.
Info.Reserved == 0xffdead,
"reserved set\n" );
2688 ok( luid.
Info.NetLuidIndex == 0xffdead,
"index set\n" );
2690 ok( luid.
Info.Reserved == 0xdead,
"reserved set\n" );
2691 ok( luid.
Info.NetLuidIndex == 0xdead,
"index set\n" );
2693 ok( luid.
Info.IfType == 0xdead,
"type set\n" );
2698 luid.
Info.Reserved = luid.
Info.NetLuidIndex = luid.
Info.IfType = 0xdead;
2701 ok( luid.
Value ==
row->InterfaceLuid.Value,
"mismatch\n" );
2706 ok( luid.
Value ==
row->InterfaceLuid.Value,
"mismatch\n" );
2714 ok(
index ==
row->InterfaceIndex,
"Got index %lu for %s, expected %lu\n",
index, nameA,
row->InterfaceIndex );
2725 ok(
name == nameA,
"mismatch\n" );
2726 ok( !
strcmp( nameA, expect_nameA ),
"mismatch\n" );
2739 static const GUID guid_zero;
2740 static const GUID guid_ones = { 0xffffffffUL, 0xffff, 0xffff, { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } };
2742#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
2748 skip(
"Missing APIs!\n");
2770 ok(
index == 0,
"index shall be zero (got %lu)\n",
index );
2780 ok(
memcmp( &
guid, &guid_zero,
sizeof(
guid) ) == 0,
"guid shall be nil\n" );
2793 ok( !
nameW[0],
"nameW shall not change\n" );
2799 memset( nameA, 0,
sizeof(nameA) );
2802 ok( !nameA[0],
"nameA shall not change\n" );
2833#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
2835 skip(
"Missing APIs!\n");
2841 skip(
"no suitable interface found\n" );
2864#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
2866 skip(
"Missing APIs!\n");
2882#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
2884 skip(
"Missing APIs!\n");
2909 ok( !
table,
"table should not be set\n" );
2915 IP_ADAPTER_ADDRESSES *aa, *
ptr;
2919 if (!pGetUnicastIpAddressEntry)
2921 win_skip(
"GetUnicastIpAddressEntry not available\n" );
2925 ret = pGetUnicastIpAddressEntry(
NULL );
2929 ret = pGetUnicastIpAddressEntry( &
row );
2934 row.Address.Ipv4.sin_port = 0;
2935 row.Address.Ipv4.sin_addr.S_un.S_addr = 0x01020304;
2936 ret = pGetUnicastIpAddressEntry( &
row );
2940 row.InterfaceIndex = 123;
2941 ret = pGetUnicastIpAddressEntry( &
row );
2947 row.Address.Ipv4.sin_port = 0;
2948 row.Address.Ipv4.sin_addr.S_un.S_addr = 0x01020304;
2949 ret = pGetUnicastIpAddressEntry( &
row );
2953 row.InterfaceIndex = 123;
2955 row.Address.Ipv4.sin_port = 0;
2956 row.Address.Ipv4.sin_addr.S_un.S_addr = 0x01020304;
2957 ret = pGetUnicastIpAddressEntry( &
row );
2961 ok(
ptr !=
NULL,
"can't get adapters\n");
2963 for (aa =
ptr; !
ret && aa; aa = aa->Next)
2965 IP_ADAPTER_UNICAST_ADDRESS *ua;
2967 ua = aa->FirstUnicastAddress;
2972 memcpy(&
row.InterfaceLuid, &aa->Luid,
sizeof(aa->Luid));
2973 memcpy(&
row.Address, ua->Address.lpSockaddr, ua->Address.iSockaddrLength);
2974 ret = pGetUnicastIpAddressEntry( &
row );
2979 row.InterfaceIndex = aa->IfIndex;
2980 memcpy(&
row.Address, ua->Address.lpSockaddr, ua->Address.iSockaddrLength);
2981 ret = pGetUnicastIpAddressEntry( &
row );
2985 ok(
row.InterfaceLuid.Info.Reserved == aa->Luid.Info.Reserved,
"Expected %d, got %d\n",
2986 aa->Luid.Info.Reserved,
row.InterfaceLuid.Info.Reserved);
2987 ok(
row.InterfaceLuid.Info.NetLuidIndex == aa->Luid.Info.NetLuidIndex,
"Expected %d, got %d\n",
2988 aa->Luid.Info.NetLuidIndex,
row.InterfaceLuid.Info.NetLuidIndex);
2989 ok(
row.InterfaceLuid.Info.IfType == aa->Luid.Info.IfType,
"Expected %d, got %d\n",
2990 aa->Luid.Info.IfType,
row.InterfaceLuid.Info.IfType);
2991 ok(
row.InterfaceIndex == aa->IfIndex,
"Expected %ld, got %ld\n",
2992 aa->IfIndex,
row.InterfaceIndex);
2993 ok(
row.PrefixOrigin == ua->PrefixOrigin,
"Expected %d, got %d\n",
2994 ua->PrefixOrigin,
row.PrefixOrigin);
2995 ok(
row.SuffixOrigin == ua->SuffixOrigin,
"Expected %d, got %d\n",
2996 ua->SuffixOrigin,
row.SuffixOrigin);
2997 ok(
row.ValidLifetime == ua->ValidLifetime,
"Expected %ld, got %ld\n",
2998 ua->ValidLifetime,
row.ValidLifetime);
2999 ok(
row.PreferredLifetime == ua->PreferredLifetime,
"Expected %ld, got %ld\n",
3000 ua->PreferredLifetime,
row.PreferredLifetime);
3001 ok(
row.OnLinkPrefixLength == ua->OnLinkPrefixLength,
"Expected %d, got %d\n",
3002 ua->OnLinkPrefixLength,
row.OnLinkPrefixLength);
3003 ok(
row.SkipAsSource == 0,
"Expected 0, got %d\n",
row.SkipAsSource);
3004 ok(
row.DadState == ua->DadState,
"Expected %d, got %d\n", ua->DadState,
row.DadState);
3006 ok(
row.ScopeId.Value ==
row.Address.Ipv6.sin6_scope_id,
"Expected %ld, got %ld\n",
3007 row.Address.Ipv6.sin6_scope_id,
row.ScopeId.Value);
3008 ok(
row.CreationTimeStamp.QuadPart,
"CreationTimeStamp is 0\n");
3022 if (!pGetUnicastIpAddressTable)
3024 win_skip(
"GetUnicastIpAddressTable not available\n" );
3036 trace(
"GetUnicastIpAddressTable(AF_INET): NumEntries %lu\n",
table->NumEntries);
3041 trace(
"GetUnicastIpAddressTable(AF_INET6): NumEntries %lu\n",
table->NumEntries);
3046 trace(
"GetUnicastIpAddressTable(AF_UNSPEC): NumEntries %lu\n",
table->NumEntries);
3049 trace(
"Index %lu:\n",
i);
3050 trace(
"Address.si_family: %u\n",
table->Table[
i].Address.si_family);
3051 trace(
"InterfaceLuid.Info.Reserved: %u\n",
table->Table[
i].InterfaceLuid.Info.Reserved);
3052 trace(
"InterfaceLuid.Info.NetLuidIndex: %u\n",
table->Table[
i].InterfaceLuid.Info.NetLuidIndex);
3053 trace(
"InterfaceLuid.Info.IfType: %u\n",
table->Table[
i].InterfaceLuid.Info.IfType);
3054 trace(
"InterfaceIndex: %lu\n",
table->Table[
i].InterfaceIndex);
3055 trace(
"PrefixOrigin: %u\n",
table->Table[
i].PrefixOrigin);
3056 trace(
"SuffixOrigin: %u\n",
table->Table[
i].SuffixOrigin);
3057 trace(
"ValidLifetime: %lu seconds\n",
table->Table[
i].ValidLifetime);
3058 trace(
"PreferredLifetime: %lu seconds\n",
table->Table[
i].PreferredLifetime);
3059 trace(
"OnLinkPrefixLength: %u\n",
table->Table[
i].OnLinkPrefixLength);
3060 trace(
"SkipAsSource: %u\n",
table->Table[
i].SkipAsSource);
3061 trace(
"DadState: %u\n",
table->Table[
i].DadState);
3062 trace(
"ScopeId.Value: %lu\n",
table->Table[
i].ScopeId.Value);
3063 trace(
"CreationTimeStamp: %08lx%08lx\n",
table->Table[
i].CreationTimeStamp.HighPart,
table->Table[
i].CreationTimeStamp.LowPart);
3076 if (!pConvertLengthToIpv4Mask)
3078 win_skip(
"ConvertLengthToIpv4Mask not available\n" );
3082 for (
n = 0;
n <= 32;
n++)
3090 ret = pConvertLengthToIpv4Mask(
n, &
mask );
3097 ret = pConvertLengthToIpv4Mask( 33, &
mask );
3110 win_skip(
"GetTcp6Table not available\n");
3117 skip(
"GetTcp6Table is not supported\n");
3121 "GetTcp6Table(NULL, &size, FALSE) returned %ld, expected ERROR_INSUFFICIENT_BUFFER\n",
ret);
3128 "GetTcp6Table(buf, &size, FALSE) returned %ld, expected NO_ERROR\n",
ret);
3133 trace(
"TCP6 table: %lu entries\n",
buf->dwNumEntries);
3134 for (
i = 0;
i <
buf->dwNumEntries;
i++)
3136 trace(
"%lu: local %s%%%u:%u remote %s%%%u:%u state %u\n",
i,
3140 buf->table[
i].State);
3152 if (!pGetUdp6Table) {
3153 win_skip(
"GetUdp6Table not available\n");
3159 skip(
"GetUdp6Table is not supported\n");
3163 "GetUdp6Table(NULL, &dwSize, FALSE) returned %ld, expected ERROR_INSUFFICIENT_BUFFER\n",
3170 "GetUdp6Table(buf, &dwSize, FALSE) returned %ld, expected NO_ERROR\n",
3176 trace(
"UDP6 table: %lu entries\n",
buf->dwNumEntries );
3177 for (
i = 0;
i <
buf->dwNumEntries;
i++)
3178 trace(
"%lu: %s%%%u:%u\n",
3193 ipv4_address_tests[] =
3195 {
"1.2.3.4", {{{1, 2, 3, 4}}}},
3196#if defined(__REACTOS__) && defined(_MSC_VER) && _MSC_VER < 1930
3223 ipv4_service_tests[] =
3225 {
"1.2.3.4:22", {{{1, 2, 3, 4}}}, 22},
3226#if defined(__REACTOS__) && defined(_MSC_VER) && _MSC_VER < 1930
3238 WCHAR wstr[
IP6_ADDRESS_STRING_BUFFER_LENGTH] = {
'1',
'2',
'7',
'.',
'0',
'.',
'0',
'.',
'1',
':',
'2',
'2',0};
3239 NET_ADDRESS_INFO
info;
3245 if (!pParseNetworkString)
3247 win_skip(
"ParseNetworkString not available\n");
3268 "%s gave error %ld\n", ipv4_address_tests[
i].
str,
ret);
3270 "%s gave format %d\n", ipv4_address_tests[
i].str,
info.Format);
3271 ok(
info.Ipv4Address.sin_addr.S_un.S_addr == (
ret ? 0x99999999 : ipv4_address_tests[
i].addr.S_un.S_addr),
3272 "%s gave address %d.%d.%d.%d\n", ipv4_address_tests[
i].str,
3273 info.Ipv4Address.sin_addr.S_un.S_un_b.s_b1,
info.Ipv4Address.sin_addr.S_un.S_un_b.s_b2,
3274 info.Ipv4Address.sin_addr.S_un.S_un_b.s_b3,
info.Ipv4Address.sin_addr.S_un.S_un_b.s_b4);
3275 ok(
info.Ipv4Address.sin_port == (
ret ? 0x9999 : 0),
3276 "%s gave port %d\n", ipv4_service_tests[
i].str,
ntohs(
info.Ipv4Address.sin_port));
3278 "%s gave port %d\n", ipv4_service_tests[
i].
str,
port);
3279 ok(prefix_len == (
ret ? 0x99 : 255),
3280 "%s gave prefix length %d\n", ipv4_service_tests[
i].
str, prefix_len);
3294 "%s gave error %ld\n", ipv4_service_tests[
i].
str,
ret);
3296 "%s gave format %d\n", ipv4_address_tests[
i].str,
info.Format);
3297 ok(
info.Ipv4Address.sin_addr.S_un.S_addr == (
ret ? 0x99999999 : ipv4_service_tests[
i].addr.S_un.S_addr),
3298 "%s gave address %d.%d.%d.%d\n", ipv4_service_tests[
i].str,
3299 info.Ipv4Address.sin_addr.S_un.S_un_b.s_b1,
info.Ipv4Address.sin_addr.S_un.S_un_b.s_b2,
3300 info.Ipv4Address.sin_addr.S_un.S_un_b.s_b3,
info.Ipv4Address.sin_addr.S_un.S_un_b.s_b4);
3301 ok(
ntohs(
info.Ipv4Address.sin_port) == (
ret ? 0x9999 : ipv4_service_tests[
i].port),
3302 "%s gave port %d\n", ipv4_service_tests[
i].str,
ntohs(
info.Ipv4Address.sin_port));
3304 "%s gave port %d\n", ipv4_service_tests[
i].
str,
port);
3305 ok(prefix_len == (
ret ? 0x99 : 255),
3306 "%s gave prefix length %d\n", ipv4_service_tests[
i].
str, prefix_len);
3315 *callback_called =
TRUE;
3319 ok(!
row,
"Unexpected row %p.\n",
row);
3324 BOOL callback_called;
3328 if (!pNotifyUnicastIpAddressChange)
3330 win_skip(
"NotifyUnicastIpAddressChange not available.\n");
3334 callback_called =
FALSE;
3338 ok(callback_called,
"Callback was not called.\n");
3352#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
3354 skip(
"Missing APIs!\n");
3362 ok( !
strcmp( bufA,
"{0000000A-000B-000C-0D00-0E0F00000000}" ),
"got %s\n", bufA );
3368 ok( !
wcscmp( bufW,
L"{0000000A-000B-000C-0D00-0E0F00000000}" ),
"got %s\n",
debugstr_w( bufW ) );
3382#if defined(__REACTOS__) && (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
3384 skip(
"Missing APIs!\n");
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
static unsigned char bytes[4]
static const WCHAR nameW[]
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
#define ERROR_INVALID_PARAMETER
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
#define ERROR_NOT_SUPPORTED
#define HeapFree(x, y, z)
#define ERROR_INVALID_HANDLE
#define WideCharToMultiByte
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
#define ERROR_INVALID_NAME
BOOL WINAPI IcmpCloseHandle(_In_ HANDLE IcmpHandle)
DWORD WINAPI IcmpParseReplies(_In_ LPVOID ReplyBuffer, _In_ DWORD ReplySize)
DWORD WINAPI IcmpSendEcho2(_In_ HANDLE IcmpHandle, _In_opt_ HANDLE Event, _In_opt_ PIO_APC_ROUTINE ApcRoutine, _In_opt_ PVOID ApcContext, _In_ IPAddr DestinationAddress, _In_ LPVOID RequestData, _In_ WORD RequestSize, _In_opt_ PIP_OPTION_INFORMATION RequestOptions, _Out_ LPVOID ReplyBuffer, _In_ DWORD ReplySize, _In_ DWORD Timeout)
HANDLE WINAPI IcmpCreateFile(void)
DWORD WINAPI IcmpSendEcho(_In_ HANDLE IcmpHandle, _In_ IPAddr DestinationAddress, _In_ LPVOID RequestData, _In_ WORD RequestSize, _In_opt_ PIP_OPTION_INFORMATION RequestOptions, _Out_ LPVOID ReplyBuffer, _In_ DWORD ReplySize, _In_ DWORD Timeout)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
DWORD WINAPI GetVersion(void)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
static IP_ADAPTER_ADDRESSES * get_adapters(void)
INT WINAPI WSAStartup(IN WORD wVersionRequested, OUT LPWSADATA lpWSAData)
GLuint GLuint GLsizei GLenum type
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum const GLvoid * addr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
UINT32 NET_IF_COMPARTMENT_ID
#define IF_MAX_STRING_SIZE
#define NET_IF_COMPARTMENT_ID_PRIMARY
#define MAX_INTERFACE_NAME_LEN
BOOL WINAPI GetOverlappedResult(IN HANDLE hFile, IN LPOVERLAPPED lpOverlapped, OUT LPDWORD lpNumberOfBytesTransferred, IN BOOL bWait)
#define IP_BAD_DESTINATION
struct icmp_echo_reply * PICMP_ECHO_REPLY
struct icmp_echo_reply ICMP_ECHO_REPLY
#define IP_GENERAL_FAILURE
static void test_interface_identifier_conversion_failure(void)
static void loadIPHlpApi(void)
static void test_GetExtendedTcpTable_owner(int family)
static const char * ntoa(DWORD ip)
static const PSOCKADDR_IN6
static void testGetBestInterfaceEx(void)
static const PSOCKADDR_IN6_PAIR ULONG *static ULONG *static NET_ADDRESS_INFO USHORT BYTE *static PUNICAST_IPADDRESS_CHANGE_CALLBACK
static void test_interface_identifier_conversion(void)
static DWORD CALLBACK testWin98Functions(void *p)
static void test_GetIfTable2Ex(void)
static void test_ConvertGuidToString(void)
static void convert_luid_to_name(NET_LUID *luid, WCHAR *expect_nameW, int len)
static void testGetIfTable(void)
static void test_NotifyUnicastIpAddressChange(void)
static void testGetTcpStatistics(void)
static void testNotifyAddrChange(void)
static void testWin98OnlyFunctions(void)
static void testGetUdpTable(void)
static const PSOCKADDR_IN6_PAIR ULONG *static ULONG *static NET_ADDRESS_INFO USHORT BYTE *static BOOLEAN
static void test_ConvertLengthToIpv4Mask(void)
static void test_GetAdaptersAddresses(void)
static void testGetInterfaceInfo(void)
static void test_GetExtendedTcpTable(void)
static void testSetTcpEntry(void)
static void test_GetUnicastIpAddressTable(void)
static void testGetNetworkParams(void)
static void test_GetExtendedUdpTable_owner(int family)
static void testIcmpSendEcho(void)
static void testGetTcpTable(void)
DWORD WINAPI ConvertGuidToStringW(const GUID *, WCHAR *, DWORD)
static void test_compartments(void)
static void testGetPerAdapterInfo(void)
static void testGetIpStatistics(void)
static void testGetIpStatisticsEx(void)
static void testGetBestRoute(void)
static void testIcmpParseReplies(void)
static void testGetIpForwardTable(void)
static void test_GetIfEntry2(void)
static DWORD get_extended_tcp_table(ULONG family, TCP_TABLE_CLASS class, void **table)
static void testGetIcmpStatistics(void)
static void test_ParseNetworkString(void)
static const PSOCKADDR_IN6_PAIR ULONG *static ULONG *static NET_ADDRESS_INFO USHORT BYTE *static PVOID
static void testGetUdpStatistics(void)
static void testGetIpNetTable(void)
static MIB_UNICASTIPADDRESS_TABLE **static TCP_TABLE_CLASS
static void WINAPI icmp_send_echo_test_apc(void *context, IO_STATUS_BLOCK *io_status, ULONG reserved)
static void testGetAdaptersInfo(void)
DWORD WINAPI ConvertStringToGuidW(const WCHAR *, GUID *)
static void testGetIpAddrTable(void)
static void testGetIcmpStatisticsEx(void)
static void test_GetTcp6Table(void)
static void WINAPI icmp_send_echo_test_apc_xp(void *context)
static void test_GetExtendedUdpTable(void)
static void freeIPHlpApi(void)
static void test_CreateSortedAddressPairs(void)
static DWORD ipv4_addr(BYTE b1, BYTE b2, BYTE b3, BYTE b4)
static void test_GetUdp6Table(void)
static BOOL icmp_send_echo_test_apc_expect
static MIB_UNICASTIPADDRESS_TABLE **static ULONG
static void testGetBestInterface(void)
static void testGetIfEntry(DWORD index)
static DWORD get_extended_udp_table(ULONG family, UDP_TABLE_CLASS class, void **table)
static void testGetTcpStatisticsEx(void)
static void testGetNumberOfInterfaces(void)
static const char * ntoa6(IN6_ADDR *ip)
static void testWinNT4Functions(void)
static void test_GetUnicastIpAddressEntry(void)
static void test_AllocateAndGetTcpExTableFromStack(void)
static DWORD get_interface_index(void)
static void testWin2KFunctions(void)
DWORD WINAPI ConvertGuidToStringA(const GUID *, char *, DWORD)
static void WINAPI test_ipaddtess_change_callback(PVOID context, PMIB_UNICASTIPADDRESS_ROW row, MIB_NOTIFICATION_TYPE notification_type)
static void test_GetIfTable2(void)
static void testGetUdpStatisticsEx(void)
DWORD WINAPI NotifyAddrChange(PHANDLE Handle, LPOVERLAPPED overlapped)
DWORD WINAPI SetTcpEntry(PMIB_TCPROW pTcpRow)
DWORD WINAPI GetBestInterfaceEx(struct sockaddr *pDestAddr, PDWORD pdwBestIfIndex)
DWORD WINAPI GetBestInterface(IPAddr dwDestAddr, PDWORD pdwBestIfIndex)
DWORD WINAPI GetIcmpStatisticsEx(PMIB_ICMP_EX pStats, DWORD dwFamily)
DWORD WINAPI GetIfTable(PMIB_IFTABLE pIfTable, PULONG pdwSize, BOOL bOrder)
DWORD WINAPI GetIpForwardTable(PMIB_IPFORWARDTABLE pIpForwardTable, PULONG pdwSize, BOOL bOrder)
DWORD WINAPI GetIpStatistics(PMIB_IPSTATS pStats)
DWORD WINAPI GetIpNetTable(PMIB_IPNETTABLE pIpNetTable, PULONG pdwSize, BOOL bOrder)
DWORD WINAPI GetIfEntry(PMIB_IFROW pIfRow)
DWORD WINAPI GetIcmpStatistics(PMIB_ICMP pStats)
DWORD WINAPI GetInterfaceInfo(PIP_INTERFACE_INFO pIfTable, PULONG dwOutBufLen)
DWORD WINAPI GetNetworkParams(PFIXED_INFO pFixedInfo, PULONG pOutBufLen)
DWORD WINAPI GetTcpStatisticsEx(PMIB_TCPSTATS pStats, DWORD dwFamily)
DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen)
BOOL WINAPI CancelIPChangeNotify(LPOVERLAPPED notifyOverlapped)
DWORD WINAPI GetPerAdapterInfo(ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen)
DWORD WINAPI GetUdpStatistics(PMIB_UDPSTATS pStats)
DWORD WINAPI GetUdpStatisticsEx(PMIB_UDPSTATS pStats, DWORD dwFamily)
DWORD WINAPI GetIpAddrTable(PMIB_IPADDRTABLE pIpAddrTable, PULONG pdwSize, BOOL bOrder)
DWORD WINAPI GetBestRoute(DWORD dwDestAddr, DWORD dwSourceAddr, PMIB_IPFORWARDROW pBestRoute)
DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS pStats)
DWORD WINAPI GetUdpTable(PMIB_UDPTABLE pUdpTable, PDWORD pdwSize, BOOL bOrder)
DWORD WINAPI GetNumberOfInterfaces(PDWORD pdwNumIf)
DWORD WINAPI GetTcpTable(PMIB_TCPTABLE pTcpTable, PDWORD pdwSize, BOOL bOrder)
DWORD WINAPI GetAdapterIndex(LPWSTR AdapterName, PULONG IfIndex)
DWORD WINAPI GetIpStatisticsEx(PMIB_IPSTATS pStats, DWORD dwFamily)
#define GAA_FLAG_SKIP_FRIENDLY_NAME
#define MIB_IF_TYPE_LOOPBACK
#define IF_TYPE_IEEE80211
#define IF_TYPE_ISO88025_TOKENRING
#define IF_TYPE_SOFTWARE_LOOPBACK
#define IF_TYPE_ETHERNET_CSMACD
@ MIB_IPROUTE_TYPE_DIRECT
@ MIB_IPROUTE_TYPE_INDIRECT
enum _TCP_TABLE_CLASS TCP_TABLE_CLASS
@ TCP_TABLE_BASIC_LISTENER
@ TCP_TABLE_OWNER_MODULE_ALL
@ TCP_TABLE_OWNER_PID_LISTENER
@ TCP_TABLE_OWNER_PID_ALL
@ TCP_TABLE_OWNER_MODULE_LISTENER
enum _UDP_TABLE_CLASS UDP_TABLE_CLASS
#define IN6ADDR_LOOPBACK_INIT
#define IN6_IS_ADDR_LOOPBACK(a)
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl winetest_push_context(const char *fmt,...) __WINE_PRINTF_ATTR(1
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl void winetest_pop_context(void)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static CRYPT_DATA_BLOB b4
static CRYPT_DATA_BLOB b3[]
static CRYPT_DATA_BLOB b2[]
static CRYPT_DATA_BLOB b1[]
static HANDLE PIO_APC_ROUTINE void PIO_STATUS_BLOCK io_status
static HANDLE PIO_APC_ROUTINE apc
VOID(* PIO_APC_ROUTINE)(IN PVOID ApcContext, IN PIO_STATUS_BLOCK IoStatusBlock, IN ULONG Reserved)
#define IsEqualGUID(rguid1, rguid2)
@ MIB_TCP_STATE_DELETE_TCB
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
static __inline const char * wine_dbgstr_guid(const GUID *id)
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED * overlapped
INT WSAAPI getsockname(IN SOCKET s, OUT LPSOCKADDR name, IN OUT INT FAR *namelen)
INT WSAAPI listen(IN SOCKET s, IN INT backlog)
INT WSAAPI bind(IN SOCKET s, IN CONST struct sockaddr *name, IN INT namelen)
SOCKET WSAAPI socket(IN INT af, IN INT type, IN INT protocol)
MIBICMPSTATS icmpOutStats
MIBICMPSTATS_EX icmpOutStats
MIBICMPSTATS_EX icmpInStats
NET_IFINDEX InterfaceIndex
WCHAR Description[IF_MAX_STRING_SIZE+1]
NL_ROUTE_PROTOCOL Protocol
NET_IFINDEX InterfaceIndex
IP_ADDRESS_PREFIX DestinationPrefix
MIB_IPFORWARD_ROW2 Table[ANY_SIZE]
MIB_IPNET_ROW2 Table[ANY_SIZE]
MIB_TCPROW_OWNER_PID table[1]
MIB_UNICASTIPADDRESS_ROW Table[1]
IP_OPTION_INFORMATION Options
ADDRESS_FAMILY sin6_family
DWORD WINAPI SleepEx(IN DWORD dwMilliseconds, IN BOOL bAlertable)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
DWORD WINAPI WaitForSingleObjectEx(IN HANDLE hHandle, IN DWORD dwMilliseconds, IN BOOL bAlertable)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
Character const *const prefix
struct _NET_LUID_LH::@3183 Info
#define success(from, fromstr, to, tostr)
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentProcessId(void)
#define NET_STRING_IPV4_SERVICE
@ NET_ADDRESS_FORMAT_UNSPECIFIED
#define NET_STRING_IPV4_ADDRESS
IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetUnicastIpAddressTable(ADDRESS_FAMILY, MIB_UNICASTIPADDRESS_TABLE **)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceLuidToGuid(const NET_LUID *, GUID *)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIpForwardTable2(ADDRESS_FAMILY, MIB_IPFORWARD_TABLE2 **)
enum _MIB_IF_TABLE_LEVEL MIB_IF_TABLE_LEVEL
IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceNameToLuidA(const char *, NET_LUID *)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIfTable2(MIB_IF_TABLE2 **)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceLuidToIndex(const NET_LUID *, NET_IFINDEX *)
IPHLPAPI_DLL_LINKAGE void WINAPI FreeMibTable(void *)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceLuidToNameA(const NET_LUID *, char *, SIZE_T)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertLengthToIpv4Mask(ULONG, ULONG *)
@ MibIfTableNormalWithoutStatistics
IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceLuidToNameW(const NET_LUID *, WCHAR *, SIZE_T)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceAliasToLuid(const WCHAR *, NET_LUID *)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIpNetTable2(ADDRESS_FAMILY, MIB_IPNET_TABLE2 **)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceNameToLuidW(const WCHAR *, NET_LUID *)
struct _MIB_IF_ROW2 * PMIB_IF_ROW2
IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceIndexToLuid(NET_IFINDEX, NET_LUID *)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIfTable2Ex(MIB_IF_TABLE_LEVEL, MIB_IF_TABLE2 **)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceLuidToAlias(const NET_LUID *, WCHAR *, SIZE_T)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIfEntry2(MIB_IF_ROW2 *)
enum _MIB_NOTIFICATION_TYPE MIB_NOTIFICATION_TYPE
IPHLPAPI_DLL_LINKAGE NET_IFINDEX WINAPI if_nametoindex(PCSTR)
IPHLPAPI_DLL_LINKAGE PCHAR WINAPI if_indextoname(NET_IFINDEX, PCHAR)
IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceGuidToLuid(const GUID *, NET_LUID *)
IPHLPAPI_DLL_LINKAGE NET_IF_COMPARTMENT_ID WINAPI GetCurrentThreadCompartmentId(void)
struct _MIB_TCP6TABLE * PMIB_TCP6TABLE
struct _MIB_UDP6TABLE * PMIB_UDP6TABLE
#define IP6_ADDRESS_STRING_BUFFER_LENGTH
#define ERROR_BUFFER_OVERFLOW
#define ERROR_IO_INCOMPLETE
#define ERROR_MR_MID_NOT_FOUND
#define ERROR_OPERATION_ABORTED
#define ERROR_NETWORK_ACCESS_DENIED
#define ERROR_INVALID_DATA
#define ERROR_INVALID_NETNAME
int PASCAL FAR WSAGetLastError(void)
int PASCAL FAR WSACleanup(void)
CONST IN6_ADDR in6addr_loopback
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Out_ PPHYSICAL_ADDRESS DestinationAddress
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS SourceAddress