aboutsummaryrefslogtreecommitdiff
path: root/src/net/interface_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/interface_test.go')
-rw-r--r--src/net/interface_test.go30
1 files changed, 26 insertions, 4 deletions
diff --git a/src/net/interface_test.go b/src/net/interface_test.go
index 567d18de44..c5e7c432cd 100644
--- a/src/net/interface_test.go
+++ b/src/net/interface_test.go
@@ -188,18 +188,39 @@ func testAddrs(t *testing.T, ifat []Addr) (naf4, naf6 int) {
prefixLen, maxPrefixLen := ifa.Mask.Size()
if ifa.IP.To4() != nil {
if 0 >= prefixLen || prefixLen > 8*IPv4len || maxPrefixLen != 8*IPv4len {
- t.Errorf("unexpected prefix length: %v/%v", prefixLen, maxPrefixLen)
+ t.Errorf("unexpected prefix length: %d/%d", prefixLen, maxPrefixLen)
+ continue
+ }
+ if ifa.IP.IsLoopback() && (prefixLen != 8 && prefixLen != 8*IPv4len) { // see RFC 1122
+ t.Errorf("unexpected prefix length for IPv4 loopback: %d/%d", prefixLen, maxPrefixLen)
continue
}
naf4++
- } else if ifa.IP.To16() != nil {
+ }
+ if ifa.IP.To16() != nil && ifa.IP.To4() == nil {
if 0 >= prefixLen || prefixLen > 8*IPv6len || maxPrefixLen != 8*IPv6len {
- t.Errorf("unexpected prefix length: %v/%v", prefixLen, maxPrefixLen)
+ t.Errorf("unexpected prefix length: %d/%d", prefixLen, maxPrefixLen)
+ continue
+ }
+ if ifa.IP.IsLoopback() && prefixLen != 8*IPv6len { // see RFC 4291
+ t.Errorf("unexpected prefix length for IPv6 loopback: %d/%d", prefixLen, maxPrefixLen)
continue
}
naf6++
}
t.Logf("interface address %q", ifa.String())
+ case *IPAddr:
+ if ifa == nil || ifa.IP == nil || ifa.IP.IsUnspecified() || ifa.IP.IsMulticast() {
+ t.Errorf("unexpected value: %+v", ifa)
+ continue
+ }
+ if ifa.IP.To4() != nil {
+ naf4++
+ }
+ if ifa.IP.To16() != nil && ifa.IP.To4() == nil {
+ naf6++
+ }
+ t.Logf("interface address %s", ifa.String())
default:
t.Errorf("unexpected type: %T", ifa)
}
@@ -217,7 +238,8 @@ func testMulticastAddrs(t *testing.T, ifmat []Addr) (nmaf4, nmaf6 int) {
}
if ifma.IP.To4() != nil {
nmaf4++
- } else if ifma.IP.To16() != nil {
+ }
+ if ifma.IP.To16() != nil && ifma.IP.To4() == nil {
nmaf6++
}
t.Logf("joined group address %q", ifma.String())