diff options
author | Erik Fonnesbeck <efonnes@gmail.com> | 2010-08-06 17:17:58 -0600 |
---|---|---|
committer | Erik Fonnesbeck <efonnes@gmail.com> | 2010-08-06 17:17:58 -0600 |
commit | 22d0d529c9609e944c8705c4aff667f0f272c8bc (patch) | |
tree | 3c9bb1af578ab5283121f117a61bc4af1157b690 /usr/local/www/interfaces_groups_edit.php | |
parent | 187ce62b3d37252a4b75597724645eb77eb61a60 (diff) | |
download | pfsense-22d0d529c9609e944c8705c4aff667f0f272c8bc.zip pfsense-22d0d529c9609e944c8705c4aff667f0f272c8bc.tar.gz |
Update the interface group name in floating rules with multiple interfaces selected, too. Ticket #792
Diffstat (limited to 'usr/local/www/interfaces_groups_edit.php')
-rwxr-xr-x | usr/local/www/interfaces_groups_edit.php | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/usr/local/www/interfaces_groups_edit.php b/usr/local/www/interfaces_groups_edit.php index 264cee3..b72a442 100755 --- a/usr/local/www/interfaces_groups_edit.php +++ b/usr/local/www/interfaces_groups_edit.php @@ -98,8 +98,21 @@ if ($_POST) { if (isset($id) && $a_ifgroups[$id] && $_POST['ifname'] != $a_ifgroups[$id]['ifname']) { foreach ($config['filter']['rule'] as $ridx => $rule) { - if ($rule['interface'] == $a_ifgroups[$id]['ifname']) - $config['filter']['rule'][$ridx]['interface'] = $_POST['ifname']; + if (isset($rule['floating'])) { + $rule_ifs = explode(",", $rule['interface']); + $rule_changed = false; + foreach ($rule_ifs as $rule_if_id => $rule_if) { + if ($rule_if == $a_ifgroups[$id]['ifname']) { + $rule_ifs[$rule_if_id] = $_POST['ifname']; + $rule_changed = true; + } + } + if ($rule_changed) + $config['filter']['rule'][$ridx]['interface'] = implode(",", $rule_ifs); + } else { + if ($rule['interface'] == $a_ifgroups[$id]['ifname']) + $config['filter']['rule'][$ridx]['interface'] = $_POST['ifname']; + } } foreach ($config['nat']['rule'] as $ridx => $rule) { if ($rule['interface'] == $a_ifgroups[$id]['ifname']) |