diff options
| author | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2026-10-27 14:51:19 -0700 |
|---|---|---|
| committer | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2026-10-27 14:51:19 -0700 |
| commit | a99e653739e84fe59f264af5d68381f843c22e37 (patch) | |
| tree | 352fd40cb4c8b696611156541659755c28934c62 | |
| parent | dc7ec1a55c64066ab6d23ecc2354bf7c890c7d67 (diff) | |
| download | wg-netns-exec-a99e653739e84fe59f264af5d68381f843c22e37.tar.gz wg-netns-exec-a99e653739e84fe59f264af5d68381f843c22e37.tar.xz | |
allow 'any', 'any/<proto>', bare 'to <target>' in dnat rules
| -rwxr-xr-x | wg-netns-exec | 8 |
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]}" |
