Skip to content

Commit

Permalink
Only check if route overlaps routes with scope: LINK
Browse files Browse the repository at this point in the history
Signed-off-by: Alex Nordlund <alexander.nordlund@nasdaq.com>
  • Loading branch information
deepy committed Aug 25, 2021
1 parent 42d2048 commit ee9e526
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
2 changes: 1 addition & 1 deletion libnetwork/netutils/utils_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func CheckRouteOverlaps(toCheck *net.IPNet) error {
return err
}
for _, network := range networks {
if network.Dst != nil && NetworkOverlaps(toCheck, network.Dst) {
if network.Dst != nil && network.Scope == netlink.SCOPE_LINK && NetworkOverlaps(toCheck, network.Dst) {
return ErrNetworkOverlaps
}
}
Expand Down
10 changes: 9 additions & 1 deletion libnetwork/netutils/utils_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,11 @@ func TestCheckRouteOverlaps(t *testing.T) {
routes := []netlink.Route{}
for _, addr := range routesData {
_, netX, _ := net.ParseCIDR(addr)
routes = append(routes, netlink.Route{Dst: netX})
routes = append(routes, netlink.Route{Dst: netX, Scope: netlink.SCOPE_LINK})
}
// Add a route with a scope which should not overlap
_, netX, _ := net.ParseCIDR("10.0.5.0/24")
routes = append(routes, netlink.Route{Dst: netX, Scope: netlink.SCOPE_UNIVERSE})
return routes, nil
}
defer func() { networkGetRoutesFct = nil }()
Expand All @@ -61,6 +64,11 @@ func TestCheckRouteOverlaps(t *testing.T) {
if err := CheckRouteOverlaps(netX); err == nil {
t.Fatal("10.0.2.0/24 and 10.0.2.0 should overlap but it doesn't")
}

_, netX, _ = net.ParseCIDR("10.0.5.0/24")
if err := CheckRouteOverlaps(netX); err != nil {
t.Fatal("10.0.5.0/24 and 10.0.5.0 with scope UNIVERSE should not overlap but it does")
}
}

func TestCheckNameserverOverlaps(t *testing.T) {
Expand Down

0 comments on commit ee9e526

Please sign in to comment.