Introduction
Introduction Statistics Contact Development Disclaimer Help
Forbid inet connections to inet6 socket when ipv6 is requested - geomyidae - A …
git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfri…
Log
Files
Refs
Tags
README
LICENSE
---
commit dfb715b2f86a449eacc1c5b33568a3c60b12a5d5
parent 87e1fba0998bc690d6ebb33ca8b4087a5d97af1a
Author: Quentin Rameau <[email protected]>
Date: Thu, 30 Aug 2018 21:18:01 +0200
Forbid inet connections to inet6 socket when ipv6 is requested
Signed-off-by: Christoph Lohmann <[email protected]>
Diffstat:
M main.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/main.c b/main.c
@@ -300,7 +300,10 @@ getlistenfd(struct addrinfo *hints, char *bindip, char *po…
char addstr[INET6_ADDRSTRLEN];
struct addrinfo *ai, *rp;
void *sinaddr;
- int on, listfd, aierr;
+ int on, reqaf, listfd, aierr;
+
+ if ((reqaf = hints->ai_family) == AF_UNSPEC)
+ hints->ai_family = AF_INET6;
if ((aierr = getaddrinfo(bindip, port, hints, &ai)) || ai == NULL) {
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(aierr));
@@ -321,6 +324,14 @@ getlistenfd(struct addrinfo *hints, char *bindip, char *po…
break;
}
+ if (reqaf == AF_INET6 &&
+ (setsockopt(listfd, IPPROTO_IPV6, IPV6_V6ONLY, &on,
+ sizeof(on)) < 0)) {
+ close(listfd);
+ listfd = -1;
+ break;
+ }
+
sinaddr = (rp->ai_family == AF_INET) ?
(void *)&((struct sockaddr_in *)rp->ai_addr)->sin_ad…
(void *)&((struct sockaddr_in6 *)rp->ai_addr)->sin6_…
@@ -377,7 +388,7 @@ main(int argc, char *argv[])
bindip = NULL;
ohost = NULL;
sport = NULL;
- inetf = AF_INET6;
+ inetf = AF_UNSPEC;
usechroot = 0;
nocgi = 0;
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.