mirror of
https://github.com/logos-messaging/go-multiaddr.git
synced 2026-01-06 15:03:06 +00:00
fixed consts + test
This commit is contained in:
parent
b2e2374680
commit
8359bd0b54
12
ip.go
12
ip.go
@ -57,7 +57,7 @@ func IsIPLoopback(m ma.Multiaddr) bool {
|
||||
b := m.Bytes()
|
||||
|
||||
// /ip4/127 prefix (_entire_ /8 is loopback...)
|
||||
if bytes.HasPrefix(b, []byte{4, 127}) {
|
||||
if bytes.HasPrefix(b, []byte{ma.P_IP4, 127}) {
|
||||
return true
|
||||
}
|
||||
|
||||
@ -69,10 +69,12 @@ func IsIPLoopback(m ma.Multiaddr) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
// IPV6 Link Local addresses are non routable.
|
||||
func IsIPV6LinkLocal(m ma.Multiaddr) bool {
|
||||
b := m.Bytes()
|
||||
return bytes.HasPrefix(b, []byte{41, 254, 128})
|
||||
// IP6 Link Local addresses are non routable. The prefix is technically
|
||||
// fe80::/10, but we test fe80::/12 for simplicity (no need to mask).
|
||||
// So far, no hardware interfaces exist long enough to use those 2 bits.
|
||||
// Send a PR if there is.
|
||||
func IsIP6LinkLocal(m ma.Multiaddr) bool {
|
||||
return bytes.HasPrefix(m.Bytes(), []byte{ma.P_IP6, 0xfe, 0x80, 0})
|
||||
}
|
||||
|
||||
// IsIPUnspecified returns whether a Multiaddr is am Unspecified IP address
|
||||
|
||||
15
net_test.go
15
net_test.go
@ -2,6 +2,7 @@ package manet
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"net"
|
||||
"sync"
|
||||
"testing"
|
||||
@ -334,3 +335,17 @@ func TestIPUnspecified(t *testing.T) {
|
||||
t.Error("IsIPUnspecified failed (IP6Unspecified)")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIP6LinkLocal(t *testing.T) {
|
||||
if !IsIP6LinkLocal(IP6LinkLocalLoopback) {
|
||||
t.Error("IsIP6LinkLocal failed (IP6LinkLocalLoopback)")
|
||||
}
|
||||
|
||||
for a := 0; a < 65536; a++ {
|
||||
isLinkLocal := (a == 0xfe80)
|
||||
m := newMultiaddr(t, fmt.Sprintf("/ip6/%x::1", a))
|
||||
if IsIP6LinkLocal(m) != isLinkLocal {
|
||||
t.Error("IsIP6LinkLocal failed (%s != %v)", m, isLinkLocal)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user