diff --git a/tinc/subnet-down.tmpl b/tinc/subnet-down.tmpl index 9827a23..ce2c043 100644 --- a/tinc/subnet-down.tmpl +++ b/tinc/subnet-down.tmpl @@ -1,2 +1,17 @@ #!/bin/ash echo "Route down: \$SUBNET weight \$WEIGHT via \$NODE (\$REMOTEADDRESS:\$REMOTEPORT)" +nonMACChars=`echo \$SUBNET | tr -d "[:digit:]" | tr -d [:ABCDEFabcdef]` +macFile="/tmp/tinc_peer_mac_\$NODE" +if [ -z "\$nonMACChars" ]; then + # This subnet is a MAC + if test -f "\$macFile"; then + rm \$macFile + fi +else + if echo "\$SUBNET" | grep -q -E ".+/32\$"; then + # This subnet is likely an IP address, remove it from the ARP table + address=`echo "\$SUBNET" | cut -d '/' -f 1` + echo "Unmapping \$address <=> \$mac from ARP table" + arp -s "\$address" + fi +fi