X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fnat%2Fgnunet-helper-nat-client-windows.c;h=b949374f3445bb6b7026de3f0a6b9db71c70c01b;hb=27c12911f4f2aba2d90099270d70de846e83854f;hp=864c911b0338de90a88537f3932e4a99cb8ec56a;hpb=5746309cb4be2073d550ad7a6885e918631dbc38;p=oweals%2Fgnunet.git diff --git a/src/nat/gnunet-helper-nat-client-windows.c b/src/nat/gnunet-helper-nat-client-windows.c index 864c911b0..b949374f3 100644 --- a/src/nat/gnunet-helper-nat-client-windows.c +++ b/src/nat/gnunet-helper-nat-client-windows.c @@ -43,6 +43,7 @@ */ #define _GNU_SOURCE +#define FD_SETSIZE 1024 #include #include #include @@ -166,6 +167,10 @@ struct udp_header uint16_t crc; }; +/** + * Will this binary be run in permissions testing mode? + */ +static boolean privilege_testing = FALSE; /** * Socket we use to send our ICMP packets. @@ -462,42 +467,61 @@ main (int argc, char *const *argv) struct in_addr external; struct in_addr target; WSADATA wsaData; - unsigned int p; + if (argc > 1 && 0 != strcmp (argv[1], "-d")){ + privilege_testing = TRUE; + fprintf (stderr, + "%s", + "DEBUG: Running binary in privilege testing mode."); + argv++; + argc--; + } + if (argc != 4) { fprintf (stderr, - "This program must be started with our IP, the targets external IP, and our port as arguments.\n"); + "%s", + "This program must be started with our IP, the targets external IP, and our port as arguments.\n"); return 1; } if ((1 != inet_pton (AF_INET, argv[1], &external)) || (1 != inet_pton (AF_INET, argv[2], &target))) { - fprintf (stderr, "Error parsing IPv4 address: %s\n", strerror (errno)); + fprintf (stderr, + "Error parsing IPv4 address: %s\n", + strerror (errno)); return 1; } if ((1 != sscanf (argv[3], "%u", &p)) || (0 == p) || (0xFFFF < p)) { - fprintf (stderr, "Error parsing port value `%s'\n", argv[3]); + fprintf (stderr, + "Error parsing port value `%s'\n", + argv[3]); return 1; } port = (uint16_t) p; if (0 != WSAStartup (MAKEWORD (2, 1), &wsaData)) { - fprintf (stderr, "Failed to find Winsock 2.1 or better.\n"); + fprintf (stderr, + "%s", + "Failed to find Winsock 2.1 or better.\n"); return 2; } if (1 != inet_pton (AF_INET, DUMMY_IP, &dummy)) { - fprintf (stderr, "Internal error converting dummy IP to binary.\n"); + fprintf (stderr, + "%s", + "Internal error converting dummy IP to binary.\n"); return 2; } if (-1 == (rawsock = make_raw_socket ())) return 3; - send_icmp (&external, &target); - send_icmp_udp (&external, &target); + if (!privilege_testing){ + send_icmp (&external, &target); + send_icmp_udp (&external, &target); + } closesocket (rawsock); WSACleanup (); return 0;