ciena.grammar
changeset 3 23467e5d2602
parent 2 7b9f165f3a45
child 4 3a26769e5d6f
equal deleted inserted replaced
2:7b9f165f3a45 3:23467e5d2602
    23 $::res->{'tunnel-pair'} = {};
    23 $::res->{'tunnel-pair'} = {};
    24 $::res->{'cfm-service'} = {};
    24 $::res->{'cfm-service'} = {};
    25 $::res->{vc} = {};
    25 $::res->{vc} = {};
    26 $::res->{vs} = {};
    26 $::res->{vs} = {};
    27 $::res->{"vs-vlans"} = {};
    27 $::res->{"vs-vlans"} = {};
    28 
    28 $::res->{vlans} = {};
    29 
    29 
    30 # local (current line) attribute-value-list, ie. property value
    30 # local (current line) attribute-value-list, ie. property value
    31 my $avl = {};
    31 my $avl = {};
       
    32 my $vlan_range = {};
    32 
    33 
    33 # Consumes attribute value list.
    34 # Consumes attribute value list.
    34 # @param type Type (port/sub_port/etc).
    35 # @param type Type (port/sub_port/etc).
    35 # @param id Identifier, eg. port number.
    36 # @param id Identifier, eg. port number.
    36 sub consume_avl {
    37 sub consume_avl {
    76 		| l_tunnel_pair
    77 		| l_tunnel_pair
    77 		| l_tunnel
    78 		| l_tunnel
    78 		| l_cfm_service
    79 		| l_cfm_service
    79 		| l_vc
    80 		| l_vc
    80 		| l_vs
    81 		| l_vs
       
    82 		| l_vlan
    81 		| word(s) eol
    83 		| word(s) eol
    82 
    84 
    83 word:		/[0-9a-zA-Z:\/_\#\"\.,-]+/
    85 word:		/[0-9a-zA-Z:\/_\#\"\.,-]+/
    84 		{ $item[1] }
    86 		{ $item[1] }
    85 
    87 
   254 		for (my $i = $from; $i <= $to; $i++) {
   256 		for (my $i = $from; $i <= $to; $i++) {
   255 			$::res->{"vs-vlans"}->{$i} = 1;
   257 			$::res->{"vs-vlans"}->{$i} = 1;
   256 		}
   258 		}
   257 		}
   259 		}
   258 
   260 
       
   261 # Vlan
       
   262 vlan_s_range:	/\d+/"-"/\d+/
       
   263 		{ for (my $i = $item[1]; $i <= $item[3]; $i++) { $vlan_range->{$i} = 1; } }
       
   264 		| /\d+/
       
   265 		{ $vlan_range->{$item[1]} = 1 }
       
   266 vlan_range: 	vlan_s_range","vlan_range
       
   267 		| vlan_s_range
       
   268 l_vlan:		"vlan" "create" "vlan" vlan_range
       
   269 		{
       
   270 		foreach my $vlan (keys %$vlan_range) {
       
   271 			$::res->{vlans}->{$vlan} = 1;
       
   272 		}
       
   273 		$vlan_range = {};
       
   274 		}