Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141/* * PROJECT: ReactOS API Tests * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory * PURPOSE: Tests for ICMP functions * PROGRAMMERS: Tim Crawford */
#include <apitest.h>#include <ws2tcpip.h>#include <iphlpapi.h>#include <icmpapi.h>
staticvoidtest_IcmpCreateFile(void){ HANDLE hIcmp;
SetLastError(0xDEADBEEF); hIcmp = IcmpCreateFile(); ok(hIcmp != INVALID_HANDLE_VALUE, "IcmpCreateFile failed unexpectedly: %lu\n", GetLastError());
if (hIcmp != INVALID_HANDLE_VALUE) IcmpCloseHandle(hIcmp);}
staticvoidtest_Icmp6CreateFile(void){ HANDLE hIcmp;
SetLastError(0xDEADBEEF); hIcmp = Icmp6CreateFile();
if (GetLastError() == ERROR_FILE_NOT_FOUND) { /* On Windows Server 2003, the IPv6 protocol must be installed. */ skip("IPv6 is not available.\n"); return; }
ok(hIcmp != INVALID_HANDLE_VALUE, "Icmp6CreateFile failed unexpectedly: %lu\n", GetLastError());
if (hIcmp != INVALID_HANDLE_VALUE) IcmpCloseHandle(hIcmp);}
staticvoidtest_IcmpCloseHandle(void){ HANDLE hIcmp; BOOL bRet; DWORD LastError;
SetLastError(0xDEADBEEF); hIcmp = IcmpCreateFile(); if (hIcmp != INVALID_HANDLE_VALUE) { bRet = IcmpCloseHandle(hIcmp); ok(bRet, "IcmpCloseHandle failed unexpectedly: %lu\n", GetLastError()); }
SetLastError(0xDEADBEEF); hIcmp = Icmp6CreateFile(); if (hIcmp != INVALID_HANDLE_VALUE) { bRet = IcmpCloseHandle(hIcmp); ok(bRet, "IcmpCloseHandle failed unexpectedly: %lu\n", GetLastError()); }
hIcmp = INVALID_HANDLE_VALUE; SetLastError(0xDEADBEEF); bRet = IcmpCloseHandle(hIcmp); ok(!bRet, "IcmpCloseHandle succeeded unexpectedly\n"); LastError = GetLastError(); ok(LastError == ERROR_INVALID_HANDLE || LastError == ERROR_INVALID_PARAMETER, "Unexpected last error (0x%lX)\n", LastError);
hIcmp = NULL; SetLastError(0xDEADBEEF); bRet = IcmpCloseHandle(hIcmp); ok(!bRet, "IcmpCloseHandle succeeded unexpectedly\n"); LastError = GetLastError(); ok(LastError == ERROR_INVALID_HANDLE || LastError == ERROR_INVALID_PARAMETER, "Unexpected last error (0x%lX)\n", LastError);}
staticvoidtest_IcmpSendEcho(void){ HANDLE hIcmp; unsigned long ipaddr = INADDR_NONE; DWORD bRet = 0, error = 0; char SendData[32] = "Data Buffer"; PVOID ReplyBuffer; DWORD ReplySize = 0;
SetLastError(0xDEADBEEF); hIcmp = IcmpCreateFile(); if (hIcmp == INVALID_HANDLE_VALUE) { skip("IcmpCreateFile failed unexpectedly: %lu\n", GetLastError()); return; }
ipaddr = 0x08080808; // 8.8.8.8 ReplyBuffer = malloc(sizeof(ICMP_ECHO_REPLY) + sizeof(SendData));
ReplySize = sizeof(ICMP_ECHO_REPLY); SetLastError(0xDEADBEEF); bRet = IcmpSendEcho(hIcmp, ipaddr, SendData, sizeof(SendData), NULL, ReplyBuffer, ReplySize, 5000);
ok(!bRet, "IcmpSendEcho succeeded unexpectedly\n"); error = GetLastError(); ok(error == IP_BUF_TOO_SMALL /* Win2003 */ || error == IP_GENERAL_FAILURE /* Win10 */, "IcmpSendEcho returned unexpected error: %lu\n", error);
ReplySize = sizeof(ICMP_ECHO_REPLY) + sizeof(SendData); SetLastError(0xDEADBEEF); bRet = IcmpSendEcho(hIcmp, ipaddr, SendData, sizeof(SendData), NULL, ReplyBuffer, ReplySize, 5000);
ok(bRet, "IcmpSendEcho failed unexpectedly: %lu\n", GetLastError());
free(ReplyBuffer); IcmpCloseHandle(hIcmp);}
START_TEST(icmp){ test_IcmpCreateFile(); test_Icmp6CreateFile(); test_IcmpCloseHandle(); test_IcmpSendEcho();}