diff options
author | Nathan S. Evans <evans@in.tum.de> | 2010-08-19 09:22:11 +0000 |
---|---|---|
committer | Nathan S. Evans <evans@in.tum.de> | 2010-08-19 09:22:11 +0000 |
commit | d914ed7111fecde62e859a3167740be6888d29bf (patch) | |
tree | fd84b5ae1f2091824825153e56b8002c61ec114a /src/transport/gnunet-nat-server-windows.c | |
parent | acf0150341837510592c7534f30c6585d93e4855 (diff) | |
download | gnunet-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.c | 59 |
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 | ||