mirror of
https://github.com/samba-team/samba.git
synced 2025-03-27 22:50:26 +03:00
ctdb-scripts: Wait until IPv6 addresses are not "tentative"
There are a few potential failure modes when adding an IPv6 address. It takes a little while of duplicate address detection to complete, so wait for a while. After a timeout, also need to check to see if duplicate address detection failed - if it did then actually drop the IP address. This really needs some careful thinking. If CTDB disappears on a node but the node's IP addresses are still on interfaces then the above failure mode could cause the takeover nodes to become banned. Signed-off-by: Martin Schwenke <martin@meltin.net> Reviewed-by: Amitay Isaacs <amitay@gmail.com>
This commit is contained in:
parent
d4212bd6a5
commit
d0b2375c3d
@ -869,6 +869,29 @@ add_ip_to_iface ()
|
||||
echo "Failed to add $_ip/$_maskbits on dev $_iface"
|
||||
return 1
|
||||
}
|
||||
|
||||
# Wait 5 seconds for IPv6 addresses to stop being tentative...
|
||||
if [ -z "$_bcast" ] ; then
|
||||
for _x in $(seq 1 10) ; do
|
||||
ip addr show to "${_ip}/128" | grep -q "tentative" || break
|
||||
sleep 0.5
|
||||
done
|
||||
|
||||
# If the address was a duplicate then it won't be on the
|
||||
# interface so flag an error.
|
||||
_t=$(ip addr show to "${_ip}/128")
|
||||
case "$_t" in
|
||||
"")
|
||||
echo "Failed to add $_ip/$_maskbits on dev $_iface"
|
||||
return 1
|
||||
;;
|
||||
*tentative*|*dadfailed*)
|
||||
echo "Failed to add $_ip/$_maskbits on dev $_iface"
|
||||
ip addr del "$_ip/$_maskbits" dev "$_iface"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
delete_ip_from_iface()
|
||||
|
Loading…
x
Reference in New Issue
Block a user