mirror of
https://github.com/yarrick/iodine.git
synced 2025-04-11 21:10:56 +00:00
Iodine: Fixed network protocol version
This commit is contained in:
parent
fc4e6929b1
commit
30fe7dbc06
3 changed files with 26 additions and 3 deletions
17
src/client.c
17
src/client.c
|
@ -1473,7 +1473,12 @@ handshake_version(int dns_fd, int *seed)
|
||||||
|
|
||||||
for (i = 0; running && i < 5; i++) {
|
for (i = 0; running && i < 5; i++) {
|
||||||
|
|
||||||
send_version(dns_fd, VERSION);
|
#ifdef LINUX
|
||||||
|
if(_v6)
|
||||||
|
send_version(dns_fd, VERSION_V6);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
send_version(dns_fd, VERSION);
|
||||||
|
|
||||||
read = handshake_waitdns(dns_fd, in, sizeof(in), 'v', 'V', i+1);
|
read = handshake_waitdns(dns_fd, in, sizeof(in), 'v', 'V', i+1);
|
||||||
|
|
||||||
|
@ -1493,7 +1498,15 @@ handshake_version(int dns_fd, int *seed)
|
||||||
fprintf(stderr, "Version ok, both using protocol v 0x%08x. You are user #%d\n", VERSION, userid);
|
fprintf(stderr, "Version ok, both using protocol v 0x%08x. You are user #%d\n", VERSION, userid);
|
||||||
return 0;
|
return 0;
|
||||||
} else if (strncmp("VNAK", in, 4) == 0) {
|
} else if (strncmp("VNAK", in, 4) == 0) {
|
||||||
warnx("You use protocol v 0x%08x, server uses v 0x%08x. Giving up",
|
#ifdef LINUX
|
||||||
|
if (_v6)
|
||||||
|
warnx(
|
||||||
|
"You use protocol v 0x%08x, server uses v 0x%08x. Giving up",
|
||||||
|
VERSION_V6, payload);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
warnx(
|
||||||
|
"You use protocol v 0x%08x, server uses v 0x%08x. Giving up",
|
||||||
VERSION, payload);
|
VERSION, payload);
|
||||||
return 1;
|
return 1;
|
||||||
} else if (strncmp("VFUL", in, 4) == 0) {
|
} else if (strncmp("VFUL", in, 4) == 0) {
|
||||||
|
|
|
@ -726,7 +726,11 @@ handle_null_request(int tun_fd, int dns_fd, struct query *q, int domain_len)
|
||||||
((unpacked[3] & 0xff)));
|
((unpacked[3] & 0xff)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef LINUX
|
||||||
|
if (version == v6 ? VERSION_V6 : VERSION) {
|
||||||
|
#else
|
||||||
if (version == VERSION) {
|
if (version == VERSION) {
|
||||||
|
#endif
|
||||||
userid = find_available_user();
|
userid = find_available_user();
|
||||||
if (userid >= 0) {
|
if (userid >= 0) {
|
||||||
int i;
|
int i;
|
||||||
|
@ -787,7 +791,12 @@ handle_null_request(int tun_fd, int dns_fd, struct query *q, int domain_len)
|
||||||
inet_ntoa(((struct sockaddr_in *) &q->from)->sin_addr));
|
inet_ntoa(((struct sockaddr_in *) &q->from)->sin_addr));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
send_version_response(dns_fd, VERSION_NACK, VERSION, 0, q);
|
#ifdef LINUX
|
||||||
|
if (v6)
|
||||||
|
send_version_response(dns_fd, VERSION_NACK, VERSION_V6, 0, q);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
send_version_response(dns_fd, VERSION_NACK, VERSION, 0, q);
|
||||||
syslog(LOG_INFO, "dropped user from %s, sent bad version %08X",
|
syslog(LOG_INFO, "dropped user from %s, sent bad version %08X",
|
||||||
inet_ntoa(((struct sockaddr_in *) &q->from)->sin_addr), version);
|
inet_ntoa(((struct sockaddr_in *) &q->from)->sin_addr), version);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
/* This is the version of the network protocol
|
/* This is the version of the network protocol
|
||||||
It is usually equal to the latest iodine version number */
|
It is usually equal to the latest iodine version number */
|
||||||
#define VERSION 0x00000502
|
#define VERSION 0x00000502
|
||||||
|
#define VERSION_V6 0x00000503
|
||||||
|
|
||||||
#endif /* _VERSION_H_ */
|
#endif /* _VERSION_H_ */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue