svn commit: r308929 - projects/ipsec/sys/netipsec
Andrey V. Elsukov
ae at FreeBSD.org
Mon Nov 21 18:13:11 UTC 2016
Author: ae
Date: Mon Nov 21 18:13:10 2016
New Revision: 308929
URL: https://svnweb.freebsd.org/changeset/base/308929
Log:
Modify ipsec_address() to print out IPv6 scope zone id for link-local
IPv6 addresses. Also print "*" for sockaddr with zero sa_family.
Modified:
projects/ipsec/sys/netipsec/ipsec.c
Modified: projects/ipsec/sys/netipsec/ipsec.c
==============================================================================
--- projects/ipsec/sys/netipsec/ipsec.c Mon Nov 21 15:42:54 2016 (r308928)
+++ projects/ipsec/sys/netipsec/ipsec.c Mon Nov 21 18:13:10 2016 (r308929)
@@ -1647,8 +1647,17 @@ ipsec_address(union sockaddr_union* sa,
#endif /* INET */
#ifdef INET6
case AF_INET6:
- return (inet_ntop(AF_INET6, &sa->sin6.sin6_addr, buf, size));
+ if (IN6_IS_SCOPE_LINKLOCAL(&sa->sin6.sin6_addr)) {
+ snprintf(buf, size, "%s%%%u", inet_ntop(AF_INET6,
+ &sa->sin6.sin6_addr, buf, size),
+ sa->sin6.sin6_scope_id);
+ return (buf);
+ } else
+ return (inet_ntop(AF_INET6, &sa->sin6.sin6_addr,
+ buf, size));
#endif /* INET6 */
+ case 0:
+ return ("*");
default:
return ("(unknown address family)");
}
@@ -1657,7 +1666,7 @@ ipsec_address(union sockaddr_union* sa,
char *
ipsec_logsastr(struct secasvar *sav, char *buf, size_t size)
{
- char sbuf[INET6_ADDRSTRLEN], dbuf[INET6_ADDRSTRLEN];
+ char sbuf[IPSEC_ADDRSTRLEN], dbuf[IPSEC_ADDRSTRLEN];
IPSEC_ASSERT(sav->sah->saidx.src.sa.sa_family ==
sav->sah->saidx.dst.sa.sa_family, ("address family mismatch"));
More information about the svn-src-projects
mailing list