diff options
author | Renato Botelho <renato.botelho@bluepex.com> | 2010-04-19 11:07:31 -0300 |
---|---|---|
committer | Renato Botelho <renato.botelho@bluepex.com> | 2010-04-19 11:07:31 -0300 |
commit | 6d346c17543ae4250876bd2900e643553bd4f2fa (patch) | |
tree | 1aef82c6ad4ef898fdc9677546b7ca9d9ad32f47 /etc | |
parent | 50dc3f4113a31adc748a082e0c1ad550f6917b58 (diff) | |
download | pfsense-6d346c17543ae4250876bd2900e643553bd4f2fa.zip pfsense-6d346c17543ae4250876bd2900e643553bd4f2fa.tar.gz |
redirect port range must not use :*, calculate end port and create the correct rule
Diffstat (limited to 'etc')
-rw-r--r-- | etc/inc/filter.inc | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc index fc306cd..81a2aa4 100644 --- a/etc/inc/filter.inc +++ b/etc/inc/filter.inc @@ -1126,13 +1126,17 @@ function filter_nat_rules_generate() { /* if item is an alias, expand */ $localport = alias_expand($rule['local-port']); - if(!$localport || $rule['destination']['port'] == $rule['local-port']) + if(!$localport || $rule['destination']['port'] == $rule['local-port']) { $localport = ""; - else - $localport = " port {$localport}"; + } else { + if(($dstport[1]) && ($dstport[0] != $dstport[1])) { + $localendport = $localport + ($dstport[1] - $dstport[0]); - if(($dstport[1]) && ($dstport[0] != $dstport[1])) - $localport .= ":*"; + $localport .= ":$localendport"; + } + + $localport = " port {$localport}"; + } $target = alias_expand($rule['target']); if(!$target) { |