diff options
author | Jan Macku <jamacku@redhat.com> | 2022-01-11 09:27:26 +0100 |
---|---|---|
committer | Jan Macku <jamacku@redhat.com> | 2022-01-12 14:40:37 +0100 |
commit | babc15492a84903810989c5b4d923c0ca443cf41 (patch) | |
tree | 97f61a819827f6d4d889338645bd205698f2d4fe /network-scripts | |
parent | 47bb4b7e18a9ee0fcfc347fbefb048d1320666e1 (diff) | |
download | initscripts-babc15492a84903810989c5b4d923c0ca443cf41.tar initscripts-babc15492a84903810989c5b4d923c0ca443cf41.tar.gz initscripts-babc15492a84903810989c5b4d923c0ca443cf41.tar.bz2 initscripts-babc15492a84903810989c5b4d923c0ca443cf41.tar.xz initscripts-babc15492a84903810989c5b4d923c0ca443cf41.zip |
ifup-routes: Use `ip route repace` to avoid race
This should resolve the scenario when the link is brought
up prior to disabling accept_ra.
This only happens when both IPv4 and IPv6 address is on
the interface, because network-scripts does IPv4 first
and brings up the interface.
Then it does IPv6 which disables the RA's, at that point
the node has already learned the route from RA and setting
a default route fails.
Using `ip route replace` we ensure if the above scenario
happens we end-up with the correct default ipv6 route.
Huge thanks to Harald who debugged this issue and prepared a patch!
Resolves: #2034799
(cherry picked from commit a71dcfd392cc1022c255208fdd94a0fc6c13ceb0)
Co-authored-by: hjensas <hjensas@redhat.com>
Diffstat (limited to 'network-scripts')
-rwxr-xr-x | network-scripts/ifup-routes | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/network-scripts/ifup-routes b/network-scripts/ifup-routes index 517c2bbb..e88ea9d5 100755 --- a/network-scripts/ifup-routes +++ b/network-scripts/ifup-routes @@ -19,7 +19,7 @@ handle_file () { line="$line via $(eval echo '$'GATEWAY$routenum)" fi line="$line dev $2" - /sbin/ip route add $line + /sbin/ip route replace $line routenum=$(($routenum+1)) done } @@ -34,7 +34,7 @@ handle_ip_file() { fi { cat "$file" ; echo ; } | while read line; do if [[ ! "$line" =~ $MATCH ]]; then - /sbin/ip $proto $type add $line + /sbin/ip $proto $type replace $line fi done } |