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:22:11 +0000
committerNathan S. Evans <evans@in.tum.de>2010-08-19 09:22:11 +0000
commitd914ed7111fecde62e859a3167740be6888d29bf (patch)
treefd84b5ae1f2091824825153e56b8002c61ec114a /src/transport/gnunet-nat-server-windows.c
parentacf0150341837510592c7534f30c6585d93e4855 (diff)
downloadgnunet-d914ed7111fecde62e859a3167740be6888d29bf.tar.gz
gnunet-d914ed7111fecde62e859a3167740be6888d29bf.zip
windoze suckssss
Diffstat (limited to 'src/transport/gnunet-nat-server-windows.c')
-rw-r--r--src/transport/gnunet-nat-server-windows.c59
1 files changed, 10 insertions, 49 deletions
diff --git a/src/transport/gnunet-nat-server-windows.c b/src/transport/gnunet-nat-server-windows.c
index 2011c80d1..9eec7cd48 100644
--- a/src/transport/gnunet-nat-server-windows.c
+++ b/src/transport/gnunet-nat-server-windows.c
@@ -203,26 +203,18 @@ send_icmp_echo (const struct in_addr *my_ip)
203 memset(&ip_pkt, 0, sizeof(ip_pkt)); 203 memset(&ip_pkt, 0, sizeof(ip_pkt));
204 ip_pkt.vers_ihl = 0x45; 204 ip_pkt.vers_ihl = 0x45;
205 ip_pkt.tos = 0; 205 ip_pkt.tos = 0;
206 //ip_pkt.pkt_len = sizeof (packet); 206 ip_pkt.pkt_len = sizeof (packet);
207 //ip_pkt.id = 1; 207 ip_pkt.id = htons (256);
208 //ip_pkt.flags_frag_offset = 0; 208 ip_pkt.flags_frag_offset = 0;
209 //ip_pkt.ttl = IPDEFTTL; 209 ip_pkt.ttl = IPDEFTTL;
210 //ip_pkt.proto = IPPROTO_ICMP; 210 ip_pkt.proto = IPPROTO_ICMP;
211 //ip_pkt.checksum = 0; 211 ip_pkt.checksum = 0;
212 //ip_pkt.src_ip = my_ip->s_addr; 212 ip_pkt.src_ip = my_ip->s_addr;
213 //ip_pkt.dst_ip = dummy.s_addr; 213 ip_pkt.dst_ip = dummy.s_addr;
214 //ip_pkt.checksum = htons(calc_checksum((uint16_t*)&ip_pkt, sizeof (ip_pkt))); 214 ip_pkt.checksum = htons(calc_checksum((uint16_t*)&ip_pkt, sizeof (ip_pkt)));
215 memcpy (packet, &ip_pkt, sizeof (ip_pkt)); 215 memcpy (packet, &ip_pkt, sizeof (ip_pkt));
216 off += sizeof (ip_pkt); 216 off += sizeof (ip_pkt);
217 217
218 memset (&dst, 0, sizeof (dst));
219 dst.sin_family = AF_INET;
220 dst.sin_addr = dummy;
221 err = sendto(rawsock,
222 packet, off, 0,
223 (struct sockaddr*)&dst,
224 sizeof(dst));
225
226 make_echo (my_ip, &icmp_echo); 218 make_echo (my_ip, &icmp_echo);
227 memcpy (&packet[off], &icmp_echo, sizeof (icmp_echo)); 219 memcpy (&packet[off], &icmp_echo, sizeof (icmp_echo));
228 off += sizeof (icmp_echo); 220 off += sizeof (icmp_echo);
@@ -379,23 +371,11 @@ make_icmp_socket ()
379 strerror (errno)); 371 strerror (errno));
380 return -1; 372 return -1;
381 } 373 }
382#if WIN32
383 if (ret == INVALID_SOCKET) 374 if (ret == INVALID_SOCKET)
384 { 375 {
385 fprintf (stderr, "Invalid socket %d!\n", ret); 376 fprintf (stderr, "Invalid socket %d!\n", ret);
386 closesocket (ret); 377 closesocket (ret);
387 } 378 }
388#else
389 if (ret >= FD_SETSIZE)
390 {
391 fprintf (stderr,
392 "Socket number too large (%d > %u)\n",
393 ret,
394 (unsigned int) FD_SETSIZE);
395 close (ret);
396 return -1;
397 }
398#endif
399 return ret; 379 return ret;
400} 380}
401 381
@@ -405,12 +385,8 @@ make_raw_socket ()
405{ 385{
406 const int one = 1; 386 const int one = 1;
407 387
408#ifdef WIN32 388 DWORD bOptVal = TRUE;
409 int bOptVal = TRUE;
410 int bOptLen = sizeof(bOptVal); 389 int bOptLen = sizeof(bOptVal);
411 int iOptVal;
412 int iOptLen = sizeof(iOptLen);
413#endif
414 390
415 rawsock = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP); 391 rawsock = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP);
416 if (-1 == rawsock) 392 if (-1 == rawsock)
@@ -420,8 +396,6 @@ make_raw_socket ()
420 strerror (errno)); 396 strerror (errno));
421 return -1; 397 return -1;
422 } 398 }
423#ifdef WIN32
424#if 0
425 if (setsockopt(rawsock, SOL_SOCKET, SO_BROADCAST, (char*)&bOptVal, bOptLen) == 0) 399 if (setsockopt(rawsock, SOL_SOCKET, SO_BROADCAST, (char*)&bOptVal, bOptLen) == 0)
426 { 400 {
427 fprintf(stderr, "Set SO_BROADCAST: ON\n"); 401 fprintf(stderr, "Set SO_BROADCAST: ON\n");
@@ -430,7 +404,6 @@ make_raw_socket ()
430 { 404 {
431 fprintf(stderr, "Error setting SO_BROADCAST: ON\n"); 405 fprintf(stderr, "Error setting SO_BROADCAST: ON\n");
432 } 406 }
433#endif
434 if (setsockopt(rawsock, IPPROTO_IP, IP_HDRINCL, (char*)&bOptVal, bOptLen) == 0) 407 if (setsockopt(rawsock, IPPROTO_IP, IP_HDRINCL, (char*)&bOptVal, bOptLen) == 0)
435 { 408 {
436 fprintf(stderr, "Set IP_HDRINCL: ON\n"); 409 fprintf(stderr, "Set IP_HDRINCL: ON\n");
@@ -439,18 +412,6 @@ make_raw_socket ()
439 { 412 {
440 fprintf(stderr, "Error setting IP_HDRINCL: ON\n"); 413 fprintf(stderr, "Error setting IP_HDRINCL: ON\n");
441 } 414 }
442#else
443 if (setsockopt(rawsock, SOL_SOCKET, SO_BROADCAST,
444 (char *)&one, sizeof(one)) == -1)
445 fprintf(stderr,
446 "setsockopt failed: %s\n",
447 strerror (errno));
448 if (setsockopt(rawsock, IPPROTO_IP, IP_HDRINCL,
449 (char *)&one, sizeof(one)) == -1)
450 fprintf(stderr,
451 "setsockopt failed: %s\n",
452 strerror (errno));
453#endif
454 return rawsock; 415 return rawsock;
455} 416}
456 417