diff --git a/networkdriver/network.go b/networkdriver/network.go index cce91d7a55..f8a807975b 100644 --- a/networkdriver/network.go +++ b/networkdriver/network.go @@ -12,6 +12,10 @@ var ( ErrNetworkOverlaps = errors.New("requested network overlaps with existing network") ) +var ( + networkGetRoutesFct = netlink.NetworkGetRoutes +) + func CheckNameserverOverlaps(nameservers []string, toCheck *net.IPNet) error { if len(nameservers) > 0 { for _, ns := range nameservers { @@ -28,7 +32,7 @@ func CheckNameserverOverlaps(nameservers []string, toCheck *net.IPNet) error { } func CheckRouteOverlaps(toCheck *net.IPNet) error { - networks, err := netlink.NetworkGetRoutes() + networks, err := networkGetRoutesFct() if err != nil { return err } diff --git a/networkdriver/network_test.go b/networkdriver/network_test.go index 8905dad053..c15f8b1cf5 100644 --- a/networkdriver/network_test.go +++ b/networkdriver/network_test.go @@ -35,12 +35,19 @@ func TestOverlapingNameservers(t *testing.T) { } func TestCheckRouteOverlaps(t *testing.T) { - routesData := []string{"10.0.2.0/32", "10.0.3.0/24", "10.0.42.0/24", "172.16.42.0/24", "192.168.142.0/24"} + orig := networkGetRoutesFct + defer func() { + networkGetRoutesFct = orig + }() + networkGetRoutesFct = func() ([]netlink.Route, error) { + routesData := []string{"10.0.2.0/32", "10.0.3.0/24", "10.0.42.0/24", "172.16.42.0/24", "192.168.142.0/24"} - routes := []netlink.Route{} - for _, addr := range routesData { - _, netX, _ := net.ParseCIDR(addr) - routes = append(routes, netlink.Route{IPNet: netX}) + routes := []netlink.Route{} + for _, addr := range routesData { + _, netX, _ := net.ParseCIDR(addr) + routes = append(routes, netlink.Route{IPNet: netX}) + } + return routes, nil } _, netX, _ := net.ParseCIDR("172.16.0.1/24")