about summary refs log tree commit diff
path: root/src/dns-manager
diff options
context:
space:
mode:
Diffstat (limited to 'src/dns-manager')
-rw-r--r--src/dns-manager/nm-dns-dnsmasq.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/dns-manager/nm-dns-dnsmasq.c b/src/dns-manager/nm-dns-dnsmasq.c
index 460feaac..5ead5ecf 100644
--- a/src/dns-manager/nm-dns-dnsmasq.c
+++ b/src/dns-manager/nm-dns-dnsmasq.c
@@ -131,18 +131,18 @@ ip6_addr_to_string (const struct in6_addr *addr, const char *iface)
 	char *buf;
 
 	if (IN6_IS_ADDR_V4MAPPED (addr)) {
-		/* inet_ntop is probably supposed to do this for us, but it doesn't */
 		buf = g_malloc (INET_ADDRSTRLEN);
 		nm_utils_inet4_ntop (addr->s6_addr32[3], buf);
 	} else if (!iface || !iface[0] || !IN6_IS_ADDR_LINKLOCAL (addr)) {
 		buf = g_malloc (INET6_ADDRSTRLEN);
 		nm_utils_inet6_ntop (addr, buf);
 	} else {
-		/* If we got a scope identifier, we need use '%' instead of
-		 * '@', since dnsmasq supports '%' in server= addresses
-		 * only since version 2.58 and up
+		/* Need to scope the address with %<zone-id>. Before dnsmasq 2.58,
+		 * only '@' was supported as delimiter. Since 2.58, '@' and '%'
+		 * are supported. Due to a bug, since 2.73 only '%' works properly
+		 * as "server" address.
 		 */
-		buf = g_strconcat (nm_utils_inet6_ntop (addr, NULL), "@", iface, NULL);
+		buf = g_strconcat (nm_utils_inet6_ntop (addr, NULL), "%", iface, NULL);
 	}
 	return buf;
 }