]>
Commit | Line | Data |
---|---|---|
c740f7d3 RW |
1 | /* |
2 | * Copyright (C) 2016 by Open Source Routing. | |
3 | * | |
180fc2cd RW |
4 | * This program is free software; you can redistribute it and/or modify |
5 | * it under the terms of the GNU General Public License as published by | |
6 | * the Free Software Foundation; either version 2 of the License, or | |
7 | * (at your option) any later version. | |
c740f7d3 | 8 | * |
180fc2cd | 9 | * This program is distributed in the hope that it will be useful, but |
c740f7d3 RW |
10 | * WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | * General Public License for more details. | |
13 | * | |
180fc2cd RW |
14 | * You should have received a copy of the GNU General Public License |
15 | * along with this program; see the file COPYING; if not, write to the | |
16 | * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, | |
17 | * MA 02110-1301 USA | |
c740f7d3 RW |
18 | */ |
19 | ||
20 | #include <zebra.h> | |
21 | ||
22 | #include "command.h" | |
23 | #include "vty.h" | |
6d53d24c DS |
24 | #include "json.h" |
25 | ||
935029cd | 26 | #include "ldpd/ldpd.h" |
c740f7d3 | 27 | #include "ldpd/ldp_vty.h" |
ab59f4f7 | 28 | #ifndef VTYSH_EXTRACT_PL |
1224e5c4 | 29 | #include "ldpd/ldp_vty_cmds_clippy.c" |
ab59f4f7 | 30 | #endif |
c740f7d3 | 31 | |
281bd4dd | 32 | DEFPY_NOSH(ldp_mpls_ldp, |
c740f7d3 | 33 | ldp_mpls_ldp_cmd, |
fc4ea5c2 RW |
34 | "mpls ldp", |
35 | "Global MPLS configuration subcommands\n" | |
36 | "Label Distribution Protocol\n") | |
37 | { | |
1224e5c4 | 38 | return (ldp_vty_mpls_ldp(vty, NULL)); |
fc4ea5c2 RW |
39 | } |
40 | ||
1224e5c4 | 41 | DEFPY (no_ldp_mpls_ldp, |
fc4ea5c2 RW |
42 | no_ldp_mpls_ldp_cmd, |
43 | "no mpls ldp", | |
45506658 | 44 | NO_STR |
c740f7d3 RW |
45 | "Global MPLS configuration subcommands\n" |
46 | "Label Distribution Protocol\n") | |
fc4ea5c2 | 47 | { |
1224e5c4 | 48 | return (ldp_vty_mpls_ldp(vty, "no")); |
fc4ea5c2 RW |
49 | } |
50 | ||
281bd4dd | 51 | DEFPY_NOSH(ldp_l2vpn, |
fc4ea5c2 | 52 | ldp_l2vpn_cmd, |
281bd4dd | 53 | "l2vpn WORD$l2vpn_name type vpls", |
fc4ea5c2 RW |
54 | "Configure l2vpn commands\n" |
55 | "L2VPN name\n" | |
56 | "L2VPN type\n" | |
57 | "Virtual Private LAN Service\n") | |
c740f7d3 | 58 | { |
281bd4dd | 59 | return (ldp_vty_l2vpn(vty, NULL, l2vpn_name)); |
c740f7d3 RW |
60 | } |
61 | ||
1224e5c4 | 62 | DEFPY (no_ldp_l2vpn, |
fc4ea5c2 | 63 | no_ldp_l2vpn_cmd, |
935029cd | 64 | "no l2vpn WORD$l2vpn_name type vpls", |
45506658 | 65 | NO_STR |
c740f7d3 RW |
66 | "Configure l2vpn commands\n" |
67 | "L2VPN name\n" | |
68 | "L2VPN type\n" | |
69 | "Virtual Private LAN Service\n") | |
70 | { | |
935029cd | 71 | return (ldp_vty_l2vpn(vty, "no", l2vpn_name)); |
c740f7d3 RW |
72 | } |
73 | ||
281bd4dd | 74 | DEFPY_NOSH(ldp_address_family, |
c740f7d3 | 75 | ldp_address_family_cmd, |
281bd4dd | 76 | "address-family <ipv4|ipv6>$af", |
fc4ea5c2 RW |
77 | "Configure Address Family and its parameters\n" |
78 | "IPv4\n" | |
79 | "IPv6\n") | |
80 | { | |
281bd4dd | 81 | return (ldp_vty_address_family(vty, NULL, af)); |
fc4ea5c2 RW |
82 | } |
83 | ||
1224e5c4 | 84 | DEFPY (no_ldp_address_family, |
fc4ea5c2 | 85 | no_ldp_address_family_cmd, |
1224e5c4 | 86 | "no address-family <ipv4|ipv6>$af", |
45506658 | 87 | NO_STR |
c740f7d3 RW |
88 | "Configure Address Family and its parameters\n" |
89 | "IPv4\n" | |
90 | "IPv6\n") | |
91 | { | |
1224e5c4 | 92 | return (ldp_vty_address_family(vty, "no", af)); |
c740f7d3 RW |
93 | } |
94 | ||
281bd4dd | 95 | DEFPY_NOSH(ldp_exit_address_family, |
983bd6f7 RW |
96 | ldp_exit_address_family_cmd, |
97 | "exit-address-family", | |
98 | "Exit from Address Family configuration mode\n") | |
99 | { | |
100 | if (vty->node == LDP_IPV4_NODE || vty->node == LDP_IPV6_NODE) | |
101 | vty->node = LDP_NODE; | |
102 | return CMD_SUCCESS; | |
103 | } | |
104 | ||
16cd3d9d RW |
105 | DEFPY (ldp_discovery_link_holdtime, |
106 | ldp_discovery_link_holdtime_cmd, | |
107 | "[no] discovery hello holdtime (1-65535)$holdtime", | |
45506658 | 108 | NO_STR |
c740f7d3 RW |
109 | "Configure discovery parameters\n" |
110 | "LDP Link Hellos\n" | |
16cd3d9d RW |
111 | "Hello holdtime\n" |
112 | "Time (seconds) - 65535 implies infinite\n") | |
113 | { | |
114 | return (ldp_vty_disc_holdtime(vty, no, HELLO_LINK, holdtime)); | |
115 | } | |
116 | ||
117 | DEFPY (ldp_discovery_targeted_holdtime, | |
118 | ldp_discovery_targeted_holdtime_cmd, | |
119 | "[no] discovery targeted-hello holdtime (1-65535)$holdtime", | |
120 | NO_STR | |
121 | "Configure discovery parameters\n" | |
c740f7d3 RW |
122 | "LDP Targeted Hellos\n" |
123 | "Hello holdtime\n" | |
124 | "Time (seconds) - 65535 implies infinite\n") | |
125 | { | |
16cd3d9d | 126 | return (ldp_vty_disc_holdtime(vty, no, HELLO_TARGETED, holdtime)); |
c740f7d3 RW |
127 | } |
128 | ||
16cd3d9d RW |
129 | DEFPY (ldp_discovery_link_interval, |
130 | ldp_discovery_link_interval_cmd, | |
131 | "[no] discovery hello interval (1-65535)$interval", | |
45506658 | 132 | NO_STR |
c740f7d3 RW |
133 | "Configure discovery parameters\n" |
134 | "LDP Link Hellos\n" | |
16cd3d9d RW |
135 | "Hello interval\n" |
136 | "Time (seconds)\n") | |
137 | { | |
138 | return (ldp_vty_disc_interval(vty, no, HELLO_LINK, interval)); | |
139 | } | |
140 | ||
141 | DEFPY (ldp_discovery_targeted_interval, | |
142 | ldp_discovery_targeted_interval_cmd, | |
143 | "[no] discovery targeted-hello interval (1-65535)$interval", | |
144 | NO_STR | |
145 | "Configure discovery parameters\n" | |
c740f7d3 RW |
146 | "LDP Targeted Hellos\n" |
147 | "Hello interval\n" | |
148 | "Time (seconds)\n") | |
149 | { | |
16cd3d9d | 150 | return (ldp_vty_disc_interval(vty, no, HELLO_TARGETED, interval)); |
c740f7d3 RW |
151 | } |
152 | ||
1224e5c4 | 153 | DEFPY (ldp_dual_stack_transport_connection_prefer_ipv4, |
c740f7d3 RW |
154 | ldp_dual_stack_transport_connection_prefer_ipv4_cmd, |
155 | "[no] dual-stack transport-connection prefer ipv4", | |
45506658 | 156 | NO_STR |
c740f7d3 RW |
157 | "Configure dual stack parameters\n" |
158 | "Configure TCP transport parameters\n" | |
159 | "Configure prefered address family for TCP transport connection with neighbor\n" | |
160 | "IPv4\n") | |
161 | { | |
1224e5c4 | 162 | return (ldp_vty_trans_pref_ipv4(vty, no)); |
c740f7d3 RW |
163 | } |
164 | ||
1224e5c4 | 165 | DEFPY (ldp_dual_stack_cisco_interop, |
c740f7d3 RW |
166 | ldp_dual_stack_cisco_interop_cmd, |
167 | "[no] dual-stack cisco-interop", | |
45506658 | 168 | NO_STR |
c740f7d3 RW |
169 | "Configure dual stack parameters\n" |
170 | "Use Cisco non-compliant format to send and interpret the Dual-Stack capability TLV\n") | |
171 | { | |
1224e5c4 | 172 | return (ldp_vty_ds_cisco_interop(vty, no)); |
c740f7d3 RW |
173 | } |
174 | ||
1224e5c4 | 175 | DEFPY (ldp_neighbor_password, |
c740f7d3 | 176 | ldp_neighbor_password_cmd, |
1224e5c4 | 177 | "[no] neighbor A.B.C.D$neighbor password WORD$password", |
45506658 | 178 | NO_STR |
c740f7d3 RW |
179 | "Configure neighbor parameters\n" |
180 | "LDP Id of neighbor\n" | |
181 | "Configure password for MD5 authentication\n" | |
182 | "The password\n") | |
183 | { | |
1224e5c4 | 184 | return (ldp_vty_neighbor_password(vty, no, neighbor, password)); |
c740f7d3 RW |
185 | } |
186 | ||
1224e5c4 | 187 | DEFPY (ldp_neighbor_session_holdtime, |
c740f7d3 | 188 | ldp_neighbor_session_holdtime_cmd, |
1224e5c4 | 189 | "[no] neighbor A.B.C.D$neighbor session holdtime (15-65535)$holdtime", |
45506658 | 190 | NO_STR |
c740f7d3 RW |
191 | "Configure neighbor parameters\n" |
192 | "LDP Id of neighbor\n" | |
193 | "Configure session parameters\n" | |
194 | "Configure session holdtime\n" | |
195 | "Time (seconds)\n") | |
196 | { | |
1224e5c4 | 197 | return (ldp_vty_nbr_session_holdtime(vty, no, neighbor, holdtime)); |
c740f7d3 RW |
198 | } |
199 | ||
1224e5c4 | 200 | DEFPY (ldp_neighbor_ttl_security, |
c740f7d3 | 201 | ldp_neighbor_ttl_security_cmd, |
1224e5c4 | 202 | "[no] neighbor A.B.C.D$neighbor ttl-security <disable|hops (1-254)$hops>", |
45506658 | 203 | NO_STR |
c740f7d3 RW |
204 | "Configure neighbor parameters\n" |
205 | "LDP Id of neighbor\n" | |
206 | "LDP ttl security check\n" | |
207 | "Disable ttl security\n" | |
208 | "IP hops\n" | |
209 | "maximum number of hops\n") | |
210 | { | |
1224e5c4 | 211 | return (ldp_vty_neighbor_ttl_security(vty, no, neighbor, hops_str)); |
c740f7d3 RW |
212 | } |
213 | ||
1224e5c4 | 214 | DEFPY (ldp_router_id, |
c740f7d3 | 215 | ldp_router_id_cmd, |
1224e5c4 | 216 | "[no] router-id A.B.C.D$address", |
45506658 | 217 | NO_STR |
c740f7d3 RW |
218 | "Configure router Id\n" |
219 | "LSR Id (in form of an IPv4 address)\n") | |
220 | { | |
1224e5c4 | 221 | return (ldp_vty_router_id(vty, no, address)); |
c740f7d3 RW |
222 | } |
223 | ||
1224e5c4 | 224 | DEFPY (ldp_discovery_targeted_hello_accept, |
c740f7d3 | 225 | ldp_discovery_targeted_hello_accept_cmd, |
1224e5c4 | 226 | "[no] discovery targeted-hello accept [from <(1-199)|(1300-2699)|WORD>$from_acl]", |
45506658 | 227 | NO_STR |
c740f7d3 RW |
228 | "Configure discovery parameters\n" |
229 | "LDP Targeted Hellos\n" | |
230 | "Accept and respond to targeted hellos\n" | |
231 | "Access list to specify acceptable targeted hello source\n" | |
232 | "IP access-list number\n" | |
233 | "IP access-list number (expanded range)\n" | |
234 | "IP access-list name\n") | |
235 | { | |
1224e5c4 | 236 | return (ldp_vty_targeted_hello_accept(vty, no, from_acl)); |
c740f7d3 RW |
237 | } |
238 | ||
1224e5c4 | 239 | DEFPY (ldp_discovery_transport_address_ipv4, |
c740f7d3 | 240 | ldp_discovery_transport_address_ipv4_cmd, |
1224e5c4 | 241 | "[no] discovery transport-address A.B.C.D$address", |
45506658 | 242 | NO_STR |
c740f7d3 RW |
243 | "Configure discovery parameters\n" |
244 | "Specify transport address for TCP connection\n" | |
245 | "IP address to be used as transport address\n") | |
246 | { | |
1224e5c4 | 247 | return (ldp_vty_trans_addr(vty, no, address_str)); |
c740f7d3 RW |
248 | } |
249 | ||
1224e5c4 | 250 | DEFPY (ldp_discovery_transport_address_ipv6, |
c740f7d3 | 251 | ldp_discovery_transport_address_ipv6_cmd, |
1224e5c4 | 252 | "[no] discovery transport-address X:X::X:X$address", |
45506658 | 253 | NO_STR |
c740f7d3 RW |
254 | "Configure discovery parameters\n" |
255 | "Specify transport address for TCP connection\n" | |
256 | "IPv6 address to be used as transport address\n") | |
257 | { | |
1224e5c4 | 258 | return (ldp_vty_trans_addr(vty, no, address_str)); |
c740f7d3 RW |
259 | } |
260 | ||
1224e5c4 | 261 | DEFPY (ldp_label_local_advertise, |
c740f7d3 | 262 | ldp_label_local_advertise_cmd, |
1224e5c4 | 263 | "[no] label local advertise [{to <(1-199)|(1300-2699)|WORD>$to_acl|for <(1-199)|(1300-2699)|WORD>$for_acl}]", |
45506658 | 264 | NO_STR |
c740f7d3 RW |
265 | "Configure label control and policies\n" |
266 | "Configure local label control and policies\n" | |
267 | "Configure outbound label advertisement control\n" | |
268 | "IP Access-list specifying controls on LDP Peers\n" | |
269 | "IP access-list number\n" | |
270 | "IP access-list number (expanded range)\n" | |
271 | "IP access-list name\n" | |
272 | "IP access-list for destination prefixes\n" | |
273 | "IP access-list number\n" | |
274 | "IP access-list number (expanded range)\n" | |
275 | "IP access-list name\n") | |
276 | { | |
1224e5c4 | 277 | return (ldp_vty_label_advertise(vty, no, to_acl, for_acl)); |
c740f7d3 RW |
278 | } |
279 | ||
1224e5c4 | 280 | DEFPY (ldp_label_local_advertise_explicit_null, |
c740f7d3 | 281 | ldp_label_local_advertise_explicit_null_cmd, |
1224e5c4 | 282 | "[no] label local advertise explicit-null [for <(1-199)|(1300-2699)|WORD>$for_acl]", |
45506658 | 283 | NO_STR |
c740f7d3 RW |
284 | "Configure label control and policies\n" |
285 | "Configure local label control and policies\n" | |
286 | "Configure outbound label advertisement control\n" | |
287 | "Configure explicit-null advertisement\n" | |
288 | "IP access-list for destination prefixes\n" | |
289 | "IP access-list number\n" | |
290 | "IP access-list number (expanded range)\n" | |
291 | "IP access-list name\n") | |
292 | { | |
1224e5c4 | 293 | return (ldp_vty_label_expnull(vty, no, for_acl)); |
c740f7d3 RW |
294 | } |
295 | ||
1224e5c4 | 296 | DEFPY (ldp_label_local_allocate, |
c740f7d3 | 297 | ldp_label_local_allocate_cmd, |
1224e5c4 | 298 | "[no] label local allocate <host-routes$host_routes|for <(1-199)|(1300-2699)|WORD>$for_acl>", |
45506658 | 299 | NO_STR |
c740f7d3 RW |
300 | "Configure label control and policies\n" |
301 | "Configure local label control and policies\n" | |
302 | "Configure label allocation control\n" | |
303 | "allocate local label for host routes only\n" | |
304 | "IP access-list\n" | |
305 | "IP access-list number\n" | |
306 | "IP access-list number (expanded range)\n" | |
307 | "IP access-list name\n") | |
308 | { | |
1224e5c4 | 309 | return (ldp_vty_label_allocate(vty, no, host_routes, for_acl)); |
c740f7d3 RW |
310 | } |
311 | ||
1224e5c4 | 312 | DEFPY (ldp_label_remote_accept, |
c740f7d3 | 313 | ldp_label_remote_accept_cmd, |
1224e5c4 | 314 | "[no] label remote accept {from <(1-199)|(1300-2699)|WORD>$from_acl|for <(1-199)|(1300-2699)|WORD>$for_acl}", |
45506658 | 315 | NO_STR |
c740f7d3 RW |
316 | "Configure label control and policies\n" |
317 | "Configure remote/peer label control and policies\n" | |
318 | "Configure inbound label acceptance control\n" | |
319 | "Neighbor from whom to accept label advertisement\n" | |
320 | "IP access-list number\n" | |
321 | "IP access-list number (expanded range)\n" | |
322 | "IP access-list name\n" | |
323 | "IP access-list for destination prefixes\n" | |
324 | "IP access-list number\n" | |
325 | "IP access-list number (expanded range)\n" | |
326 | "IP access-list name\n") | |
327 | { | |
1224e5c4 | 328 | return (ldp_vty_label_accept(vty, no, from_acl, for_acl)); |
c740f7d3 RW |
329 | } |
330 | ||
1224e5c4 | 331 | DEFPY (ldp_ttl_security_disable, |
c740f7d3 RW |
332 | ldp_ttl_security_disable_cmd, |
333 | "[no] ttl-security disable", | |
45506658 | 334 | NO_STR |
c740f7d3 RW |
335 | "LDP ttl security check\n" |
336 | "Disable ttl security\n") | |
337 | { | |
1224e5c4 | 338 | return (ldp_vty_ttl_security(vty, no)); |
c740f7d3 RW |
339 | } |
340 | ||
1224e5c4 | 341 | DEFPY (ldp_session_holdtime, |
c740f7d3 | 342 | ldp_session_holdtime_cmd, |
1224e5c4 | 343 | "[no] session holdtime (15-65535)$holdtime", |
45506658 | 344 | NO_STR |
c740f7d3 RW |
345 | "Configure session parameters\n" |
346 | "Configure session holdtime\n" | |
347 | "Time (seconds)\n") | |
348 | { | |
1224e5c4 | 349 | return (ldp_vty_af_session_holdtime(vty, no, holdtime)); |
c740f7d3 RW |
350 | } |
351 | ||
281bd4dd | 352 | DEFPY_NOSH(ldp_interface, |
c740f7d3 | 353 | ldp_interface_cmd, |
281bd4dd | 354 | "interface IFNAME$ifname", |
c740f7d3 RW |
355 | "Enable LDP on an interface and enter interface submode\n" |
356 | "Interface's name\n") | |
357 | { | |
281bd4dd | 358 | return (ldp_vty_interface(vty, NULL, ifname)); |
fc4ea5c2 RW |
359 | } |
360 | ||
1224e5c4 | 361 | DEFPY (no_ldp_interface, |
fc4ea5c2 | 362 | no_ldp_interface_cmd, |
1224e5c4 | 363 | "no interface IFNAME$ifname", |
45506658 | 364 | NO_STR |
fc4ea5c2 RW |
365 | "Enable LDP on an interface and enter interface submode\n" |
366 | "Interface's name\n") | |
367 | { | |
1224e5c4 | 368 | return (ldp_vty_interface(vty, "no", ifname)); |
c740f7d3 RW |
369 | } |
370 | ||
1224e5c4 | 371 | DEFPY (ldp_neighbor_ipv4_targeted, |
c740f7d3 | 372 | ldp_neighbor_ipv4_targeted_cmd, |
1224e5c4 | 373 | "[no] neighbor A.B.C.D$address targeted", |
45506658 | 374 | NO_STR |
c740f7d3 RW |
375 | "Configure neighbor parameters\n" |
376 | "IP address of neighbor\n" | |
377 | "Establish targeted session\n") | |
378 | { | |
1224e5c4 | 379 | return (ldp_vty_neighbor_targeted(vty, no, address_str)); |
c740f7d3 RW |
380 | } |
381 | ||
1224e5c4 | 382 | DEFPY (ldp_neighbor_ipv6_targeted, |
c740f7d3 | 383 | ldp_neighbor_ipv6_targeted_cmd, |
1224e5c4 | 384 | "[no] neighbor X:X::X:X$address targeted", |
45506658 | 385 | NO_STR |
c740f7d3 RW |
386 | "Configure neighbor parameters\n" |
387 | "IPv6 address of neighbor\n" | |
388 | "Establish targeted session\n") | |
389 | { | |
1224e5c4 | 390 | return (ldp_vty_neighbor_targeted(vty, no, address_str)); |
c740f7d3 RW |
391 | } |
392 | ||
1224e5c4 | 393 | DEFPY (ldp_bridge, |
c740f7d3 | 394 | ldp_bridge_cmd, |
1224e5c4 | 395 | "[no] bridge IFNAME$ifname", |
45506658 | 396 | NO_STR |
c740f7d3 RW |
397 | "Bridge interface\n" |
398 | "Interface's name\n") | |
399 | { | |
1224e5c4 | 400 | return (ldp_vty_l2vpn_bridge(vty, no, ifname)); |
c740f7d3 RW |
401 | } |
402 | ||
1224e5c4 | 403 | DEFPY (ldp_mtu, |
c740f7d3 | 404 | ldp_mtu_cmd, |
1224e5c4 | 405 | "[no] mtu (1500-9180)$mtu", |
45506658 | 406 | NO_STR |
c740f7d3 RW |
407 | "Set Maximum Transmission Unit\n" |
408 | "Maximum Transmission Unit value\n") | |
409 | { | |
1224e5c4 | 410 | return (ldp_vty_l2vpn_mtu(vty, no, mtu)); |
c740f7d3 RW |
411 | } |
412 | ||
1224e5c4 | 413 | DEFPY (ldp_member_interface, |
c740f7d3 | 414 | ldp_member_interface_cmd, |
1224e5c4 | 415 | "[no] member interface IFNAME$ifname", |
45506658 | 416 | NO_STR |
c740f7d3 RW |
417 | "L2VPN member configuration\n" |
418 | "Local interface\n" | |
419 | "Interface's name\n") | |
420 | { | |
1224e5c4 | 421 | return (ldp_vty_l2vpn_interface(vty, no, ifname)); |
c740f7d3 RW |
422 | } |
423 | ||
281bd4dd | 424 | DEFPY_NOSH(ldp_member_pseudowire, |
c740f7d3 | 425 | ldp_member_pseudowire_cmd, |
281bd4dd | 426 | "member pseudowire IFNAME$ifname", |
fc4ea5c2 RW |
427 | "L2VPN member configuration\n" |
428 | "Pseudowire interface\n" | |
429 | "Interface's name\n") | |
430 | { | |
281bd4dd | 431 | return (ldp_vty_l2vpn_pseudowire(vty, NULL, ifname)); |
fc4ea5c2 RW |
432 | } |
433 | ||
1224e5c4 | 434 | DEFPY (no_ldp_member_pseudowire, |
fc4ea5c2 | 435 | no_ldp_member_pseudowire_cmd, |
1224e5c4 | 436 | "no member pseudowire IFNAME$ifname", |
45506658 | 437 | NO_STR |
c740f7d3 RW |
438 | "L2VPN member configuration\n" |
439 | "Pseudowire interface\n" | |
440 | "Interface's name\n") | |
441 | { | |
1224e5c4 | 442 | return (ldp_vty_l2vpn_pseudowire(vty, "no", ifname)); |
c740f7d3 RW |
443 | } |
444 | ||
1224e5c4 | 445 | DEFPY (ldp_vc_type, |
c740f7d3 | 446 | ldp_vc_type_cmd, |
1224e5c4 | 447 | "[no] vc type <ethernet|ethernet-tagged>$vc_type", |
45506658 | 448 | NO_STR |
c740f7d3 RW |
449 | "Virtual Circuit options\n" |
450 | "Virtual Circuit type to use\n" | |
451 | "Ethernet (type 5)\n" | |
452 | "Ethernet-tagged (type 4)\n") | |
453 | { | |
1224e5c4 | 454 | return (ldp_vty_l2vpn_pwtype(vty, no, vc_type)); |
c740f7d3 RW |
455 | } |
456 | ||
1224e5c4 | 457 | DEFPY (ldp_control_word, |
c740f7d3 | 458 | ldp_control_word_cmd, |
1224e5c4 | 459 | "[no] control-word <exclude|include>$preference", |
45506658 | 460 | NO_STR |
c740f7d3 RW |
461 | "Control-word options\n" |
462 | "Exclude control-word in pseudowire packets\n" | |
463 | "Include control-word in pseudowire packets\n") | |
464 | { | |
1224e5c4 | 465 | return (ldp_vty_l2vpn_pw_cword(vty, no, preference)); |
c740f7d3 RW |
466 | } |
467 | ||
1224e5c4 | 468 | DEFPY (ldp_neighbor_address, |
c740f7d3 | 469 | ldp_neighbor_address_cmd, |
1224e5c4 | 470 | "[no] neighbor address <A.B.C.D|X:X::X:X>$pw_address", |
45506658 | 471 | NO_STR |
c740f7d3 RW |
472 | "Remote endpoint configuration\n" |
473 | "Specify the IPv4 or IPv6 address of the remote endpoint\n" | |
474 | "IPv4 address\n" | |
475 | "IPv6 address\n") | |
476 | { | |
1224e5c4 | 477 | return (ldp_vty_l2vpn_pw_nbr_addr(vty, no, pw_address_str)); |
c740f7d3 RW |
478 | } |
479 | ||
1224e5c4 | 480 | DEFPY (ldp_neighbor_lsr_id, |
c740f7d3 | 481 | ldp_neighbor_lsr_id_cmd, |
1224e5c4 | 482 | "[no] neighbor lsr-id A.B.C.D$address", |
45506658 | 483 | NO_STR |
c740f7d3 RW |
484 | "Remote endpoint configuration\n" |
485 | "Specify the LSR-ID of the remote endpoint\n" | |
486 | "IPv4 address\n") | |
487 | { | |
1224e5c4 | 488 | return (ldp_vty_l2vpn_pw_nbr_id(vty, no, address)); |
c740f7d3 RW |
489 | } |
490 | ||
1224e5c4 | 491 | DEFPY (ldp_pw_id, |
c740f7d3 | 492 | ldp_pw_id_cmd, |
1224e5c4 | 493 | "[no] pw-id (1-4294967295)$pwid", |
45506658 | 494 | NO_STR |
c740f7d3 RW |
495 | "Set the Virtual Circuit ID\n" |
496 | "Virtual Circuit ID value\n") | |
497 | { | |
1224e5c4 | 498 | return (ldp_vty_l2vpn_pw_pwid(vty, no, pwid)); |
c740f7d3 RW |
499 | } |
500 | ||
1224e5c4 | 501 | DEFPY (ldp_pw_status_disable, |
c740f7d3 RW |
502 | ldp_pw_status_disable_cmd, |
503 | "[no] pw-status disable", | |
45506658 | 504 | NO_STR |
c740f7d3 RW |
505 | "Configure PW status\n" |
506 | "Disable PW status\n") | |
507 | { | |
1224e5c4 | 508 | return (ldp_vty_l2vpn_pw_pwstatus(vty, no)); |
c740f7d3 RW |
509 | } |
510 | ||
1224e5c4 | 511 | DEFPY (ldp_clear_mpls_ldp_neighbor, |
c740f7d3 | 512 | ldp_clear_mpls_ldp_neighbor_cmd, |
1224e5c4 | 513 | "clear mpls ldp neighbor [<A.B.C.D|X:X::X:X>]$address", |
c740f7d3 RW |
514 | "Reset functions\n" |
515 | "Reset MPLS statistical information\n" | |
516 | "Clear LDP state\n" | |
517 | "Clear LDP neighbor sessions\n" | |
518 | "IPv4 address\n" | |
519 | "IPv6 address\n") | |
520 | { | |
1224e5c4 | 521 | return (ldp_vty_clear_nbr(vty, address_str)); |
c740f7d3 RW |
522 | } |
523 | ||
1224e5c4 | 524 | DEFPY (ldp_debug_mpls_ldp_discovery_hello, |
c740f7d3 | 525 | ldp_debug_mpls_ldp_discovery_hello_cmd, |
1224e5c4 | 526 | "[no] debug mpls ldp discovery hello <recv|sent>$dir", |
45506658 | 527 | NO_STR |
c740f7d3 RW |
528 | "Debugging functions\n" |
529 | "MPLS information\n" | |
530 | "Label Distribution Protocol\n" | |
531 | "Discovery messages\n" | |
532 | "Discovery hello message\n" | |
533 | "Received messages\n" | |
534 | "Sent messages\n") | |
535 | { | |
1224e5c4 | 536 | return (ldp_vty_debug(vty, no, "discovery", dir, NULL)); |
c740f7d3 RW |
537 | } |
538 | ||
1224e5c4 | 539 | DEFPY (ldp_debug_mpls_ldp_type, |
c740f7d3 | 540 | ldp_debug_mpls_ldp_type_cmd, |
08e4b244 | 541 | "[no] debug mpls ldp <errors|event|labels|zebra>$type", |
45506658 | 542 | NO_STR |
c740f7d3 RW |
543 | "Debugging functions\n" |
544 | "MPLS information\n" | |
545 | "Label Distribution Protocol\n" | |
546 | "Errors\n" | |
547 | "LDP event information\n" | |
08e4b244 | 548 | "LDP label allocation information\n" |
c740f7d3 RW |
549 | "LDP zebra information\n") |
550 | { | |
1224e5c4 | 551 | return (ldp_vty_debug(vty, no, type, NULL, NULL)); |
c740f7d3 RW |
552 | } |
553 | ||
1224e5c4 | 554 | DEFPY (ldp_debug_mpls_ldp_messages_recv, |
c740f7d3 | 555 | ldp_debug_mpls_ldp_messages_recv_cmd, |
1224e5c4 | 556 | "[no] debug mpls ldp messages recv [all]$all", |
45506658 | 557 | NO_STR |
c740f7d3 RW |
558 | "Debugging functions\n" |
559 | "MPLS information\n" | |
560 | "Label Distribution Protocol\n" | |
561 | "Messages\n" | |
562 | "Received messages, excluding periodic Keep Alives\n" | |
563 | "Received messages, including periodic Keep Alives\n") | |
564 | { | |
1224e5c4 | 565 | return (ldp_vty_debug(vty, no, "messages", "recv", all)); |
c740f7d3 RW |
566 | } |
567 | ||
1224e5c4 | 568 | DEFPY (ldp_debug_mpls_ldp_messages_sent, |
c740f7d3 | 569 | ldp_debug_mpls_ldp_messages_sent_cmd, |
1224e5c4 | 570 | "[no] debug mpls ldp messages sent [all]$all", |
45506658 | 571 | NO_STR |
c740f7d3 RW |
572 | "Debugging functions\n" |
573 | "MPLS information\n" | |
574 | "Label Distribution Protocol\n" | |
575 | "Messages\n" | |
576 | "Sent messages, excluding periodic Keep Alives\n" | |
577 | "Sent messages, including periodic Keep Alives\n") | |
578 | { | |
1224e5c4 | 579 | return (ldp_vty_debug(vty, no, "messages", "sent", all)); |
c740f7d3 RW |
580 | } |
581 | ||
1224e5c4 | 582 | DEFPY (ldp_show_mpls_ldp_binding, |
c740f7d3 | 583 | ldp_show_mpls_ldp_binding_cmd, |
f0722791 RW |
584 | "show mpls ldp [<ipv4|ipv6>]$af binding\ |
585 | [<A.B.C.D/M|X:X::X:X/M>$prefix [longer-prefixes$longer_prefixes]]\ | |
586 | [{\ | |
587 | neighbor A.B.C.D$nbr\ | |
588 | |local-label (0-1048575)$local_label\ | |
589 | |remote-label (0-1048575)$remote_label\ | |
590 | }]\ | |
591 | [detail]$detail [json]$json", | |
c740f7d3 RW |
592 | "Show running system information\n" |
593 | "MPLS information\n" | |
594 | "Label Distribution Protocol\n" | |
595 | "IPv4 Address Family\n" | |
596 | "IPv6 Address Family\n" | |
597 | "Label Information Base (LIB) information\n" | |
f0722791 RW |
598 | "Destination prefix (IPv4)\n" |
599 | "Destination prefix (IPv6)\n" | |
600 | "Include longer matches\n" | |
601 | "Display labels from LDP neighbor\n" | |
602 | "Neighbor LSR-ID\n" | |
603 | "Match locally assigned label values\n" | |
604 | "Locally assigned label value\n" | |
605 | "Match remotely assigned label values\n" | |
606 | "Remotely assigned label value\n" | |
c740f7d3 | 607 | "Show detailed information\n" |
6d53d24c | 608 | JSON_STR) |
c740f7d3 | 609 | { |
f0722791 RW |
610 | if (!local_label_str) |
611 | local_label = NO_LABEL; | |
612 | if (!remote_label_str) | |
613 | remote_label = NO_LABEL; | |
614 | return (ldp_vty_show_binding(vty, af, prefix_str, !!longer_prefixes, | |
615 | nbr_str, local_label, remote_label, detail, json)); | |
c740f7d3 RW |
616 | } |
617 | ||
1224e5c4 | 618 | DEFPY (ldp_show_mpls_ldp_discovery, |
c740f7d3 | 619 | ldp_show_mpls_ldp_discovery_cmd, |
1224e5c4 | 620 | "show mpls ldp [<ipv4|ipv6>]$af discovery [detail]$detail [json]$json", |
c740f7d3 RW |
621 | "Show running system information\n" |
622 | "MPLS information\n" | |
623 | "Label Distribution Protocol\n" | |
624 | "IPv4 Address Family\n" | |
625 | "IPv6 Address Family\n" | |
626 | "Discovery Hello Information\n" | |
627 | "Show detailed information\n" | |
6d53d24c | 628 | JSON_STR) |
c740f7d3 | 629 | { |
c740f7d3 RW |
630 | return (ldp_vty_show_discovery(vty, af, detail, json)); |
631 | } | |
632 | ||
1224e5c4 | 633 | DEFPY (ldp_show_mpls_ldp_interface, |
c740f7d3 | 634 | ldp_show_mpls_ldp_interface_cmd, |
1224e5c4 | 635 | "show mpls ldp [<ipv4|ipv6>]$af interface [json]$json", |
c740f7d3 RW |
636 | "Show running system information\n" |
637 | "MPLS information\n" | |
638 | "Label Distribution Protocol\n" | |
639 | "IPv4 Address Family\n" | |
640 | "IPv6 Address Family\n" | |
641 | "interface information\n" | |
6d53d24c | 642 | JSON_STR) |
c740f7d3 | 643 | { |
c740f7d3 RW |
644 | return (ldp_vty_show_interface(vty, af, json)); |
645 | } | |
646 | ||
1224e5c4 | 647 | DEFPY (ldp_show_mpls_ldp_capabilities, |
c740f7d3 | 648 | ldp_show_mpls_ldp_capabilities_cmd, |
1224e5c4 | 649 | "show mpls ldp capabilities [json]$json", |
c740f7d3 RW |
650 | "Show running system information\n" |
651 | "MPLS information\n" | |
652 | "Label Distribution Protocol\n" | |
653 | "Display LDP Capabilities information\n" | |
6d53d24c | 654 | JSON_STR) |
c740f7d3 | 655 | { |
c740f7d3 RW |
656 | return (ldp_vty_show_capabilities(vty, json)); |
657 | } | |
658 | ||
1224e5c4 | 659 | DEFPY (ldp_show_mpls_ldp_neighbor, |
c740f7d3 | 660 | ldp_show_mpls_ldp_neighbor_cmd, |
f0722791 | 661 | "show mpls ldp neighbor [A.B.C.D]$lsr_id [detail]$detail [json]$json", |
c740f7d3 RW |
662 | "Show running system information\n" |
663 | "MPLS information\n" | |
664 | "Label Distribution Protocol\n" | |
665 | "Neighbor information\n" | |
f0722791 | 666 | "Neighbor LSR-ID\n" |
c740f7d3 | 667 | "Show detailed information\n" |
6d53d24c | 668 | JSON_STR) |
c740f7d3 | 669 | { |
f0722791 | 670 | return (ldp_vty_show_neighbor(vty, lsr_id_str, 0, detail, json)); |
c740f7d3 RW |
671 | } |
672 | ||
1224e5c4 | 673 | DEFPY (ldp_show_mpls_ldp_neighbor_capabilities, |
c740f7d3 | 674 | ldp_show_mpls_ldp_neighbor_capabilities_cmd, |
f0722791 | 675 | "show mpls ldp neighbor [A.B.C.D]$lsr_id capabilities [json]$json", |
c740f7d3 RW |
676 | "Show running system information\n" |
677 | "MPLS information\n" | |
678 | "Label Distribution Protocol\n" | |
679 | "Neighbor information\n" | |
f0722791 | 680 | "Neighbor LSR-ID\n" |
c740f7d3 | 681 | "Display neighbor capability information\n" |
6d53d24c | 682 | JSON_STR) |
c740f7d3 | 683 | { |
f0722791 | 684 | return (ldp_vty_show_neighbor(vty, lsr_id_str, 1, NULL, json)); |
c740f7d3 RW |
685 | } |
686 | ||
1224e5c4 | 687 | DEFPY (ldp_show_l2vpn_atom_binding, |
c740f7d3 | 688 | ldp_show_l2vpn_atom_binding_cmd, |
f0722791 RW |
689 | "show l2vpn atom binding\ |
690 | [{\ | |
691 | A.B.C.D$peer\ | |
692 | |local-label (16-1048575)$local_label\ | |
693 | |remote-label (16-1048575)$remote_label\ | |
694 | }]\ | |
695 | [json]$json", | |
c740f7d3 RW |
696 | "Show running system information\n" |
697 | "Show information about Layer2 VPN\n" | |
698 | "Show Any Transport over MPLS information\n" | |
699 | "Show AToM label binding information\n" | |
f0722791 RW |
700 | "Destination address of the VC\n" |
701 | "Match locally assigned label values\n" | |
702 | "Locally assigned label value\n" | |
703 | "Match remotely assigned label values\n" | |
704 | "Remotely assigned label value\n" | |
6d53d24c | 705 | JSON_STR) |
c740f7d3 | 706 | { |
f0722791 RW |
707 | if (!local_label_str) |
708 | local_label = NO_LABEL; | |
709 | if (!remote_label_str) | |
710 | remote_label = NO_LABEL; | |
711 | return (ldp_vty_show_atom_binding(vty, peer_str, local_label, | |
712 | remote_label, json)); | |
c740f7d3 RW |
713 | } |
714 | ||
1224e5c4 | 715 | DEFPY (ldp_show_l2vpn_atom_vc, |
c740f7d3 | 716 | ldp_show_l2vpn_atom_vc_cmd, |
f0722791 RW |
717 | "show l2vpn atom vc\ |
718 | [{\ | |
719 | A.B.C.D$peer\ | |
720 | |interface IFNAME$ifname\ | |
721 | |vc-id (1-4294967295)$vcid\ | |
722 | }]\ | |
723 | [json]$json", | |
c740f7d3 RW |
724 | "Show running system information\n" |
725 | "Show information about Layer2 VPN\n" | |
726 | "Show Any Transport over MPLS information\n" | |
727 | "Show AToM virtual circuit information\n" | |
f0722791 RW |
728 | "Destination address of the VC\n" |
729 | "Local interface of the pseudowire\n" | |
730 | "Interface's name\n" | |
731 | "VC ID\n" | |
732 | "VC ID\n" | |
6d53d24c | 733 | JSON_STR) |
c740f7d3 | 734 | { |
f0722791 | 735 | return (ldp_vty_show_atom_vc(vty, peer_str, ifname, vcid_str, json)); |
c740f7d3 RW |
736 | } |
737 | ||
281bd4dd | 738 | DEFPY_NOSH (ldp_show_debugging_mpls_ldp, |
87f6dc50 DS |
739 | ldp_show_debugging_mpls_ldp_cmd, |
740 | "show debugging [mpls ldp]", | |
741 | "Show running system information\n" | |
742 | "Debugging functions\n" | |
743 | "MPLS information\n" | |
744 | "Label Distribution Protocol\n") | |
c740f7d3 RW |
745 | { |
746 | return (ldp_vty_show_debugging(vty)); | |
747 | } | |
748 | ||
935029cd RW |
749 | static void |
750 | l2vpn_autocomplete(vector comps, struct cmd_token *token) | |
751 | { | |
752 | struct l2vpn *l2vpn; | |
753 | ||
754 | RB_FOREACH(l2vpn, l2vpn_head, &vty_conf->l2vpn_tree) | |
755 | vector_set(comps, XSTRDUP(MTYPE_COMPLETION, l2vpn->name)); | |
756 | } | |
757 | ||
758 | static const struct cmd_variable_handler l2vpn_var_handlers[] = { | |
759 | { | |
760 | .varname = "l2vpn_name", | |
761 | .completions = l2vpn_autocomplete | |
762 | }, | |
763 | { | |
764 | .completions = NULL | |
765 | } | |
766 | }; | |
767 | ||
c740f7d3 RW |
768 | void |
769 | ldp_vty_init (void) | |
770 | { | |
935029cd RW |
771 | cmd_variable_handler_register(l2vpn_var_handlers); |
772 | ||
c740f7d3 RW |
773 | install_node(&ldp_node, ldp_config_write); |
774 | install_node(&ldp_ipv4_node, NULL); | |
775 | install_node(&ldp_ipv6_node, NULL); | |
776 | install_node(&ldp_ipv4_iface_node, NULL); | |
777 | install_node(&ldp_ipv6_iface_node, NULL); | |
778 | install_node(&ldp_l2vpn_node, ldp_l2vpn_config_write); | |
779 | install_node(&ldp_pseudowire_node, NULL); | |
780 | install_node(&ldp_debug_node, ldp_debug_config_write); | |
781 | install_default(LDP_NODE); | |
782 | install_default(LDP_IPV4_NODE); | |
783 | install_default(LDP_IPV6_NODE); | |
784 | install_default(LDP_IPV4_IFACE_NODE); | |
785 | install_default(LDP_IPV6_IFACE_NODE); | |
786 | install_default(LDP_L2VPN_NODE); | |
787 | install_default(LDP_PSEUDOWIRE_NODE); | |
788 | ||
789 | install_element(CONFIG_NODE, &ldp_mpls_ldp_cmd); | |
fc4ea5c2 | 790 | install_element(CONFIG_NODE, &no_ldp_mpls_ldp_cmd); |
c740f7d3 | 791 | install_element(CONFIG_NODE, &ldp_l2vpn_cmd); |
fc4ea5c2 | 792 | install_element(CONFIG_NODE, &no_ldp_l2vpn_cmd); |
c740f7d3 RW |
793 | install_element(CONFIG_NODE, &ldp_debug_mpls_ldp_discovery_hello_cmd); |
794 | install_element(CONFIG_NODE, &ldp_debug_mpls_ldp_type_cmd); | |
795 | install_element(CONFIG_NODE, &ldp_debug_mpls_ldp_messages_recv_cmd); | |
796 | install_element(CONFIG_NODE, &ldp_debug_mpls_ldp_messages_sent_cmd); | |
797 | ||
798 | install_element(LDP_NODE, &ldp_address_family_cmd); | |
fc4ea5c2 | 799 | install_element(LDP_NODE, &no_ldp_address_family_cmd); |
16cd3d9d RW |
800 | install_element(LDP_NODE, &ldp_discovery_link_holdtime_cmd); |
801 | install_element(LDP_NODE, &ldp_discovery_targeted_holdtime_cmd); | |
802 | install_element(LDP_NODE, &ldp_discovery_link_interval_cmd); | |
803 | install_element(LDP_NODE, &ldp_discovery_targeted_interval_cmd); | |
c740f7d3 RW |
804 | install_element(LDP_NODE, &ldp_dual_stack_transport_connection_prefer_ipv4_cmd); |
805 | install_element(LDP_NODE, &ldp_dual_stack_cisco_interop_cmd); | |
806 | install_element(LDP_NODE, &ldp_neighbor_password_cmd); | |
807 | install_element(LDP_NODE, &ldp_neighbor_session_holdtime_cmd); | |
808 | install_element(LDP_NODE, &ldp_neighbor_ttl_security_cmd); | |
809 | install_element(LDP_NODE, &ldp_router_id_cmd); | |
810 | ||
16cd3d9d RW |
811 | install_element(LDP_IPV4_NODE, &ldp_discovery_link_holdtime_cmd); |
812 | install_element(LDP_IPV4_NODE, &ldp_discovery_targeted_holdtime_cmd); | |
813 | install_element(LDP_IPV4_NODE, &ldp_discovery_link_interval_cmd); | |
814 | install_element(LDP_IPV4_NODE, &ldp_discovery_targeted_interval_cmd); | |
c740f7d3 RW |
815 | install_element(LDP_IPV4_NODE, &ldp_discovery_targeted_hello_accept_cmd); |
816 | install_element(LDP_IPV4_NODE, &ldp_discovery_transport_address_ipv4_cmd); | |
817 | install_element(LDP_IPV4_NODE, &ldp_label_local_advertise_cmd); | |
818 | install_element(LDP_IPV4_NODE, &ldp_label_local_advertise_explicit_null_cmd); | |
819 | install_element(LDP_IPV4_NODE, &ldp_label_local_allocate_cmd); | |
820 | install_element(LDP_IPV4_NODE, &ldp_label_remote_accept_cmd); | |
821 | install_element(LDP_IPV4_NODE, &ldp_ttl_security_disable_cmd); | |
822 | install_element(LDP_IPV4_NODE, &ldp_interface_cmd); | |
fc4ea5c2 | 823 | install_element(LDP_IPV4_NODE, &no_ldp_interface_cmd); |
c740f7d3 RW |
824 | install_element(LDP_IPV4_NODE, &ldp_session_holdtime_cmd); |
825 | install_element(LDP_IPV4_NODE, &ldp_neighbor_ipv4_targeted_cmd); | |
983bd6f7 | 826 | install_element(LDP_IPV4_NODE, &ldp_exit_address_family_cmd); |
c740f7d3 | 827 | |
16cd3d9d RW |
828 | install_element(LDP_IPV6_NODE, &ldp_discovery_link_holdtime_cmd); |
829 | install_element(LDP_IPV6_NODE, &ldp_discovery_targeted_holdtime_cmd); | |
830 | install_element(LDP_IPV6_NODE, &ldp_discovery_link_interval_cmd); | |
831 | install_element(LDP_IPV6_NODE, &ldp_discovery_targeted_interval_cmd); | |
c740f7d3 RW |
832 | install_element(LDP_IPV6_NODE, &ldp_discovery_targeted_hello_accept_cmd); |
833 | install_element(LDP_IPV6_NODE, &ldp_discovery_transport_address_ipv6_cmd); | |
834 | install_element(LDP_IPV6_NODE, &ldp_label_local_advertise_cmd); | |
835 | install_element(LDP_IPV6_NODE, &ldp_label_local_advertise_explicit_null_cmd); | |
836 | install_element(LDP_IPV6_NODE, &ldp_label_local_allocate_cmd); | |
837 | install_element(LDP_IPV6_NODE, &ldp_label_remote_accept_cmd); | |
838 | install_element(LDP_IPV6_NODE, &ldp_ttl_security_disable_cmd); | |
839 | install_element(LDP_IPV6_NODE, &ldp_interface_cmd); | |
3c549c10 | 840 | install_element(LDP_IPV6_NODE, &no_ldp_interface_cmd); |
c740f7d3 RW |
841 | install_element(LDP_IPV6_NODE, &ldp_session_holdtime_cmd); |
842 | install_element(LDP_IPV6_NODE, &ldp_neighbor_ipv6_targeted_cmd); | |
983bd6f7 | 843 | install_element(LDP_IPV6_NODE, &ldp_exit_address_family_cmd); |
c740f7d3 | 844 | |
16cd3d9d RW |
845 | install_element(LDP_IPV4_IFACE_NODE, &ldp_discovery_link_holdtime_cmd); |
846 | install_element(LDP_IPV4_IFACE_NODE, &ldp_discovery_link_interval_cmd); | |
c740f7d3 | 847 | |
16cd3d9d RW |
848 | install_element(LDP_IPV6_IFACE_NODE, &ldp_discovery_link_holdtime_cmd); |
849 | install_element(LDP_IPV6_IFACE_NODE, &ldp_discovery_link_interval_cmd); | |
c740f7d3 RW |
850 | |
851 | install_element(LDP_L2VPN_NODE, &ldp_bridge_cmd); | |
852 | install_element(LDP_L2VPN_NODE, &ldp_mtu_cmd); | |
853 | install_element(LDP_L2VPN_NODE, &ldp_member_interface_cmd); | |
854 | install_element(LDP_L2VPN_NODE, &ldp_member_pseudowire_cmd); | |
fc4ea5c2 | 855 | install_element(LDP_L2VPN_NODE, &no_ldp_member_pseudowire_cmd); |
c740f7d3 RW |
856 | install_element(LDP_L2VPN_NODE, &ldp_vc_type_cmd); |
857 | ||
858 | install_element(LDP_PSEUDOWIRE_NODE, &ldp_control_word_cmd); | |
859 | install_element(LDP_PSEUDOWIRE_NODE, &ldp_neighbor_address_cmd); | |
860 | install_element(LDP_PSEUDOWIRE_NODE, &ldp_neighbor_lsr_id_cmd); | |
861 | install_element(LDP_PSEUDOWIRE_NODE, &ldp_pw_id_cmd); | |
862 | install_element(LDP_PSEUDOWIRE_NODE, &ldp_pw_status_disable_cmd); | |
863 | ||
864 | install_element(ENABLE_NODE, &ldp_clear_mpls_ldp_neighbor_cmd); | |
865 | install_element(ENABLE_NODE, &ldp_debug_mpls_ldp_discovery_hello_cmd); | |
866 | install_element(ENABLE_NODE, &ldp_debug_mpls_ldp_type_cmd); | |
867 | install_element(ENABLE_NODE, &ldp_debug_mpls_ldp_messages_recv_cmd); | |
868 | install_element(ENABLE_NODE, &ldp_debug_mpls_ldp_messages_sent_cmd); | |
869 | ||
870 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_binding_cmd); | |
871 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_discovery_cmd); | |
872 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_interface_cmd); | |
873 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_capabilities_cmd); | |
874 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_neighbor_cmd); | |
875 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_neighbor_capabilities_cmd); | |
876 | install_element(VIEW_NODE, &ldp_show_l2vpn_atom_binding_cmd); | |
877 | install_element(VIEW_NODE, &ldp_show_l2vpn_atom_vc_cmd); | |
878 | install_element(VIEW_NODE, &ldp_show_debugging_mpls_ldp_cmd); | |
879 | } |