# HG changeset patch # User "Tomas Zeman " # Date 1259224182 -3600 # Node ID 0b509f26f4d30cd5c73d6547a182c7b79f0c425c # Parent c170b1da9b6e18ebf8f77029d53ff9dcc6b81209 cisco.grammar: vrf diff -r c170b1da9b6e -r 0b509f26f4d3 cisco.grammar --- a/cisco.grammar Sun Nov 15 22:52:18 2009 +0100 +++ b/cisco.grammar Thu Nov 26 09:29:42 2009 +0100 @@ -26,6 +26,7 @@ line: s_controller | s_interface + | s_vrf | indent comment | indent cmdline | indent emptyline @@ -126,7 +127,7 @@ | vlan_s_range # interface section -iface_name: /\w+\d+[0-9\/\.:]*/ +iface_name: /\w+(-\w+)?\d+[0-9\/\.:]*/ { $item[1] } s_interface: "0" "interface" iface_name /\S*/ eol s_interface_l[ctx => ctx("interface", $item{iface_name}) ](s) "0" "!" eol @@ -164,3 +165,29 @@ | "switchport" "trunk" "encapsulation" keyword { $arg{ctx}->{"trunk-encap"} = $item{keyword} } | "switchport" "trunk" "allowed" "vlan" vlan_range[ctx => $arg{ctx}, key => "vlan"] + | "channel-group" num "mode" keyword + { $arg{ctx}->{"channel-group"}->{$item{num}}->{mode} = $item{keyword} } + | "ip" "vrf" "forwarding" word + { $arg{ctx}->{"ip-vrf-fwd"} = $item{word} } + +# vrf section +s_vrf: "0" "ip" "vrf" keyword eol s_vrf_l[ctx => ctx("vrf", $item{keyword}) ](s) "0" "!" eol + +s_vrf_l: "1" s_vrf_content[ctx => $arg{ctx}] eol + | l_section + +rd_val: /\d+:\d+/ + { $item[1] } + +s_vrf_content: l_description[ctx => $arg{ctx}] + | "rd" rd_val + { $arg{ctx}->{rd} = $item{rd_val} } + | "export" "map" keyword + { $arg{ctx}->{"export-map"} = $item{keyword} } + | "route-target" /export|import/ rd_val + { + $arg{ctx}->{"route-target"}->{$item[2]} = [] + unless exists $arg{ctx}->{"route-target"}->{$item[2]}; + push @{$arg{ctx}->{"route-target"}->{$item[2]}}, $item{rd_val}; + } +