2 * PROJECT: ReactOS API Tests
3 * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory
4 * PURPOSE: Tests for ICMP functions
5 * PROGRAMMERS: Tim Crawford
15 test_IcmpCreateFile(void)
19 SetLastError(0xDEADBEEF);
20 hIcmp
= IcmpCreateFile();
21 ok(hIcmp
!= INVALID_HANDLE_VALUE
, "IcmpCreateFile failed unexpectedly: %lu\n", GetLastError());
23 if (hIcmp
!= INVALID_HANDLE_VALUE
)
24 IcmpCloseHandle(hIcmp
);
29 test_Icmp6CreateFile(void)
33 SetLastError(0xDEADBEEF);
34 hIcmp
= Icmp6CreateFile();
36 if (GetLastError() == ERROR_FILE_NOT_FOUND
)
38 /* On Windows Server 2003, the IPv6 protocol must be installed. */
39 skip("IPv6 is not available.\n");
43 ok(hIcmp
!= INVALID_HANDLE_VALUE
, "Icmp6CreateFile failed unexpectedly: %lu\n", GetLastError());
45 if (hIcmp
!= INVALID_HANDLE_VALUE
)
46 IcmpCloseHandle(hIcmp
);
51 test_IcmpCloseHandle(void)
56 SetLastError(0xDEADBEEF);
57 hIcmp
= IcmpCreateFile();
58 if (hIcmp
!= INVALID_HANDLE_VALUE
)
60 bRet
= IcmpCloseHandle(hIcmp
);
61 ok(bRet
, "IcmpCloseHandle failed unexpectedly: %lu\n", GetLastError());
64 SetLastError(0xDEADBEEF);
65 hIcmp
= Icmp6CreateFile();
66 if (hIcmp
!= INVALID_HANDLE_VALUE
)
68 bRet
= IcmpCloseHandle(hIcmp
);
69 ok(bRet
, "IcmpCloseHandle failed unexpectedly: %lu\n", GetLastError());
72 hIcmp
= INVALID_HANDLE_VALUE
;
73 SetLastError(0xDEADBEEF);
74 bRet
= IcmpCloseHandle(hIcmp
);
75 ok(!bRet
, "IcmpCloseHandle succeeded unexpectedly\n");
76 ok_err(ERROR_INVALID_HANDLE
);
79 SetLastError(0xDEADBEEF);
80 bRet
= IcmpCloseHandle(hIcmp
);
81 ok(!bRet
, "IcmpCloseHandle succeeded unexpectedly\n");
82 ok_err(ERROR_INVALID_HANDLE
);
87 test_IcmpSendEcho(void)
90 unsigned long ipaddr
= INADDR_NONE
;
91 DWORD bRet
= 0, error
= 0;
92 char SendData
[32] = "Data Buffer";
96 SetLastError(0xDEADBEEF);
97 hIcmp
= IcmpCreateFile();
98 if (hIcmp
== INVALID_HANDLE_VALUE
)
100 skip("IcmpCreateFile failed unexpectedly: %lu\n", GetLastError());
104 ipaddr
= 0x08080808; // 8.8.8.8
105 ReplyBuffer
= malloc(sizeof(ICMP_ECHO_REPLY
) + sizeof(SendData
));
107 ReplySize
= sizeof(ICMP_ECHO_REPLY
);
108 SetLastError(0xDEADBEEF);
109 bRet
= IcmpSendEcho(hIcmp
, ipaddr
, SendData
, sizeof(SendData
),
110 NULL
, ReplyBuffer
, ReplySize
, 5000);
112 ok(!bRet
, "IcmpSendEcho succeeded unexpectedly\n");
113 error
= GetLastError();
114 ok(error
== IP_BUF_TOO_SMALL
/* Win2003 */ ||
115 error
== IP_GENERAL_FAILURE
/* Win10 */,
116 "IcmpSendEcho returned unexpected error: %lu\n", error
);
118 ReplySize
= sizeof(ICMP_ECHO_REPLY
) + sizeof(SendData
);
119 SetLastError(0xDEADBEEF);
120 bRet
= IcmpSendEcho(hIcmp
, ipaddr
, SendData
, sizeof(SendData
),
121 NULL
, ReplyBuffer
, ReplySize
, 5000);
123 ok(bRet
, "IcmpSendEcho failed unexpectedly: %lu\n", GetLastError());
126 IcmpCloseHandle(hIcmp
);
131 test_IcmpCreateFile();
132 test_Icmp6CreateFile();
133 test_IcmpCloseHandle();