commit
c97a90f3ce
3 changed files with 34 additions and 3 deletions
|
@ -5,6 +5,13 @@ sudo: required
|
||||||
services:
|
services:
|
||||||
- docker
|
- 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
|
language: generic
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
|
|
|
@ -24,7 +24,7 @@ import (
|
||||||
|
|
||||||
// IsIPV6 checks if the input contains a valid IPV6 address
|
// IsIPV6 checks if the input contains a valid IPV6 address
|
||||||
func IsIPV6(ip _net.IP) bool {
|
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
|
// IsPortAvailable checks if a TCP port is available or not
|
||||||
|
@ -37,8 +37,25 @@ func IsPortAvailable(p int) bool {
|
||||||
return false
|
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 {
|
func IsIPv6Enabled() bool {
|
||||||
cmd := exec.Command("test", "-f", "/proc/net/if_inet6")
|
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
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,3 +58,10 @@ func TestIsPortAvailable(t *testing.T) {
|
||||||
t.Fatalf("expected port %v to not be available", p)
|
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")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue