18{
25
28
32
36
40
41 Size =
sizeof(IP_ADAPTER_ADDRESSES);
43 if (!Addresses)
44 {
45 skip(
"Memory failure\n");
46 return;
47 }
48
51 {
54 if (!Addresses)
55 {
56 skip(
"Memory failure\n");
57 return;
58 }
59
61 }
62
64 {
65 skip(
"GetAdaptersAddresses() failure\n");
67 return;
68 }
69
70 for (Current = Addresses; Current; Current = Current->Next)
71 {
74
76 continue;
77
79 continue;
80
81 if (!Current->FirstUnicastAddress)
82 continue;
83
84 ok(Current->FirstUnicastAddress->Address.iSockaddrLength ==
sizeof(
SOCKADDR_IN),
"Unexpected length: %u\n", Current->FirstUnicastAddress->Address.iSockaddrLength);
85 SockAddr = (
PSOCKADDR_IN)Current->FirstUnicastAddress->Address.lpSockaddr;
86 IpAddr = SockAddr->
sin_addr.S_un.S_addr;
87
88 trace(
"IP address found: %lu.%lu.%lu.%lu\n", IpAddr & 0xFF, (IpAddr >> 8) & 0xFF, (IpAddr >> 16) & 0xFF, (IpAddr >> 24) & 0xFF);
89
93
96 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
97
100 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
102 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
103
107
110 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
111
114 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
115
118 break;
119 }
120
122
123 if (!Tested)
124 {
125 skip(
"No suitable interface found\n");
126 return;
127 }
128
131 if (!Adapters)
132 {
133 skip(
"Memory failure\n");
134 return;
135 }
136
139 {
142 if (!Adapters)
143 {
144 skip(
"Memory failure\n");
145 return;
146 }
147
149 }
150
152 {
153 skip(
"GetAdaptersInfo() failure\n");
155 return;
156 }
157
159 for (CurrentA = Adapters; CurrentA; CurrentA = CurrentA->
Next)
160 {
163 const CHAR * Terminator;
164
167 continue;
168
170 continue;
171
174 {
175 trace(
"Gateway found: %lu.%lu.%lu.%lu\n", IpAddr & 0xFF, (IpAddr >> 8) & 0xFF, (IpAddr >> 16) & 0xFF, (IpAddr >> 24) & 0xFF);
177 *Gateway = IpAddr;
178 }
179
180 break;
181 }
182
184
185 if (!Tested)
186 {
187 skip(
"No suitable gateway found\n");
188 return;
189 }
190
194
197 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
198
201 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
202
206
209 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
210
213 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
214
218
221 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
222
225 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
226
230
233 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
234
237 ok(Err ==
ERROR_SUCCESS,
"Expected error: ERROR_SUCCESS. Got: %lx\n", Err);
238}
#define ERROR_INVALID_PARAMETER
static PIP_ADAPTER_ADDRESSES
DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen)
DWORD WINAPI SendARP(IPAddr DestIP, IPAddr SrcIP, PULONG pMacAddr, PULONG PhyAddrLen)
#define GAA_FLAG_SKIP_FRIENDLY_NAME
#define IF_TYPE_SOFTWARE_LOOPBACK
struct _IP_ADAPTER_INFO IP_ADAPTER_INFO
struct _IP_ADAPTER_INFO * PIP_ADAPTER_INFO
NTSYSAPI NTSTATUS NTAPI RtlIpv4StringToAddressA(_In_ PCSTR String, _In_ BOOLEAN Strict, _Out_ PCSTR *Terminator, _Out_ struct in_addr *Addr)
IP_ADDR_STRING IpAddressList
IP_ADDR_STRING GatewayList
struct _IP_ADAPTER_INFO * Next
IP_ADDRESS_STRING IpAddress
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
#define ERROR_BUFFER_OVERFLOW
#define ERROR_GEN_FAILURE
#define ERROR_NO_SYSTEM_RESOURCES
struct sockaddr_in * PSOCKADDR_IN