1
0
Fork 0
mirror of https://github.com/yarrick/iodine.git synced 2025-04-07 11:07:03 +00:00
This commit is contained in:
Julian Kranz 2012-01-22 00:17:03 +01:00 committed by Barak A. Pearlmutter
parent 5c61a51d5d
commit 5171b91cb8
2 changed files with 15 additions and 1 deletions

View file

@ -65,12 +65,14 @@ static const char *password;
static struct sockaddr_in nameserv;
static struct sockaddr_in raw_serv;
static struct sockaddr_in6 raw_serv6;
static const char *topdomain;
static uint16_t rand_seed;
#ifdef LINUX
static char _v6;
static char _v6_connect = 1;
#endif
/* 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;
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
@ -1671,6 +1678,10 @@ handshake_raw_udp(int dns_fd, int seed)
raw_serv.sin_port = htons(53);
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
* based on the old seed. If reply received,
* switch to raw udp mode */

View file

@ -161,6 +161,7 @@ open_dns_ipv6(int localport, struct in6_addr listen_ip6)
struct sockaddr_in6 addr;
int flag = 1;
int fd;
int false = 0;
memset(&addr, 0, sizeof(addr));
addr.sin6_family = AF_INET6;
@ -173,6 +174,8 @@ open_dns_ipv6(int localport, struct in6_addr listen_ip6)
err(1, "socket");
}
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&false, sizeof(false));
flag = 1;
#ifdef SO_REUSEPORT
setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, (const void*) &flag, sizeof(flag));