diff options
author | Jake McGinty <me@jake.su> | 2018-04-05 00:36:22 -0700 |
---|---|---|
committer | Jake McGinty <me@jake.su> | 2018-04-05 00:36:22 -0700 |
commit | b2ae3c1a582bd056c36c691b0bf0989836f7653a (patch) | |
tree | f0af679e023b1ebb130831e28ea4b02c471fbfdf | |
parent | ip_packet: fix ipv6 packet length helper method (diff) | |
download | wireguard-rs-b2ae3c1a582bd056c36c691b0bf0989836f7653a.tar.xz wireguard-rs-b2ae3c1a582bd056c36c691b0bf0989836f7653a.zip |
tools: allow for ipv6 endpoints in wg-quick
-rwxr-xr-x | tools/wg-quick.bash | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/tools/wg-quick.bash b/tools/wg-quick.bash index 4b24f0b..b641d88 100755 --- a/tools/wg-quick.bash +++ b/tools/wg-quick.bash @@ -148,10 +148,18 @@ add_route() { add_endpoint_passthroughs() { gateway=$(route -n get default | grep gateway | awk '{print $2}') - for i in $(while read -r _ i; do for i in $i; do [[ $i =~ ^[0-9a-z:.]+:[0-9]+$ ]] && echo "$i"; done; done < <(wg show "$INTERFACE" endpoints) | sort -nr -k 2 -t /); do - endpoint=$(echo "$i" | cut -d ':' -f 1) - netstat -rn | grep "$endpoint" > /dev/null || \ - cmd route add -host "$endpoint" "$gateway" + gateway6=$(route -n get -inet6 default | grep gateway | awk '{print $2}') + for i in $(while read -r _ i; do for i in $i; do [[ $i =~ ^\[?[0-9a-z:.]+\]?:[0-9]+$ ]] && echo "$i"; done; done < <(wg show "$INTERFACE" endpoints) | sort -nr -k 2 -t /); do + echo "adding endpoint passthrough for $i" + if [[ $i =~ ^\[([a-z0-9:.]+)\]:[0-9]+$ ]]; then + netstat -rn | grep "${BASH_REMATCH[1]}" > /dev/null && \ + cmd route delete -inet6 -host "${BASH_REMATCH[1]}" # delete any old route for endpoint + cmd route add -inet6 -host "${BASH_REMATCH[1]}" "$gateway6" + elif [[ $i =~ ^([0-9.]+):[0-9]+$ ]]; then + netstat -rn | grep "${BASH_REMATCH[1]}" > /dev/null && \ + cmd route delete -host "${BASH_REMATCH[1]}" # delete any old route for endpoint + cmd route add -host "${BASH_REMATCH[1]}" "$gateway" + fi done } |