diff options
Diffstat (limited to 'tunnel/winipcfg/winipcfg_test.go')
-rw-r--r-- | tunnel/winipcfg/winipcfg_test.go | 247 |
1 files changed, 96 insertions, 151 deletions
diff --git a/tunnel/winipcfg/winipcfg_test.go b/tunnel/winipcfg/winipcfg_test.go index 0251aecf..b49daf33 100644 --- a/tunnel/winipcfg/winipcfg_test.go +++ b/tunnel/winipcfg/winipcfg_test.go @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: MIT * - * Copyright (C) 2019 WireGuard LLC. All Rights Reserved. + * Copyright (C) 2019-2022 WireGuard LLC. All Rights Reserved. */ /* @@ -8,8 +8,8 @@ Some tests in this file require: - A dedicated network adapter - Any network adapter will do. It may be virtual (Wintun etc.). The adapter name - must contain string "winipcfg_test". + Any network adapter will do. It may be virtual (WireGuardNT, Wintun, + etc.). The adapter name must contain string "winipcfg_test". Tests will add, remove, flush DNS servers, change adapter IP address, manipulate routes etc. The adapter will not be returned to previous state, so use an expendable one. @@ -22,9 +22,9 @@ Some tests in this file require: package winipcfg import ( - "bytes" - "net" + "net/netip" "strings" + "syscall" "testing" "time" @@ -37,22 +37,13 @@ const ( // TODO: Add IPv6 tests. var ( - unexistentIPAddresToAdd = net.IPNet{ - IP: net.IP{172, 16, 1, 114}, - Mask: net.IPMask{255, 255, 255, 0}, - } - unexistentRouteIPv4ToAdd = RouteData{ - Destination: net.IPNet{ - IP: net.IP{172, 16, 200, 0}, - Mask: net.IPMask{255, 255, 255, 0}, - }, - NextHop: net.IP{172, 16, 1, 2}, - Metric: 0, - } - dnsesToSet = []net.IP{ - net.IPv4(8, 8, 8, 8), - net.IPv4(8, 8, 4, 4), + nonexistantIPv4ToAdd = netip.MustParsePrefix("172.16.1.114/24") + nonexistentRouteIPv4ToAdd = RouteData{ + Destination: netip.MustParsePrefix("172.16.200.0/24"), + NextHop: netip.MustParseAddr("172.16.1.2"), + Metric: 0, } + dnsesToSet = []netip.Addr{netip.MustParseAddr("8.8.8.8"), netip.MustParseAddr("8.8.4.4")} ) func runningElevated() bool { @@ -73,7 +64,7 @@ func getTestInterface() (*IPAdapterAddresses, error) { marker := strings.ToLower(testInterfaceMarker) for _, ifc := range ifcs { - if strings.Index(strings.ToLower(ifc.FriendlyName()), marker) != -1 { + if strings.Contains(strings.ToLower(ifc.FriendlyName()), marker) { return ifc, nil } } @@ -93,7 +84,7 @@ func getTestIPInterface(family AddressFamily) (*MibIPInterfaceRow, error) { func TestAdaptersAddresses(t *testing.T) { ifcs, err := GetAdaptersAddresses(windows.AF_UNSPEC, GAAFlagIncludeAll) if err != nil { - t.Errorf("GetAdaptersAddresses() returned error: %v", err) + t.Errorf("GetAdaptersAddresses() returned error: %w", err) } else if ifcs == nil { t.Errorf("GetAdaptersAddresses() returned nil.") } else if len(ifcs) == 0 { @@ -107,7 +98,7 @@ func TestAdaptersAddresses(t *testing.T) { i.PhysicalAddress() i.DHCPv6ClientDUID() for dnsSuffix := i.FirstDNSSuffix; dnsSuffix != nil; dnsSuffix = dnsSuffix.Next { - dnsSuffix.String() + _ = dnsSuffix.String() } } } @@ -117,7 +108,7 @@ func TestAdaptersAddresses(t *testing.T) { for _, i := range ifcs { ifc, err := i.LUID.Interface() if err != nil { - t.Errorf("LUID.Interface() returned an error: %v", err) + t.Errorf("LUID.Interface() returned an error: %w", err) continue } else if ifc == nil { t.Errorf("LUID.Interface() returned nil.") @@ -128,7 +119,7 @@ func TestAdaptersAddresses(t *testing.T) { for _, i := range ifcs { guid, err := i.LUID.GUID() if err != nil { - t.Errorf("LUID.GUID() returned an error: %v", err) + t.Errorf("LUID.GUID() returned an error: %w", err) continue } if guid == nil { @@ -138,7 +129,7 @@ func TestAdaptersAddresses(t *testing.T) { luid, err := LUIDFromGUID(guid) if err != nil { - t.Errorf("LUIDFromGUID() returned an error: %v", err) + t.Errorf("LUIDFromGUID() returned an error: %w", err) continue } if luid != i.LUID { @@ -151,7 +142,7 @@ func TestAdaptersAddresses(t *testing.T) { func TestIPInterface(t *testing.T) { ifcs, err := GetAdaptersAddresses(windows.AF_UNSPEC, GAAFlagDefault) if err != nil { - t.Errorf("GetAdaptersAddresses() returned error: %v", err) + t.Errorf("GetAdaptersAddresses() returned error: %w", err) } for _, i := range ifcs { @@ -161,12 +152,12 @@ func TestIPInterface(t *testing.T) { continue } if err != nil { - t.Errorf("LUID.IPInterface(%s) returned an error: %v", i.FriendlyName(), err) + t.Errorf("LUID.IPInterface(%s) returned an error: %w", i.FriendlyName(), err) } _, err = i.LUID.IPInterface(windows.AF_INET6) if err != nil { - t.Errorf("LUID.IPInterface(%s) returned an error: %v", i.FriendlyName(), err) + t.Errorf("LUID.IPInterface(%s) returned an error: %w", i.FriendlyName(), err) } } } @@ -174,7 +165,7 @@ func TestIPInterface(t *testing.T) { func TestIPInterfaces(t *testing.T) { tab, err := GetIPInterfaceTable(windows.AF_UNSPEC) if err != nil { - t.Errorf("GetIPInterfaceTable() returned an error: %v", err) + t.Errorf("GetIPInterfaceTable() returned an error: %w", err) return } else if tab == nil { t.Error("GetIPInterfaceTable() returned nil.") @@ -189,7 +180,7 @@ func TestIPInterfaces(t *testing.T) { func TestIPChangeMetric(t *testing.T) { ipifc, err := getTestIPInterface(windows.AF_INET) if err != nil { - t.Errorf("getTestIPInterface() returned an error: %v", err) + t.Errorf("getTestIPInterface() returned an error: %w", err) return } if !runningElevated() { @@ -208,13 +199,13 @@ func TestIPChangeMetric(t *testing.T) { } }) if err != nil { - t.Errorf("RegisterInterfaceChangeCallback() returned error: %v", err) + t.Errorf("RegisterInterfaceChangeCallback() returned error: %w", err) return } defer func() { err = cb.Unregister() if err != nil { - t.Errorf("UnregisterInterfaceChangeCallback() returned error: %v", err) + t.Errorf("UnregisterInterfaceChangeCallback() returned error: %w", err) } }() @@ -230,14 +221,14 @@ func TestIPChangeMetric(t *testing.T) { ipifc.Metric = newMetric err = ipifc.Set() if err != nil { - t.Errorf("MibIPInterfaceRow.Set() returned an error: %v", err) + t.Errorf("MibIPInterfaceRow.Set() returned an error: %w", err) } time.Sleep(500 * time.Millisecond) ipifc, err = getTestIPInterface(windows.AF_INET) if err != nil { - t.Errorf("getTestIPInterface() returned an error: %v", err) + t.Errorf("getTestIPInterface() returned an error: %w", err) return } if ipifc.Metric != newMetric { @@ -255,14 +246,14 @@ func TestIPChangeMetric(t *testing.T) { ipifc.Metric = metric err = ipifc.Set() if err != nil { - t.Errorf("MibIPInterfaceRow.Set() returned an error: %v", err) + t.Errorf("MibIPInterfaceRow.Set() returned an error: %w", err) } time.Sleep(500 * time.Millisecond) ipifc, err = getTestIPInterface(windows.AF_INET) if err != nil { - t.Errorf("getTestIPInterface() returned an error: %v", err) + t.Errorf("getTestIPInterface() returned an error: %w", err) return } if ipifc.Metric != metric { @@ -279,7 +270,7 @@ func TestIPChangeMetric(t *testing.T) { func TestIPChangeMTU(t *testing.T) { ipifc, err := getTestIPInterface(windows.AF_INET) if err != nil { - t.Errorf("getTestIPInterface() returned an error: %v", err) + t.Errorf("getTestIPInterface() returned an error: %w", err) return } if !runningElevated() { @@ -292,14 +283,14 @@ func TestIPChangeMTU(t *testing.T) { ipifc.NLMTU = mtuToSet err = ipifc.Set() if err != nil { - t.Errorf("Interface.Set() returned error: %v", err) + t.Errorf("Interface.Set() returned error: %w", err) } time.Sleep(500 * time.Millisecond) ipifc, err = getTestIPInterface(windows.AF_INET) if err != nil { - t.Errorf("getTestIPInterface() returned an error: %v", err) + t.Errorf("getTestIPInterface() returned an error: %w", err) return } if ipifc.NLMTU != mtuToSet { @@ -309,14 +300,14 @@ func TestIPChangeMTU(t *testing.T) { ipifc.NLMTU = prevMTU err = ipifc.Set() if err != nil { - t.Errorf("Interface.Set() returned error: %v", err) + t.Errorf("Interface.Set() returned error: %w", err) } time.Sleep(500 * time.Millisecond) ipifc, err = getTestIPInterface(windows.AF_INET) if err != nil { - t.Errorf("getTestIPInterface() returned an error: %v", err) + t.Errorf("getTestIPInterface() returned an error: %w", err) } if ipifc.NLMTU != prevMTU { t.Errorf("Interface.NLMTU is %d although %d is expected.", ipifc.NLMTU, prevMTU) @@ -326,13 +317,13 @@ func TestIPChangeMTU(t *testing.T) { func TestGetIfRow(t *testing.T) { ifc, err := getTestInterface() if err != nil { - t.Errorf("getTestInterface() returned an error: %v", err) + t.Errorf("getTestInterface() returned an error: %w", err) return } row, err := ifc.LUID.Interface() if err != nil { - t.Errorf("LUID.Interface() returned an error: %v", err) + t.Errorf("LUID.Interface() returned an error: %w", err) return } @@ -345,7 +336,7 @@ func TestGetIfRow(t *testing.T) { func TestGetIfRows(t *testing.T) { tab, err := GetIfTable2Ex(MibIfEntryNormal) if err != nil { - t.Errorf("GetIfTable2Ex() returned an error: %v", err) + t.Errorf("GetIfTable2Ex() returned an error: %w", err) return } else if tab == nil { t.Errorf("GetIfTable2Ex() returned nil") @@ -363,7 +354,7 @@ func TestGetIfRows(t *testing.T) { func TestUnicastIPAddress(t *testing.T) { _, err := GetUnicastIPAddressTable(windows.AF_UNSPEC) if err != nil { - t.Errorf("GetUnicastAddresses() returned an error: %v", err) + t.Errorf("GetUnicastAddresses() returned an error: %w", err) return } } @@ -371,7 +362,7 @@ func TestUnicastIPAddress(t *testing.T) { func TestAddDeleteIPAddress(t *testing.T) { ifc, err := getTestInterface() if err != nil { - t.Errorf("getTestInterface() returned an error: %v", err) + t.Errorf("getTestInterface() returned an error: %w", err) return } if !runningElevated() { @@ -379,12 +370,12 @@ func TestAddDeleteIPAddress(t *testing.T) { return } - addr, err := ifc.LUID.IPAddress(unexistentIPAddresToAdd.IP) + addr, err := ifc.LUID.IPAddress(nonexistantIPv4ToAdd.Addr()) if err == nil { - t.Errorf("Unicast address %s already exists. Please set unexistentIPAddresToAdd appropriately.", unexistentIPAddresToAdd.IP.String()) + t.Errorf("Unicast address %s already exists. Please set nonexistantIPv4ToAdd appropriately.", nonexistantIPv4ToAdd.Addr().String()) return } else if err != windows.ERROR_NOT_FOUND { - t.Errorf("LUID.IPAddress() returned an error: %v", err) + t.Errorf("LUID.IPAddress() returned an error: %w", err) return } @@ -401,7 +392,7 @@ func TestAddDeleteIPAddress(t *testing.T) { } }) if err != nil { - t.Errorf("RegisterUnicastAddressChangeCallback() returned an error: %v", err) + t.Errorf("RegisterUnicastAddressChangeCallback() returned an error: %w", err) } else { defer cb.Unregister() } @@ -409,9 +400,9 @@ func TestAddDeleteIPAddress(t *testing.T) { for addr := ifc.FirstUnicastAddress; addr != nil; addr = addr.Next { count-- } - err = ifc.LUID.AddIPAddresses([]net.IPNet{unexistentIPAddresToAdd}) + err = ifc.LUID.AddIPAddresses([]netip.Prefix{nonexistantIPv4ToAdd}) if err != nil { - t.Errorf("LUID.AddIPAddresses() returned an error: %v", err) + t.Errorf("LUID.AddIPAddresses() returned an error: %w", err) } time.Sleep(500 * time.Millisecond) @@ -423,28 +414,28 @@ func TestAddDeleteIPAddress(t *testing.T) { if count != 1 { t.Errorf("After adding there are %d new interface(s).", count) } - addr, err = ifc.LUID.IPAddress(unexistentIPAddresToAdd.IP) + addr, err = ifc.LUID.IPAddress(nonexistantIPv4ToAdd.Addr()) if err != nil { - t.Errorf("LUID.IPAddress() returned an error: %v", err) + t.Errorf("LUID.IPAddress() returned an error: %w", err) } else if addr == nil { - t.Errorf("Unicast address %s still doesn't exist, although it's added successfully.", unexistentIPAddresToAdd.IP.String()) + t.Errorf("Unicast address %s still doesn't exist, although it's added successfully.", nonexistantIPv4ToAdd.Addr().String()) } if !created { t.Errorf("Notification handler has not been called on add.") } - err = ifc.LUID.DeleteIPAddress(unexistentIPAddresToAdd) + err = ifc.LUID.DeleteIPAddress(nonexistantIPv4ToAdd) if err != nil { - t.Errorf("LUID.DeleteIPAddress() returned an error: %v", err) + t.Errorf("LUID.DeleteIPAddress() returned an error: %w", err) } time.Sleep(500 * time.Millisecond) - addr, err = ifc.LUID.IPAddress(unexistentIPAddresToAdd.IP) + addr, err = ifc.LUID.IPAddress(nonexistantIPv4ToAdd.Addr()) if err == nil { - t.Errorf("Unicast address %s still exists, although it's deleted successfully.", unexistentIPAddresToAdd.IP.String()) + t.Errorf("Unicast address %s still exists, although it's deleted successfully.", nonexistantIPv4ToAdd.Addr().String()) } else if err != windows.ERROR_NOT_FOUND { - t.Errorf("LUID.IPAddress() returned an error: %v", err) + t.Errorf("LUID.IPAddress() returned an error: %w", err) } if !deleted { t.Errorf("Notification handler has not been called on delete.") @@ -454,19 +445,18 @@ func TestAddDeleteIPAddress(t *testing.T) { func TestGetRoutes(t *testing.T) { _, err := GetIPForwardTable2(windows.AF_UNSPEC) if err != nil { - t.Errorf("GetIPForwardTable2() returned error: %v", err) + t.Errorf("GetIPForwardTable2() returned error: %w", err) } } func TestAddDeleteRoute(t *testing.T) { - findRoute := func(luid LUID, dest net.IPNet) ([]MibIPforwardRow2, error) { + findRoute := func(luid LUID, dest netip.Prefix) ([]MibIPforwardRow2, error) { var family AddressFamily - switch { - case dest.IP.To4() != nil: + if dest.Addr().Is4() { family = windows.AF_INET - case dest.IP.To16() != nil: + } else if dest.Addr().Is6() { family = windows.AF_INET6 - default: + } else { return nil, windows.ERROR_INVALID_PARAMETER } r, err := GetIPForwardTable2(family) @@ -474,9 +464,8 @@ func TestAddDeleteRoute(t *testing.T) { return nil, err } matches := make([]MibIPforwardRow2, 0, len(r)) - ones, _ := dest.Mask.Size() for _, route := range r { - if route.InterfaceLUID == luid && route.DestinationPrefix.PrefixLength == uint8(ones) && route.DestinationPrefix.Prefix.Family == family && route.DestinationPrefix.Prefix.IP().Equal(dest.IP) { + if route.InterfaceLUID == luid && route.DestinationPrefix.PrefixLength == uint8(dest.Bits()) && route.DestinationPrefix.RawPrefix.Family == family && route.DestinationPrefix.RawPrefix.Addr() == dest.Addr() { matches = append(matches, route) } } @@ -485,7 +474,7 @@ func TestAddDeleteRoute(t *testing.T) { ifc, err := getTestInterface() if err != nil { - t.Errorf("getTestInterface() returned an error: %v", err) + t.Errorf("getTestInterface() returned an error: %w", err) return } if !runningElevated() { @@ -493,20 +482,20 @@ func TestAddDeleteRoute(t *testing.T) { return } - _, err = ifc.LUID.Route(unexistentRouteIPv4ToAdd.Destination, unexistentRouteIPv4ToAdd.NextHop) + _, err = ifc.LUID.Route(nonexistentRouteIPv4ToAdd.Destination, nonexistentRouteIPv4ToAdd.NextHop) if err == nil { - t.Error("LUID.Route() returned a route although it isn't added yet. Have you forgot to set unexistentRouteIPv4ToAdd appropriately?") + t.Error("LUID.Route() returned a route although it isn't added yet. Have you forgot to set nonexistentRouteIPv4ToAdd appropriately?") return } else if err != windows.ERROR_NOT_FOUND { - t.Errorf("LUID.Route() returned an error: %v", err) + t.Errorf("LUID.Route() returned an error: %w", err) return } - routes, err := findRoute(ifc.LUID, unexistentRouteIPv4ToAdd.Destination) + routes, err := findRoute(ifc.LUID, nonexistentRouteIPv4ToAdd.Destination) if err != nil { - t.Errorf("findRoute() returned an error: %v", err) + t.Errorf("findRoute() returned an error: %w", err) } else if len(routes) != 0 { - t.Errorf("findRoute() returned %d items although the route isn't added yet. Have you forgot to set unexistentRouteIPv4ToAdd appropriately?", len(routes)) + t.Errorf("findRoute() returned %d items although the route isn't added yet. Have you forgot to set nonexistentRouteIPv4ToAdd appropriately?", len(routes)) } var created, deleted bool @@ -519,58 +508,58 @@ func TestAddDeleteRoute(t *testing.T) { } }) if err != nil { - t.Errorf("RegisterRouteChangeCallback() returned an error: %v", err) + t.Errorf("RegisterRouteChangeCallback() returned an error: %w", err) } else { defer cb.Unregister() } - err = ifc.LUID.AddRoute(unexistentRouteIPv4ToAdd.Destination, unexistentRouteIPv4ToAdd.NextHop, unexistentRouteIPv4ToAdd.Metric) + err = ifc.LUID.AddRoute(nonexistentRouteIPv4ToAdd.Destination, nonexistentRouteIPv4ToAdd.NextHop, nonexistentRouteIPv4ToAdd.Metric) if err != nil { - t.Errorf("LUID.AddRoute() returned an error: %v", err) + t.Errorf("LUID.AddRoute() returned an error: %w", err) } time.Sleep(500 * time.Millisecond) - route, err := ifc.LUID.Route(unexistentRouteIPv4ToAdd.Destination, unexistentRouteIPv4ToAdd.NextHop) + route, err := ifc.LUID.Route(nonexistentRouteIPv4ToAdd.Destination, nonexistentRouteIPv4ToAdd.NextHop) if err == windows.ERROR_NOT_FOUND { t.Error("LUID.Route() returned nil although the route is added successfully.") } else if err != nil { - t.Errorf("LUID.Route() returned an error: %v", err) - } else if !route.DestinationPrefix.Prefix.IP().Equal(unexistentRouteIPv4ToAdd.Destination.IP) || !route.NextHop.IP().Equal(unexistentRouteIPv4ToAdd.NextHop) { + t.Errorf("LUID.Route() returned an error: %w", err) + } else if route.DestinationPrefix.RawPrefix.Addr() != nonexistentRouteIPv4ToAdd.Destination.Addr() || route.NextHop.Addr() != nonexistentRouteIPv4ToAdd.NextHop { t.Error("LUID.Route() returned a wrong route!") } if !created { t.Errorf("Route handler has not been called on add.") } - routes, err = findRoute(ifc.LUID, unexistentRouteIPv4ToAdd.Destination) + routes, err = findRoute(ifc.LUID, nonexistentRouteIPv4ToAdd.Destination) if err != nil { - t.Errorf("findRoute() returned an error: %v", err) + t.Errorf("findRoute() returned an error: %w", err) } else if len(routes) != 1 { t.Errorf("findRoute() returned %d items although %d is expected.", len(routes), 1) - } else if !routes[0].DestinationPrefix.Prefix.IP().Equal(unexistentRouteIPv4ToAdd.Destination.IP) { - t.Errorf("findRoute() returned a wrong route. Dest: %s; expected: %s.", routes[0].DestinationPrefix.Prefix.IP().String(), unexistentRouteIPv4ToAdd.Destination.IP.String()) + } else if routes[0].DestinationPrefix.RawPrefix.Addr() != nonexistentRouteIPv4ToAdd.Destination.Addr() { + t.Errorf("findRoute() returned a wrong route. Dest: %s; expected: %s.", routes[0].DestinationPrefix.RawPrefix.Addr().String(), nonexistentRouteIPv4ToAdd.Destination.Addr().String()) } - err = ifc.LUID.DeleteRoute(unexistentRouteIPv4ToAdd.Destination, unexistentRouteIPv4ToAdd.NextHop) + err = ifc.LUID.DeleteRoute(nonexistentRouteIPv4ToAdd.Destination, nonexistentRouteIPv4ToAdd.NextHop) if err != nil { - t.Errorf("LUID.DeleteRoute() returned an error: %v", err) + t.Errorf("LUID.DeleteRoute() returned an error: %w", err) } time.Sleep(500 * time.Millisecond) - _, err = ifc.LUID.Route(unexistentRouteIPv4ToAdd.Destination, unexistentRouteIPv4ToAdd.NextHop) + _, err = ifc.LUID.Route(nonexistentRouteIPv4ToAdd.Destination, nonexistentRouteIPv4ToAdd.NextHop) if err == nil { t.Error("LUID.Route() returned a route although it is removed successfully.") } else if err != windows.ERROR_NOT_FOUND { - t.Errorf("LUID.Route() returned an error: %v", err) + t.Errorf("LUID.Route() returned an error: %w", err) } if !deleted { t.Errorf("Route handler has not been called on delete.") } - routes, err = findRoute(ifc.LUID, unexistentRouteIPv4ToAdd.Destination) + routes, err = findRoute(ifc.LUID, nonexistentRouteIPv4ToAdd.Destination) if err != nil { - t.Errorf("findRoute() returned an error: %v", err) + t.Errorf("findRoute() returned an error: %w", err) } else if len(routes) != 0 { t.Errorf("findRoute() returned %d items although the route is deleted successfully.", len(routes)) } @@ -579,7 +568,7 @@ func TestAddDeleteRoute(t *testing.T) { func TestFlushDNS(t *testing.T) { ifc, err := getTestInterface() if err != nil { - t.Errorf("getTestInterface() returned an error: %v", err) + t.Errorf("getTestInterface() returned an error: %w", err) return } if !runningElevated() { @@ -589,12 +578,12 @@ func TestFlushDNS(t *testing.T) { prevDNSes, err := ifc.LUID.DNS() if err != nil { - t.Errorf("LUID.DNS() returned an error: %v", err) + t.Errorf("LUID.DNS() returned an error: %w", err) } - err = ifc.LUID.FlushDNS() + err = ifc.LUID.FlushDNS(syscall.AF_INET) if err != nil { - t.Errorf("LUID.FlushDNS() returned an error: %v", err) + t.Errorf("LUID.FlushDNS() returned an error: %w", err) } ifc, _ = getTestInterface() @@ -602,10 +591,10 @@ func TestFlushDNS(t *testing.T) { n := 0 dns, err := ifc.LUID.DNS() if err != nil { - t.Errorf("LUID.DNS() returned an error: %v", err) + t.Errorf("LUID.DNS() returned an error: %w", err) } for _, a := range dns { - if len(a) != 16 || a.To4() != nil || !((a[15] == 1 || a[15] == 2 || a[15] == 3) && bytes.HasPrefix(a, []byte{0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})) { + if a.Is4() { n++ } } @@ -613,51 +602,7 @@ func TestFlushDNS(t *testing.T) { t.Errorf("DNSServerAddresses contains %d items, although FlushDNS is executed successfully.", n) } - err = ifc.LUID.SetDNS(prevDNSes) - if err != nil { - t.Errorf("LUID.SetDNS() returned an error: %v.", err) - } -} - -func TestAddDNS(t *testing.T) { - ifc, err := getTestInterface() - if err != nil { - t.Errorf("getTestInterface() returned an error: %v", err) - return - } - if !runningElevated() { - t.Errorf("%s requires elevation", t.Name()) - return - } - - prevDNSes, err := ifc.LUID.DNS() - if err != nil { - t.Errorf("LUID.DNS() returned an error: %v", err) - } - expectedDNSes := append(prevDNSes, dnsesToSet...) - - err = ifc.LUID.AddDNS(dnsesToSet) - if err != nil { - t.Errorf("LUID.AddDNS() returned an error: %v", err) - return - } - - ifc, _ = getTestInterface() - - newDNSes, err := ifc.LUID.DNS() - if err != nil { - t.Errorf("LUID.DNS() returned an error: %v", err) - } else if len(newDNSes) != len(expectedDNSes) { - t.Errorf("expectedDNSes contains %d items, while DNSServerAddresses contains %d.", len(expectedDNSes), len(newDNSes)) - } else { - for i := range expectedDNSes { - if !expectedDNSes[i].Equal(newDNSes[i]) { - t.Errorf("expectedDNSes[%d] = %s while DNSServerAddresses[%d] = %s.", i, expectedDNSes[i].String(), i, newDNSes[i].String()) - } - } - } - - err = ifc.LUID.SetDNS(prevDNSes) + err = ifc.LUID.SetDNS(windows.AF_INET, prevDNSes, nil) if err != nil { t.Errorf("LUID.SetDNS() returned an error: %v.", err) } @@ -666,7 +611,7 @@ func TestAddDNS(t *testing.T) { func TestSetDNS(t *testing.T) { ifc, err := getTestInterface() if err != nil { - t.Errorf("getTestInterface() returned an error: %v", err) + t.Errorf("getTestInterface() returned an error: %w", err) return } if !runningElevated() { @@ -676,12 +621,12 @@ func TestSetDNS(t *testing.T) { prevDNSes, err := ifc.LUID.DNS() if err != nil { - t.Errorf("LUID.DNS() returned an error: %v", err) + t.Errorf("LUID.DNS() returned an error: %w", err) } - err = ifc.LUID.SetDNS(dnsesToSet) + err = ifc.LUID.SetDNS(windows.AF_INET, dnsesToSet, nil) if err != nil { - t.Errorf("LUID.SetDNS() returned an error: %v", err) + t.Errorf("LUID.SetDNS() returned an error: %w", err) return } @@ -689,18 +634,18 @@ func TestSetDNS(t *testing.T) { newDNSes, err := ifc.LUID.DNS() if err != nil { - t.Errorf("LUID.DNS() returned an error: %v", err) + t.Errorf("LUID.DNS() returned an error: %w", err) } else if len(newDNSes) != len(dnsesToSet) { t.Errorf("dnsesToSet contains %d items, while DNSServerAddresses contains %d.", len(dnsesToSet), len(newDNSes)) } else { for i := range dnsesToSet { - if !dnsesToSet[i].Equal(newDNSes[i]) { + if dnsesToSet[i] != newDNSes[i] { t.Errorf("dnsesToSet[%d] = %s while DNSServerAddresses[%d] = %s.", i, dnsesToSet[i].String(), i, newDNSes[i].String()) } } } - err = ifc.LUID.SetDNS(prevDNSes) + err = ifc.LUID.SetDNS(windows.AF_INET, prevDNSes, nil) if err != nil { t.Errorf("LUID.SetDNS() returned an error: %v.", err) } @@ -709,7 +654,7 @@ func TestSetDNS(t *testing.T) { func TestAnycastIPAddress(t *testing.T) { _, err := GetAnycastIPAddressTable(windows.AF_UNSPEC) if err != nil { - t.Errorf("GetAnycastIPAddressTable() returned an error: %v", err) + t.Errorf("GetAnycastIPAddressTable() returned an error: %w", err) return } } |