mirror of
https://github.com/yarrick/iodine.git
synced 2025-04-11 21:10:56 +00:00
Iodine: IPv6
This commit is contained in:
parent
2b091f90bd
commit
b6fdf35444
3 changed files with 24 additions and 8 deletions
|
@ -73,7 +73,7 @@ static uint16_t rand_seed;
|
||||||
|
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
static char _v6;
|
static char _v6;
|
||||||
static char _v6_connect = 1;
|
static char _v6_connect;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Current up/downstream IP packet */
|
/* Current up/downstream IP packet */
|
||||||
|
@ -318,6 +318,12 @@ client_set_v6(char v6)
|
||||||
{
|
{
|
||||||
_v6 = v6;
|
_v6 = v6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
client_set_v6_connect(char v6_connect)
|
||||||
|
{
|
||||||
|
_v6_connect = v6_connect;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
|
|
|
@ -35,6 +35,7 @@ void client_set_lazymode(int lazy_mode);
|
||||||
void client_set_hostname_maxlen(int i);
|
void client_set_hostname_maxlen(int i);
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
void client_set_v6(char v6);
|
void client_set_v6(char v6);
|
||||||
|
void client_set_v6_connect(char v6);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int client_handshake(int dns_fd, int raw_mode, int autodetect_frag_size, int fragsize);
|
int client_handshake(int dns_fd, int raw_mode, int autodetect_frag_size, int fragsize);
|
||||||
|
|
23
src/iodine.c
23
src/iodine.c
|
@ -63,7 +63,7 @@ usage() {
|
||||||
|
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
fprintf(stderr, "Usage: %s [-v] [-h] [-f] [-r] [-u user] [-t chrootdir] [-d device] "
|
fprintf(stderr, "Usage: %s [-v] [-h] [-f] [-r] [-u user] [-t chrootdir] [-d device] "
|
||||||
"[-P password] [-6] [-m maxfragsize] [-M maxlen] [-T type] [-O enc] [-L 0|1] [-I sec] "
|
"[-P password] [-6] [-7] [-m maxfragsize] [-M maxlen] [-T type] [-O enc] [-L 0|1] [-I sec] "
|
||||||
"[-z context] [-F pidfile] [nameserver] topdomain\n", __progname);
|
"[-z context] [-F pidfile] [nameserver] topdomain\n", __progname);
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, "Usage: %s [-v] [-h] [-f] [-r] [-u user] [-t chrootdir] [-d device] "
|
fprintf(stderr, "Usage: %s [-v] [-h] [-f] [-r] [-u user] [-t chrootdir] [-d device] "
|
||||||
|
@ -80,7 +80,7 @@ help() {
|
||||||
fprintf(stderr, "iodine IP over DNS tunneling client\n");
|
fprintf(stderr, "iodine IP over DNS tunneling client\n");
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
fprintf(stderr, "Usage: %s [-v] [-h] [-f] [-r] [-u user] [-t chrootdir] [-d device] "
|
fprintf(stderr, "Usage: %s [-v] [-h] [-f] [-r] [-u user] [-t chrootdir] [-d device] "
|
||||||
"[-P password] [-6] [-m maxfragsize] [-M maxlen] [-T type] [-O enc] [-L 0|1] [-I sec] "
|
"[-P password] [-6] [-7] [-m maxfragsize] [-M maxlen] [-T type] [-O enc] [-L 0|1] [-I sec] "
|
||||||
"[-z context] [-F pidfile] [nameserver] topdomain\n", __progname);
|
"[-z context] [-F pidfile] [nameserver] topdomain\n", __progname);
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, "Usage: %s [-v] [-h] [-f] [-r] [-u user] [-t chrootdir] [-d device] "
|
fprintf(stderr, "Usage: %s [-v] [-h] [-f] [-r] [-u user] [-t chrootdir] [-d device] "
|
||||||
|
@ -99,6 +99,7 @@ help() {
|
||||||
fprintf(stderr, " -P password used for authentication (max 32 chars will be used)\n");
|
fprintf(stderr, " -P password used for authentication (max 32 chars will be used)\n");
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
fprintf(stderr, " -6 use IPv6 (make sure to use this option consistently on client and server)\n");
|
fprintf(stderr, " -6 use IPv6 (make sure to use this option consistently on client and server)\n");
|
||||||
|
fprintf(stderr, " -7 enable IPv6 outside the tunnel\n");
|
||||||
#endif
|
#endif
|
||||||
fprintf(stderr, "Other options:\n");
|
fprintf(stderr, "Other options:\n");
|
||||||
fprintf(stderr, " -v to print version info and exit\n");
|
fprintf(stderr, " -v to print version info and exit\n");
|
||||||
|
@ -154,6 +155,7 @@ main(int argc, char **argv)
|
||||||
int hostname_maxlen;
|
int hostname_maxlen;
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
char v6;
|
char v6;
|
||||||
|
char v6_connect;
|
||||||
#endif
|
#endif
|
||||||
int rtable = 0;
|
int rtable = 0;
|
||||||
|
|
||||||
|
@ -181,6 +183,7 @@ main(int argc, char **argv)
|
||||||
|
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
v6 = 0;
|
v6 = 0;
|
||||||
|
v6_connect = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WINDOWS32
|
#ifdef WINDOWS32
|
||||||
|
@ -199,7 +202,7 @@ main(int argc, char **argv)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
while ((choice = getopt(argc, argv, "6vfhru:t:d:R:P:m:M:F:T:O:L:I:")) != -1) {
|
while ((choice = getopt(argc, argv, "67vfhru:t:d:R:P:m:M:F:T:O:L:I:")) != -1) {
|
||||||
#else
|
#else
|
||||||
while ((choice = getopt(argc, argv, "vfhru:t:d:R:P:m:M:F:T:O:L:I:")) != -1) {
|
while ((choice = getopt(argc, argv, "vfhru:t:d:R:P:m:M:F:T:O:L:I:")) != -1) {
|
||||||
#endif
|
#endif
|
||||||
|
@ -277,6 +280,9 @@ main(int argc, char **argv)
|
||||||
case '6':
|
case '6':
|
||||||
v6 = 1;
|
v6 = 1;
|
||||||
break;
|
break;
|
||||||
|
case '7':
|
||||||
|
v6_connect = 1;
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
|
@ -335,6 +341,7 @@ main(int argc, char **argv)
|
||||||
client_set_hostname_maxlen(hostname_maxlen);
|
client_set_hostname_maxlen(hostname_maxlen);
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
client_set_v6(v6);
|
client_set_v6(v6);
|
||||||
|
client_set_v6_connect(v6_connect);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (username != NULL) {
|
if (username != NULL) {
|
||||||
|
@ -361,14 +368,16 @@ main(int argc, char **argv)
|
||||||
goto cleanup1;
|
goto cleanup1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Todo: Fix
|
|
||||||
*/
|
|
||||||
// if ((dns_fd = open_dns(0, INADDR_ANY)) == -1) {
|
// if ((dns_fd = open_dns(0, INADDR_ANY)) == -1) {
|
||||||
// retval = 1;
|
// retval = 1;
|
||||||
// goto cleanup2;
|
// goto cleanup2;
|
||||||
// }
|
// }
|
||||||
if ((dns_fd = open_dns_ipv6(0, in6addr_any)) == -1) {
|
#ifdef LINUX
|
||||||
|
if ((dns_fd = v6_connect ? open_dns_ipv6(0, in6addr_any) : open_dns(0, INADDR_ANY)) == -1) {
|
||||||
|
#else
|
||||||
|
if ((dns_fd = open_dns(0, INADDR_ANY)) == -1) {
|
||||||
|
#endif
|
||||||
retval = 1;
|
retval = 1;
|
||||||
goto cleanup2;
|
goto cleanup2;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue