From 53c84ac767b5d921aa494f4c3f7ed429f3315b1c Mon Sep 17 00:00:00 2001 From: Alessandro Boch Date: Wed, 25 Jan 2017 22:41:18 -0800 Subject: [PATCH] Fix GetNameServerAsCIDR - the function is broken as it does not strip the zone id from an IPv6 nameserver address, and it returns the IPv6 address with /32 Signed-off-by: Alessandro Boch --- libnetwork/resolvconf/resolvconf.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libnetwork/resolvconf/resolvconf.go b/libnetwork/resolvconf/resolvconf.go index 41c9af7cca..9da6922e2b 100644 --- a/libnetwork/resolvconf/resolvconf.go +++ b/libnetwork/resolvconf/resolvconf.go @@ -178,7 +178,14 @@ func GetNameservers(resolvConf []byte, kind int) []string { func GetNameserversAsCIDR(resolvConf []byte) []string { nameservers := []string{} for _, nameserver := range GetNameservers(resolvConf, types.IP) { - nameservers = append(nameservers, nameserver+"/32") + var address string + // If IPv6, strip zone if present + if strings.Contains(nameserver, ":") { + address = strings.Split(nameserver, "%")[0] + "/128" + } else { + address = nameserver + "/32" + } + nameservers = append(nameservers, address) } return nameservers }