Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Nov 2016 18:13:10 +0000 (UTC)
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r308929 - projects/ipsec/sys/netipsec
Message-ID:  <201611211813.uALIDAsG086589@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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"));



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611211813.uALIDAsG086589>