From bf1c780af4292508d31ac245862e920516d71c1a Mon Sep 17 00:00:00 2001 From: Nick Hainke Date: Sun, 9 Jan 2022 10:04:48 +0100 Subject: [PATCH] wg-installer: add cleanup script Add script to cleanup unused wireguard interfaces. Signed-off-by: Nick Hainke (cherry picked from commit 714b51c6309e4abc7c000bb9250119104fc2757a) --- net/wg-installer/common/wg.sh | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/net/wg-installer/common/wg.sh b/net/wg-installer/common/wg.sh index 372d7f4cac..6a9ac9c65a 100644 --- a/net/wg-installer/common/wg.sh +++ b/net/wg-installer/common/wg.sh @@ -1,3 +1,5 @@ +#!/bin/sh + next_port () { local port_start=$1 local port_end=$2 @@ -11,3 +13,38 @@ next_port () { 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 + delte=0 + break + fi + done + if [ $delete -eq 1 ]; then + delete_wg_interface "$phy" + fi + done +} + +case $1 in +cleanup_wginterfaces) + "$@" + exit + ;; +esac -- 2.30.2