package discovery import ( "net" "testing" ) func TestBestSourceIPForRemoteUsesMostSpecificMatchingSubnet(t *testing.T) { addresses := []net.Addr{ mustIPNet(t, "169.254.101.3/16"), mustIPNet(t, "192.168.229.138/24"), } actual := bestSourceIPForRemote(addresses, net.ParseIP("192.168.229.1")) if actual == nil || actual.String() != "192.168.229.138" { t.Fatalf("expected source 192.168.229.138, got %v", actual) } } func TestBestSourceIPForRemoteUsesLinkLocalAddressForLinkLocalClient(t *testing.T) { addresses := []net.Addr{ mustIPNet(t, "169.254.101.3/16"), mustIPNet(t, "192.168.229.138/24"), } actual := bestSourceIPForRemote(addresses, net.ParseIP("169.254.100.1")) if actual == nil || actual.String() != "169.254.101.3" { t.Fatalf("expected source 169.254.101.3, got %v", actual) } } func TestBestSourceIPForRemoteReturnsNilWithoutMatchingSubnet(t *testing.T) { addresses := []net.Addr{mustIPNet(t, "169.254.101.3/16")} if actual := bestSourceIPForRemote(addresses, net.ParseIP("192.168.229.1")); actual != nil { t.Fatalf("expected no matching source, got %v", actual) } } func TestBroadcastResponseTargetUsesRequesterPort(t *testing.T) { remote := &net.UDPAddr{IP: net.ParseIP("192.168.44.1"), Port: 55869} target := broadcastResponseTarget(remote) if !target.IP.Equal(net.IPv4bcast) || target.Port != remote.Port { t.Fatalf("expected 255.255.255.255:%d, got %s", remote.Port, target) } } func mustIPNet(t *testing.T, cidr string) *net.IPNet { t.Helper() ip, network, err := net.ParseCIDR(cidr) if err != nil { t.Fatal(err) } network.IP = ip return network }