pkg/ipam: use slash as sysctl separator so interface name can have dot
A dot is a valid character in interface names and is often used in the names of VLAN interfaces. The sysctl net.ipv6.conf.<ifname>.disable_ipv6 key path cannot use dots both in the ifname and as path separator. We switch to using / as key path separator so dots are allowed in the ifname. This works because sysctl.Sysctl() accepts key paths with either dots or slashes as separators. Also, print error message to stderr in case sysctl cannot be read instead of silently hiding the error. Signed-off-by: David Verbeiren <david.verbeiren@tessares.net>
This commit is contained in:
parent
fa48f7515b
commit
9b09f167bb
@ -27,7 +27,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
DisableIPv6SysctlTemplate = "net.ipv6.conf.%s.disable_ipv6"
|
// Note: use slash as separator so we can have dots in interface name (VLANs)
|
||||||
|
DisableIPv6SysctlTemplate = "net/ipv6/conf/%s/disable_ipv6"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ConfigureIface takes the result of IPAM plugin and
|
// ConfigureIface takes the result of IPAM plugin and
|
||||||
@ -68,8 +69,11 @@ func ConfigureIface(ifName string, res *current.Result) error {
|
|||||||
|
|
||||||
// Read current sysctl value
|
// Read current sysctl value
|
||||||
value, err := sysctl.Sysctl(ipv6SysctlValueName)
|
value, err := sysctl.Sysctl(ipv6SysctlValueName)
|
||||||
if err != nil || value == "0" {
|
if err != nil {
|
||||||
// FIXME: log warning if unable to read sysctl value
|
fmt.Fprintf(os.Stderr, "ipam_linux: failed to read sysctl %q: %v\n", ipv6SysctlValueName, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if value == "0" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user