aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-nat-server-windows.c
diff options
context:
space:
mode:
authorNathan S. Evans <evans@in.tum.de>2010-08-19 09:45:52 +0000
committerNathan S. Evans <evans@in.tum.de>2010-08-19 09:45:52 +0000
commit0e607261948b9b3f48d12bcfaa2b26a91a0048a6 (patch)
tree81472941062a5c10c17a4c659a11b917ea0cf534 /src/transport/gnunet-nat-server-windows.c
parent8258c5eca20e23093a7783a65d81f326c6c95422 (diff)
downloadgnunet-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.c63
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
67typedef unsigned int uid_t; 57typedef unsigned int uid_t;
68typedef SOCKET Socket; 58typedef SOCKET Socket;
69typedef unsigned short ushort; 59typedef 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
170static void 154static void
171make_echo (const struct in_addr *src_ip, 155make_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