diff options
author | Nathan S. Evans <evans@in.tum.de> | 2010-08-19 09:45:52 +0000 |
---|---|---|
committer | Nathan S. Evans <evans@in.tum.de> | 2010-08-19 09:45:52 +0000 |
commit | 0e607261948b9b3f48d12bcfaa2b26a91a0048a6 (patch) | |
tree | 81472941062a5c10c17a4c659a11b917ea0cf534 /src/transport/gnunet-nat-server-windows.c | |
parent | 8258c5eca20e23093a7783a65d81f326c6c95422 (diff) | |
download | gnunet-0e607261948b9b3f48d12bcfaa2b26a91a0048a6.tar.gz gnunet-0e607261948b9b3f48d12bcfaa2b26a91a0048a6.zip |
windoze suckssss
Diffstat (limited to 'src/transport/gnunet-nat-server-windows.c')
-rw-r--r-- | src/transport/gnunet-nat-server-windows.c | 63 |
1 files changed, 4 insertions, 59 deletions
diff --git a/src/transport/gnunet-nat-server-windows.c b/src/transport/gnunet-nat-server-windows.c index 9f867144f..4c613c0c5 100644 --- a/src/transport/gnunet-nat-server-windows.c +++ b/src/transport/gnunet-nat-server-windows.c | |||
@@ -41,17 +41,9 @@ | |||
41 | */ | 41 | */ |
42 | #define _GNU_SOURCE | 42 | #define _GNU_SOURCE |
43 | 43 | ||
44 | #ifdef WIN32 | 44 | |
45 | #include <winsock2.h> | 45 | #include <winsock2.h> |
46 | #else | 46 | #include <ws2tcpip.h> |
47 | #include <sys/types.h> | ||
48 | #include <sys/socket.h> | ||
49 | #include <arpa/inet.h> | ||
50 | #include <sys/select.h> | ||
51 | #include <netinet/ip.h> | ||
52 | #include <netinet/ip_icmp.h> | ||
53 | #include <netinet/in.h> | ||
54 | #endif | ||
55 | #include <sys/time.h> | 47 | #include <sys/time.h> |
56 | #include <sys/types.h> | 48 | #include <sys/types.h> |
57 | #include <unistd.h> | 49 | #include <unistd.h> |
@@ -62,15 +54,9 @@ | |||
62 | #include <stdint.h> | 54 | #include <stdint.h> |
63 | #include <time.h> | 55 | #include <time.h> |
64 | 56 | ||
65 | |||
66 | #ifdef WIN32 | ||
67 | typedef unsigned int uid_t; | 57 | typedef unsigned int uid_t; |
68 | typedef SOCKET Socket; | 58 | typedef SOCKET Socket; |
69 | typedef unsigned short ushort; | 59 | typedef unsigned short ushort; |
70 | #define ICMP_ECHO 8 | ||
71 | #define IPDEFTTL 64 /* default ttl, from RFC 1340 */ | ||
72 | #define ICMP_TIME_EXCEEDED 11 /* Time Exceeded */ | ||
73 | #endif | ||
74 | 60 | ||
75 | /** | 61 | /** |
76 | * Must match IP given in the client. | 62 | * Must match IP given in the client. |
@@ -147,7 +133,6 @@ calc_checksum(const uint16_t *data, | |||
147 | return sum; | 133 | return sum; |
148 | } | 134 | } |
149 | 135 | ||
150 | #if WIN32 | ||
151 | /** | 136 | /** |
152 | * @param af address family | 137 | * @param af address family |
153 | * @param cp the address to print | 138 | * @param cp the address to print |
@@ -165,7 +150,6 @@ static int inet_pton (int af, char *cp, struct in_addr *buf) | |||
165 | else | 150 | else |
166 | return 1; | 151 | return 1; |
167 | } | 152 | } |
168 | #endif | ||
169 | 153 | ||
170 | static void | 154 | static void |
171 | make_echo (const struct in_addr *src_ip, | 155 | make_echo (const struct in_addr *src_ip, |
@@ -307,49 +291,23 @@ process_icmp_response () | |||
307 | { | 291 | { |
308 | memcpy(&port, &buf[sizeof (struct ip_packet) *2 + sizeof (struct icmp_packet) * 2], sizeof(uint32_t)); | 292 | memcpy(&port, &buf[sizeof (struct ip_packet) *2 + sizeof (struct icmp_packet) * 2], sizeof(uint32_t)); |
309 | port = ntohs(port); | 293 | port = ntohs(port); |
310 | #ifdef WIN32 | ||
311 | DWORD ssize = sizeof(buf); | 294 | DWORD ssize = sizeof(buf); |
312 | WSAAddressToString((LPSOCKADDR)&sip, sizeof(sip), NULL, buf, &ssize); | 295 | WSAAddressToString((LPSOCKADDR)&sip, sizeof(sip), NULL, buf, &ssize); |
313 | fprintf (stdout, "%s:%d\n", buf, port); | 296 | fprintf (stdout, "%s:%d\n", buf, port); |
314 | #else | 297 | |
315 | fprintf (stdout, | ||
316 | "%s:%d\n", | ||
317 | inet_ntop (AF_INET, | ||
318 | &sip, | ||
319 | buf, | ||
320 | sizeof (buf)), port); | ||
321 | #endif | ||
322 | } | 298 | } |
323 | else if (have_udp) | 299 | else if (have_udp) |
324 | { | 300 | { |
325 | memcpy(&udp_pkt, &buf[off], sizeof(udp_pkt)); | 301 | memcpy(&udp_pkt, &buf[off], sizeof(udp_pkt)); |
326 | #ifdef WIN32 | ||
327 | DWORD ssize = sizeof(buf); | 302 | DWORD ssize = sizeof(buf); |
328 | WSAAddressToString((LPSOCKADDR)&sip, sizeof(sip), NULL, buf, &ssize); | 303 | WSAAddressToString((LPSOCKADDR)&sip, sizeof(sip), NULL, buf, &ssize); |
329 | fprintf (stdout, "%s:%d\n", buf, ntohs((int)udp_pkt.length)); | 304 | fprintf (stdout, "%s:%d\n", buf, ntohs((int)udp_pkt.length)); |
330 | #else | ||
331 | fprintf (stdout, | ||
332 | "%s:%d\n", | ||
333 | inet_ntop (AF_INET, | ||
334 | &sip, | ||
335 | buf, | ||
336 | sizeof (buf)), ntohl(udp_pkt.length)); | ||
337 | #endif | ||
338 | } | 305 | } |
339 | else | 306 | else |
340 | { | 307 | { |
341 | #ifdef WIN32 | ||
342 | DWORD ssize = sizeof(buf); | 308 | DWORD ssize = sizeof(buf); |
343 | WSAAddressToString((LPSOCKADDR)&sip, sizeof(sip), NULL, buf, &ssize); | 309 | WSAAddressToString((LPSOCKADDR)&sip, sizeof(sip), NULL, buf, &ssize); |
344 | fprintf (stdout, "%s\n", buf); | 310 | fprintf (stdout, "%s\n", buf); |
345 | #else | ||
346 | fprintf (stdout, | ||
347 | "%s\n", | ||
348 | inet_ntop (AF_INET, | ||
349 | &sip, | ||
350 | buf, | ||
351 | sizeof (buf))); | ||
352 | #endif | ||
353 | } | 311 | } |
354 | fflush (stdout); | 312 | fflush (stdout); |
355 | } | 313 | } |
@@ -419,11 +377,7 @@ main (int argc, char *const *argv) | |||
419 | struct in_addr external; | 377 | struct in_addr external; |
420 | fd_set rs; | 378 | fd_set rs; |
421 | struct timeval tv; | 379 | struct timeval tv; |
422 | #ifndef WIN32 | ||
423 | uid_t uid; | ||
424 | #endif | ||
425 | 380 | ||
426 | #ifdef WIN32 | ||
427 | // WSA startup | 381 | // WSA startup |
428 | WSADATA wsaData; | 382 | WSADATA wsaData; |
429 | if (WSAStartup (MAKEWORD (2, 2), &wsaData) != 0) | 383 | if (WSAStartup (MAKEWORD (2, 2), &wsaData) != 0) |
@@ -431,7 +385,6 @@ main (int argc, char *const *argv) | |||
431 | fprintf (stderr, "Failed to find Winsock 2.1 or better.\n"); | 385 | fprintf (stderr, "Failed to find Winsock 2.1 or better.\n"); |
432 | return 4; // ERROR | 386 | return 4; // ERROR |
433 | } | 387 | } |
434 | #endif | ||
435 | 388 | ||
436 | if (-1 == (icmpsock = make_icmp_socket())) | 389 | if (-1 == (icmpsock = make_icmp_socket())) |
437 | return 1; | 390 | return 1; |
@@ -440,13 +393,7 @@ main (int argc, char *const *argv) | |||
440 | close (icmpsock); | 393 | close (icmpsock); |
441 | return 1; | 394 | return 1; |
442 | } | 395 | } |
443 | #ifndef WIN32 | 396 | |
444 | uid = getuid (); | ||
445 | if (0 != setresuid (uid, uid, uid)) | ||
446 | fprintf (stderr, | ||
447 | "Failed to setresuid: %s\n", | ||
448 | strerror (errno)); | ||
449 | #endif | ||
450 | if (argc != 2) | 397 | if (argc != 2) |
451 | { | 398 | { |
452 | fprintf (stderr, | 399 | fprintf (stderr, |
@@ -475,11 +422,9 @@ main (int argc, char *const *argv) | |||
475 | send_icmp_echo (&external); | 422 | send_icmp_echo (&external); |
476 | } | 423 | } |
477 | 424 | ||
478 | #ifdef WIN32 | ||
479 | closesocket(icmpsock); | 425 | closesocket(icmpsock); |
480 | closesocket(rawsock); | 426 | closesocket(rawsock); |
481 | WSACleanup (); | 427 | WSACleanup (); |
482 | #endif | ||
483 | return 0; | 428 | return 0; |
484 | } | 429 | } |
485 | 430 | ||