diff -r e2265c3545d7 -r 99ddc553a868 ciena.grammar --- a/ciena.grammar Fri Dec 18 20:02:09 2009 +0100 +++ b/ciena.grammar Wed Dec 30 15:57:22 2009 +0100 @@ -50,6 +50,7 @@ $::res->{vs} = {}; $::res->{"vs-vlans"} = {}; $::res->{vlans} = {}; +$::res->{interface} = {}; # local (current line) attribute-value-list, ie. property value my $avl = {}; @@ -104,6 +105,7 @@ | l_vc | l_vs | l_vlan + | l_iface | word(s) #eol word: /[0-9a-zA-Z:\/_\#\"\.\$,+<>=-]+/ @@ -112,6 +114,9 @@ identifier: /[0-9a-zA-Z:_-]+/ { $item[1] } +ip4: /\d+\.\d+\.\d+\.\d+/ + { $item[1] } + quoted_text: { $item[1][2] } | /[0-9a-zA-Z:\/_\#\"\.,-]+/ @@ -313,3 +318,26 @@ $vlan_range = {}; } +# Interface +l_iface: "interface" "remote" "set" "ip" ip4 "subnet" ip4 + { + my ($ip, $mask) = ($item[5], $item[7]); + $::res->{interface}->{remote} = { + ip => $ip, + mask => $mask + } + } + | "interface" "local" "disable" + { $::res->{interface}->{'local'}->{disabled} = 1; } + | "interface" "set" "gateway" ip4 + { $::res->{interface}->{gateway} = $item{ip4}; } + | "interface" "create" "remote-interface" identifier "ip" ip4 "subnet" ip4 "vs" identifier + { + my ($iface, $ip, $mask, $vs) = ($item[4], $item[6], $item[8], $item[10]); + $::res->{interface}->{remote} = { + ip => $ip, + mask => $mask, + id => $iface, + vs => $vs, + } + }