mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-24 16:41:30 +02:00
Android never reported its local network interfaces, so PeerNetworkRange posture checks could not be evaluated: NetworkAddresses always arrived empty. net.Interfaces() is unusable on Android 11+ (SELinux blocks netlink), so the addresses are parsed from the interface description the host app already provides via stdnet.ExternalIFaceDiscover. The MAC filter is skipped, mirroring #5906 for iOS, since Android does not expose MACs either and nothing reads Mac server side.
46 lines
1010 B
Go
46 lines
1010 B
Go
//go:build !ios && !android
|
|
|
|
package system
|
|
|
|
import (
|
|
"net"
|
|
"testing"
|
|
)
|
|
|
|
func mustIPNet(t *testing.T, cidr string) *net.IPNet {
|
|
t.Helper()
|
|
ip, ipNet, err := net.ParseCIDR(cidr)
|
|
if err != nil {
|
|
t.Fatalf("parse %q: %v", cidr, err)
|
|
}
|
|
ipNet.IP = ip
|
|
return ipNet
|
|
}
|
|
|
|
func TestToNetworkAddress_Filtering(t *testing.T) {
|
|
const mac = "c8:4b:d6:b6:04:ac"
|
|
|
|
tests := []struct {
|
|
name string
|
|
cidr string
|
|
want bool
|
|
}{
|
|
{"ipv4 global", "10.65.16.181/23", true},
|
|
{"ipv6 global", "2620:52:0:4110:102d:6a98:ee75:8b92/64", true},
|
|
{"ipv4 loopback", "127.0.0.1/8", false},
|
|
{"ipv6 loopback", "::1/128", false},
|
|
{"ipv6 link-local", "fe80::871:4c25:23d7:2529/64", false},
|
|
{"ipv4 link-local", "169.254.1.2/16", false},
|
|
{"ipv6 multicast", "ff02::1/128", false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
_, got := toNetworkAddress(mustIPNet(t, tt.cidr), mac)
|
|
if got != tt.want {
|
|
t.Errorf("toNetworkAddress(%s) ok = %v, want %v", tt.cidr, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|