]>
Commit | Line | Data |
---|---|---|
acddc0ed | 1 | // SPDX-License-Identifier: GPL-2.0-or-later |
c740f7d3 RW |
2 | /* |
3 | * Copyright (C) 2016 by Open Source Routing. | |
c740f7d3 RW |
4 | */ |
5 | ||
6 | #include <zebra.h> | |
7 | ||
8 | #include "command.h" | |
9 | #include "vty.h" | |
6d53d24c DS |
10 | #include "json.h" |
11 | ||
935029cd | 12 | #include "ldpd/ldpd.h" |
c740f7d3 | 13 | #include "ldpd/ldp_vty.h" |
1224e5c4 | 14 | #include "ldpd/ldp_vty_cmds_clippy.c" |
c740f7d3 | 15 | |
281bd4dd | 16 | DEFPY_NOSH(ldp_mpls_ldp, |
c740f7d3 | 17 | ldp_mpls_ldp_cmd, |
fc4ea5c2 RW |
18 | "mpls ldp", |
19 | "Global MPLS configuration subcommands\n" | |
20 | "Label Distribution Protocol\n") | |
21 | { | |
1224e5c4 | 22 | return (ldp_vty_mpls_ldp(vty, NULL)); |
fc4ea5c2 RW |
23 | } |
24 | ||
1224e5c4 | 25 | DEFPY (no_ldp_mpls_ldp, |
fc4ea5c2 RW |
26 | no_ldp_mpls_ldp_cmd, |
27 | "no mpls ldp", | |
45506658 | 28 | NO_STR |
c740f7d3 RW |
29 | "Global MPLS configuration subcommands\n" |
30 | "Label Distribution Protocol\n") | |
fc4ea5c2 | 31 | { |
1224e5c4 | 32 | return (ldp_vty_mpls_ldp(vty, "no")); |
fc4ea5c2 RW |
33 | } |
34 | ||
281bd4dd | 35 | DEFPY_NOSH(ldp_l2vpn, |
fc4ea5c2 | 36 | ldp_l2vpn_cmd, |
281bd4dd | 37 | "l2vpn WORD$l2vpn_name type vpls", |
fc4ea5c2 RW |
38 | "Configure l2vpn commands\n" |
39 | "L2VPN name\n" | |
40 | "L2VPN type\n" | |
41 | "Virtual Private LAN Service\n") | |
c740f7d3 | 42 | { |
281bd4dd | 43 | return (ldp_vty_l2vpn(vty, NULL, l2vpn_name)); |
c740f7d3 RW |
44 | } |
45 | ||
1224e5c4 | 46 | DEFPY (no_ldp_l2vpn, |
fc4ea5c2 | 47 | no_ldp_l2vpn_cmd, |
935029cd | 48 | "no l2vpn WORD$l2vpn_name type vpls", |
45506658 | 49 | NO_STR |
c740f7d3 RW |
50 | "Configure l2vpn commands\n" |
51 | "L2VPN name\n" | |
52 | "L2VPN type\n" | |
53 | "Virtual Private LAN Service\n") | |
54 | { | |
935029cd | 55 | return (ldp_vty_l2vpn(vty, "no", l2vpn_name)); |
c740f7d3 RW |
56 | } |
57 | ||
281bd4dd | 58 | DEFPY_NOSH(ldp_address_family, |
c740f7d3 | 59 | ldp_address_family_cmd, |
281bd4dd | 60 | "address-family <ipv4|ipv6>$af", |
fc4ea5c2 RW |
61 | "Configure Address Family and its parameters\n" |
62 | "IPv4\n" | |
63 | "IPv6\n") | |
64 | { | |
281bd4dd | 65 | return (ldp_vty_address_family(vty, NULL, af)); |
fc4ea5c2 RW |
66 | } |
67 | ||
1224e5c4 | 68 | DEFPY (no_ldp_address_family, |
fc4ea5c2 | 69 | no_ldp_address_family_cmd, |
1224e5c4 | 70 | "no address-family <ipv4|ipv6>$af", |
45506658 | 71 | NO_STR |
c740f7d3 RW |
72 | "Configure Address Family and its parameters\n" |
73 | "IPv4\n" | |
74 | "IPv6\n") | |
75 | { | |
1224e5c4 | 76 | return (ldp_vty_address_family(vty, "no", af)); |
c740f7d3 RW |
77 | } |
78 | ||
281bd4dd | 79 | DEFPY_NOSH(ldp_exit_address_family, |
983bd6f7 RW |
80 | ldp_exit_address_family_cmd, |
81 | "exit-address-family", | |
82 | "Exit from Address Family configuration mode\n") | |
83 | { | |
84 | if (vty->node == LDP_IPV4_NODE || vty->node == LDP_IPV6_NODE) | |
85 | vty->node = LDP_NODE; | |
86 | return CMD_SUCCESS; | |
87 | } | |
88 | ||
16cd3d9d RW |
89 | DEFPY (ldp_discovery_link_holdtime, |
90 | ldp_discovery_link_holdtime_cmd, | |
91 | "[no] discovery hello holdtime (1-65535)$holdtime", | |
45506658 | 92 | NO_STR |
c740f7d3 RW |
93 | "Configure discovery parameters\n" |
94 | "LDP Link Hellos\n" | |
16cd3d9d RW |
95 | "Hello holdtime\n" |
96 | "Time (seconds) - 65535 implies infinite\n") | |
97 | { | |
98 | return (ldp_vty_disc_holdtime(vty, no, HELLO_LINK, holdtime)); | |
99 | } | |
100 | ||
101 | DEFPY (ldp_discovery_targeted_holdtime, | |
102 | ldp_discovery_targeted_holdtime_cmd, | |
103 | "[no] discovery targeted-hello holdtime (1-65535)$holdtime", | |
104 | NO_STR | |
105 | "Configure discovery parameters\n" | |
c740f7d3 RW |
106 | "LDP Targeted Hellos\n" |
107 | "Hello holdtime\n" | |
108 | "Time (seconds) - 65535 implies infinite\n") | |
109 | { | |
16cd3d9d | 110 | return (ldp_vty_disc_holdtime(vty, no, HELLO_TARGETED, holdtime)); |
c740f7d3 RW |
111 | } |
112 | ||
16cd3d9d RW |
113 | DEFPY (ldp_discovery_link_interval, |
114 | ldp_discovery_link_interval_cmd, | |
115 | "[no] discovery hello interval (1-65535)$interval", | |
45506658 | 116 | NO_STR |
c740f7d3 RW |
117 | "Configure discovery parameters\n" |
118 | "LDP Link Hellos\n" | |
16cd3d9d RW |
119 | "Hello interval\n" |
120 | "Time (seconds)\n") | |
121 | { | |
122 | return (ldp_vty_disc_interval(vty, no, HELLO_LINK, interval)); | |
123 | } | |
124 | ||
125 | DEFPY (ldp_discovery_targeted_interval, | |
126 | ldp_discovery_targeted_interval_cmd, | |
127 | "[no] discovery targeted-hello interval (1-65535)$interval", | |
128 | NO_STR | |
129 | "Configure discovery parameters\n" | |
c740f7d3 RW |
130 | "LDP Targeted Hellos\n" |
131 | "Hello interval\n" | |
132 | "Time (seconds)\n") | |
133 | { | |
16cd3d9d | 134 | return (ldp_vty_disc_interval(vty, no, HELLO_TARGETED, interval)); |
c740f7d3 RW |
135 | } |
136 | ||
1224e5c4 | 137 | DEFPY (ldp_dual_stack_transport_connection_prefer_ipv4, |
c740f7d3 RW |
138 | ldp_dual_stack_transport_connection_prefer_ipv4_cmd, |
139 | "[no] dual-stack transport-connection prefer ipv4", | |
45506658 | 140 | NO_STR |
c740f7d3 RW |
141 | "Configure dual stack parameters\n" |
142 | "Configure TCP transport parameters\n" | |
0437e105 | 143 | "Configure preferred address family for TCP transport connection with neighbor\n" |
c740f7d3 RW |
144 | "IPv4\n") |
145 | { | |
1224e5c4 | 146 | return (ldp_vty_trans_pref_ipv4(vty, no)); |
c740f7d3 RW |
147 | } |
148 | ||
1224e5c4 | 149 | DEFPY (ldp_dual_stack_cisco_interop, |
c740f7d3 RW |
150 | ldp_dual_stack_cisco_interop_cmd, |
151 | "[no] dual-stack cisco-interop", | |
45506658 | 152 | NO_STR |
c740f7d3 RW |
153 | "Configure dual stack parameters\n" |
154 | "Use Cisco non-compliant format to send and interpret the Dual-Stack capability TLV\n") | |
155 | { | |
1224e5c4 | 156 | return (ldp_vty_ds_cisco_interop(vty, no)); |
c740f7d3 RW |
157 | } |
158 | ||
1224e5c4 | 159 | DEFPY (ldp_neighbor_password, |
c740f7d3 | 160 | ldp_neighbor_password_cmd, |
1224e5c4 | 161 | "[no] neighbor A.B.C.D$neighbor password WORD$password", |
45506658 | 162 | NO_STR |
c740f7d3 RW |
163 | "Configure neighbor parameters\n" |
164 | "LDP Id of neighbor\n" | |
165 | "Configure password for MD5 authentication\n" | |
166 | "The password\n") | |
167 | { | |
1224e5c4 | 168 | return (ldp_vty_neighbor_password(vty, no, neighbor, password)); |
c740f7d3 RW |
169 | } |
170 | ||
1224e5c4 | 171 | DEFPY (ldp_neighbor_session_holdtime, |
c740f7d3 | 172 | ldp_neighbor_session_holdtime_cmd, |
1224e5c4 | 173 | "[no] neighbor A.B.C.D$neighbor session holdtime (15-65535)$holdtime", |
45506658 | 174 | NO_STR |
c740f7d3 RW |
175 | "Configure neighbor parameters\n" |
176 | "LDP Id of neighbor\n" | |
177 | "Configure session parameters\n" | |
178 | "Configure session holdtime\n" | |
179 | "Time (seconds)\n") | |
180 | { | |
1224e5c4 | 181 | return (ldp_vty_nbr_session_holdtime(vty, no, neighbor, holdtime)); |
c740f7d3 RW |
182 | } |
183 | ||
1224e5c4 | 184 | DEFPY (ldp_neighbor_ttl_security, |
c740f7d3 | 185 | ldp_neighbor_ttl_security_cmd, |
1224e5c4 | 186 | "[no] neighbor A.B.C.D$neighbor ttl-security <disable|hops (1-254)$hops>", |
45506658 | 187 | NO_STR |
c740f7d3 RW |
188 | "Configure neighbor parameters\n" |
189 | "LDP Id of neighbor\n" | |
190 | "LDP ttl security check\n" | |
191 | "Disable ttl security\n" | |
192 | "IP hops\n" | |
193 | "maximum number of hops\n") | |
194 | { | |
1224e5c4 | 195 | return (ldp_vty_neighbor_ttl_security(vty, no, neighbor, hops_str)); |
c740f7d3 RW |
196 | } |
197 | ||
1224e5c4 | 198 | DEFPY (ldp_router_id, |
c740f7d3 | 199 | ldp_router_id_cmd, |
1224e5c4 | 200 | "[no] router-id A.B.C.D$address", |
45506658 | 201 | NO_STR |
c740f7d3 RW |
202 | "Configure router Id\n" |
203 | "LSR Id (in form of an IPv4 address)\n") | |
204 | { | |
1224e5c4 | 205 | return (ldp_vty_router_id(vty, no, address)); |
c740f7d3 RW |
206 | } |
207 | ||
aff1743c KS |
208 | DEFPY (ldp_ordered_control, |
209 | ldp_ordered_control_cmd, | |
210 | "[no] ordered-control", | |
211 | NO_STR | |
212 | "Configure LDP ordered label distribution control mode\n") | |
213 | { | |
214 | return (ldp_vty_ordered_control(vty, no)); | |
215 | } | |
216 | ||
e1894ff7 KS |
217 | DEFPY (ldp_wait_for_sync, |
218 | ldp_wait_for_sync_cmd, | |
219 | "[no] wait-for-sync (1-10000)$waitforsync", | |
220 | NO_STR | |
221 | "Time to wait for LDP-IGP Sync to complete label exchange\n" | |
222 | "Time (seconds)\n") | |
223 | { | |
224 | return (ldp_vty_wait_for_sync_interval(vty, no, waitforsync)); | |
225 | ||
226 | } | |
227 | ||
ff5279ba | 228 | DEFPY (ldp_allow_broken_lsps, |
229 | ldp_allow_broken_lsps_cmd, | |
230 | "[no] install allow-broken-lsps", | |
231 | NO_STR | |
232 | "install lsps\n" | |
a0dfca37 | 233 | "if no remote-label install with imp-null\n") |
ff5279ba | 234 | { |
235 | return (ldp_vty_allow_broken_lsp(vty, no)); | |
236 | } | |
237 | ||
1224e5c4 | 238 | DEFPY (ldp_discovery_targeted_hello_accept, |
c740f7d3 | 239 | ldp_discovery_targeted_hello_accept_cmd, |
c60dec36 | 240 | "[no] discovery targeted-hello accept [from ACCESSLIST_NAME$from_acl]", |
45506658 | 241 | NO_STR |
c740f7d3 RW |
242 | "Configure discovery parameters\n" |
243 | "LDP Targeted Hellos\n" | |
244 | "Accept and respond to targeted hellos\n" | |
245 | "Access list to specify acceptable targeted hello source\n" | |
c740f7d3 RW |
246 | "IP access-list name\n") |
247 | { | |
1224e5c4 | 248 | return (ldp_vty_targeted_hello_accept(vty, no, from_acl)); |
c740f7d3 RW |
249 | } |
250 | ||
1224e5c4 | 251 | DEFPY (ldp_discovery_transport_address_ipv4, |
c740f7d3 | 252 | ldp_discovery_transport_address_ipv4_cmd, |
1224e5c4 | 253 | "[no] discovery transport-address A.B.C.D$address", |
45506658 | 254 | NO_STR |
c740f7d3 RW |
255 | "Configure discovery parameters\n" |
256 | "Specify transport address for TCP connection\n" | |
257 | "IP address to be used as transport address\n") | |
258 | { | |
1224e5c4 | 259 | return (ldp_vty_trans_addr(vty, no, address_str)); |
c740f7d3 RW |
260 | } |
261 | ||
1224e5c4 | 262 | DEFPY (ldp_discovery_transport_address_ipv6, |
c740f7d3 | 263 | ldp_discovery_transport_address_ipv6_cmd, |
1224e5c4 | 264 | "[no] discovery transport-address X:X::X:X$address", |
45506658 | 265 | NO_STR |
c740f7d3 RW |
266 | "Configure discovery parameters\n" |
267 | "Specify transport address for TCP connection\n" | |
268 | "IPv6 address to be used as transport address\n") | |
269 | { | |
1224e5c4 | 270 | return (ldp_vty_trans_addr(vty, no, address_str)); |
c740f7d3 RW |
271 | } |
272 | ||
1224e5c4 | 273 | DEFPY (ldp_label_local_advertise, |
c740f7d3 | 274 | ldp_label_local_advertise_cmd, |
c60dec36 | 275 | "[no] label local advertise [{to ACCESSLIST_NAME$to_acl|for ACCESSLIST_NAME$for_acl}]", |
45506658 | 276 | NO_STR |
c740f7d3 RW |
277 | "Configure label control and policies\n" |
278 | "Configure local label control and policies\n" | |
279 | "Configure outbound label advertisement control\n" | |
280 | "IP Access-list specifying controls on LDP Peers\n" | |
c740f7d3 RW |
281 | "IP access-list name\n" |
282 | "IP access-list for destination prefixes\n" | |
c740f7d3 RW |
283 | "IP access-list name\n") |
284 | { | |
1224e5c4 | 285 | return (ldp_vty_label_advertise(vty, no, to_acl, for_acl)); |
c740f7d3 RW |
286 | } |
287 | ||
1224e5c4 | 288 | DEFPY (ldp_label_local_advertise_explicit_null, |
c740f7d3 | 289 | ldp_label_local_advertise_explicit_null_cmd, |
c60dec36 | 290 | "[no] label local advertise explicit-null [for ACCESSLIST_NAME$for_acl]", |
45506658 | 291 | NO_STR |
c740f7d3 RW |
292 | "Configure label control and policies\n" |
293 | "Configure local label control and policies\n" | |
294 | "Configure outbound label advertisement control\n" | |
295 | "Configure explicit-null advertisement\n" | |
296 | "IP access-list for destination prefixes\n" | |
c740f7d3 RW |
297 | "IP access-list name\n") |
298 | { | |
1224e5c4 | 299 | return (ldp_vty_label_expnull(vty, no, for_acl)); |
c740f7d3 RW |
300 | } |
301 | ||
1224e5c4 | 302 | DEFPY (ldp_label_local_allocate, |
c740f7d3 | 303 | ldp_label_local_allocate_cmd, |
c60dec36 | 304 | "[no] label local allocate <host-routes$host_routes|for ACCESSLIST_NAME$for_acl>", |
45506658 | 305 | NO_STR |
c740f7d3 RW |
306 | "Configure label control and policies\n" |
307 | "Configure local label control and policies\n" | |
308 | "Configure label allocation control\n" | |
309 | "allocate local label for host routes only\n" | |
310 | "IP access-list\n" | |
c740f7d3 RW |
311 | "IP access-list name\n") |
312 | { | |
1224e5c4 | 313 | return (ldp_vty_label_allocate(vty, no, host_routes, for_acl)); |
c740f7d3 RW |
314 | } |
315 | ||
1224e5c4 | 316 | DEFPY (ldp_label_remote_accept, |
c740f7d3 | 317 | ldp_label_remote_accept_cmd, |
c60dec36 | 318 | "[no] label remote accept {from ACCESSLIST_NAME$from_acl|for ACCESSLIST_NAME$for_acl}", |
45506658 | 319 | NO_STR |
c740f7d3 RW |
320 | "Configure label control and policies\n" |
321 | "Configure remote/peer label control and policies\n" | |
322 | "Configure inbound label acceptance control\n" | |
323 | "Neighbor from whom to accept label advertisement\n" | |
c740f7d3 RW |
324 | "IP access-list name\n" |
325 | "IP access-list for destination prefixes\n" | |
c740f7d3 RW |
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, |
e1894ff7 | 541 | "[no] debug mpls ldp <errors|event|labels|sync|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" |
e1894ff7 | 549 | "LDP sync information\n" |
c740f7d3 RW |
550 | "LDP zebra information\n") |
551 | { | |
1224e5c4 | 552 | return (ldp_vty_debug(vty, no, type, NULL, NULL)); |
c740f7d3 RW |
553 | } |
554 | ||
1224e5c4 | 555 | DEFPY (ldp_debug_mpls_ldp_messages_recv, |
c740f7d3 | 556 | ldp_debug_mpls_ldp_messages_recv_cmd, |
1224e5c4 | 557 | "[no] debug mpls ldp messages recv [all]$all", |
45506658 | 558 | NO_STR |
c740f7d3 RW |
559 | "Debugging functions\n" |
560 | "MPLS information\n" | |
561 | "Label Distribution Protocol\n" | |
562 | "Messages\n" | |
563 | "Received messages, excluding periodic Keep Alives\n" | |
564 | "Received messages, including periodic Keep Alives\n") | |
565 | { | |
1224e5c4 | 566 | return (ldp_vty_debug(vty, no, "messages", "recv", all)); |
c740f7d3 RW |
567 | } |
568 | ||
1224e5c4 | 569 | DEFPY (ldp_debug_mpls_ldp_messages_sent, |
c740f7d3 | 570 | ldp_debug_mpls_ldp_messages_sent_cmd, |
1224e5c4 | 571 | "[no] debug mpls ldp messages sent [all]$all", |
45506658 | 572 | NO_STR |
c740f7d3 RW |
573 | "Debugging functions\n" |
574 | "MPLS information\n" | |
575 | "Label Distribution Protocol\n" | |
576 | "Messages\n" | |
577 | "Sent messages, excluding periodic Keep Alives\n" | |
578 | "Sent messages, including periodic Keep Alives\n") | |
579 | { | |
1224e5c4 | 580 | return (ldp_vty_debug(vty, no, "messages", "sent", all)); |
c740f7d3 RW |
581 | } |
582 | ||
1224e5c4 | 583 | DEFPY (ldp_show_mpls_ldp_binding, |
c740f7d3 | 584 | ldp_show_mpls_ldp_binding_cmd, |
f0722791 RW |
585 | "show mpls ldp [<ipv4|ipv6>]$af binding\ |
586 | [<A.B.C.D/M|X:X::X:X/M>$prefix [longer-prefixes$longer_prefixes]]\ | |
587 | [{\ | |
588 | neighbor A.B.C.D$nbr\ | |
589 | |local-label (0-1048575)$local_label\ | |
590 | |remote-label (0-1048575)$remote_label\ | |
591 | }]\ | |
592 | [detail]$detail [json]$json", | |
c740f7d3 RW |
593 | "Show running system information\n" |
594 | "MPLS information\n" | |
595 | "Label Distribution Protocol\n" | |
596 | "IPv4 Address Family\n" | |
597 | "IPv6 Address Family\n" | |
598 | "Label Information Base (LIB) information\n" | |
f0722791 RW |
599 | "Destination prefix (IPv4)\n" |
600 | "Destination prefix (IPv6)\n" | |
601 | "Include longer matches\n" | |
602 | "Display labels from LDP neighbor\n" | |
603 | "Neighbor LSR-ID\n" | |
604 | "Match locally assigned label values\n" | |
605 | "Locally assigned label value\n" | |
606 | "Match remotely assigned label values\n" | |
607 | "Remotely assigned label value\n" | |
c740f7d3 | 608 | "Show detailed information\n" |
6d53d24c | 609 | JSON_STR) |
c740f7d3 | 610 | { |
95535717 | 611 | if (!(ldpd_conf->flags & F_LDPD_ENABLED)) |
612 | return CMD_SUCCESS; | |
f0722791 RW |
613 | if (!local_label_str) |
614 | local_label = NO_LABEL; | |
615 | if (!remote_label_str) | |
616 | remote_label = NO_LABEL; | |
617 | return (ldp_vty_show_binding(vty, af, prefix_str, !!longer_prefixes, | |
618 | nbr_str, local_label, remote_label, detail, json)); | |
c740f7d3 RW |
619 | } |
620 | ||
1224e5c4 | 621 | DEFPY (ldp_show_mpls_ldp_discovery, |
c740f7d3 | 622 | ldp_show_mpls_ldp_discovery_cmd, |
1224e5c4 | 623 | "show mpls ldp [<ipv4|ipv6>]$af discovery [detail]$detail [json]$json", |
c740f7d3 RW |
624 | "Show running system information\n" |
625 | "MPLS information\n" | |
626 | "Label Distribution Protocol\n" | |
627 | "IPv4 Address Family\n" | |
628 | "IPv6 Address Family\n" | |
629 | "Discovery Hello Information\n" | |
630 | "Show detailed information\n" | |
6d53d24c | 631 | JSON_STR) |
c740f7d3 | 632 | { |
c740f7d3 RW |
633 | return (ldp_vty_show_discovery(vty, af, detail, json)); |
634 | } | |
635 | ||
1224e5c4 | 636 | DEFPY (ldp_show_mpls_ldp_interface, |
c740f7d3 | 637 | ldp_show_mpls_ldp_interface_cmd, |
1224e5c4 | 638 | "show mpls ldp [<ipv4|ipv6>]$af interface [json]$json", |
c740f7d3 RW |
639 | "Show running system information\n" |
640 | "MPLS information\n" | |
641 | "Label Distribution Protocol\n" | |
642 | "IPv4 Address Family\n" | |
643 | "IPv6 Address Family\n" | |
644 | "interface information\n" | |
6d53d24c | 645 | JSON_STR) |
c740f7d3 | 646 | { |
c740f7d3 RW |
647 | return (ldp_vty_show_interface(vty, af, json)); |
648 | } | |
649 | ||
1224e5c4 | 650 | DEFPY (ldp_show_mpls_ldp_capabilities, |
c740f7d3 | 651 | ldp_show_mpls_ldp_capabilities_cmd, |
1224e5c4 | 652 | "show mpls ldp capabilities [json]$json", |
c740f7d3 RW |
653 | "Show running system information\n" |
654 | "MPLS information\n" | |
655 | "Label Distribution Protocol\n" | |
656 | "Display LDP Capabilities information\n" | |
6d53d24c | 657 | JSON_STR) |
c740f7d3 | 658 | { |
c740f7d3 RW |
659 | return (ldp_vty_show_capabilities(vty, json)); |
660 | } | |
661 | ||
1224e5c4 | 662 | DEFPY (ldp_show_mpls_ldp_neighbor, |
c740f7d3 | 663 | ldp_show_mpls_ldp_neighbor_cmd, |
f0722791 | 664 | "show mpls ldp neighbor [A.B.C.D]$lsr_id [detail]$detail [json]$json", |
c740f7d3 RW |
665 | "Show running system information\n" |
666 | "MPLS information\n" | |
667 | "Label Distribution Protocol\n" | |
668 | "Neighbor information\n" | |
f0722791 | 669 | "Neighbor LSR-ID\n" |
c740f7d3 | 670 | "Show detailed information\n" |
6d53d24c | 671 | JSON_STR) |
c740f7d3 | 672 | { |
f0722791 | 673 | return (ldp_vty_show_neighbor(vty, lsr_id_str, 0, detail, json)); |
c740f7d3 RW |
674 | } |
675 | ||
1224e5c4 | 676 | DEFPY (ldp_show_mpls_ldp_neighbor_capabilities, |
c740f7d3 | 677 | ldp_show_mpls_ldp_neighbor_capabilities_cmd, |
f0722791 | 678 | "show mpls ldp neighbor [A.B.C.D]$lsr_id capabilities [json]$json", |
c740f7d3 RW |
679 | "Show running system information\n" |
680 | "MPLS information\n" | |
681 | "Label Distribution Protocol\n" | |
682 | "Neighbor information\n" | |
f0722791 | 683 | "Neighbor LSR-ID\n" |
c740f7d3 | 684 | "Display neighbor capability information\n" |
6d53d24c | 685 | JSON_STR) |
c740f7d3 | 686 | { |
f0722791 | 687 | return (ldp_vty_show_neighbor(vty, lsr_id_str, 1, NULL, json)); |
c740f7d3 RW |
688 | } |
689 | ||
e1894ff7 KS |
690 | DEFPY (ldp_show_mpls_ldp_igp_sync, |
691 | ldp_show_mpls_ldp_igp_sync_cmd, | |
692 | "show mpls ldp igp-sync [json]$json", | |
693 | "Show mpls ldp ldp-sync information\n" | |
694 | "MPLS information\n" | |
695 | "Label Distribution Protocol\n" | |
696 | "LDP-IGP Sync information\n" | |
697 | JSON_STR) | |
698 | { | |
699 | return (ldp_vty_show_ldp_sync(vty, json)); | |
700 | } | |
701 | ||
1224e5c4 | 702 | DEFPY (ldp_show_l2vpn_atom_binding, |
c740f7d3 | 703 | ldp_show_l2vpn_atom_binding_cmd, |
f0722791 RW |
704 | "show l2vpn atom binding\ |
705 | [{\ | |
706 | A.B.C.D$peer\ | |
707 | |local-label (16-1048575)$local_label\ | |
708 | |remote-label (16-1048575)$remote_label\ | |
709 | }]\ | |
710 | [json]$json", | |
c740f7d3 RW |
711 | "Show running system information\n" |
712 | "Show information about Layer2 VPN\n" | |
713 | "Show Any Transport over MPLS information\n" | |
714 | "Show AToM label binding information\n" | |
f0722791 RW |
715 | "Destination address of the VC\n" |
716 | "Match locally assigned label values\n" | |
717 | "Locally assigned label value\n" | |
718 | "Match remotely assigned label values\n" | |
719 | "Remotely assigned label value\n" | |
6d53d24c | 720 | JSON_STR) |
c740f7d3 | 721 | { |
f0722791 RW |
722 | if (!local_label_str) |
723 | local_label = NO_LABEL; | |
724 | if (!remote_label_str) | |
725 | remote_label = NO_LABEL; | |
726 | return (ldp_vty_show_atom_binding(vty, peer_str, local_label, | |
727 | remote_label, json)); | |
c740f7d3 RW |
728 | } |
729 | ||
1224e5c4 | 730 | DEFPY (ldp_show_l2vpn_atom_vc, |
c740f7d3 | 731 | ldp_show_l2vpn_atom_vc_cmd, |
f0722791 RW |
732 | "show l2vpn atom vc\ |
733 | [{\ | |
734 | A.B.C.D$peer\ | |
735 | |interface IFNAME$ifname\ | |
736 | |vc-id (1-4294967295)$vcid\ | |
737 | }]\ | |
738 | [json]$json", | |
c740f7d3 RW |
739 | "Show running system information\n" |
740 | "Show information about Layer2 VPN\n" | |
741 | "Show Any Transport over MPLS information\n" | |
742 | "Show AToM virtual circuit information\n" | |
f0722791 RW |
743 | "Destination address of the VC\n" |
744 | "Local interface of the pseudowire\n" | |
745 | "Interface's name\n" | |
746 | "VC ID\n" | |
747 | "VC ID\n" | |
6d53d24c | 748 | JSON_STR) |
c740f7d3 | 749 | { |
f0722791 | 750 | return (ldp_vty_show_atom_vc(vty, peer_str, ifname, vcid_str, json)); |
c740f7d3 RW |
751 | } |
752 | ||
281bd4dd | 753 | DEFPY_NOSH (ldp_show_debugging_mpls_ldp, |
87f6dc50 DS |
754 | ldp_show_debugging_mpls_ldp_cmd, |
755 | "show debugging [mpls ldp]", | |
756 | "Show running system information\n" | |
757 | "Debugging functions\n" | |
758 | "MPLS information\n" | |
759 | "Label Distribution Protocol\n") | |
c740f7d3 | 760 | { |
cf00164b DS |
761 | ldp_vty_show_debugging(vty); |
762 | ||
763 | cmd_show_lib_debugs(vty); | |
764 | ||
765 | return CMD_SUCCESS; | |
c740f7d3 RW |
766 | } |
767 | ||
935029cd RW |
768 | static void |
769 | l2vpn_autocomplete(vector comps, struct cmd_token *token) | |
770 | { | |
771 | struct l2vpn *l2vpn; | |
772 | ||
773 | RB_FOREACH(l2vpn, l2vpn_head, &vty_conf->l2vpn_tree) | |
774 | vector_set(comps, XSTRDUP(MTYPE_COMPLETION, l2vpn->name)); | |
775 | } | |
776 | ||
777 | static const struct cmd_variable_handler l2vpn_var_handlers[] = { | |
778 | { | |
779 | .varname = "l2vpn_name", | |
780 | .completions = l2vpn_autocomplete | |
781 | }, | |
782 | { | |
783 | .completions = NULL | |
784 | } | |
785 | }; | |
786 | ||
c740f7d3 RW |
787 | void |
788 | ldp_vty_init (void) | |
789 | { | |
935029cd RW |
790 | cmd_variable_handler_register(l2vpn_var_handlers); |
791 | ||
612c2c15 DL |
792 | install_node(&ldp_node); |
793 | install_node(&ldp_ipv4_node); | |
794 | install_node(&ldp_ipv6_node); | |
795 | install_node(&ldp_ipv4_iface_node); | |
796 | install_node(&ldp_ipv6_iface_node); | |
797 | install_node(&ldp_l2vpn_node); | |
798 | install_node(&ldp_pseudowire_node); | |
799 | install_node(&ldp_debug_node); | |
c740f7d3 RW |
800 | install_default(LDP_NODE); |
801 | install_default(LDP_IPV4_NODE); | |
802 | install_default(LDP_IPV6_NODE); | |
803 | install_default(LDP_IPV4_IFACE_NODE); | |
804 | install_default(LDP_IPV6_IFACE_NODE); | |
805 | install_default(LDP_L2VPN_NODE); | |
806 | install_default(LDP_PSEUDOWIRE_NODE); | |
807 | ||
808 | install_element(CONFIG_NODE, &ldp_mpls_ldp_cmd); | |
fc4ea5c2 | 809 | install_element(CONFIG_NODE, &no_ldp_mpls_ldp_cmd); |
c740f7d3 | 810 | install_element(CONFIG_NODE, &ldp_l2vpn_cmd); |
fc4ea5c2 | 811 | install_element(CONFIG_NODE, &no_ldp_l2vpn_cmd); |
c740f7d3 RW |
812 | install_element(CONFIG_NODE, &ldp_debug_mpls_ldp_discovery_hello_cmd); |
813 | install_element(CONFIG_NODE, &ldp_debug_mpls_ldp_type_cmd); | |
814 | install_element(CONFIG_NODE, &ldp_debug_mpls_ldp_messages_recv_cmd); | |
815 | install_element(CONFIG_NODE, &ldp_debug_mpls_ldp_messages_sent_cmd); | |
816 | ||
817 | install_element(LDP_NODE, &ldp_address_family_cmd); | |
fc4ea5c2 | 818 | install_element(LDP_NODE, &no_ldp_address_family_cmd); |
16cd3d9d RW |
819 | install_element(LDP_NODE, &ldp_discovery_link_holdtime_cmd); |
820 | install_element(LDP_NODE, &ldp_discovery_targeted_holdtime_cmd); | |
821 | install_element(LDP_NODE, &ldp_discovery_link_interval_cmd); | |
822 | install_element(LDP_NODE, &ldp_discovery_targeted_interval_cmd); | |
c740f7d3 RW |
823 | install_element(LDP_NODE, &ldp_dual_stack_transport_connection_prefer_ipv4_cmd); |
824 | install_element(LDP_NODE, &ldp_dual_stack_cisco_interop_cmd); | |
825 | install_element(LDP_NODE, &ldp_neighbor_password_cmd); | |
826 | install_element(LDP_NODE, &ldp_neighbor_session_holdtime_cmd); | |
827 | install_element(LDP_NODE, &ldp_neighbor_ttl_security_cmd); | |
828 | install_element(LDP_NODE, &ldp_router_id_cmd); | |
aff1743c | 829 | install_element(LDP_NODE, &ldp_ordered_control_cmd); |
e1894ff7 | 830 | install_element(LDP_NODE, &ldp_wait_for_sync_cmd); |
ff5279ba | 831 | install_element(LDP_NODE, &ldp_allow_broken_lsps_cmd); |
c740f7d3 | 832 | |
16cd3d9d RW |
833 | install_element(LDP_IPV4_NODE, &ldp_discovery_link_holdtime_cmd); |
834 | install_element(LDP_IPV4_NODE, &ldp_discovery_targeted_holdtime_cmd); | |
835 | install_element(LDP_IPV4_NODE, &ldp_discovery_link_interval_cmd); | |
836 | install_element(LDP_IPV4_NODE, &ldp_discovery_targeted_interval_cmd); | |
c740f7d3 RW |
837 | install_element(LDP_IPV4_NODE, &ldp_discovery_targeted_hello_accept_cmd); |
838 | install_element(LDP_IPV4_NODE, &ldp_discovery_transport_address_ipv4_cmd); | |
839 | install_element(LDP_IPV4_NODE, &ldp_label_local_advertise_cmd); | |
840 | install_element(LDP_IPV4_NODE, &ldp_label_local_advertise_explicit_null_cmd); | |
841 | install_element(LDP_IPV4_NODE, &ldp_label_local_allocate_cmd); | |
842 | install_element(LDP_IPV4_NODE, &ldp_label_remote_accept_cmd); | |
843 | install_element(LDP_IPV4_NODE, &ldp_ttl_security_disable_cmd); | |
844 | install_element(LDP_IPV4_NODE, &ldp_interface_cmd); | |
fc4ea5c2 | 845 | install_element(LDP_IPV4_NODE, &no_ldp_interface_cmd); |
c740f7d3 RW |
846 | install_element(LDP_IPV4_NODE, &ldp_session_holdtime_cmd); |
847 | install_element(LDP_IPV4_NODE, &ldp_neighbor_ipv4_targeted_cmd); | |
983bd6f7 | 848 | install_element(LDP_IPV4_NODE, &ldp_exit_address_family_cmd); |
c740f7d3 | 849 | |
16cd3d9d RW |
850 | install_element(LDP_IPV6_NODE, &ldp_discovery_link_holdtime_cmd); |
851 | install_element(LDP_IPV6_NODE, &ldp_discovery_targeted_holdtime_cmd); | |
852 | install_element(LDP_IPV6_NODE, &ldp_discovery_link_interval_cmd); | |
853 | install_element(LDP_IPV6_NODE, &ldp_discovery_targeted_interval_cmd); | |
c740f7d3 RW |
854 | install_element(LDP_IPV6_NODE, &ldp_discovery_targeted_hello_accept_cmd); |
855 | install_element(LDP_IPV6_NODE, &ldp_discovery_transport_address_ipv6_cmd); | |
856 | install_element(LDP_IPV6_NODE, &ldp_label_local_advertise_cmd); | |
857 | install_element(LDP_IPV6_NODE, &ldp_label_local_advertise_explicit_null_cmd); | |
858 | install_element(LDP_IPV6_NODE, &ldp_label_local_allocate_cmd); | |
859 | install_element(LDP_IPV6_NODE, &ldp_label_remote_accept_cmd); | |
860 | install_element(LDP_IPV6_NODE, &ldp_ttl_security_disable_cmd); | |
861 | install_element(LDP_IPV6_NODE, &ldp_interface_cmd); | |
3c549c10 | 862 | install_element(LDP_IPV6_NODE, &no_ldp_interface_cmd); |
c740f7d3 RW |
863 | install_element(LDP_IPV6_NODE, &ldp_session_holdtime_cmd); |
864 | install_element(LDP_IPV6_NODE, &ldp_neighbor_ipv6_targeted_cmd); | |
983bd6f7 | 865 | install_element(LDP_IPV6_NODE, &ldp_exit_address_family_cmd); |
c740f7d3 | 866 | |
16cd3d9d RW |
867 | install_element(LDP_IPV4_IFACE_NODE, &ldp_discovery_link_holdtime_cmd); |
868 | install_element(LDP_IPV4_IFACE_NODE, &ldp_discovery_link_interval_cmd); | |
c740f7d3 | 869 | |
16cd3d9d RW |
870 | install_element(LDP_IPV6_IFACE_NODE, &ldp_discovery_link_holdtime_cmd); |
871 | install_element(LDP_IPV6_IFACE_NODE, &ldp_discovery_link_interval_cmd); | |
c740f7d3 RW |
872 | |
873 | install_element(LDP_L2VPN_NODE, &ldp_bridge_cmd); | |
874 | install_element(LDP_L2VPN_NODE, &ldp_mtu_cmd); | |
875 | install_element(LDP_L2VPN_NODE, &ldp_member_interface_cmd); | |
876 | install_element(LDP_L2VPN_NODE, &ldp_member_pseudowire_cmd); | |
fc4ea5c2 | 877 | install_element(LDP_L2VPN_NODE, &no_ldp_member_pseudowire_cmd); |
c740f7d3 RW |
878 | install_element(LDP_L2VPN_NODE, &ldp_vc_type_cmd); |
879 | ||
880 | install_element(LDP_PSEUDOWIRE_NODE, &ldp_control_word_cmd); | |
881 | install_element(LDP_PSEUDOWIRE_NODE, &ldp_neighbor_address_cmd); | |
882 | install_element(LDP_PSEUDOWIRE_NODE, &ldp_neighbor_lsr_id_cmd); | |
883 | install_element(LDP_PSEUDOWIRE_NODE, &ldp_pw_id_cmd); | |
884 | install_element(LDP_PSEUDOWIRE_NODE, &ldp_pw_status_disable_cmd); | |
885 | ||
886 | install_element(ENABLE_NODE, &ldp_clear_mpls_ldp_neighbor_cmd); | |
887 | install_element(ENABLE_NODE, &ldp_debug_mpls_ldp_discovery_hello_cmd); | |
888 | install_element(ENABLE_NODE, &ldp_debug_mpls_ldp_type_cmd); | |
889 | install_element(ENABLE_NODE, &ldp_debug_mpls_ldp_messages_recv_cmd); | |
890 | install_element(ENABLE_NODE, &ldp_debug_mpls_ldp_messages_sent_cmd); | |
891 | ||
892 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_binding_cmd); | |
893 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_discovery_cmd); | |
894 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_interface_cmd); | |
895 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_capabilities_cmd); | |
896 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_neighbor_cmd); | |
897 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_neighbor_capabilities_cmd); | |
898 | install_element(VIEW_NODE, &ldp_show_l2vpn_atom_binding_cmd); | |
899 | install_element(VIEW_NODE, &ldp_show_l2vpn_atom_vc_cmd); | |
900 | install_element(VIEW_NODE, &ldp_show_debugging_mpls_ldp_cmd); | |
e1894ff7 | 901 | install_element(VIEW_NODE, &ldp_show_mpls_ldp_igp_sync_cmd); |
c740f7d3 | 902 | } |