2023-04-13 00:06:35 -06:00
|
|
|
#!/bin/ash
|
2023-04-13 00:10:12 -06:00
|
|
|
echo "[ROUTE] down: $SUBNET weight $WEIGHT via $NODE ($REMOTEADDRESS:$REMOTEPORT)"
|
2023-04-13 00:06:35 -06:00
|
|
|
nonMACChars=`echo $SUBNET | tr -d "[:digit:]" | tr -d [:ABCDEFabcdef]`
|
|
|
|
date=`date -u`
|
2023-04-13 00:35:05 -06:00
|
|
|
arpEntries=`arp -an`
|
2023-04-13 00:38:40 -06:00
|
|
|
mkdir -p /tmp/tinc/peer/$NODE/mac/ /tmp/tinc/peer/$NODE/ip/
|
|
|
|
|
2023-04-13 00:06:35 -06:00
|
|
|
if [ -z "$nonMACChars" ]; then
|
|
|
|
# This subnet is a MAC
|
2023-04-13 00:38:40 -06:00
|
|
|
rm -f /tmp/tinc/peer/$NODE/mac/$SUBNET
|
2023-04-13 00:06:35 -06:00
|
|
|
|
2023-04-13 00:35:05 -06:00
|
|
|
if echo $arpEntries | grep -q -E "at $SUBNET "; then
|
2023-04-13 01:09:05 -06:00
|
|
|
echo $arpEntries | grep -E "at 0?*$SUBNET0?* " | sed -r 's/^.+\((.+)\).+$/\1/g' | xargs -n1 -I {} echo "[ARP] Removing {} from the table..."
|
2023-04-13 00:35:05 -06:00
|
|
|
echo $arpEntries | grep -E "at 0?*$SUBNET0?* " | sed -r 's/^.+\((.+)\).+$/\1/g' | xargs -n1 arp -d
|
|
|
|
fi
|
2023-04-13 00:06:35 -06:00
|
|
|
else
|
|
|
|
# This subnet is an IP address
|
|
|
|
if echo "$SUBNET" | grep -q -E ".+/32$"; then
|
|
|
|
address=`echo "$SUBNET" | cut -d '/' -f 1`
|
2023-04-13 00:38:40 -06:00
|
|
|
rm -f /tmp/tinc/peer/$NODE/ip/$address
|
|
|
|
|
2023-04-13 00:35:05 -06:00
|
|
|
if echo $arpEntries | grep -q "\($address\)"; then
|
2023-04-13 01:03:21 -06:00
|
|
|
echo "[ARP] Removing $addresss from the table..."
|
2023-04-13 00:10:04 -06:00
|
|
|
arp -d $address
|
2023-04-13 00:06:35 -06:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
SCRIPT=$(readlink -f "$0")
|
|
|
|
SCRIPTPATH=$(dirname "$SCRIPT")
|
|
|
|
$SCRIPTPATH/check-node
|