lixonet-ee/tinc/subnet-down
2023-04-13 01:24:23 -06:00

32 lines
1.1 KiB
Bash

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