From 62663b540871f35083e182fe77f85cd1bcedf9f8 Mon Sep 17 00:00:00 2001 From: Ermal Date: Fri, 6 Aug 2010 15:37:25 +0000 Subject: Ticket #792. Correctly unset the group name and update the new one if a interface group is renamed. For filter and nat rules too. --- usr/local/www/interfaces_groups_edit.php | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/usr/local/www/interfaces_groups_edit.php b/usr/local/www/interfaces_groups_edit.php index e1a9666..264cee3 100755 --- a/usr/local/www/interfaces_groups_edit.php +++ b/usr/local/www/interfaces_groups_edit.php @@ -78,8 +78,6 @@ if ($_POST) { if ($gdescr == $_POST['ifname'] || $gif == $_POST['ifname']) $input_errors[] = "The specified group name is already used by an interface. Please choose another name."; } - $ifgroupentry = array(); - $ifgroupentry['ifname'] = $_POST['ifname']; $members = ""; $isfirst = 0; /* item is a normal ifgroupentry type */ @@ -93,10 +91,31 @@ if ($_POST) { } if (!$input_errors) { + $ifgroupentry = array(); $ifgroupentry['members'] = $members; $ifgroupentry['descr'] = mb_convert_encoding($_POST['descr'],"HTML-ENTITIES","auto"); - if (isset($id) && $a_ifgroups[$id]) { + 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']; + } + foreach ($config['nat']['rule'] as $ridx => $rule) { + if ($rule['interface'] == $a_ifgroups[$id]['ifname']) + $config['nat']['rule'][$ridx]['interface'] = $_POST['ifname']; + } + $omembers = explode(" ", $a_ifgroups[$id]['members']); + if (count($omembers) > 0) { + foreach ($omembers as $ifs) { + $realif = get_real_interface($ifs); + if ($realif) + mwexec("/sbin/ifconfig {$realif} -group " . $a_ifgroups[$id]['ifname']); + } + } + $ifgroupentry['ifname'] = $_POST['ifname']; + $a_ifgroups[$id] = $ifgroupentry; + } else if (isset($id) && $a_ifgroups[$id]) { $omembers = explode(" ", $a_ifgroups[$id]['members']); $nmembers = explode(" ", $members); $delmembers = array_diff($omembers, $nmembers); @@ -107,9 +126,12 @@ if ($_POST) { mwexec("/sbin/ifconfig {$realif} -group " . $a_ifgroups[$id]['ifname']); } } + $ifgroupentry['ifname'] = $_POST['ifname']; $a_ifgroups[$id] = $ifgroupentry; - } else + } else { + $ifgroupentry['ifname'] = $_POST['ifname']; $a_ifgroups[] = $ifgroupentry; + } write_config(); -- cgit v1.1