]> git.ipfire.org Git - thirdparty/wireguard-tools.git/commitdiff
wg-config: cleanup ip parsing
authorJason A. Donenfeld <Jason@zx2c4.com>
Tue, 20 Dec 2016 03:08:41 +0000 (04:08 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Fri, 23 Dec 2016 20:09:23 +0000 (21:09 +0100)
This also sorts routes by cidr.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
contrib/wg-config/wg-config

index eaa45f289638566dec2845e3ee52159af79a4193..f2272b321ddefd316d844ffc6c62bb7a1e9b9546 100755 (executable)
@@ -45,7 +45,7 @@ add_default() {
                echo "tungate: does not yet support IPv6, skipping ::/0" >&2
                return 0
        elif [[ $1 == 0.0.0.0/0 ]]; then
-               local endpoint="$(wg show "$INTERFACE" endpoints | grep "^$(wg show "$INTERFACE" allowed-ips | grep 0.0.0.0/0 | head -n 1 | cut -f 1)" | cut -f 2 | cut -d : -f 1)"
+               local endpoint="$(join <(wg show "$INTERFACE" allowed-ips) <(wg show "$INTERFACE" endpoints) | sed -n 's/.* 0\.0\.0\.0\/0.* \([0-9.:\/a-z]\+\):[0-9]\+$/\1/p')"
                add_route 0/1
                add_route 128/1
                killall tungate 2>/dev/null || true
@@ -129,7 +129,7 @@ cmd_add() {
        done
        up_if
        if [[ $AUTO_ROUTE -eq 1 ]]; then
-               for i in $(wg show "$INTERFACE" allowed-ips | cut -f 2 | tr -d ,); do
+               for i in $(wg show "$INTERFACE" allowed-ips | grep -Po '(?<=[\t ])[0-9.:/a-z]+(?<=,)?' | sort -nr -k 2 -t /); do
                        if ! add_default "$i" && [[ $(ip route get "$i") != *dev\ $INTERFACE\ * ]]; then
                                add_route "$i"
                        fi