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-14 18:52:17 +0100
commit66530245e2cc8b58b49b8de748423f2f88c5edae (patch)
tree004b68fdd4f603d0507bbab48b7a2ae798de9f78
parent2a915025ac9a0c61a4a9edbb97ef56c116cf4e9f (diff)
downloadinitscripts-66530245e2cc8b58b49b8de748423f2f88c5edae.tar
initscripts-66530245e2cc8b58b49b8de748423f2f88c5edae.tar.gz
initscripts-66530245e2cc8b58b49b8de748423f2f88c5edae.tar.bz2
initscripts-66530245e2cc8b58b49b8de748423f2f88c5edae.tar.xz
initscripts-66530245e2cc8b58b49b8de748423f2f88c5edae.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! (cherry picked from commit a71dcfd392cc1022c255208fdd94a0fc6c13ceb0) Resolves: #2040679 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
}