| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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
- }
|