diff options
| -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]}" |
