[DHCP relay]: Wait for all interfaces to be assigned IPv4 addresses before starting relay agent(s) (#1173)
This commit is contained in:
parent
dc9f19e90d
commit
1f9107d044
@ -6,7 +6,12 @@ rm -f /var/run/rsyslogd.pid
|
|||||||
# Start rsyslog
|
# Start rsyslog
|
||||||
supervisorctl start rsyslogd
|
supervisorctl start rsyslogd
|
||||||
|
|
||||||
# Wait for all interfaces to come up before starting the DHCP relay agent(s)
|
# Wait for all interfaces to come up and be assigned IPv4 addresses before
|
||||||
|
# starting the DHCP relay agent(s). If an interface the relay should listen
|
||||||
|
# on is down, the relay agent will not start. If an interface the relay should
|
||||||
|
# listen on is up but does not have an IP address assigned when the relay
|
||||||
|
# agent starts, it will not listen or send on that interface for the lifetime
|
||||||
|
# of the process.
|
||||||
/usr/bin/wait_for_intf.sh
|
/usr/bin/wait_for_intf.sh
|
||||||
|
|
||||||
# Start the DHCP relay agent(s)
|
# Start the DHCP relay agent(s)
|
||||||
|
@ -1,27 +1,42 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
function wait_until_iface_exists
|
function wait_until_iface_ready
|
||||||
{
|
{
|
||||||
IFACE=$1
|
IFACE=$1
|
||||||
|
|
||||||
echo "Waiting for interface ${IFACE}..."
|
echo "Waiting until interface $IFACE is up..."
|
||||||
|
|
||||||
# Wait for the interface to come up (i.e., 'ip link show' returns 0)
|
# Wait for the interface to come up (i.e., 'ip link show' returns 0)
|
||||||
until ip link show $IFACE > /dev/null 2>&1; do
|
until ip link show dev $IFACE up > /dev/null 2>&1; do
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "Interface ${IFACE} is created"
|
echo "Interface $IFACE is up"
|
||||||
|
|
||||||
|
echo "Waiting until interface $IFACE has an IPv4 address..."
|
||||||
|
|
||||||
|
# Wait until the interface gets assigned an IPv4 address
|
||||||
|
while true; do
|
||||||
|
IP=$(ip -4 addr show dev $IFACE | grep "inet " | awk '{ print $2 }' | cut -d '/' -f1)
|
||||||
|
|
||||||
|
if [ -n "$IP" ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Interface $IFACE is configured with IP $IP"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Wait for all interfaces to come up before starting the DHCP relay
|
# Wait for all interfaces to come up and have IPv4 addresses assigned
|
||||||
{% for (name, prefix) in INTERFACE %}
|
{% for (name, prefix) in INTERFACE %}
|
||||||
wait_until_iface_exists {{ name }}
|
wait_until_iface_ready {{ name }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for (name, prefix) in VLAN_INTERFACE %}
|
{% for (name, prefix) in VLAN_INTERFACE %}
|
||||||
wait_until_iface_exists {{ name }}
|
wait_until_iface_ready {{ name }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for (name, prefix) in PORTCHANNEL_INTERFACE %}
|
{% for (name, prefix) in PORTCHANNEL_INTERFACE %}
|
||||||
wait_until_iface_exists {{ name }}
|
wait_until_iface_ready {{ name }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
Loading…
Reference in New Issue
Block a user