diff --git a/src/client.c b/src/client.c index 11b162a..4663e8b 100644 --- a/src/client.c +++ b/src/client.c @@ -1521,19 +1521,20 @@ handshake_login(int dns_fd, int seed) if (strncmp("LNAK", in, 4) == 0) { fprintf(stderr, "Bad password\n"); return 1; - } else if (sscanf(in, "%64[^-]-%64[^-]-%d-%d-%64[^-]-%d", - server, client, &mtu, &netmask, server6, client6, &netmask6) == 4) { - - fprintf(stderr, "Server tunnel IPv6 is %s\n", server6); - fprintf(stderr, "Client tunnel IPv6 is %s\n", client6); - fprintf(stderr, "Tunnel netmask is %d\n", netmask6); + } else if (sscanf(in, "%64[^-]-%64[^-]-%d-%d-%64[^-]-%64[^-]-%d", + server, client, &mtu, &netmask, server6, client6, &netmask6) == 7) { server[64] = 0; client[64] = 0; if (tun_setip(client, server, netmask) == 0 && - tun_setmtu(mtu) == 0) { + tun_setmtu(mtu) == 0 && !tun_setip6(client6, netmask6)) { fprintf(stderr, "Server tunnel IP is %s\n", server); + + fprintf(stderr, "Server tunnel IPv6 is %s\n", server6); + fprintf(stderr, "Client tunnel IPv6 is %s\n", client6); + fprintf(stderr, "Tunnel netmask6 is %d\n", netmask6); + return 0; } else { errx(4, "Failed to set IP and MTU"); diff --git a/src/iodined.c b/src/iodined.c index 1ddc56a..b470b1e 100644 --- a/src/iodined.c +++ b/src/iodined.c @@ -803,6 +803,8 @@ handle_null_request(int tun_fd, int dns_fd, struct query *q, int domain_len) read = snprintf(out, sizeof(out), "%s-%s-%d-%d-%s-%s-%d", tmp[0], tmp[1], my_mtu, netmask, server6, client6, netmask6); + printf("%s\n", out); + write_dns(dns_fd, q, out, read, users[userid].downenc); q->id = 0; syslog(LOG_NOTICE, "accepted password from user #%d, given IP %s", userid, tmp[1]);