aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Macku <jamacku@redhat.com>2022-01-11 09:27:26 +0100
committerJan Macku <jamacku@redhat.com>2022-01-12 14:40:37 +0100
commitbabc15492a84903810989c5b4d923c0ca443cf41 (patch)
tree97f61a819827f6d4d889338645bd205698f2d4fe
parent47bb4b7e18a9ee0fcfc347fbefb048d1320666e1 (diff)
downloadinitscripts-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>
-rwxr-xr-xnetwork-scripts/ifup-routes4
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
}