mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-09 14:40:21 +01:00
dnsmasq: fix using '%' delimiter to scope link local with zone-id
Since long, dnsmasq supports scoping the IPv6 address
with '@<interface-name>'. Since 2.58, it also supports
'%' as delimiter, which is the standard way to specify
the zone-id (rfc6874).
Since 2.73, specifying the scope with '@' as "server"
address is no longer working properly, thus breaking
NetworkManager with dnsmasq >= 2.73.
To work around that, use '%' delimiter. That breaks pre-2.58
users that have a DNS server on a link local address, but that
seems acceptable as that version was released in January 2012.
https://bugzilla.gnome.org/show_bug.cgi?id=764839
(cherry picked from commit c328cf52f2)
This commit is contained in:
parent
ae879bdeba
commit
3ec40f9fa9
1 changed files with 5 additions and 5 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue