diff --git a/sbin/monitor_interface b/sbin/monitor_interface index 474af36a0..e75779358 100755 --- a/sbin/monitor_interface +++ b/sbin/monitor_interface @@ -58,14 +58,13 @@ while :; do for i in ${!TASK[@]}; do ADDR=(${TASK[$i]}) PORT=${ADDR[0]} - ADDR=${ADDR[1]%/*} [[ $LAST != ${PORT%.*} ]] && STATE=$(state ${PORT%.*}) case $STATE in 1) # up - case $ADDR} in + case ${ADDR[1]} in GW4) # no existing default and new default is defined? - IPV4=$(ip -4 -br addr show to $ADDR dev $PORT) + IPV4=$(ip -4 -br addr show scope global primary dev $PORT | awk '{print $3;exit}') if [[ -n $IPV4 ]]; then ROUTE=$(ip -4 route show to default dev $PORT) [[ -z $ROUTE ]] && ip -4 route add dev ${TASK[$i]/GW4/} @@ -73,14 +72,14 @@ while :; do ;; GW6) # no existing default and new default is defined? - IPV6=$(ip -6 -br addr show to $ADDR dev $PORT) + IPV6=$(ip -6 -br addr show scope global primary -deprecated dev $PORT | awk '{print $3;exit}') if [[ -n $IPV6 ]]; then ROUTE=$(ip -6 route show to default dev $PORT) [[ -z $ROUTE ]] && ip -6 route add dev ${TASK[$i]/GW6/} fi ;; *) - IPA=$(ip -br addr show to $ADDR dev $PORT) + IPA=$(ip -br addr show to ${ADDR[1]} dev $PORT) if [[ -f /var/tmp/$PORT.down ]]; then # Special treatment for shim and vhost interfaces [[ -n $IPA ]] && ip addr del dev ${TASK[$i]} @@ -93,7 +92,7 @@ while :; do ;; 0) # down # IP address present, remove it - [[ -n $(ip -br addr show to $ADDR dev $PORT) ]] && ip addr del dev ${TASK[$i]} + [[ -n $(ip -br addr show to ${ADDR[1]} dev $PORT) ]] && ip addr del dev ${TASK[$i]} ;; esac LAST=${PORT%.*}