mirror of
https://github.com/yarrick/iodine.git
synced 2025-04-11 21:10:56 +00:00
---
This commit is contained in:
parent
0974d96d33
commit
839ce1a266
1 changed files with 14 additions and 4 deletions
18
src/client.c
18
src/client.c
|
@ -1505,6 +1505,16 @@ handshake_version(int dns_fd, int *seed)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char handshake_login_info_check(char *in, char *server, char *client,
|
||||||
|
int *mtu, int *netmask, char *server6, char *client6, int *netmask6) {
|
||||||
|
if (_v6)
|
||||||
|
return sscanf(in, "%64[^-]-%64[^-]-%d-%d-%64[^-]-%64[^-]-%d", server,
|
||||||
|
client, mtu, netmask, server6, client6, netmask6) == 7;
|
||||||
|
else
|
||||||
|
return sscanf(in, "%64[^-]-%64[^-]-%d-%d", server, client, mtu, netmask)
|
||||||
|
== 4;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
handshake_login(int dns_fd, int seed)
|
handshake_login(int dns_fd, int seed)
|
||||||
{
|
{
|
||||||
|
@ -1535,13 +1545,13 @@ handshake_login(int dns_fd, int seed)
|
||||||
if (strncmp("LNAK", in, 4) == 0) {
|
if (strncmp("LNAK", in, 4) == 0) {
|
||||||
fprintf(stderr, "Bad password\n");
|
fprintf(stderr, "Bad password\n");
|
||||||
return 1;
|
return 1;
|
||||||
} else if (sscanf(in, "%64[^-]-%64[^-]-%d-%d-%64[^-]-%64[^-]-%d",
|
} else if (handshake_login_info_check(in, server, client, &mtu, &netmask,
|
||||||
server, client, &mtu, &netmask, server6, client6, &netmask6) == 7) {
|
server6, client6, &netmask6)) {
|
||||||
|
|
||||||
server[64] = 0;
|
server[64] = 0;
|
||||||
client[64] = 0;
|
client[64] = 0;
|
||||||
if (tun_setip(client, server, netmask) == 0 &&
|
if (tun_setip(client, server, netmask) == 0 &&
|
||||||
tun_setmtu(mtu) == 0 && !tun_setip6(client6, netmask6)) {
|
tun_setmtu(mtu) == 0 && (!_v6 || !tun_setip6(client6, netmask6))) {
|
||||||
|
|
||||||
fprintf(stderr, "Server tunnel IP is %s\n", server);
|
fprintf(stderr, "Server tunnel IP is %s\n", server);
|
||||||
|
|
||||||
|
@ -1549,7 +1559,7 @@ handshake_login(int dns_fd, int seed)
|
||||||
fprintf(stderr, "Server tunnel IPv6 is %s\n", server6);
|
fprintf(stderr, "Server tunnel IPv6 is %s\n", server6);
|
||||||
fprintf(stderr, "Client tunnel IPv6 is %s\n", client6);
|
fprintf(stderr, "Client tunnel IPv6 is %s\n", client6);
|
||||||
fprintf(stderr, "Tunnel netmask6 is %d\n", netmask6);
|
fprintf(stderr, "Tunnel netmask6 is %d\n", netmask6);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Reference in a new issue