ciena.grammar: device-wide vlan list
author"Tomas Zeman <tzeman@volny.cz>"
Wed, 04 Nov 2009 16:43:36 +0100
changeset 3 23467e5d2602
parent 2 7b9f165f3a45
child 4 3a26769e5d6f
ciena.grammar: device-wide vlan list
ciena.grammar
--- a/ciena.grammar	Wed Nov 04 16:16:32 2009 +0100
+++ b/ciena.grammar	Wed Nov 04 16:43:36 2009 +0100
@@ -25,10 +25,11 @@
 $::res->{vc} = {};
 $::res->{vs} = {};
 $::res->{"vs-vlans"} = {};
-
+$::res->{vlans} = {};
 
 # local (current line) attribute-value-list, ie. property value
 my $avl = {};
+my $vlan_range = {};
 
 # Consumes attribute value list.
 # @param type Type (port/sub_port/etc).
@@ -78,6 +79,7 @@
 		| l_cfm_service
 		| l_vc
 		| l_vs
+		| l_vlan
 		| word(s) eol
 
 word:		/[0-9a-zA-Z:\/_\#\"\.,-]+/
@@ -256,3 +258,17 @@
 		}
 		}
 
+# Vlan
+vlan_s_range:	/\d+/"-"/\d+/
+		{ for (my $i = $item[1]; $i <= $item[3]; $i++) { $vlan_range->{$i} = 1; } }
+		| /\d+/
+		{ $vlan_range->{$item[1]} = 1 }
+vlan_range: 	vlan_s_range","vlan_range
+		| vlan_s_range
+l_vlan:		"vlan" "create" "vlan" vlan_range
+		{
+		foreach my $vlan (keys %$vlan_range) {
+			$::res->{vlans}->{$vlan} = 1;
+		}
+		$vlan_range = {};
+		}