ciena.grammar: simpler per-port vlans
author"Tomas Zeman <tzeman@volny.cz>"
Fri, 06 Nov 2009 10:46:18 +0100
changeset 5 c13b1f7bebc1
parent 4 3a26769e5d6f
child 6 f6aa07070f6f
ciena.grammar: simpler per-port vlans
ciena.grammar
--- a/ciena.grammar	Fri Nov 06 09:56:53 2009 +0100
+++ b/ciena.grammar	Fri Nov 06 10:46:18 2009 +0100
@@ -272,17 +272,12 @@
 		}
 		$vlan_range = {};
 		}
-		| "vlan" "add" "vlan" vlan_range "port" port_num
+		| "vlan" /add|remove/ "vlan" vlan_range "port" port_num
 		{
+		my $action = ($item[2] =~ /remove/) ? 0 : 1;
 		foreach my $vlan (keys %$vlan_range) {
-			$::res->{port}->{$item{port_num}}->{vlans}->{$vlan} = 1;
+			$::res->{port}->{$item{port_num}}->{vlans}->{$vlan} = $action;
 		}
 		$vlan_range = {};
 		}
-		| "vlan" "remove" "vlan" vlan_range "port" port_num
-		{
-		foreach my $vlan (keys %$vlan_range) {
-			delete $::res->{port}->{$item{port_num}}->{vlans}->{$vlan};
-		}
-		$vlan_range = {};
-		}
+