packages/net/wg-installer/common/wg.sh
Nick Hainke 0e416dadd1 wg-installer: fix typo in cleanup function
The delete variable was misspelled leading to devices always being
removed although they had connected neighbors.

Signed-off-by: Nick Hainke <vincent@systemli.org>
2022-01-09 13:33:03 +01:00

50 lines
1 KiB
Bash

#!/bin/sh
next_port () {
local port_start=$1
local port_end=$2
ports=$(wg show all listen-port | awk '{print $2}')
for i in $(seq $port_start $port_end); do
if ! echo $ports | grep -q "$i"; then
echo $i
return
fi
done
}
cleanup_wginterfaces() {
neighbors_available
}
delete_wg_interface() {
ip link del dev "$1"
}
check_wg_neighbors() {
local phy
wg_interfaces=$(ip link | grep wg | awk '{print $2}' | sed 's/://')
for phy in $wg_interfaces; do
linklocal=$(ip -6 a list dev $phy | grep "scope link" | awk '{print $2}' | sed 's/\/64//') 2>/dev/null
ips=$(ping ff02::1%$phy -w5 -W5 -c10 | awk '/from/{print($4)}' | sed 's/.$//') 2>/dev/null
delete=1
for ip in $ips; do
if [ $ip != $linklocal ] && [ $(owipcalc $ip linklocal) -eq 1 ]; then
delete=0
break
fi
done
if [ $delete -eq 1 ]; then
delete_wg_interface "$phy"
fi
done
}
case $1 in
cleanup_wginterfaces)
"$@"
exit
;;
esac