diff options
Diffstat (limited to 'src/net/interface_test.go')
| -rw-r--r-- | src/net/interface_test.go | 30 |
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()) |
