mirror of
https://github.com/yarrick/iodine.git
synced 2025-04-11 21:10:56 +00:00
---
This commit is contained in:
parent
5c61a51d5d
commit
5171b91cb8
2 changed files with 15 additions and 1 deletions
13
src/client.c
13
src/client.c
|
@ -65,12 +65,14 @@ static const char *password;
|
||||||
|
|
||||||
static struct sockaddr_in nameserv;
|
static struct sockaddr_in nameserv;
|
||||||
static struct sockaddr_in raw_serv;
|
static struct sockaddr_in raw_serv;
|
||||||
|
static struct sockaddr_in6 raw_serv6;
|
||||||
static const char *topdomain;
|
static const char *topdomain;
|
||||||
|
|
||||||
static uint16_t rand_seed;
|
static uint16_t rand_seed;
|
||||||
|
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
static char _v6;
|
static char _v6;
|
||||||
|
static char _v6_connect = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Current up/downstream IP packet */
|
/* Current up/downstream IP packet */
|
||||||
|
@ -395,7 +397,12 @@ send_raw(int fd, char *buf, int buflen, int user, int cmd)
|
||||||
len += RAW_HDR_LEN;
|
len += RAW_HDR_LEN;
|
||||||
packet[RAW_HDR_CMD] = cmd | (user & 0x0F);
|
packet[RAW_HDR_CMD] = cmd | (user & 0x0F);
|
||||||
|
|
||||||
sendto(fd, packet, len, 0, (struct sockaddr*)&raw_serv, sizeof(raw_serv));
|
if (_v6_connect)
|
||||||
|
sendto(fd, packet, len, 0, (struct sockaddr*) &raw_serv6,
|
||||||
|
sizeof(raw_serv));
|
||||||
|
else
|
||||||
|
sendto(fd, packet, len, 0, (struct sockaddr*) &raw_serv,
|
||||||
|
sizeof(raw_serv));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1671,6 +1678,10 @@ handshake_raw_udp(int dns_fd, int seed)
|
||||||
raw_serv.sin_port = htons(53);
|
raw_serv.sin_port = htons(53);
|
||||||
raw_serv.sin_addr = server;
|
raw_serv.sin_addr = server;
|
||||||
|
|
||||||
|
raw_serv6.sin6_family = AF_INET6;
|
||||||
|
raw_serv6.sin6_port = htons(53);
|
||||||
|
inet_pton(AF_INET6, "2001:4ca0:2001:0018:0216:3eff:fe99:4d2b", &(raw_serv6.sin6_addr));
|
||||||
|
|
||||||
/* do login against port 53 on remote server
|
/* do login against port 53 on remote server
|
||||||
* based on the old seed. If reply received,
|
* based on the old seed. If reply received,
|
||||||
* switch to raw udp mode */
|
* switch to raw udp mode */
|
||||||
|
|
|
@ -161,6 +161,7 @@ open_dns_ipv6(int localport, struct in6_addr listen_ip6)
|
||||||
struct sockaddr_in6 addr;
|
struct sockaddr_in6 addr;
|
||||||
int flag = 1;
|
int flag = 1;
|
||||||
int fd;
|
int fd;
|
||||||
|
int false = 0;
|
||||||
|
|
||||||
memset(&addr, 0, sizeof(addr));
|
memset(&addr, 0, sizeof(addr));
|
||||||
addr.sin6_family = AF_INET6;
|
addr.sin6_family = AF_INET6;
|
||||||
|
@ -173,6 +174,8 @@ open_dns_ipv6(int localport, struct in6_addr listen_ip6)
|
||||||
err(1, "socket");
|
err(1, "socket");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&false, sizeof(false));
|
||||||
|
|
||||||
flag = 1;
|
flag = 1;
|
||||||
#ifdef SO_REUSEPORT
|
#ifdef SO_REUSEPORT
|
||||||
setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, (const void*) &flag, sizeof(flag));
|
setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, (const void*) &flag, sizeof(flag));
|
||||||
|
|
Loading…
Add table
Reference in a new issue