Project

General

Profile

Bug #10397

Changing default or static route gateway on 2.5.0 does not remove old route

Added by Jim Pingle 4 months ago. Updated 4 months ago.

Status:
Confirmed
Priority:
High
Assignee:
-
Category:
Gateways
Target version:
Start date:
03/31/2020
Due date:
% Done:

0%

Estimated time:
Affected Version:
2.5.0
Affected Architecture:

Description

2.5.0 has multi-path (RADIX_MPATH) enabled in its kernel (#9544) which allows multiple routes to the same destination to exist in the routing table.

This leads to a problem when changing the default gateway on system_gateways.php. When the user selects a different default gateway, then saves and applies changes, the old default is not removed:

WAN gateway selected as default:

: netstat -rn4 | grep default
default            198.51.100.1       UGS         em0

Default changed to WAN2 gateway, then save/apply:

: netstat -rn4 | grep default
default            198.51.100.1       UGS         em0
default            203.0.113.1        UGS         em2

The second route must be removed by hand (e.g. route delete default 198.51.100.1), or a reboot would also clear it.

History

#1 Updated by Jim Pingle 4 months ago

  • Subject changed from Changing default gateway on 2.5.0 does not remove old default to Changing default or static route gateway on 2.5.0 does not remove old route

This also affects static routes. Changing a route gateway does not remove the old route.

#2 Updated by Viktor Gurov 4 months ago

Jim Pingle wrote:

This also affects static routes. Changing a route gateway does not remove the old route.

It is possible to add parser to route_add_or_change() to delete existing route on change,
but it is better to fix it in FreeBSD

simple example from route(8) is not working:

EXAMPLES
     ...

     Add a static route    to the 172.16.10.0/24 network via the 172.16.1.1 gate-
     way:

       route add -net 172.16.10.0/24 172.16.1.1

     Change the    gateway    of an already established static route in the routing
     table:

       route change    -net 172.16.10.0/24 172.16.1.2

Test:

# route add -net 172.16.10.0/24 172.16.1.1
add net 172.16.10.0: gateway 172.16.1.1
# route change -net 172.16.10.0/24 172.16.1.2
route: route has not been found
change net 172.16.10.0: gateway 172.16.1.2 fib 0: not in table

Also available in: Atom PDF