From 5155bb33020d786ac490ce660edebaa6d18e0b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ermal=20Lu=E7i?= Date: Sat, 4 Apr 2009 23:18:14 +0000 Subject: [PATCH] Optimize adding new members to QinQ to evitate recreating the whole QinQ members. --- usr/local/www/interfaces_qinq_edit.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/usr/local/www/interfaces_qinq_edit.php b/usr/local/www/interfaces_qinq_edit.php index 6829d9af29..bb13c62b27 100755 --- a/usr/local/www/interfaces_qinq_edit.php +++ b/usr/local/www/interfaces_qinq_edit.php @@ -155,10 +155,14 @@ if ($_POST) { $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); + $if = "vlan{$_POST['tag']}"; + $vlanif = "{$if}_{$member}"; + $macaddr = get_interface_mac($if); + mwexec("/usr/sbin/ngctl mkpeer {$if}qinq: eiface {$if}{$member} ether"); + mwexec("/usr/sbin/ngctl name {$if}qinq:{$if}{$tag} {$if}h{$member}"); + mwexec("/usr/sbin/ngctl msg {$if}qinq: addfilter '{ vlan={$member} hook=\\\"{$if}{$member}\\\" }'"); + mwexec("/usr/sbin/ngctl msg {$if}h{$tag}: setifname \\\"{$vlanif}\\\""); + mwexec("/usr/sbin/ngctl msg {$vlanif}: setenaddr {$macaddr}"); } } $a_qinqs[$id] = $qinqentry;