From b991e3b54ffaa67f39add10783d7a0fd0ea67d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ermal=20Lu=E7i?= Date: Sun, 29 Mar 2009 21:18:34 +0000 Subject: Add GUI pages for QinQ missed in previous commit. --- usr/local/www/interfaces_qinq_edit.php | 406 +++++++++++++++++++++++++++++++++ 1 file changed, 406 insertions(+) create mode 100755 usr/local/www/interfaces_qinq_edit.php (limited to 'usr/local/www/interfaces_qinq_edit.php') diff --git a/usr/local/www/interfaces_qinq_edit.php b/usr/local/www/interfaces_qinq_edit.php new file mode 100755 index 0000000..aed5d0e --- /dev/null +++ b/usr/local/www/interfaces_qinq_edit.php @@ -0,0 +1,406 @@ + "") { + $member = explode("-", $_POST["members{$x}"]); + if (count($member) > 1) { + if (preg_match("/([^0-9])+/", $member[0], $match) || + preg_match("/([^0-9])+/", $member[1], $match)) + $input_errors[] = "Tags can contain only numbers or a range in format #-#."; + + for ($i = $member[0]; $i < $member[1]; $i++) { + if ($isfirst > 0) + $members .= " "; + $members .= $i; + $isfirst++; + } + } else { + if (preg_match("/([^0-9])+/", $_POST["members{$x}"], $match)) + $input_errors[] = "Tags can contain only numbers or a range in format #-#."; + + if ($isfirst > 0) + $members .= " "; + $members .= $_POST["members{$x}"]; + $isfirst++; + } + } + } + + if (!$input_errors) { + $qinqentry['members'] = $members; + $qinqentry['descr'] = mb_convert_encoding($_POST['descr'],"HTML-ENTITIES","auto"); + $qinqentry['vlanif'] = "vlan{$_POST['tag']}"; + $nmembers = explode(" ", $members); + + if (isset($id) && $a_qinqs[$id]) { + $omembers = explode(" ", $a_qinqs[$id]['members']); + $delmembers = array_diff($omembers, $nmembers); + if (count($delmembers) > 0) { + foreach ($delmembers as $tag) { + mwexec("/usr/sbin/ngctl shutdown vlan{$_POST['tag']}h{$tag}:"); + mwexec("/usr/sbin/ngctl msg vlan{$_POST['tag']}qinq: delfilter \\\"vlan{$_POST['tag']}{$tag}\\\""); + } + } + $addmembers = array_diff($nmembers, $omembers); + if (count($addmembers) > 0) { + foreach ($addmembers as $member) { + $vlan = array(); + $vlan['if'] = "vlan{$_POST['tag']}"; + $vlan['tag'] = $member; + interface_qinq2_configure($vlan); + } + } + $a_qinqs[$id] = $qinqentry; + } else { + interface_qinq_configure($qinqentry); + $a_qinqs[] = $qinqentry; + } + if ($_POST['autogroup'] == "yes") { + if (!is_array($config['ifgroups']['ifgroupentry'])) + $config['ifgroups']['ifgroupentry'] = array(); + foreach ($config['ifgroups']['ifgroupentry'] as $gid => $group) { + if ($group['ifname'] == "QinQ") { + $found = true; + break; + } + } + $additions = ""; + foreach($nmembers as $qtag) + $additions .= "vlan{$qinqentry['tag']}_{$qtag} "; + $additions .= "vlan{$qinqentry['tag']} "; + if ($found == true) + $config['ifgroups']['ifgroupentry'][$gid]['members'] .= " {$additions}"; + else { + $gentry = array(); + $gentry['ifname'] = "QinQ"; + $gentry['members'] = "{$additions}"; + $gentry['descr'] = "QinQ VLANs group"; + $config['ifgroup']['ifgroupentry'][] = $gentry; + } + } + + write_config(); + + header("Location: interfaces_qinq.php"); + exit; + } else { + $pconfig['descr'] = mb_convert_encoding($_POST['descr'],"HTML-ENTITIES","auto"); + $pconfig['tag'] = $_POST['tag']; + $pconfig['members'] = $members; + } +} + +include("head.inc"); + +?> + +"> + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Interface QinQ Edit
Parent interface + +
+ Only QinQ capable interfaces will be shown.
First level tag + +
+ + This is the first level VLAN tag. On top of this are stacked the member VLANs defined below. + +
Options + +
+ /> + Auto assign interface so it can be configured with ip etc... +
+ /> + Auto enable interface so it can be used on filter rules. +
+ > + Allows to keep clients mtu unchanged(1500).
NOTE: if you are using jumbo frames this option is not needed and may produce incorrect results!
+ +
+ > + Adds interface to QinQ interface groups so you can write filter rules easily. +
Description + +
+ + You may enter a description here for your reference (not parsed). + +
Member (s)
+ + + + + + + "") { + $item = explode(" ", $members); + foreach($item as $ww) { + $members = $item[$counter]; + $tracker = $counter; + ?> + + + + + + + + + +
Tag
+ + + +
+ + + +
  + + + + + +
+
+ + + + + + -- cgit v1.1