diff options
author | Nathan S. Evans <evans@in.tum.de> | 2010-08-18 14:10:54 +0000 |
---|---|---|
committer | Nathan S. Evans <evans@in.tum.de> | 2010-08-18 14:10:54 +0000 |
commit | 63cef8ff47df8dd65d417d2ab84344fb678d3e6e (patch) | |
tree | 7efefe4d0c827065da2d43ad0fd9827d0f42c535 /src/transport/gnunet-nat-server-windows.c | |
parent | 9f6fdb87514a283813f240d2439851d72e24a44d (diff) | |
download | gnunet-63cef8ff47df8dd65d417d2ab84344fb678d3e6e.tar.gz gnunet-63cef8ff47df8dd65d417d2ab84344fb678d3e6e.zip |
windoze sucks
Diffstat (limited to 'src/transport/gnunet-nat-server-windows.c')
-rw-r--r-- | src/transport/gnunet-nat-server-windows.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/transport/gnunet-nat-server-windows.c b/src/transport/gnunet-nat-server-windows.c index 6f2529ebb..a093d341e 100644 --- a/src/transport/gnunet-nat-server-windows.c +++ b/src/transport/gnunet-nat-server-windows.c | |||
@@ -139,6 +139,26 @@ calc_checksum(const uint16_t *data, | |||
139 | return sum; | 139 | return sum; |
140 | } | 140 | } |
141 | 141 | ||
142 | #if WIN32 | ||
143 | /** | ||
144 | * @param af address family | ||
145 | * @param cp the address to print | ||
146 | * @param buf where to write the address result | ||
147 | */ | ||
148 | static int inet_pton (int af, const char *cp, void *buf) | ||
149 | { | ||
150 | int ret; | ||
151 | int ssize; | ||
152 | |||
153 | ssize = sizeof(buf); | ||
154 | ret = WSAStringToAddress (cp, af, NULL, (LPSOCKADDR)buf, &ssize); | ||
155 | |||
156 | if (retval == 0) | ||
157 | return 1; | ||
158 | else | ||
159 | return 0; | ||
160 | } | ||
161 | #endif | ||
142 | 162 | ||
143 | static void | 163 | static void |
144 | make_echo (const struct in_addr *src_ip, | 164 | make_echo (const struct in_addr *src_ip, |
@@ -292,12 +312,19 @@ process_icmp_response () | |||
292 | else if (have_udp) | 312 | else if (have_udp) |
293 | { | 313 | { |
294 | memcpy(&udp_pkt, &buf[off], sizeof(udp_pkt)); | 314 | memcpy(&udp_pkt, &buf[off], sizeof(udp_pkt)); |
315 | |||
316 | #ifdef WIN32 | ||
317 | DWORD ssize = sizeof(buf); | ||
318 | WSAAddressToString((LPSOCKADDR)&sip, sizeof(sip), NULL, buf, &ssize); | ||
319 | fprintf (stdout, "%s:%d\n", buf, ntohl(udp_pkt.length)); | ||
320 | #else | ||
295 | fprintf (stdout, | 321 | fprintf (stdout, |
296 | "%s:%d\n", | 322 | "%s:%d\n", |
297 | inet_ntop (AF_INET, | 323 | inet_ntop (AF_INET, |
298 | &sip, | 324 | &sip, |
299 | buf, | 325 | buf, |
300 | sizeof (buf)), ntohl(udp_pkt.length)); | 326 | sizeof (buf)), ntohl(udp_pkt.length)); |
327 | #endif | ||
301 | } | 328 | } |
302 | else | 329 | else |
303 | { | 330 | { |
@@ -406,6 +433,7 @@ main (int argc, char *const *argv) | |||
406 | "This program must be started with our (internal NAT) IP as the only argument.\n"); | 433 | "This program must be started with our (internal NAT) IP as the only argument.\n"); |
407 | return 1; | 434 | return 1; |
408 | } | 435 | } |
436 | |||
409 | if (1 != inet_pton (AF_INET, argv[1], &external)) | 437 | if (1 != inet_pton (AF_INET, argv[1], &external)) |
410 | { | 438 | { |
411 | fprintf (stderr, | 439 | fprintf (stderr, |
@@ -413,6 +441,7 @@ main (int argc, char *const *argv) | |||
413 | strerror (errno)); | 441 | strerror (errno)); |
414 | return 1; | 442 | return 1; |
415 | } | 443 | } |
444 | |||
416 | if (1 != inet_pton (AF_INET, DUMMY_IP, &dummy)) abort (); | 445 | if (1 != inet_pton (AF_INET, DUMMY_IP, &dummy)) abort (); |
417 | while (1) | 446 | while (1) |
418 | { | 447 | { |