Update arp_update to refresh neighbor entries from APP_DB (#4125)
This commit is contained in:
parent
031e69d574
commit
1a0ce9874d
@ -46,5 +46,26 @@ while /bin/true; do
|
|||||||
ip6cmd="ip -6 neigh show | grep -v fe80 | grep $vlan | cut -d ' ' -f 1,3 | $ndisc6cmd"
|
ip6cmd="ip -6 neigh show | grep -v fe80 | grep $vlan | cut -d ' ' -f 1,3 | $ndisc6cmd"
|
||||||
eval `eval $ip6cmd`
|
eval `eval $ip6cmd`
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# refresh neighbor entries from APP_DB in case of mismatch with kernel
|
||||||
|
DBNEIGH=$(sonic-db-cli APPL_DB keys NEIGH_TABLE*)
|
||||||
|
KERNEIGH4=$(ip -4 neigh show | grep Vlan | cut -d ' ' -f 1,3 --output-delimiter=',')
|
||||||
|
KERNEIGH6=$(ip -6 neigh show | grep -v fe80 | grep Vlan | cut -d ' ' -f 1,3 --output-delimiter=',')
|
||||||
|
for neigh in $DBNEIGH; do
|
||||||
|
intf="$( cut -d ':' -f 2 <<< "$neigh" )"
|
||||||
|
ip="$( cut -d ':' -f 3- <<< "$neigh" )"
|
||||||
|
if [[ $intf == *"Vlan"* ]]; then
|
||||||
|
if [[ $ip == *"."* ]] && [[ ! $KERNEIGH4 =~ "${ip},${intf}" ]]; then
|
||||||
|
pingcmd="timeout 0.2 ping -I $intf -n -q -i 0 -c 1 -W 1 $ip >/dev/null"
|
||||||
|
eval $pingcmd
|
||||||
|
logger "arp_update: mismatch arp entry, pinging ${ip} on ${intf}"
|
||||||
|
elif [[ $ip == *":"* ]] && [[ ! $KERNEIGH6 =~ "${ip},${intf}" ]]; then
|
||||||
|
ping6cmd="timeout 0.2 ping6 -I $intf -n -q -i 0 -c 1 -W 1 $ip >/dev/null"
|
||||||
|
eval $ping6cmd
|
||||||
|
logger "arp_update: mismatch v6 nbr entry, pinging ${ip} on ${intf}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
sleep 300
|
sleep 300
|
||||||
done
|
done
|
||||||
|
Loading…
Reference in New Issue
Block a user