Add pssibility of delay between ip commands.

Also fix wg interface name detection to use the name, and not wg0.
This commit is contained in:
redxef 2023-06-15 13:34:08 +02:00
parent 5d368bb9bb
commit f9cbba8607
Signed by: redxef
GPG key ID: 7DAC3AA211CBD921

View file

@ -3,6 +3,12 @@
set -euo pipefail set -euo pipefail
_="${DEBUG:=}" _="${DEBUG:=}"
_="${GOW_IP_DELAY:=0}"
ip_hook() {
ip "$@"
sleep "$GOW_IP_DELAY"
}
strstrip() { strstrip() {
sed -E -e 's/^\s*//' -e 's/\s*$//' sed -E -e 's/^\s*//' -e 's/\s*$//'
@ -21,8 +27,8 @@ create_gre() {
local_ip="$(sed 's_/.*$__' <<< "$2")" local_ip="$(sed 's_/.*$__' <<< "$2")"
remote_ip="$(sed 's_/.*$__' <<< "$3")" remote_ip="$(sed 's_/.*$__' <<< "$3")"
$DEBUG ip link add "$name" type gretap local "$local_ip" remote "$remote_ip" $DEBUG ip_hook link add "$name" type gretap local "$local_ip" remote "$remote_ip"
$DEBUG ip link set up "$name" $DEBUG ip_hook link set up "$name"
} }
add_gre_to_br() { add_gre_to_br() {
@ -30,7 +36,7 @@ add_gre_to_br() {
br_name="$1" br_name="$1"
gre_name="$2" gre_name="$2"
$DEBUG ip link set "$gre_name" master "$br_name" $DEBUG ip_hook link set "$gre_name" master "$br_name"
} }
finish_br() { finish_br() {
@ -38,8 +44,8 @@ finish_br() {
name="$1" name="$1"
local_ip="$2" local_ip="$2"
$DEBUG ip addr add "$local_ip" dev "$name" $DEBUG ip_hook addr add "$local_ip" dev "$name"
$DEBUG ip link set up "$name" $DEBUG ip_hook link set up "$name"
} }
read_wg_conf() { read_wg_conf() {
@ -138,8 +144,8 @@ down() {
filepath="/etc/wireguard/$filepath.conf" filepath="/etc/wireguard/$filepath.conf"
fi fi
wg_name="$(basename --suffix=.conf "$filepath")" wg_name="$(basename --suffix=.conf "$filepath")"
for link in $(ip link list | grep -Eo '^[0-9]+:\s+wg0[^:@]+' | sed -E 's/[0-9]+:\s+//'); do for link in $(ip_hook link list | grep -Eo '^[0-9]+:\s+'"$wg_name"'[^:@]+' | sed -E 's/[0-9]+:\s+//' | tac); do
$DEBUG ip link del "$link" $DEBUG ip_hook link del "$link"
done done
} }