diff --git a/src/client.h b/src/client.h index 3fa8df5..bdd0285 100644 --- a/src/client.h +++ b/src/client.h @@ -18,6 +18,8 @@ #ifndef __CLIENT_H__ #define __CLIENT_H__ +extern int debug; + void client_init(); void client_stop(); @@ -33,7 +35,7 @@ char *client_get_qtype(); void client_set_downenc(char *encoding); void client_set_selecttimeout(int select_timeout); void client_set_lazymode(int lazy_mode); -void client_set_hostname_maxlen(int i); +void client_set_hostname_maxlen(size_t i); int client_handshake(int dns_fd, int raw_mode, int autodetect_frag_size, int fragsize); int client_tunnel(int tun_fd, int dns_fd); diff --git a/src/iodine.c b/src/iodine.c index dbbd942..27babd6 100644 --- a/src/iodine.c +++ b/src/iodine.c @@ -69,7 +69,7 @@ static void usage() { extern char *__progname; - fprintf(stderr, "Usage: %s [-v] [-h] [-f] [-r] [-u user] [-t chrootdir] [-d device] " + fprintf(stderr, "Usage: %s [-v] [-h] [-f] [-D] [-r] [-u user] [-t chrootdir] [-d device] " "[-P password] [-m maxfragsize] [-M maxlen] [-T type] [-O enc] [-L 0|1] [-I sec] " "[-z context] [-F pidfile] topdomain [nameserver ...]\n", __progname); exit(2); @@ -97,6 +97,7 @@ help() { fprintf(stderr, " -v to print version info and exit\n"); fprintf(stderr, " -h to print this help and exit\n"); fprintf(stderr, " -f to keep running in foreground\n"); + fprintf(stderr, " -D enable debug mode (add more D's to increase debug level)\n"); fprintf(stderr, " -u name to drop privileges and run as user 'name'\n"); fprintf(stderr, " -t dir to chroot to directory dir\n"); fprintf(stderr, " -d device to set tunnel device name\n"); @@ -169,6 +170,7 @@ main(int argc, char **argv) context = NULL; device = NULL; pidfile = NULL; + debug = 0; autodetect_frag_size = 1; max_downstream_frag_size = 3072; @@ -194,7 +196,7 @@ main(int argc, char **argv) __progname++; #endif - while ((choice = getopt(argc, argv, "46vfhru:t:d:R:P:m:M:F:T:O:L:I:")) != -1) { + while ((choice = getopt(argc, argv, "46vfDhru:t:d:R:P:m:M:F:T:O:L:I:")) != -1) { switch(choice) { case '4': nameserv_family = AF_INET; @@ -209,6 +211,9 @@ main(int argc, char **argv) case 'f': foreground = 1; break; + case 'D': + debug++; + break; case 'h': help(); /* NOTREACHED */ @@ -286,6 +291,12 @@ main(int argc, char **argv) argc -= optind; argv += optind; + if (debug) { + fprintf(stderr, "Debug level %d enabled, will stay in foreground.\n", debug); + fprintf(stderr, "Add more -D switches to set higher debug level.\n"); + foreground = 1; + } + nameserv_hosts_len = argc - 1; if (nameserv_hosts_len <= 0) nameserv_hosts_len = 1;