aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tunnel/winipcfg/winipcfg_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'tunnel/winipcfg/winipcfg_test.go')
-rw-r--r--tunnel/winipcfg/winipcfg_test.go247
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
}
}