Commit 8359bd0b authored by Juan Batiz-Benet's avatar Juan Batiz-Benet

fixed consts + test

parent b2e23746
...@@ -57,7 +57,7 @@ func IsIPLoopback(m ma.Multiaddr) bool { ...@@ -57,7 +57,7 @@ func IsIPLoopback(m ma.Multiaddr) bool {
b := m.Bytes() b := m.Bytes()
// /ip4/127 prefix (_entire_ /8 is loopback...) // /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 return true
} }
...@@ -69,10 +69,12 @@ func IsIPLoopback(m ma.Multiaddr) bool { ...@@ -69,10 +69,12 @@ func IsIPLoopback(m ma.Multiaddr) bool {
return false return false
} }
// IPV6 Link Local addresses are non routable. // IP6 Link Local addresses are non routable. The prefix is technically
func IsIPV6LinkLocal(m ma.Multiaddr) bool { // fe80::/10, but we test fe80::/12 for simplicity (no need to mask).
b := m.Bytes() // So far, no hardware interfaces exist long enough to use those 2 bits.
return bytes.HasPrefix(b, []byte{41, 254, 128}) // 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 // IsIPUnspecified returns whether a Multiaddr is am Unspecified IP address
......
...@@ -2,6 +2,7 @@ package manet ...@@ -2,6 +2,7 @@ package manet
import ( import (
"bytes" "bytes"
"fmt"
"net" "net"
"sync" "sync"
"testing" "testing"
...@@ -334,3 +335,17 @@ func TestIPUnspecified(t *testing.T) { ...@@ -334,3 +335,17 @@ func TestIPUnspecified(t *testing.T) {
t.Error("IsIPUnspecified failed (IP6Unspecified)") 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)
}
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment