aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJake McGinty <me@jake.su>2018-04-05 00:36:22 -0700
committerJake McGinty <me@jake.su>2018-04-05 00:36:22 -0700
commitb2ae3c1a582bd056c36c691b0bf0989836f7653a (patch)
treef0af679e023b1ebb130831e28ea4b02c471fbfdf
parentip_packet: fix ipv6 packet length helper method (diff)
downloadwireguard-rs-b2ae3c1a582bd056c36c691b0bf0989836f7653a.tar.xz
wireguard-rs-b2ae3c1a582bd056c36c691b0bf0989836f7653a.zip
tools: allow for ipv6 endpoints in wg-quick
-rwxr-xr-xtools/wg-quick.bash16
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
}