diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-08-20 12:48:22 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-08-20 12:48:22 +0000 |
commit | f340371e37421aa85f8cc779b22a8d0c2ab85c4b (patch) | |
tree | 65c50214f718a24d83faa3dcd4bface28cb1cb98 /src/transport/gnunet-nat-server-windows.c | |
parent | 08218233023e3fd043ab89b9db69538b6f6955fb (diff) | |
download | gnunet-f340371e37421aa85f8cc779b22a8d0c2ab85c4b.tar.gz gnunet-f340371e37421aa85f8cc779b22a8d0c2ab85c4b.zip |
code cleanup
Diffstat (limited to 'src/transport/gnunet-nat-server-windows.c')
-rw-r--r-- | src/transport/gnunet-nat-server-windows.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/transport/gnunet-nat-server-windows.c b/src/transport/gnunet-nat-server-windows.c index a312fa2ca..7dee15296 100644 --- a/src/transport/gnunet-nat-server-windows.c +++ b/src/transport/gnunet-nat-server-windows.c | |||
@@ -141,8 +141,11 @@ struct ip_packet | |||
141 | struct icmp_packet | 141 | struct icmp_packet |
142 | { | 142 | { |
143 | uint8_t type; | 143 | uint8_t type; |
144 | |||
144 | uint8_t code; | 145 | uint8_t code; |
146 | |||
145 | uint16_t checksum; | 147 | uint16_t checksum; |
148 | |||
146 | uint32_t reserved; | 149 | uint32_t reserved; |
147 | }; | 150 | }; |
148 | 151 | ||
@@ -158,14 +161,28 @@ struct udp_packet | |||
158 | uint32_t length; | 161 | uint32_t length; |
159 | }; | 162 | }; |
160 | 163 | ||
164 | /** | ||
165 | * Socket we use to receive "fake" ICMP replies. | ||
166 | */ | ||
161 | static SOCKET icmpsock; | 167 | static SOCKET icmpsock; |
162 | 168 | ||
169 | /** | ||
170 | * Socket we use to send our ICMP requests. | ||
171 | */ | ||
163 | static SOCKET rawsock; | 172 | static SOCKET rawsock; |
164 | 173 | ||
174 | /** | ||
175 | * Target "dummy" address. | ||
176 | */ | ||
165 | static struct in_addr dummy; | 177 | static struct in_addr dummy; |
166 | 178 | ||
179 | |||
167 | /** | 180 | /** |
168 | * CRC-16 for IP/ICMP headers. | 181 | * CRC-16 for IP/ICMP headers. |
182 | * | ||
183 | * @param data what to calculate the CRC over | ||
184 | * @param bytes number of bytes in data (must be multiple of 2) | ||
185 | * @return the CRC 16. | ||
169 | */ | 186 | */ |
170 | static uint16_t | 187 | static uint16_t |
171 | calc_checksum(const uint16_t *data, | 188 | calc_checksum(const uint16_t *data, |
@@ -182,12 +199,14 @@ calc_checksum(const uint16_t *data, | |||
182 | return sum; | 199 | return sum; |
183 | } | 200 | } |
184 | 201 | ||
202 | |||
185 | /** | 203 | /** |
186 | * Convert IPv4 address from text to binary form. | 204 | * Convert IPv4 address from text to binary form. |
187 | * | 205 | * |
188 | * @param af address family | 206 | * @param af address family |
189 | * @param cp the address to print | 207 | * @param cp the address to print |
190 | * @param buf where to write the address result | 208 | * @param buf where to write the address result |
209 | * @return 1 on success | ||
191 | */ | 210 | */ |
192 | static int | 211 | static int |
193 | inet_pton (int af, | 212 | inet_pton (int af, |
@@ -270,6 +289,9 @@ send_icmp_echo (const struct in_addr *my_ip) | |||
270 | } | 289 | } |
271 | 290 | ||
272 | 291 | ||
292 | /** | ||
293 | * We've received an ICMP response. Process it. | ||
294 | */ | ||
273 | static void | 295 | static void |
274 | process_icmp_response () | 296 | process_icmp_response () |
275 | { | 297 | { |
@@ -379,6 +401,9 @@ process_icmp_response () | |||
379 | } | 401 | } |
380 | 402 | ||
381 | 403 | ||
404 | /** | ||
405 | * Create an ICMP raw socket for reading. | ||
406 | */ | ||
382 | static SOCKET | 407 | static SOCKET |
383 | make_icmp_socket () | 408 | make_icmp_socket () |
384 | { | 409 | { |
@@ -396,6 +421,9 @@ make_icmp_socket () | |||
396 | } | 421 | } |
397 | 422 | ||
398 | 423 | ||
424 | /** | ||
425 | * Create an ICMP raw socket for writing. | ||
426 | */ | ||
399 | static SOCKET | 427 | static SOCKET |
400 | make_raw_socket () | 428 | make_raw_socket () |
401 | { | 429 | { |
@@ -498,10 +526,11 @@ main (int argc, | |||
498 | process_icmp_response (); | 526 | process_icmp_response (); |
499 | send_icmp_echo (&external); | 527 | send_icmp_echo (&external); |
500 | } | 528 | } |
529 | /* select failed (internal error or OS out of resources) */ | ||
501 | closesocket(icmpsock); | 530 | closesocket(icmpsock); |
502 | closesocket(rawsock); | 531 | closesocket(rawsock); |
503 | WSACleanup (); | 532 | WSACleanup (); |
504 | return 4; /* select failed! */ | 533 | return 4; |
505 | } | 534 | } |
506 | 535 | ||
507 | 536 | ||