Merge pull request #2905 from aledbf/fix-ipv6

Fix IPV6 detection
This commit is contained in:
k8s-ci-robot 2018-08-06 12:06:53 -07:00 committed by GitHub
commit c97a90f3ce
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 3 deletions

View file

@ -5,6 +5,13 @@ sudo: required
services:
- docker
# FIXME(#46924): these two commands are required to enable IPv6,
# they shouldn't exist, please revert once more official solutions appeared.
# see https://github.com/travis-ci/travis-ci/issues/8891#issuecomment-353403729
before_install:
- echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json
- sudo service docker restart
language: generic
notifications:

View file

@ -24,7 +24,7 @@ import (
// IsIPV6 checks if the input contains a valid IPV6 address
func IsIPV6(ip _net.IP) bool {
return ip.To4() == nil
return ip != nil && ip.To4() == nil
}
// IsPortAvailable checks if a TCP port is available or not
@ -37,8 +37,25 @@ func IsPortAvailable(p int) bool {
return false
}
// IsIPv6Enabled checks if IPV6 is enabled or not
// IsIPv6Enabled checks if IPV6 is enabled or not and we have
// at least one configured in the pod
func IsIPv6Enabled() bool {
cmd := exec.Command("test", "-f", "/proc/net/if_inet6")
return cmd.Run() == nil
if cmd.Run() != nil {
return false
}
addrs, err := _net.InterfaceAddrs()
if err != nil {
return false
}
for _, addr := range addrs {
ip, _, _ := _net.ParseCIDR(addr.String())
if IsIPV6(ip) {
return true
}
}
return false
}

View file

@ -58,3 +58,10 @@ func TestIsPortAvailable(t *testing.T) {
t.Fatalf("expected port %v to not be available", p)
}
}
func TestIsIPv6Enabled(t *testing.T) {
isEnabled := IsIPv6Enabled()
if !isEnabled {
t.Fatalf("expected IPV6 be enabled")
}
}