2 * PROJECT: ReactOS kernel-mode tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: User mode part of the TcpIp.sys test suite
5 * PROGRAMMER: Jérôme Gardou <jerome.gardou@reactos.org>
15 LoadTcpIpTestDriver(void)
17 /* Start the special-purpose driver */
18 KmtLoadDriver(L
"TcpIp", FALSE
);
24 UnloadTcpIpTestDriver(void)
26 /* Stop the driver. */
33 LoadTcpIpTestDriver();
35 ok(KmtSendToDriver(IOCTL_TEST_TDI
) == ERROR_SUCCESS
, "\n");
37 UnloadTcpIpTestDriver();
44 _In_ LPVOID Parameter
)
49 SOCKET ListenSocket
, AcceptSocket
;
50 struct sockaddr_in ListenAddress
, AcceptAddress
;
51 int AcceptAddressLength
;
52 HANDLE ReadyToConnectEvent
= (HANDLE
)Parameter
;
54 /* Initialize winsock */
55 WinsockVersion
= MAKEWORD(2, 0);
56 Error
= WSAStartup(WinsockVersion
, &WsaData
);
59 ListenSocket
= socket(AF_INET
, SOCK_STREAM
, IPPROTO_TCP
);
60 ok_bool_true(ListenSocket
!= INVALID_SOCKET
, "socket failed");
62 ZeroMemory(&ListenAddress
, sizeof(ListenAddress
));
63 ListenAddress
.sin_addr
.S_un
.S_addr
= inet_addr("127.0.0.1");
64 ListenAddress
.sin_port
= htons(TEST_CONNECT_SERVER_PORT
);
65 ListenAddress
.sin_family
= AF_INET
;
67 Error
= bind(ListenSocket
, (struct sockaddr
*)&ListenAddress
, sizeof(ListenAddress
));
70 Error
= listen(ListenSocket
, 1);
73 SetEvent(ReadyToConnectEvent
);
75 AcceptAddressLength
= sizeof(AcceptAddress
);
76 AcceptSocket
= accept(ListenSocket
, (struct sockaddr
*)&AcceptAddress
, &AcceptAddressLength
);
77 ok(AcceptSocket
!= INVALID_SOCKET
, "\n");
78 ok_eq_long(AcceptAddressLength
, sizeof(AcceptAddress
));
79 ok_eq_hex(AcceptAddress
.sin_addr
.S_un
.S_addr
, inet_addr("127.0.0.1"));
80 ok_eq_hex(AcceptAddress
.sin_port
, ntohs(TEST_CONNECT_CLIENT_PORT
));
85 START_TEST(TcpIpConnect
)
88 HANDLE ReadyToConnectEvent
;
90 ReadyToConnectEvent
= CreateEvent(NULL
, TRUE
, FALSE
, NULL
);
91 ok(ReadyToConnectEvent
!= NULL
, "\n");
93 AcceptThread
= CreateThread(NULL
, 0, AcceptProc
, (PVOID
)ReadyToConnectEvent
, 0, NULL
);
94 ok(AcceptThread
!= NULL
, "");
96 WaitForSingleObject(ReadyToConnectEvent
, INFINITE
);
98 LoadTcpIpTestDriver();
100 ok(KmtSendToDriver(IOCTL_TEST_CONNECT
) == ERROR_SUCCESS
, "\n");
102 WaitForSingleObject(AcceptThread
, INFINITE
);
104 UnloadTcpIpTestDriver();