wireguard-tools: detect address changes at reload
authorPaul Donald <newtwen+github@gmail.com>
Sat, 31 Jan 2026 14:53:41 +0000 (15:53 +0100)
committerRobert Marko <robimarko@gmail.com>
Mon, 2 Feb 2026 11:25:52 +0000 (12:25 +0100)
Proto handler now also detects changes to
- addresses

Tighten also assign address portion

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21784
Signed-off-by: Robert Marko <robimarko@gmail.com>
package/network/utils/wireguard-tools/files/wireguard.sh

index f6ad967b404ea6116f14e8ce2ff79c0d47049c23..ca9da81032b397712562687b0372c1b61e2986bd 100644 (file)
@@ -1,6 +1,7 @@
 #!/bin/sh
 # Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
 # Licensed to the public under the Apache License 2.0.
+# shellcheck disable=SC2317
 
 WG=/usr/bin/wg
 if [ ! -x $WG ]; then
@@ -19,6 +20,8 @@ proto_wireguard_init_config() {
        proto_config_add_int "listen_port"
        proto_config_add_int "mtu"
        proto_config_add_string "fwmark"
+       proto_config_add_string "addresses"
+
        available=1
        no_proto_task=1
 }
@@ -173,20 +176,13 @@ proto_wireguard_setup() {
                exit 1
        fi
 
+       # Assign addresses
        for address in ${addresses}; do
                case "${address}" in
-                       *:*/*)
-                               proto_add_ipv6_address "${address%%/*}" "${address##*/}"
-                               ;;
-                       *.*/*)
-                               proto_add_ipv4_address "${address%%/*}" "${address##*/}"
-                               ;;
-                       *:*)
-                               proto_add_ipv6_address "${address%%/*}" "128"
-                               ;;
-                       *.*)
-                               proto_add_ipv4_address "${address%%/*}" "32"
-                               ;;
+                       *:*/*) proto_add_ipv6_address "${address%%/*}" "${address##*/}" ;;
+                       *.*/*) proto_add_ipv4_address "${address%%/*}" "${address##*/}" ;;
+                       *:*)   proto_add_ipv6_address "${address%%/*}" "128" ;;
+                       *.*)   proto_add_ipv4_address "${address%%/*}" "32" ;;
                esac
        done
 
@@ -194,7 +190,7 @@ proto_wireguard_setup() {
                proto_add_ipv6_prefix "$prefix"
        done
 
-       # endpoint dependency
+       # Endpoint dependency tracking
        if [ "${nohostroute}" != "1" ]; then
                wg show "${config}" endpoints | \
                sed -E 's/\[?([0-9.:a-f]+)\]?:([0-9]+)/\1 \2/' | \