summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_timewait.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet/tcp_timewait.c')
-rw-r--r--sys/netinet/tcp_timewait.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c
index 11d51e2..750c3b9 100644
--- a/sys/netinet/tcp_timewait.c
+++ b/sys/netinet/tcp_timewait.c
@@ -74,6 +74,7 @@
#include <netinet/ip_var.h>
#ifdef INET6
#include <netinet6/ip6_var.h>
+#include <netinet6/scope6_var.h>
#include <netinet6/nd6.h>
#endif
#include <netinet/ip_icmp.h>
@@ -1044,19 +1045,17 @@ tcp6_getcred(SYSCTL_HANDLER_ARGS)
error = SYSCTL_IN(req, addrs, sizeof(addrs));
if (error)
return (error);
+ if ((error = sa6_embedscope(&addrs[0], ip6_use_defzone)) != 0 ||
+ (error = sa6_embedscope(&addrs[1], ip6_use_defzone)) != 0) {
+ return (error);
+ }
if (IN6_IS_ADDR_V4MAPPED(&addrs[0].sin6_addr)) {
if (IN6_IS_ADDR_V4MAPPED(&addrs[1].sin6_addr))
mapped = 1;
else
return (EINVAL);
- } else {
- error = in6_embedscope(&a6[0], &addrs[0], NULL, NULL);
- if (error)
- return (EINVAL);
- error = in6_embedscope(&a6[1], &addrs[1], NULL, NULL);
- if (error)
- return (EINVAL);
}
+
INP_INFO_RLOCK(&tcbinfo);
if (mapped == 1)
inp = in_pcblookup_hash(&tcbinfo,
@@ -2191,12 +2190,11 @@ sysctl_drop(SYSCTL_HANDLER_ARGS)
lin = (struct sockaddr_in *)&addrs[1];
break;
}
- error = in6_embedscope(&f6, fin6, NULL, NULL);
+ error = sa6_embedscope(fin6, ip6_use_defzone);
if (error)
- return (EINVAL);
- error = in6_embedscope(&l6, lin6, NULL, NULL);
- if (error)
- return (EINVAL);
+ return (error);
+ error = sa6_embedscope(lin6, ip6_use_defzone);
+ return (error);
break;
#endif
case AF_INET:
OpenPOWER on IntegriCloud