summaryrefslogtreecommitdiff
path: root/wg-netns-exec
diff options
context:
space:
mode:
authorDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2026-10-27 14:51:19 -0700
committerDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2026-10-27 14:51:19 -0700
commita99e653739e84fe59f264af5d68381f843c22e37 (patch)
tree352fd40cb4c8b696611156541659755c28934c62 /wg-netns-exec
parentdc7ec1a55c64066ab6d23ecc2354bf7c890c7d67 (diff)
downloadwg-netns-exec-a99e653739e84fe59f264af5d68381f843c22e37.tar.gz
wg-netns-exec-a99e653739e84fe59f264af5d68381f843c22e37.tar.xz
allow 'any', 'any/<proto>', bare 'to <target>' in dnat rules
Diffstat (limited to 'wg-netns-exec')
-rwxr-xr-xwg-netns-exec8
1 files changed, 5 insertions, 3 deletions
diff --git a/wg-netns-exec b/wg-netns-exec
index ee6831e..38667bd 100755
--- a/wg-netns-exec
+++ b/wg-netns-exec
@@ -112,12 +112,14 @@ if ((enable_tap)); then
policy accept'
for saddr in "${dnat_rules[@]}"; do
sport= proto= daddr= dport=
- if [[ "${saddr}" =~ ^(.*)\ +to\ +(.*) ]]; then
- saddr="${BASH_REMATCH[1]}"
- daddr="${BASH_REMATCH[2]}"
+ if [[ "${saddr}" =~ ^((.*)\ +)?to\ +(.*) ]]; then
+ saddr="${BASH_REMATCH[2]}"
+ daddr="${BASH_REMATCH[3]}"
fi
ip_re='(([^:]*\[[^]]*\]([^:]*\[[^]]*\])*)?[^:]*)'
+ [[ "${saddr}" =~ ^\ *any\ *(/.*)?$ ]] &&
+ saddr=":${BASH_REMATCH[1]}"
[[ "${saddr}" =~ ^${ip_re}:?([^/]*)/?(.*) ]]
saddr="${BASH_REMATCH[1]}"
sport="${BASH_REMATCH[4]}"