moved ipv6 transparent listen ipv6 only to after freebind.

Removed debugging
This commit is contained in:
jfurtner 2016-08-09 11:54:47 -06:00
parent 80d57dee55
commit b711d812a1

View File

@ -121,15 +121,6 @@ int start_listen_sockets(int *sockfd[], struct addrinfo *addr_list)
(*sockfd)[i] = socket(saddr->ss_family, SOCK_STREAM, 0);
check_res_dumpdie((*sockfd)[i], addr, "socket");
/* If transparent proxy enabled and ipv6 address then only listen on IPv6 port.
* Transparent proxying fails if you don't.
* */
if (transparent && saddr->ss_family == AF_INET6)
{
res = setsockopt((*sockfd)[i], IPPROTO_IPV6, IPV6_V6ONLY, (char*)&one, sizeof(one));
check_res_dumpdie(res, addr, "setsockopt(IPV6_V6ONLY)");
}
one = 1;
res = setsockopt((*sockfd)[i], SOL_SOCKET, SO_REUSEADDR, (char*)&one, sizeof(one));
check_res_dumpdie(res, addr, "setsockopt(SO_REUSEADDR)");
@ -145,11 +136,22 @@ int start_listen_sockets(int *sockfd[], struct addrinfo *addr_list)
check_res_dumpdie(res, addr, "setsockopt(IP_FREEBIND)");
}
/* If transparent proxy enabled and ipv6 address then only listen on IPv6 port.
* Transparent proxying fails if you don't.
* */
if (transparent && saddr->ss_family == AF_INET6)
{
//fprintf(stderr, "Transparent set and IPv6\n");
res = setsockopt((*sockfd)[i], IPPROTO_IPV6, IPV6_V6ONLY, (char*)&one, sizeof(one));
check_res_dumpdie(res, addr, "setsockopt(IPV6_V6ONLY)");
}
res = bind((*sockfd)[i], addr->ai_addr, addr->ai_addrlen);
check_res_dumpdie(res, addr, "bind");
res = listen ((*sockfd)[i], 50);
check_res_dumpdie(res, addr, "listen");
//fprintf(stderr, "here\n");
}
@ -165,7 +167,7 @@ int bind_peer(int fd, int fd_from)
struct sockaddr_storage ss;
int res, trans = 1;
fprintf(stderr, "Starting bind_peer\n");
//fprintf(stderr, "Starting bind_peer\n");
memset(&from, 0, sizeof(from));
from.ai_addr = (struct sockaddr*)&ss;
@ -209,7 +211,7 @@ int bind_peer(int fd, int fd_from)
}
#ifndef IP_BINDANY /* use IP_TRANSPARENT */
fprintf(stderr, "IP_TRANSPARENT\n");
//fprintf(stderr, "IP_TRANSPARENT\n");
res = setsockopt(fd, IPPROTO_IP, IP_TRANSPARENT, &trans, sizeof(trans));
CHECK_RES_DIE(res, "setsockopt");
#else
@ -223,7 +225,7 @@ int bind_peer(int fd, int fd_from)
#endif /* IPV6_BINDANY */
}
#endif /* IP_TRANSPARENT / IP_BINDANY */
fprintf(stderr, "bind\n");
// fprintf(stderr, "bind\n");
res = bind(fd, from.ai_addr, from.ai_addrlen);
CHECK_RES_RETURN(res, "bind");