--- /dev/null
+/* Auto-generated from ldp_vty.xml. */
+/* Do not edit! */
+
+#include <zebra.h>
+
+#include "command.h"
+#include "vty.h"
+#include "ldp_vty.h"
+
+DEFUN (ldp_mpls_ldp,
+ ldp_mpls_ldp_cmd,
+ "mpls ldp",
+ "Global MPLS configuration subcommands\n"
+ "Label Distribution Protocol\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_mpls_ldp (vty, args);
+}
+
+DEFUN (ldp_l2vpn_word_type_vpls,
+ ldp_l2vpn_word_type_vpls_cmd,
+ "l2vpn WORD type vpls",
+ "Configure l2vpn commands\n"
+ "L2VPN name\n"
+ "L2VPN type\n"
+ "Virtual Private LAN Service\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "name", .value = argv[1]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn (vty, args);
+}
+
+DEFUN (ldp_no_mpls_ldp,
+ ldp_no_mpls_ldp_cmd,
+ "no mpls ldp",
+ "Negate a command or set its defaults\n"
+ "Global MPLS configuration subcommands\n"
+ "Label Distribution Protocol\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ NULL
+ };
+ return ldp_vty_mpls_ldp (vty, args);
+}
+
+DEFUN (ldp_no_l2vpn_word_type_vpls,
+ ldp_no_l2vpn_word_type_vpls_cmd,
+ "no l2vpn WORD type vpls",
+ "Negate a command or set its defaults\n"
+ "Configure l2vpn commands\n"
+ "L2VPN name\n"
+ "L2VPN type\n"
+ "Virtual Private LAN Service\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "name", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn (vty, args);
+}
+
+DEFUN (ldp_address_family_ipv4,
+ ldp_address_family_ipv4_cmd,
+ "address-family ipv4",
+ "Configure Address Family and its parameters\n"
+ "IPv4\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "address-family", .value = "ipv4" },
+ NULL
+ };
+ return ldp_vty_address_family (vty, args);
+}
+
+DEFUN (ldp_address_family_ipv6,
+ ldp_address_family_ipv6_cmd,
+ "address-family ipv6",
+ "Configure Address Family and its parameters\n"
+ "IPv6\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "address-family", .value = "ipv6" },
+ NULL
+ };
+ return ldp_vty_address_family (vty, args);
+}
+
+DEFUN (ldp_discovery_hello_holdtime_disc_time,
+ ldp_discovery_hello_holdtime_disc_time_cmd,
+ "discovery hello holdtime (1-65535)",
+ "Configure discovery parameters\n"
+ "LDP Link Hellos\n"
+ "Hello holdtime\n"
+ "Time (seconds) - 65535 implies infinite\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "hello_type", .value = "hello" },
+ &(struct vty_arg) { .name = "seconds", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_disc_holdtime (vty, args);
+}
+
+DEFUN (ldp_discovery_hello_interval_disc_time,
+ ldp_discovery_hello_interval_disc_time_cmd,
+ "discovery hello interval (1-65535)",
+ "Configure discovery parameters\n"
+ "LDP Link Hellos\n"
+ "Hello interval\n"
+ "Time (seconds)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "hello_type", .value = "hello" },
+ &(struct vty_arg) { .name = "seconds", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_disc_interval (vty, args);
+}
+
+DEFUN (ldp_discovery_targeted_hello_holdtime_disc_time,
+ ldp_discovery_targeted_hello_holdtime_disc_time_cmd,
+ "discovery targeted-hello holdtime (1-65535)",
+ "Configure discovery parameters\n"
+ "LDP Targeted Hellos\n"
+ "Targeted hello holdtime\n"
+ "Time (seconds) - 65535 implies infinite\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "hello_type", .value = "targeted-hello" },
+ &(struct vty_arg) { .name = "seconds", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_disc_holdtime (vty, args);
+}
+
+DEFUN (ldp_discovery_targeted_hello_interval_disc_time,
+ ldp_discovery_targeted_hello_interval_disc_time_cmd,
+ "discovery targeted-hello interval (1-65535)",
+ "Configure discovery parameters\n"
+ "LDP Targeted Hellos\n"
+ "Targeted hello interval\n"
+ "Time (seconds)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "hello_type", .value = "targeted-hello" },
+ &(struct vty_arg) { .name = "seconds", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_disc_interval (vty, args);
+}
+
+DEFUN (ldp_dual_stack_transport_connection_prefer_ipv4,
+ ldp_dual_stack_transport_connection_prefer_ipv4_cmd,
+ "dual-stack transport-connection prefer ipv4",
+ "Configure dual stack parameters\n"
+ "Configure TCP transport parameters\n"
+ "Configure prefered address family for TCP transport connection with neighbor\n"
+ "IPv4\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_trans_pref_ipv4 (vty, args);
+}
+
+DEFUN (ldp_dual_stack_cisco_interop,
+ ldp_dual_stack_cisco_interop_cmd,
+ "dual-stack cisco-interop",
+ "Configure dual stack parameters\n"
+ "Use Cisco non-compliant format to send and interpret the Dual-Stack capability TLV\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_ds_cisco_interop (vty, args);
+}
+
+DEFUN (ldp_neighbor_ipv4_password_word,
+ ldp_neighbor_ipv4_password_word_cmd,
+ "neighbor A.B.C.D password WORD",
+ "Configure neighbor parameters\n"
+ "LDP Id of neighbor\n"
+ "Configure password for MD5 authentication\n"
+ "The password\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "lsr_id", .value = argv[1]->arg },
+ &(struct vty_arg) { .name = "password", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_neighbor_password (vty, args);
+}
+
+DEFUN (ldp_neighbor_ipv4_session_holdtime_session_time,
+ ldp_neighbor_ipv4_session_holdtime_session_time_cmd,
+ "neighbor A.B.C.D session holdtime (15-65535)",
+ "Configure neighbor parameters\n"
+ "LDP Id of neighbor\n"
+ "Configure session parameters\n"
+ "Configure session holdtime\n"
+ "Time (seconds)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "lsr_id", .value = argv[1]->arg },
+ &(struct vty_arg) { .name = "seconds", .value = argv[4]->arg },
+ NULL
+ };
+ return ldp_vty_session_holdtime (vty, args);
+}
+
+DEFUN (ldp_neighbor_ipv4_ttl_security_disable,
+ ldp_neighbor_ipv4_ttl_security_disable_cmd,
+ "neighbor A.B.C.D ttl-security disable",
+ "Configure neighbor parameters\n"
+ "LDP Id of neighbor\n"
+ "LDP ttl security check\n"
+ "Disable ttl security\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "lsr_id", .value = argv[1]->arg },
+ NULL
+ };
+ return ldp_vty_neighbor_ttl_security (vty, args);
+}
+
+DEFUN (ldp_neighbor_ipv4_ttl_security_hops_hops,
+ ldp_neighbor_ipv4_ttl_security_hops_hops_cmd,
+ "neighbor A.B.C.D ttl-security hops (1-254)",
+ "Configure neighbor parameters\n"
+ "LDP Id of neighbor\n"
+ "LDP ttl security check\n"
+ "IP hops\n"
+ "maximum number of hops\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "lsr_id", .value = argv[1]->arg },
+ &(struct vty_arg) { .name = "hops", .value = argv[4]->arg },
+ NULL
+ };
+ return ldp_vty_neighbor_ttl_security (vty, args);
+}
+
+DEFUN (ldp_router_id_ipv4,
+ ldp_router_id_ipv4_cmd,
+ "router-id A.B.C.D",
+ "Configure router Id\n"
+ "LSR Id (in form of an IPv4 address)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "addr", .value = argv[1]->arg },
+ NULL
+ };
+ return ldp_vty_router_id (vty, args);
+}
+
+DEFUN (ldp_no_address_family_ipv4,
+ ldp_no_address_family_ipv4_cmd,
+ "no address-family ipv4",
+ "Negate a command or set its defaults\n"
+ "Configure Address Family and its parameters\n"
+ "IPv4\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "address-family", .value = "ipv4" },
+ NULL
+ };
+ return ldp_vty_address_family (vty, args);
+}
+
+DEFUN (ldp_no_address_family_ipv6,
+ ldp_no_address_family_ipv6_cmd,
+ "no address-family ipv6",
+ "Negate a command or set its defaults\n"
+ "Configure Address Family and its parameters\n"
+ "IPv6\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "address-family", .value = "ipv6" },
+ NULL
+ };
+ return ldp_vty_address_family (vty, args);
+}
+
+DEFUN (ldp_no_discovery_hello_holdtime_disc_time,
+ ldp_no_discovery_hello_holdtime_disc_time_cmd,
+ "no discovery hello holdtime (1-65535)",
+ "Negate a command or set its defaults\n"
+ "Configure discovery parameters\n"
+ "LDP Link Hellos\n"
+ "Hello holdtime\n"
+ "Time (seconds) - 65535 implies infinite\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "hello_type", .value = "hello" },
+ &(struct vty_arg) { .name = "seconds", .value = argv[4]->arg },
+ NULL
+ };
+ return ldp_vty_disc_holdtime (vty, args);
+}
+
+DEFUN (ldp_no_discovery_hello_interval_disc_time,
+ ldp_no_discovery_hello_interval_disc_time_cmd,
+ "no discovery hello interval (1-65535)",
+ "Negate a command or set its defaults\n"
+ "Configure discovery parameters\n"
+ "LDP Link Hellos\n"
+ "Hello interval\n"
+ "Time (seconds)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "hello_type", .value = "hello" },
+ &(struct vty_arg) { .name = "seconds", .value = argv[4]->arg },
+ NULL
+ };
+ return ldp_vty_disc_interval (vty, args);
+}
+
+DEFUN (ldp_no_discovery_targeted_hello_holdtime_disc_time,
+ ldp_no_discovery_targeted_hello_holdtime_disc_time_cmd,
+ "no discovery targeted-hello holdtime (1-65535)",
+ "Negate a command or set its defaults\n"
+ "Configure discovery parameters\n"
+ "LDP Targeted Hellos\n"
+ "Targeted hello holdtime\n"
+ "Time (seconds) - 65535 implies infinite\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "hello_type", .value = "targeted-hello" },
+ &(struct vty_arg) { .name = "seconds", .value = argv[4]->arg },
+ NULL
+ };
+ return ldp_vty_disc_holdtime (vty, args);
+}
+
+DEFUN (ldp_no_discovery_targeted_hello_interval_disc_time,
+ ldp_no_discovery_targeted_hello_interval_disc_time_cmd,
+ "no discovery targeted-hello interval (1-65535)",
+ "Negate a command or set its defaults\n"
+ "Configure discovery parameters\n"
+ "LDP Targeted Hellos\n"
+ "Targeted hello interval\n"
+ "Time (seconds)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "hello_type", .value = "targeted-hello" },
+ &(struct vty_arg) { .name = "seconds", .value = argv[4]->arg },
+ NULL
+ };
+ return ldp_vty_disc_interval (vty, args);
+}
+
+DEFUN (ldp_no_dual_stack_transport_connection_prefer_ipv4,
+ ldp_no_dual_stack_transport_connection_prefer_ipv4_cmd,
+ "no dual-stack transport-connection prefer ipv4",
+ "Negate a command or set its defaults\n"
+ "Configure dual stack parameters\n"
+ "Configure TCP transport parameters\n"
+ "Configure prefered address family for TCP transport connection with neighbor\n"
+ "IPv4\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ NULL
+ };
+ return ldp_vty_trans_pref_ipv4 (vty, args);
+}
+
+DEFUN (ldp_no_dual_stack_cisco_interop,
+ ldp_no_dual_stack_cisco_interop_cmd,
+ "no dual-stack cisco-interop",
+ "Negate a command or set its defaults\n"
+ "Configure dual stack parameters\n"
+ "Use Cisco non-compliant format to send and interpret the Dual-Stack capability TLV\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ NULL
+ };
+ return ldp_vty_ds_cisco_interop (vty, args);
+}
+
+DEFUN (ldp_no_neighbor_ipv4_password_word,
+ ldp_no_neighbor_ipv4_password_word_cmd,
+ "no neighbor A.B.C.D password WORD",
+ "Negate a command or set its defaults\n"
+ "Configure neighbor parameters\n"
+ "LDP Id of neighbor\n"
+ "Configure password for MD5 authentication\n"
+ "The password\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "lsr_id", .value = argv[2]->arg },
+ &(struct vty_arg) { .name = "password", .value = argv[4]->arg },
+ NULL
+ };
+ return ldp_vty_neighbor_password (vty, args);
+}
+
+DEFUN (ldp_no_neighbor_ipv4_session_holdtime_session_time,
+ ldp_no_neighbor_ipv4_session_holdtime_session_time_cmd,
+ "no neighbor A.B.C.D session holdtime (15-65535)",
+ "Negate a command or set its defaults\n"
+ "Configure neighbor parameters\n"
+ "LDP Id of neighbor\n"
+ "Configure session parameters\n"
+ "Configure session holdtime\n"
+ "Time (seconds)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "lsr_id", .value = argv[2]->arg },
+ &(struct vty_arg) { .name = "seconds", .value = argv[5]->arg },
+ NULL
+ };
+ return ldp_vty_session_holdtime (vty, args);
+}
+
+DEFUN (ldp_no_neighbor_ipv4_ttl_security_disable,
+ ldp_no_neighbor_ipv4_ttl_security_disable_cmd,
+ "no neighbor A.B.C.D ttl-security disable",
+ "Negate a command or set its defaults\n"
+ "Configure neighbor parameters\n"
+ "LDP Id of neighbor\n"
+ "LDP ttl security check\n"
+ "Disable ttl security\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "lsr_id", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_neighbor_ttl_security (vty, args);
+}
+
+DEFUN (ldp_no_neighbor_ipv4_ttl_security_hops_hops,
+ ldp_no_neighbor_ipv4_ttl_security_hops_hops_cmd,
+ "no neighbor A.B.C.D ttl-security hops (1-254)",
+ "Negate a command or set its defaults\n"
+ "Configure neighbor parameters\n"
+ "LDP Id of neighbor\n"
+ "LDP ttl security check\n"
+ "IP hops\n"
+ "maximum number of hops\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "lsr_id", .value = argv[2]->arg },
+ &(struct vty_arg) { .name = "hops", .value = argv[5]->arg },
+ NULL
+ };
+ return ldp_vty_neighbor_ttl_security (vty, args);
+}
+
+DEFUN (ldp_no_router_id_ipv4,
+ ldp_no_router_id_ipv4_cmd,
+ "no router-id A.B.C.D",
+ "Negate a command or set its defaults\n"
+ "Configure router Id\n"
+ "LSR Id (in form of an IPv4 address)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "addr", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_router_id (vty, args);
+}
+
+DEFUN (ldp_discovery_targeted_hello_accept,
+ ldp_discovery_targeted_hello_accept_cmd,
+ "discovery targeted-hello accept",
+ "Configure discovery parameters\n"
+ "LDP Targeted Hellos\n"
+ "Accept and respond to targeted hellos\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "hello_type", .value = "targeted-hello" },
+ NULL
+ };
+ return ldp_vty_targeted_hello_accept (vty, args);
+}
+
+DEFUN (ldp_label_local_advertise_explicit_null,
+ ldp_label_local_advertise_explicit_null_cmd,
+ "label local advertise explicit-null",
+ "Configure label control and policies\n"
+ "Configure local label control and policies\n"
+ "Configure outbound label advertisement control\n"
+ "Configure explicit-null advertisement\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_explicit_null (vty, args);
+}
+
+DEFUN (ldp_ttl_security_disable,
+ ldp_ttl_security_disable_cmd,
+ "ttl-security disable",
+ "LDP ttl security check\n"
+ "Disable ttl security\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_ttl_security (vty, args);
+}
+
+DEFUN (ldp_session_holdtime_session_time,
+ ldp_session_holdtime_session_time_cmd,
+ "session holdtime (15-65535)",
+ "Configure session parameters\n"
+ "Configure session holdtime\n"
+ "Time (seconds)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "seconds", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_session_holdtime (vty, args);
+}
+
+DEFUN (ldp_interface_ifname,
+ ldp_interface_ifname_cmd,
+ "interface IFNAME",
+ "Enable LDP on an interface and enter interface submode\n"
+ "Interface's name\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "ifname", .value = argv[1]->arg },
+ NULL
+ };
+ return ldp_vty_interface (vty, args);
+}
+
+DEFUN (ldp_discovery_transport_address_ipv4,
+ ldp_discovery_transport_address_ipv4_cmd,
+ "discovery transport-address A.B.C.D",
+ "Configure discovery parameters\n"
+ "Specify transport address for TCP connection\n"
+ "IP address to be used as transport address\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "addr", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_trans_addr (vty, args);
+}
+
+DEFUN (ldp_neighbor_ipv4_targeted,
+ ldp_neighbor_ipv4_targeted_cmd,
+ "neighbor A.B.C.D targeted",
+ "Configure neighbor parameters\n"
+ "IP address of neighbor\n"
+ "Establish targeted session\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "addr", .value = argv[1]->arg },
+ NULL
+ };
+ return ldp_vty_neighbor_targeted (vty, args);
+}
+
+DEFUN (ldp_no_discovery_targeted_hello_accept,
+ ldp_no_discovery_targeted_hello_accept_cmd,
+ "no discovery targeted-hello accept",
+ "Negate a command or set its defaults\n"
+ "Configure discovery parameters\n"
+ "LDP Targeted Hellos\n"
+ "Accept and respond to targeted hellos\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "hello_type", .value = "targeted-hello" },
+ NULL
+ };
+ return ldp_vty_targeted_hello_accept (vty, args);
+}
+
+DEFUN (ldp_no_label_local_advertise_explicit_null,
+ ldp_no_label_local_advertise_explicit_null_cmd,
+ "no label local advertise explicit-null",
+ "Negate a command or set its defaults\n"
+ "Configure label control and policies\n"
+ "Configure local label control and policies\n"
+ "Configure outbound label advertisement control\n"
+ "Configure explicit-null advertisement\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ NULL
+ };
+ return ldp_vty_explicit_null (vty, args);
+}
+
+DEFUN (ldp_no_ttl_security_disable,
+ ldp_no_ttl_security_disable_cmd,
+ "no ttl-security disable",
+ "Negate a command or set its defaults\n"
+ "LDP ttl security check\n"
+ "Disable ttl security\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ NULL
+ };
+ return ldp_vty_ttl_security (vty, args);
+}
+
+DEFUN (ldp_no_session_holdtime_session_time,
+ ldp_no_session_holdtime_session_time_cmd,
+ "no session holdtime (15-65535)",
+ "Negate a command or set its defaults\n"
+ "Configure session parameters\n"
+ "Configure session holdtime\n"
+ "Time (seconds)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "seconds", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_session_holdtime (vty, args);
+}
+
+DEFUN (ldp_no_interface_ifname,
+ ldp_no_interface_ifname_cmd,
+ "no interface IFNAME",
+ "Negate a command or set its defaults\n"
+ "Enable LDP on an interface and enter interface submode\n"
+ "Interface's name\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "ifname", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_interface (vty, args);
+}
+
+DEFUN (ldp_no_discovery_transport_address_ipv4,
+ ldp_no_discovery_transport_address_ipv4_cmd,
+ "no discovery transport-address A.B.C.D",
+ "Negate a command or set its defaults\n"
+ "Configure discovery parameters\n"
+ "Specify transport address for TCP connection\n"
+ "IP address to be used as transport address\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "addr", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_trans_addr (vty, args);
+}
+
+DEFUN (ldp_no_neighbor_ipv4_targeted,
+ ldp_no_neighbor_ipv4_targeted_cmd,
+ "no neighbor A.B.C.D targeted",
+ "Negate a command or set its defaults\n"
+ "Configure neighbor parameters\n"
+ "IP address of neighbor\n"
+ "Establish targeted session\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "addr", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_neighbor_targeted (vty, args);
+}
+
+DEFUN (ldp_discovery_transport_address_ipv6,
+ ldp_discovery_transport_address_ipv6_cmd,
+ "discovery transport-address X:X::X:X",
+ "Configure discovery parameters\n"
+ "Specify transport address for TCP connection\n"
+ "IPv6 address to be used as transport address\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "addr", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_trans_addr (vty, args);
+}
+
+DEFUN (ldp_neighbor_ipv6_targeted,
+ ldp_neighbor_ipv6_targeted_cmd,
+ "neighbor X:X::X:X targeted",
+ "Configure neighbor parameters\n"
+ "IPv6 address of neighbor\n"
+ "Establish targeted session\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "addr", .value = argv[1]->arg },
+ NULL
+ };
+ return ldp_vty_neighbor_targeted (vty, args);
+}
+
+DEFUN (ldp_no_discovery_transport_address_ipv6,
+ ldp_no_discovery_transport_address_ipv6_cmd,
+ "no discovery transport-address X:X::X:X",
+ "Negate a command or set its defaults\n"
+ "Configure discovery parameters\n"
+ "Specify transport address for TCP connection\n"
+ "IPv6 address to be used as transport address\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "addr", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_trans_addr (vty, args);
+}
+
+DEFUN (ldp_no_neighbor_ipv6_targeted,
+ ldp_no_neighbor_ipv6_targeted_cmd,
+ "no neighbor X:X::X:X targeted",
+ "Negate a command or set its defaults\n"
+ "Configure neighbor parameters\n"
+ "IPv6 address of neighbor\n"
+ "Establish targeted session\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "addr", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_neighbor_targeted (vty, args);
+}
+
+DEFUN (ldp_bridge_ifname,
+ ldp_bridge_ifname_cmd,
+ "bridge IFNAME",
+ "Bridge interface\n"
+ "Interface's name\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "ifname", .value = argv[1]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_bridge (vty, args);
+}
+
+DEFUN (ldp_mtu_mtu,
+ ldp_mtu_mtu_cmd,
+ "mtu (1500-9180)",
+ "set Maximum Transmission Unit\n"
+ "Maximum Transmission Unit value\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "mtu", .value = argv[1]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_mtu (vty, args);
+}
+
+DEFUN (ldp_member_interface_ifname,
+ ldp_member_interface_ifname_cmd,
+ "member interface IFNAME",
+ "L2VPN member configuration\n"
+ "Local interface\n"
+ "Interface's name\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "ifname", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_interface (vty, args);
+}
+
+DEFUN (ldp_member_pseudowire_ifname,
+ ldp_member_pseudowire_ifname_cmd,
+ "member pseudowire IFNAME",
+ "L2VPN member configuration\n"
+ "Pseudowire interface\n"
+ "Interface's name\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "ifname", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pseudowire (vty, args);
+}
+
+DEFUN (ldp_vc_type_pwtype,
+ ldp_vc_type_pwtype_cmd,
+ "vc type <ethernet|ethernet-tagged>",
+ "Virtual Circuit options\n"
+ "Virtual Circuit type to use\n"
+ "Ethernet (type 5)\n"
+ "Ethernet-tagged (type 4)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "type", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pwtype (vty, args);
+}
+
+DEFUN (ldp_no_bridge_ifname,
+ ldp_no_bridge_ifname_cmd,
+ "no bridge IFNAME",
+ "Negate a command or set its defaults\n"
+ "Bridge interface\n"
+ "Interface's name\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "ifname", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_bridge (vty, args);
+}
+
+DEFUN (ldp_no_mtu_mtu,
+ ldp_no_mtu_mtu_cmd,
+ "no mtu (1500-9180)",
+ "Negate a command or set its defaults\n"
+ "set Maximum Transmission Unit\n"
+ "Maximum Transmission Unit value\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "mtu", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_mtu (vty, args);
+}
+
+DEFUN (ldp_no_member_interface_ifname,
+ ldp_no_member_interface_ifname_cmd,
+ "no member interface IFNAME",
+ "Negate a command or set its defaults\n"
+ "L2VPN member configuration\n"
+ "Local interface\n"
+ "Interface's name\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "ifname", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_interface (vty, args);
+}
+
+DEFUN (ldp_no_member_pseudowire_ifname,
+ ldp_no_member_pseudowire_ifname_cmd,
+ "no member pseudowire IFNAME",
+ "Negate a command or set its defaults\n"
+ "L2VPN member configuration\n"
+ "Pseudowire interface\n"
+ "Interface's name\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "ifname", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pseudowire (vty, args);
+}
+
+DEFUN (ldp_no_vc_type_pwtype,
+ ldp_no_vc_type_pwtype_cmd,
+ "no vc type <ethernet|ethernet-tagged>",
+ "Negate a command or set its defaults\n"
+ "Virtual Circuit options\n"
+ "Virtual Circuit type to use\n"
+ "Ethernet (type 5)\n"
+ "Ethernet-tagged (type 4)\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "type", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pwtype (vty, args);
+}
+
+DEFUN (ldp_control_word_cword,
+ ldp_control_word_cword_cmd,
+ "control-word <exclude|include>",
+ "Control-word options\n"
+ "Exclude control-word in pseudowire packets\n"
+ "Include control-word in pseudowire packets\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "preference", .value = argv[1]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pw_cword (vty, args);
+}
+
+DEFUN (ldp_neighbor_address_addr,
+ ldp_neighbor_address_addr_cmd,
+ "neighbor address <A.B.C.D|X:X::X:X>",
+ "Remote endpoint configuration\n"
+ "Specify the IPv4 or IPv6 address of the remote endpoint\n"
+ "IPv4 address\n"
+ "IPv6 address\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "addr", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pw_nbr_addr (vty, args);
+}
+
+DEFUN (ldp_neighbor_lsr_id_ipv4,
+ ldp_neighbor_lsr_id_ipv4_cmd,
+ "neighbor lsr-id A.B.C.D",
+ "Remote endpoint configuration\n"
+ "Specify the LSR-ID of the remote endpoint\n"
+ "IPv4 address\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "lsr-id", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pw_nbr_id (vty, args);
+}
+
+DEFUN (ldp_pw_id_pwid,
+ ldp_pw_id_pwid_cmd,
+ "pw-id (1-4294967295)",
+ "Set the Virtual Circuit ID\n"
+ "Virtual Circuit ID value\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "pwid", .value = argv[1]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pw_pwid (vty, args);
+}
+
+DEFUN (ldp_pw_status_disable,
+ ldp_pw_status_disable_cmd,
+ "pw-status disable",
+ "Configure PW status\n"
+ "Disable PW status\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_l2vpn_pw_pwstatus (vty, args);
+}
+
+DEFUN (ldp_no_control_word_cword,
+ ldp_no_control_word_cword_cmd,
+ "no control-word <exclude|include>",
+ "Negate a command or set its defaults\n"
+ "Control-word options\n"
+ "Exclude control-word in pseudowire packets\n"
+ "Include control-word in pseudowire packets\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "preference", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pw_cword (vty, args);
+}
+
+DEFUN (ldp_no_neighbor_address_addr,
+ ldp_no_neighbor_address_addr_cmd,
+ "no neighbor address <A.B.C.D|X:X::X:X>",
+ "Negate a command or set its defaults\n"
+ "Remote endpoint configuration\n"
+ "Specify the IPv4 or IPv6 address of the remote endpoint\n"
+ "IPv4 address\n"
+ "IPv6 address\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "addr", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pw_nbr_addr (vty, args);
+}
+
+DEFUN (ldp_no_neighbor_lsr_id_ipv4,
+ ldp_no_neighbor_lsr_id_ipv4_cmd,
+ "no neighbor lsr-id A.B.C.D",
+ "Negate a command or set its defaults\n"
+ "Remote endpoint configuration\n"
+ "Specify the LSR-ID of the remote endpoint\n"
+ "IPv4 address\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "lsr-id", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pw_nbr_id (vty, args);
+}
+
+DEFUN (ldp_no_pw_id_pwid,
+ ldp_no_pw_id_pwid_cmd,
+ "no pw-id (1-4294967295)",
+ "Negate a command or set its defaults\n"
+ "Set the Virtual Circuit ID\n"
+ "Virtual Circuit ID value\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "pwid", .value = argv[2]->arg },
+ NULL
+ };
+ return ldp_vty_l2vpn_pw_pwid (vty, args);
+}
+
+DEFUN (ldp_no_pw_status_disable,
+ ldp_no_pw_status_disable_cmd,
+ "no pw-status disable",
+ "Negate a command or set its defaults\n"
+ "Configure PW status\n"
+ "Disable PW status\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ NULL
+ };
+ return ldp_vty_l2vpn_pw_pwstatus (vty, args);
+}
+
+DEFUN (ldp_show_mpls_ldp_neighbor,
+ ldp_show_mpls_ldp_neighbor_cmd,
+ "show mpls ldp neighbor",
+ "Show running system information\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Neighbor information\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_show_neighbor (vty, args);
+}
+
+DEFUN (ldp_show_mpls_ldp_binding,
+ ldp_show_mpls_ldp_binding_cmd,
+ "show mpls ldp binding",
+ "Show running system information\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Label Information Base (LIB) information\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_show_binding (vty, args);
+}
+
+DEFUN (ldp_show_mpls_ldp_discovery,
+ ldp_show_mpls_ldp_discovery_cmd,
+ "show mpls ldp discovery",
+ "Show running system information\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Discovery Hello Information\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_show_discovery (vty, args);
+}
+
+DEFUN (ldp_show_mpls_ldp_interface,
+ ldp_show_mpls_ldp_interface_cmd,
+ "show mpls ldp interface",
+ "Show running system information\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "interface information\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_show_interface (vty, args);
+}
+
+DEFUN (ldp_show_mpls_ldp_address_family_binding,
+ ldp_show_mpls_ldp_address_family_binding_cmd,
+ "show mpls ldp <ipv4|ipv6> binding",
+ "Show running system information\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "IPv4 Address Family\n"
+ "IPv6 Address Family\n"
+ "Label Information Base (LIB) information\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "address-family", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_show_binding (vty, args);
+}
+
+DEFUN (ldp_show_mpls_ldp_address_family_discovery,
+ ldp_show_mpls_ldp_address_family_discovery_cmd,
+ "show mpls ldp <ipv4|ipv6> discovery",
+ "Show running system information\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "IPv4 Address Family\n"
+ "IPv6 Address Family\n"
+ "Discovery Hello Information\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "address-family", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_show_discovery (vty, args);
+}
+
+DEFUN (ldp_show_mpls_ldp_address_family_interface,
+ ldp_show_mpls_ldp_address_family_interface_cmd,
+ "show mpls ldp <ipv4|ipv6> interface",
+ "Show running system information\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "IPv4 Address Family\n"
+ "IPv6 Address Family\n"
+ "interface information\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "address-family", .value = argv[3]->arg },
+ NULL
+ };
+ return ldp_vty_show_interface (vty, args);
+}
+
+DEFUN (ldp_show_l2vpn_atom_binding,
+ ldp_show_l2vpn_atom_binding_cmd,
+ "show l2vpn atom binding",
+ "Show running system information\n"
+ "Show information about Layer2 VPN\n"
+ "Show Any Transport over MPLS information\n"
+ "Show AToM label binding information\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_show_atom_binding (vty, args);
+}
+
+DEFUN (ldp_show_l2vpn_atom_vc,
+ ldp_show_l2vpn_atom_vc_cmd,
+ "show l2vpn atom vc",
+ "Show running system information\n"
+ "Show information about Layer2 VPN\n"
+ "Show Any Transport over MPLS information\n"
+ "Show AToM virtual circuit information\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_show_atom_vc (vty, args);
+}
+
+DEFUN (ldp_show_debugging_mpls_ldp,
+ ldp_show_debugging_mpls_ldp_cmd,
+ "show debugging mpls ldp",
+ "Show running system information\n"
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_show_debugging (vty, args);
+}
+
+DEFUN (ldp_clear_mpls_ldp_neighbor,
+ ldp_clear_mpls_ldp_neighbor_cmd,
+ "clear mpls ldp neighbor",
+ "Reset functions\n"
+ "Reset MPLS statistical information\n"
+ "Clear LDP state\n"
+ "Clear LDP neighbor sessions\n")
+{
+ struct vty_arg *args[] = { NULL };
+ return ldp_vty_clear_nbr (vty, args);
+}
+
+DEFUN (ldp_clear_mpls_ldp_neighbor_addr,
+ ldp_clear_mpls_ldp_neighbor_addr_cmd,
+ "clear mpls ldp neighbor <A.B.C.D|X:X::X:X>",
+ "Reset functions\n"
+ "Reset MPLS statistical information\n"
+ "Clear LDP state\n"
+ "Clear LDP neighbor sessions\n"
+ "IPv4 address\n"
+ "IPv6 address\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "addr", .value = argv[4]->arg },
+ NULL
+ };
+ return ldp_vty_clear_nbr (vty, args);
+}
+
+DEFUN (ldp_debug_mpls_ldp_discovery_hello_dir,
+ ldp_debug_mpls_ldp_discovery_hello_dir_cmd,
+ "debug mpls ldp discovery hello <recv|sent>",
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Discovery messages\n"
+ "Discovery hello message\n"
+ "Received messages\n"
+ "Sent messages\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "type", .value = "discovery" },
+ &(struct vty_arg) { .name = "dir", .value = argv[5]->arg },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_debug_mpls_ldp_errors,
+ ldp_debug_mpls_ldp_errors_cmd,
+ "debug mpls ldp errors",
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Errors\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "type", .value = "errors" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_debug_mpls_ldp_event,
+ ldp_debug_mpls_ldp_event_cmd,
+ "debug mpls ldp event",
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "LDP event information\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "type", .value = "event" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_debug_mpls_ldp_messages_recv,
+ ldp_debug_mpls_ldp_messages_recv_cmd,
+ "debug mpls ldp messages recv",
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Messages\n"
+ "Received messages, excluding periodic Keep Alives\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "type", .value = "messages" },
+ &(struct vty_arg) { .name = "dir", .value = "recv" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_debug_mpls_ldp_messages_recv_all,
+ ldp_debug_mpls_ldp_messages_recv_all_cmd,
+ "debug mpls ldp messages recv all",
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Messages\n"
+ "Received messages, excluding periodic Keep Alives\n"
+ "Received messages, including periodic Keep Alives\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "type", .value = "messages" },
+ &(struct vty_arg) { .name = "dir", .value = "recv" },
+ &(struct vty_arg) { .name = "all", .value = "all" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_debug_mpls_ldp_messages_sent,
+ ldp_debug_mpls_ldp_messages_sent_cmd,
+ "debug mpls ldp messages sent",
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Messages\n"
+ "Sent messages, excluding periodic Keep Alives\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "type", .value = "messages" },
+ &(struct vty_arg) { .name = "dir", .value = "sent" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_debug_mpls_ldp_messages_sent_all,
+ ldp_debug_mpls_ldp_messages_sent_all_cmd,
+ "debug mpls ldp messages sent all",
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Messages\n"
+ "Sent messages, excluding periodic Keep Alives\n"
+ "Sent messages, including periodic Keep Alives\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "type", .value = "messages" },
+ &(struct vty_arg) { .name = "dir", .value = "sent" },
+ &(struct vty_arg) { .name = "all", .value = "all" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_debug_mpls_ldp_zebra,
+ ldp_debug_mpls_ldp_zebra_cmd,
+ "debug mpls ldp zebra",
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "LDP zebra information\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "type", .value = "zebra" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_no_debug_mpls_ldp_discovery_hello_dir,
+ ldp_no_debug_mpls_ldp_discovery_hello_dir_cmd,
+ "no debug mpls ldp discovery hello <recv|sent>",
+ "Negate a command or set its defaults\n"
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Discovery messages\n"
+ "Discovery hello message\n"
+ "Received messages\n"
+ "Sent messages\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "type", .value = "discovery" },
+ &(struct vty_arg) { .name = "dir", .value = argv[6]->arg },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_no_debug_mpls_ldp_errors,
+ ldp_no_debug_mpls_ldp_errors_cmd,
+ "no debug mpls ldp errors",
+ "Negate a command or set its defaults\n"
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Errors\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "type", .value = "errors" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_no_debug_mpls_ldp_event,
+ ldp_no_debug_mpls_ldp_event_cmd,
+ "no debug mpls ldp event",
+ "Negate a command or set its defaults\n"
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "LDP event information\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "type", .value = "event" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_no_debug_mpls_ldp_messages_recv,
+ ldp_no_debug_mpls_ldp_messages_recv_cmd,
+ "no debug mpls ldp messages recv",
+ "Negate a command or set its defaults\n"
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Messages\n"
+ "Received messages, excluding periodic Keep Alives\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "type", .value = "messages" },
+ &(struct vty_arg) { .name = "dir", .value = "recv" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_no_debug_mpls_ldp_messages_recv_all,
+ ldp_no_debug_mpls_ldp_messages_recv_all_cmd,
+ "no debug mpls ldp messages recv all",
+ "Negate a command or set its defaults\n"
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Messages\n"
+ "Received messages, excluding periodic Keep Alives\n"
+ "Received messages, including periodic Keep Alives\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "type", .value = "messages" },
+ &(struct vty_arg) { .name = "dir", .value = "recv" },
+ &(struct vty_arg) { .name = "all", .value = "all" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_no_debug_mpls_ldp_messages_sent,
+ ldp_no_debug_mpls_ldp_messages_sent_cmd,
+ "no debug mpls ldp messages sent",
+ "Negate a command or set its defaults\n"
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Messages\n"
+ "Sent messages, excluding periodic Keep Alives\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "type", .value = "messages" },
+ &(struct vty_arg) { .name = "dir", .value = "sent" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_no_debug_mpls_ldp_messages_sent_all,
+ ldp_no_debug_mpls_ldp_messages_sent_all_cmd,
+ "no debug mpls ldp messages sent all",
+ "Negate a command or set its defaults\n"
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "Messages\n"
+ "Sent messages, excluding periodic Keep Alives\n"
+ "Sent messages, including periodic Keep Alives\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "type", .value = "messages" },
+ &(struct vty_arg) { .name = "dir", .value = "sent" },
+ &(struct vty_arg) { .name = "all", .value = "all" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+DEFUN (ldp_no_debug_mpls_ldp_zebra,
+ ldp_no_debug_mpls_ldp_zebra_cmd,
+ "no debug mpls ldp zebra",
+ "Negate a command or set its defaults\n"
+ "Debugging functions\n"
+ "MPLS information\n"
+ "Label Distribution Protocol\n"
+ "LDP zebra information\n")
+{
+ struct vty_arg *args[] =
+ {
+ &(struct vty_arg) { .name = "no", .value = "no" },
+ &(struct vty_arg) { .name = "type", .value = "zebra" },
+ NULL
+ };
+ return ldp_vty_debug (vty, args);
+}
+
+void
+ldp_vty_init (void)
+{
+ install_element (CONFIG_NODE, &ldp_mpls_ldp_cmd);
+ install_element (CONFIG_NODE, &ldp_l2vpn_word_type_vpls_cmd);
+ install_element (CONFIG_NODE, &ldp_no_mpls_ldp_cmd);
+ install_element (CONFIG_NODE, &ldp_no_l2vpn_word_type_vpls_cmd);
+ install_element (CONFIG_NODE, &ldp_debug_mpls_ldp_discovery_hello_dir_cmd);
+ install_element (CONFIG_NODE, &ldp_debug_mpls_ldp_errors_cmd);
+ install_element (CONFIG_NODE, &ldp_debug_mpls_ldp_event_cmd);
+ install_element (CONFIG_NODE, &ldp_debug_mpls_ldp_messages_recv_cmd);
+ install_element (CONFIG_NODE, &ldp_debug_mpls_ldp_messages_recv_all_cmd);
+ install_element (CONFIG_NODE, &ldp_debug_mpls_ldp_messages_sent_cmd);
+ install_element (CONFIG_NODE, &ldp_debug_mpls_ldp_messages_sent_all_cmd);
+ install_element (CONFIG_NODE, &ldp_debug_mpls_ldp_zebra_cmd);
+ install_element (CONFIG_NODE, &ldp_no_debug_mpls_ldp_discovery_hello_dir_cmd);
+ install_element (CONFIG_NODE, &ldp_no_debug_mpls_ldp_errors_cmd);
+ install_element (CONFIG_NODE, &ldp_no_debug_mpls_ldp_event_cmd);
+ install_element (CONFIG_NODE, &ldp_no_debug_mpls_ldp_messages_recv_cmd);
+ install_element (CONFIG_NODE, &ldp_no_debug_mpls_ldp_messages_recv_all_cmd);
+ install_element (CONFIG_NODE, &ldp_no_debug_mpls_ldp_messages_sent_cmd);
+ install_element (CONFIG_NODE, &ldp_no_debug_mpls_ldp_messages_sent_all_cmd);
+ install_element (CONFIG_NODE, &ldp_no_debug_mpls_ldp_zebra_cmd);
+ install_node (&ldp_node, ldp_config_write);
+ install_default (LDP_NODE);
+ install_element (LDP_NODE, &ldp_address_family_ipv4_cmd);
+ install_element (LDP_NODE, &ldp_address_family_ipv6_cmd);
+ install_element (LDP_NODE, &ldp_discovery_hello_holdtime_disc_time_cmd);
+ install_element (LDP_NODE, &ldp_discovery_hello_interval_disc_time_cmd);
+ install_element (LDP_NODE, &ldp_discovery_targeted_hello_holdtime_disc_time_cmd);
+ install_element (LDP_NODE, &ldp_discovery_targeted_hello_interval_disc_time_cmd);
+ install_element (LDP_NODE, &ldp_dual_stack_transport_connection_prefer_ipv4_cmd);
+ install_element (LDP_NODE, &ldp_dual_stack_cisco_interop_cmd);
+ install_element (LDP_NODE, &ldp_neighbor_ipv4_password_word_cmd);
+ install_element (LDP_NODE, &ldp_neighbor_ipv4_session_holdtime_session_time_cmd);
+ install_element (LDP_NODE, &ldp_neighbor_ipv4_ttl_security_disable_cmd);
+ install_element (LDP_NODE, &ldp_neighbor_ipv4_ttl_security_hops_hops_cmd);
+ install_element (LDP_NODE, &ldp_router_id_ipv4_cmd);
+ install_element (LDP_NODE, &ldp_no_address_family_ipv4_cmd);
+ install_element (LDP_NODE, &ldp_no_address_family_ipv6_cmd);
+ install_element (LDP_NODE, &ldp_no_discovery_hello_holdtime_disc_time_cmd);
+ install_element (LDP_NODE, &ldp_no_discovery_hello_interval_disc_time_cmd);
+ install_element (LDP_NODE, &ldp_no_discovery_targeted_hello_holdtime_disc_time_cmd);
+ install_element (LDP_NODE, &ldp_no_discovery_targeted_hello_interval_disc_time_cmd);
+ install_element (LDP_NODE, &ldp_no_dual_stack_transport_connection_prefer_ipv4_cmd);
+ install_element (LDP_NODE, &ldp_no_dual_stack_cisco_interop_cmd);
+ install_element (LDP_NODE, &ldp_no_neighbor_ipv4_password_word_cmd);
+ install_element (LDP_NODE, &ldp_no_neighbor_ipv4_session_holdtime_session_time_cmd);
+ install_element (LDP_NODE, &ldp_no_neighbor_ipv4_ttl_security_disable_cmd);
+ install_element (LDP_NODE, &ldp_no_neighbor_ipv4_ttl_security_hops_hops_cmd);
+ install_element (LDP_NODE, &ldp_no_router_id_ipv4_cmd);
+ install_node (&ldp_ipv4_node, NULL);
+ install_default (LDP_IPV4_NODE);
+ install_element (LDP_IPV4_NODE, &ldp_discovery_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_discovery_hello_interval_disc_time_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_discovery_targeted_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_discovery_targeted_hello_interval_disc_time_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_discovery_targeted_hello_accept_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_label_local_advertise_explicit_null_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_ttl_security_disable_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_session_holdtime_session_time_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_interface_ifname_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_discovery_transport_address_ipv4_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_neighbor_ipv4_targeted_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_no_discovery_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_no_discovery_hello_interval_disc_time_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_no_discovery_targeted_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_no_discovery_targeted_hello_interval_disc_time_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_no_discovery_targeted_hello_accept_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_no_label_local_advertise_explicit_null_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_no_ttl_security_disable_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_no_session_holdtime_session_time_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_no_interface_ifname_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_no_discovery_transport_address_ipv4_cmd);
+ install_element (LDP_IPV4_NODE, &ldp_no_neighbor_ipv4_targeted_cmd);
+ install_node (&ldp_ipv6_node, NULL);
+ install_default (LDP_IPV6_NODE);
+ install_element (LDP_IPV6_NODE, &ldp_discovery_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_discovery_hello_interval_disc_time_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_discovery_targeted_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_discovery_targeted_hello_interval_disc_time_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_discovery_targeted_hello_accept_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_label_local_advertise_explicit_null_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_ttl_security_disable_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_session_holdtime_session_time_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_interface_ifname_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_discovery_transport_address_ipv6_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_neighbor_ipv6_targeted_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_no_discovery_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_no_discovery_hello_interval_disc_time_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_no_discovery_targeted_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_no_discovery_targeted_hello_interval_disc_time_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_no_discovery_targeted_hello_accept_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_no_label_local_advertise_explicit_null_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_no_ttl_security_disable_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_no_session_holdtime_session_time_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_no_interface_ifname_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_no_discovery_transport_address_ipv6_cmd);
+ install_element (LDP_IPV6_NODE, &ldp_no_neighbor_ipv6_targeted_cmd);
+ install_node (&ldp_ipv4_iface_node, NULL);
+ install_default (LDP_IPV4_IFACE_NODE);
+ install_element (LDP_IPV4_IFACE_NODE, &ldp_discovery_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV4_IFACE_NODE, &ldp_discovery_hello_interval_disc_time_cmd);
+ install_element (LDP_IPV4_IFACE_NODE, &ldp_no_discovery_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV4_IFACE_NODE, &ldp_no_discovery_hello_interval_disc_time_cmd);
+ install_node (&ldp_ipv6_iface_node, NULL);
+ install_default (LDP_IPV6_IFACE_NODE);
+ install_element (LDP_IPV6_IFACE_NODE, &ldp_discovery_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV6_IFACE_NODE, &ldp_discovery_hello_interval_disc_time_cmd);
+ install_element (LDP_IPV6_IFACE_NODE, &ldp_no_discovery_hello_holdtime_disc_time_cmd);
+ install_element (LDP_IPV6_IFACE_NODE, &ldp_no_discovery_hello_interval_disc_time_cmd);
+ install_node (&ldp_l2vpn_node, ldp_l2vpn_config_write);
+ install_default (LDP_L2VPN_NODE);
+ install_element (LDP_L2VPN_NODE, &ldp_bridge_ifname_cmd);
+ install_element (LDP_L2VPN_NODE, &ldp_mtu_mtu_cmd);
+ install_element (LDP_L2VPN_NODE, &ldp_member_interface_ifname_cmd);
+ install_element (LDP_L2VPN_NODE, &ldp_member_pseudowire_ifname_cmd);
+ install_element (LDP_L2VPN_NODE, &ldp_vc_type_pwtype_cmd);
+ install_element (LDP_L2VPN_NODE, &ldp_no_bridge_ifname_cmd);
+ install_element (LDP_L2VPN_NODE, &ldp_no_mtu_mtu_cmd);
+ install_element (LDP_L2VPN_NODE, &ldp_no_member_interface_ifname_cmd);
+ install_element (LDP_L2VPN_NODE, &ldp_no_member_pseudowire_ifname_cmd);
+ install_element (LDP_L2VPN_NODE, &ldp_no_vc_type_pwtype_cmd);
+ install_node (&ldp_pseudowire_node, NULL);
+ install_default (LDP_PSEUDOWIRE_NODE);
+ install_element (LDP_PSEUDOWIRE_NODE, &ldp_control_word_cword_cmd);
+ install_element (LDP_PSEUDOWIRE_NODE, &ldp_neighbor_address_addr_cmd);
+ install_element (LDP_PSEUDOWIRE_NODE, &ldp_neighbor_lsr_id_ipv4_cmd);
+ install_element (LDP_PSEUDOWIRE_NODE, &ldp_pw_id_pwid_cmd);
+ install_element (LDP_PSEUDOWIRE_NODE, &ldp_pw_status_disable_cmd);
+ install_element (LDP_PSEUDOWIRE_NODE, &ldp_no_control_word_cword_cmd);
+ install_element (LDP_PSEUDOWIRE_NODE, &ldp_no_neighbor_address_addr_cmd);
+ install_element (LDP_PSEUDOWIRE_NODE, &ldp_no_neighbor_lsr_id_ipv4_cmd);
+ install_element (LDP_PSEUDOWIRE_NODE, &ldp_no_pw_id_pwid_cmd);
+ install_element (LDP_PSEUDOWIRE_NODE, &ldp_no_pw_status_disable_cmd);
+ install_node (&ldp_debug_node, ldp_debug_config_write);
+ install_element (ENABLE_NODE, &ldp_debug_mpls_ldp_discovery_hello_dir_cmd);
+ install_element (ENABLE_NODE, &ldp_debug_mpls_ldp_errors_cmd);
+ install_element (ENABLE_NODE, &ldp_debug_mpls_ldp_event_cmd);
+ install_element (ENABLE_NODE, &ldp_debug_mpls_ldp_messages_recv_cmd);
+ install_element (ENABLE_NODE, &ldp_debug_mpls_ldp_messages_recv_all_cmd);
+ install_element (ENABLE_NODE, &ldp_debug_mpls_ldp_messages_sent_cmd);
+ install_element (ENABLE_NODE, &ldp_debug_mpls_ldp_messages_sent_all_cmd);
+ install_element (ENABLE_NODE, &ldp_debug_mpls_ldp_zebra_cmd);
+ install_element (ENABLE_NODE, &ldp_no_debug_mpls_ldp_discovery_hello_dir_cmd);
+ install_element (ENABLE_NODE, &ldp_no_debug_mpls_ldp_errors_cmd);
+ install_element (ENABLE_NODE, &ldp_no_debug_mpls_ldp_event_cmd);
+ install_element (ENABLE_NODE, &ldp_no_debug_mpls_ldp_messages_recv_cmd);
+ install_element (ENABLE_NODE, &ldp_no_debug_mpls_ldp_messages_recv_all_cmd);
+ install_element (ENABLE_NODE, &ldp_no_debug_mpls_ldp_messages_sent_cmd);
+ install_element (ENABLE_NODE, &ldp_no_debug_mpls_ldp_messages_sent_all_cmd);
+ install_element (ENABLE_NODE, &ldp_no_debug_mpls_ldp_zebra_cmd);
+ install_element (VIEW_NODE, &ldp_show_mpls_ldp_neighbor_cmd);
+ install_element (VIEW_NODE, &ldp_show_mpls_ldp_binding_cmd);
+ install_element (VIEW_NODE, &ldp_show_mpls_ldp_discovery_cmd);
+ install_element (VIEW_NODE, &ldp_show_mpls_ldp_interface_cmd);
+ install_element (VIEW_NODE, &ldp_show_mpls_ldp_address_family_binding_cmd);
+ install_element (VIEW_NODE, &ldp_show_mpls_ldp_address_family_discovery_cmd);
+ install_element (VIEW_NODE, &ldp_show_mpls_ldp_address_family_interface_cmd);
+ install_element (VIEW_NODE, &ldp_show_l2vpn_atom_binding_cmd);
+ install_element (VIEW_NODE, &ldp_show_l2vpn_atom_vc_cmd);
+ install_element (VIEW_NODE, &ldp_show_debugging_mpls_ldp_cmd);
+ install_element (VIEW_NODE, &ldp_clear_mpls_ldp_neighbor_cmd);
+ install_element (VIEW_NODE, &ldp_clear_mpls_ldp_neighbor_addr_cmd);
+}
\ No newline at end of file
#include "lde.h"
#include "log.h"
#include "ldp_vty.h"
+#include "lib/json.h"
#include "command.h"
#include "vty.h"
#define LDPBUFSIZ 65535
static int show_interface_msg(struct vty *, struct imsg *,
- struct show_filter *);
+ struct show_filter *, json_object *);
static void show_discovery_adj(struct vty *, char *,
- struct ctl_adj *);
+ struct ctl_adj *, json_object *);
static int show_discovery_msg(struct vty *, struct imsg *,
- struct show_filter *);
-static void show_nbr_adj(struct vty *, char *, struct ctl_adj *);
+ struct show_filter *, json_object *);
+static void show_nbr_adj(struct vty *, char *, struct ctl_adj *,
+ json_object *);
static int show_nbr_msg(struct vty *, struct imsg *,
- struct show_filter *);
+ struct show_filter *, json_object *, struct in_addr *);
static int show_lib_msg(struct vty *, struct imsg *,
- struct show_filter *);
+ struct show_filter *, json_object *);
static int show_l2vpn_binding_msg(struct vty *, struct imsg *);
static int show_l2vpn_pw_msg(struct vty *, struct imsg *);
static int ldp_vty_connect(struct imsgbuf *);
static int ldp_vty_dispatch(struct vty *, struct imsgbuf *,
- enum show_command, struct show_filter *);
+ enum show_command, struct show_filter *, u_char);
static int ldp_vty_get_af(const char *, int *);
static int
show_interface_msg(struct vty *vty, struct imsg *imsg,
- struct show_filter *filter)
+ struct show_filter *filter, json_object *json)
{
struct ctl_iface *iface;
char timers[BUFSIZ];
+ json_object *json_iface = NULL;
switch (imsg->hdr.type) {
case IMSG_CTL_SHOW_INTERFACE:
if (filter->family != AF_UNSPEC && filter->family != iface->af)
break;
- snprintf(timers, sizeof(timers), "%u/%u",
- iface->hello_interval, iface->hello_holdtime);
-
- vty_out(vty, "%-4s %-11s %-6s %-8s %-12s %3u%s",
- af_name(iface->af), iface->name,
- if_state_name(iface->state), iface->uptime == 0 ?
- "00:00:00" : log_time(iface->uptime), timers,
- iface->adj_cnt, VTY_NEWLINE);
+ if (json) {
+ json_iface = json_object_new_object();
+ json_object_string_add(json_iface, "addressFamily", af_name(iface->af));
+ json_object_string_add(json_iface, "state", if_state_name(iface->state));
+ json_object_string_add(json_iface, "uptime", log_time(iface->uptime));
+ json_object_int_add(json_iface, "helloInterval", iface->hello_interval);
+ json_object_int_add(json_iface, "holdtime", iface->hello_holdtime);
+ json_object_int_add(json_iface, "adjacencyCount", iface->adj_cnt);
+ json_object_object_add(json, iface->name, json_iface);
+ } else {
+ snprintf(timers, sizeof(timers), "%u/%u",
+ iface->hello_interval, iface->hello_holdtime);
+
+ vty_out(vty, "%-4s %-11s %-6s %-8s %-12s %3u%s",
+ af_name(iface->af), iface->name,
+ if_state_name(iface->state), iface->uptime == 0 ?
+ "00:00:00" : log_time(iface->uptime), timers,
+ iface->adj_cnt, VTY_NEWLINE);
+ }
break;
case IMSG_CTL_END:
vty_out(vty, "%s", VTY_NEWLINE);
}
static void
-show_discovery_adj(struct vty *vty, char *buffer, struct ctl_adj *adj)
+show_discovery_adj(struct vty *vty, char *buffer, struct ctl_adj *adj, json_object *json)
{
size_t buflen = strlen(buffer);
-
- snprintf(buffer + buflen, LDPBUFSIZ - buflen,
- " LDP Id: %s:0, Transport address: %s%s",
- inet_ntoa(adj->id), log_addr(adj->af,
- &adj->trans_addr), VTY_NEWLINE);
- buflen = strlen(buffer);
- snprintf(buffer + buflen, LDPBUFSIZ - buflen,
- " Hold time: %u sec%s", adj->holdtime, VTY_NEWLINE);
+ json_object *json_adj = NULL;
+ json_object *json_array = NULL;
+
+ if (json) {
+ switch(adj->type) {
+ case HELLO_LINK:
+ json_object_object_get_ex(json, "adjacencyLink", &json_array);
+
+ if (!json_array) {
+ json_array = json_object_new_array();
+ json_object_object_add(json, "adjacencyLink", json_array);
+ }
+ break;
+ case HELLO_TARGETED:
+ json_object_object_get_ex(json, "adjacencyTargeted", &json_array);
+
+ if (!json_array) {
+ json_array = json_object_new_array();
+ json_object_object_add(json, "adjacencyTargeted", json_array);
+ }
+ break;
+ }
+
+ json_adj = json_object_new_object();
+ json_object_string_add(json_adj, "id", inet_ntoa(adj->id));
+ json_object_string_add(json_adj, "transportAddress", log_addr(adj->af, &adj->trans_addr));
+ json_object_int_add(json_adj, "holdtime", adj->holdtime);
+ json_object_array_add(json_array, json_adj);
+
+ } else {
+ snprintf(buffer + buflen, LDPBUFSIZ - buflen,
+ " LDP Id: %s:0, Transport address: %s%s",
+ inet_ntoa(adj->id), log_addr(adj->af,
+ &adj->trans_addr), VTY_NEWLINE);
+ buflen = strlen(buffer);
+ snprintf(buffer + buflen, LDPBUFSIZ - buflen,
+ " Hold time: %u sec%s", adj->holdtime, VTY_NEWLINE);
+ }
}
static int
show_discovery_msg(struct vty *vty, struct imsg *imsg,
- struct show_filter *filter)
+ struct show_filter *filter, json_object *json)
{
struct ctl_adj *adj;
struct ctl_disc_if *iface;
size_t buflen;
static char ifaces_buffer[LDPBUFSIZ];
static char tnbrs_buffer[LDPBUFSIZ];
+ json_object *json_interface = NULL;
+ json_object *json_interfaces = NULL;
+ json_object *json_target = NULL;
+ json_object *json_targets = NULL;
switch (imsg->hdr.type) {
case IMSG_CTL_SHOW_DISCOVERY:
(filter->family == AF_INET6 && !iface->active_v6)))
break;
- buflen = strlen(ifaces_buffer);
- snprintf(ifaces_buffer + buflen, LDPBUFSIZ - buflen,
- " %s: %s%s", iface->name, (iface->no_adj) ?
- "xmit" : "xmit/recv", VTY_NEWLINE);
+ if (json) {
+ json_object_object_get_ex(json, "interfaces", &json_interfaces);
+
+ if (!json_interfaces) {
+ json_interfaces = json_object_new_object();
+ json_object_object_add(json, "interfaces", json_interfaces);
+ }
+
+ json_interface = json_object_new_object();
+ json_object_boolean_true_add(json_interface, "transmit");
+
+ if (iface->no_adj)
+ json_object_boolean_true_add(json_interface, "receive");
+
+ json_object_object_add(json_interfaces, iface->name, json_interface);
+
+ } else {
+ buflen = strlen(ifaces_buffer);
+ snprintf(ifaces_buffer + buflen, LDPBUFSIZ - buflen,
+ " %s: %s%s", iface->name, (iface->no_adj) ?
+ "xmit" : "xmit/recv", VTY_NEWLINE);
+ }
break;
case IMSG_CTL_SHOW_DISC_TNBR:
tnbr = imsg->data;
if (filter->family != AF_UNSPEC && filter->family != tnbr->af)
break;
- trans_addr = &(ldp_af_conf_get(ldpd_conf,
- tnbr->af))->trans_addr;
- buflen = strlen(tnbrs_buffer);
- snprintf(tnbrs_buffer + buflen, LDPBUFSIZ - buflen,
- " %s -> %s: %s%s", log_addr(tnbr->af, trans_addr),
- log_addr(tnbr->af, &tnbr->addr), (tnbr->no_adj) ? "xmit" :
- "xmit/recv", VTY_NEWLINE);
+ trans_addr = &(ldp_af_conf_get(ldpd_conf, tnbr->af))->trans_addr;
+
+ if (json) {
+ json_object_object_get_ex(json, "targeted", &json_targets);
+
+ if (!json_targets) {
+ json_targets = json_object_new_array();
+ json_object_object_add(json, "targeted", json_targets);
+ }
+
+ json_target = json_object_new_object();
+ json_object_string_add(json_target, "sourceAddress", log_addr(tnbr->af, trans_addr));
+ json_object_boolean_true_add(json_target, "transmit");
+
+ if (tnbr->no_adj)
+ json_object_boolean_true_add(json_target, "receive");
+
+ json_object_object_add(json_targets, log_addr(tnbr->af, &tnbr->addr), json_interface);
+ } else {
+ buflen = strlen(tnbrs_buffer);
+ snprintf(tnbrs_buffer + buflen, LDPBUFSIZ - buflen,
+ " %s -> %s: %s%s", log_addr(tnbr->af, trans_addr),
+ log_addr(tnbr->af, &tnbr->addr), (tnbr->no_adj) ? "xmit" :
+ "xmit/recv", VTY_NEWLINE);
+ }
break;
case IMSG_CTL_SHOW_DISC_ADJ:
adj = imsg->data;
switch(adj->type) {
case HELLO_LINK:
- show_discovery_adj(vty, ifaces_buffer, adj);
+ show_discovery_adj(vty, ifaces_buffer, adj, json);
break;
case HELLO_TARGETED:
- show_discovery_adj(vty, tnbrs_buffer, adj);
+ show_discovery_adj(vty, tnbrs_buffer, adj, json);
break;
}
break;
case IMSG_CTL_END:
rtr_id.s_addr = ldp_rtr_id_get(ldpd_conf);
- vty_out(vty, "Local LDP Identifier: %s:0%s", inet_ntoa(rtr_id),
- VTY_NEWLINE);
- vty_out(vty, "Discovery Sources:%s", VTY_NEWLINE);
- vty_out(vty, " Interfaces:%s", VTY_NEWLINE);
- vty_out(vty, "%s", ifaces_buffer);
- vty_out(vty, " Targeted Hellos:%s", VTY_NEWLINE);
- vty_out(vty, "%s", tnbrs_buffer);
- vty_out(vty, "%s", VTY_NEWLINE);
- return (1);
+
+ if (json) {
+ json_object_string_add(json, "id", inet_ntoa(rtr_id));
+ } else {
+ vty_out(vty, "Local LDP Identifier: %s:0%s", inet_ntoa(rtr_id),
+ VTY_NEWLINE);
+ vty_out(vty, "Discovery Sources:%s", VTY_NEWLINE);
+ vty_out(vty, " Interfaces:%s", VTY_NEWLINE);
+ vty_out(vty, "%s", ifaces_buffer);
+ vty_out(vty, " Targeted Hellos:%s", VTY_NEWLINE);
+ vty_out(vty, "%s", tnbrs_buffer);
+ vty_out(vty, "%s", VTY_NEWLINE);
+ }
+ return (1);
default:
break;
}
}
static void
-show_nbr_adj(struct vty *vty, char *buffer, struct ctl_adj *adj)
+show_nbr_adj(struct vty *vty, char *buffer, struct ctl_adj *adj, json_object *json_nbr)
{
size_t buflen = strlen(buffer);
+ json_object *json_adj_link = NULL;
+ json_object *json_adj_targeted = NULL;
switch (adj->type) {
case HELLO_LINK:
- snprintf(buffer + buflen, LDPBUFSIZ - buflen,
- " Interface: %s%s", adj->ifname, VTY_NEWLINE);
+ if (json_nbr) {
+ json_object_object_get_ex(json_nbr, "adjacencyLink", &json_adj_link);
+
+ if (!json_adj_link) {
+ json_adj_link = json_object_new_array();
+ json_object_object_add(json_nbr, "adjacencyLink", json_adj_link);
+ }
+
+ json_object_array_add(json_adj_link, json_object_new_string(adj->ifname));
+ } else {
+ snprintf(buffer + buflen, LDPBUFSIZ - buflen,
+ " Interface: %s%s", adj->ifname, VTY_NEWLINE);
+ }
break;
case HELLO_TARGETED:
- snprintf(buffer + buflen, LDPBUFSIZ - buflen,
- " Targeted Hello: %s%s", log_addr(adj->af,
- &adj->src_addr), VTY_NEWLINE);
+ if (json_nbr) {
+ json_object_object_get_ex(json_nbr, "adjacencyTargeted", &json_adj_targeted);
+
+ if (!json_adj_targeted) {
+ json_adj_targeted = json_object_new_array();
+ json_object_object_add(json_nbr, "adjacencyTargeted", json_adj_targeted);
+ }
+
+ json_object_array_add(json_adj_targeted,
+ json_object_new_string(log_addr(adj->af, &adj->src_addr)));
+ } else {
+ snprintf(buffer + buflen, LDPBUFSIZ - buflen,
+ " Targeted Hello: %s%s", log_addr(adj->af,
+ &adj->src_addr), VTY_NEWLINE);
+ }
break;
}
}
static int
-show_nbr_msg(struct vty *vty, struct imsg *imsg, struct show_filter *filter)
+show_nbr_msg(struct vty *vty, struct imsg *imsg, struct show_filter *filter,
+ json_object *json, struct in_addr *nbr_id)
{
struct ctl_adj *adj;
struct ctl_nbr *nbr;
static char v4adjs_buffer[LDPBUFSIZ];
static char v6adjs_buffer[LDPBUFSIZ];
+ json_object *json_nbr = NULL;
switch (imsg->hdr.type) {
case IMSG_CTL_SHOW_NBR:
nbr = imsg->data;
- v4adjs_buffer[0] = '\0';
- v6adjs_buffer[0] = '\0';
- vty_out(vty, "Peer LDP Identifier: %s:0%s", inet_ntoa(nbr->id),
- VTY_NEWLINE);
- vty_out(vty, " TCP connection: %s:%u - %s:%u%s",
- log_addr(nbr->af, &nbr->laddr), ntohs(nbr->lport),
- log_addr(nbr->af, &nbr->raddr), ntohs(nbr->rport),
- VTY_NEWLINE);
- vty_out(vty, " Session Holdtime: %u sec%s", nbr->holdtime,
- VTY_NEWLINE);
- vty_out(vty, " State: %s; Downstream-Unsolicited%s",
- nbr_state_name(nbr->nbr_state), VTY_NEWLINE);
- vty_out(vty, " Up time: %s%s", log_time(nbr->uptime),
- VTY_NEWLINE);
+ if (json) {
+ /* Remember the nbr->id so when we are in the other
+ * case statements below we know what nbr we are
+ * dealing with
+ */
+ *nbr_id = nbr->id;
+ json_nbr = json_object_new_object();
+ json_object_string_add(json_nbr, "peerId", inet_ntoa(nbr->id));
+ json_object_string_add(json_nbr, "tcpLocalAddress", log_addr(nbr->af, &nbr->laddr));
+ json_object_int_add(json_nbr, "tcpLocalPort", ntohs(nbr->lport));
+ json_object_string_add(json_nbr, "tcpRemoteAddress", log_addr(nbr->af, &nbr->raddr));
+ json_object_int_add(json_nbr, "tcpRemotePort", ntohs(nbr->rport));
+ json_object_int_add(json_nbr, "holdtime", nbr->holdtime);
+ json_object_string_add(json_nbr, "state", nbr_state_name(nbr->nbr_state));
+ json_object_boolean_true_add(json_nbr, "downstreamUnsolicited");
+ json_object_string_add(json_nbr, "upTime", log_time(nbr->uptime));
+ json_object_object_add(json, inet_ntoa(nbr->id), json_nbr);
+
+ } else {
+ v4adjs_buffer[0] = '\0';
+ v6adjs_buffer[0] = '\0';
+ vty_out(vty, "Peer LDP Identifier: %s:0%s", inet_ntoa(nbr->id),
+ VTY_NEWLINE);
+ vty_out(vty, " TCP connection: %s:%u - %s:%u%s",
+ log_addr(nbr->af, &nbr->laddr), ntohs(nbr->lport),
+ log_addr(nbr->af, &nbr->raddr), ntohs(nbr->rport),
+ VTY_NEWLINE);
+ vty_out(vty, " Session Holdtime: %u sec%s", nbr->holdtime,
+ VTY_NEWLINE);
+ vty_out(vty, " State: %s; Downstream-Unsolicited%s",
+ nbr_state_name(nbr->nbr_state), VTY_NEWLINE);
+ vty_out(vty, " Up time: %s%s", log_time(nbr->uptime),
+ VTY_NEWLINE);
+ }
break;
case IMSG_CTL_SHOW_NBR_DISC:
adj = imsg->data;
+ /* get the json_nbr by looking for the nbr_id key */
+ if (json)
+ json_object_object_get_ex(json, inet_ntoa(*nbr_id), &json_nbr);
+
switch (adj->af) {
case AF_INET:
- show_nbr_adj(vty, v4adjs_buffer, adj);
+ show_nbr_adj(vty, v4adjs_buffer, adj, json_nbr);
break;
case AF_INET6:
- show_nbr_adj(vty, v6adjs_buffer, adj);
+ show_nbr_adj(vty, v6adjs_buffer, adj, json_nbr);
break;
default:
fatalx("show_nbr_msg: unknown af");
- }
+ }
break;
case IMSG_CTL_SHOW_NBR_END:
- vty_out(vty, " LDP Discovery Sources:%s", VTY_NEWLINE);
- if (v4adjs_buffer[0] != '\0') {
- vty_out(vty, " IPv4:%s", VTY_NEWLINE);
- vty_out(vty, "%s", v4adjs_buffer);
- }
- if (v6adjs_buffer[0] != '\0') {
- vty_out(vty, " IPv6:%s", VTY_NEWLINE);
- vty_out(vty, "%s", v6adjs_buffer);
- }
- vty_out(vty, "%s", VTY_NEWLINE);
+ /* For the json scenario the adjacencies were already added
+ * in show_nbr_adj
+ */
+ if (!json) {
+ vty_out(vty, " LDP Discovery Sources:%s", VTY_NEWLINE);
+ if (v4adjs_buffer[0] != '\0') {
+ vty_out(vty, " IPv4:%s", VTY_NEWLINE);
+ vty_out(vty, "%s", v4adjs_buffer);
+ }
+ if (v6adjs_buffer[0] != '\0') {
+ vty_out(vty, " IPv6:%s", VTY_NEWLINE);
+ vty_out(vty, "%s", v6adjs_buffer);
+ }
+ vty_out(vty, "%s", VTY_NEWLINE);
+ }
break;
case IMSG_CTL_END:
return (1);
}
static int
-show_lib_msg(struct vty *vty, struct imsg *imsg, struct show_filter *filter)
+show_lib_msg(struct vty *vty, struct imsg *imsg, struct show_filter *filter, json_object *json)
{
struct ctl_rt *rt;
char dstnet[BUFSIZ];
+ json_object *json_binding = NULL;
+ json_object *json_remote_label = NULL;
+ json_object *json_remote_labels = NULL;
switch (imsg->hdr.type) {
case IMSG_CTL_SHOW_LIB:
break;
snprintf(dstnet, sizeof(dstnet), "%s/%d",
- log_addr(rt->af, &rt->prefix), rt->prefixlen);
-
- if (rt->first) {
- vty_out(vty, "%s%s", dstnet, VTY_NEWLINE);
- vty_out(vty, "%-8sLocal binding: label: %s%s", "",
- log_label(rt->local_label), VTY_NEWLINE);
-
- if (rt->remote_label != NO_LABEL) {
- vty_out(vty, "%-8sRemote bindings:%s", "",
- VTY_NEWLINE);
- vty_out(vty, "%-12sPeer Label%s",
- "", VTY_NEWLINE);
- vty_out(vty, "%-12s----------------- "
- "---------%s", "", VTY_NEWLINE);
- } else
- vty_out(vty, "%-8sNo remote bindings%s", "",
- VTY_NEWLINE);
- }
- if (rt->remote_label != NO_LABEL)
- vty_out(vty, "%12s%-20s%s%s", "", inet_ntoa(rt->nexthop),
- log_label(rt->remote_label), VTY_NEWLINE);
+ log_addr(rt->af, &rt->prefix), rt->prefixlen);
+
+ if (json) {
+ if (rt->first) {
+ json_binding = json_object_new_object();
+ json_object_string_add(json_binding, "localLabel", log_label(rt->local_label));
+
+ json_remote_labels = json_object_new_array();
+ json_object_object_add(json_binding, "remoteLabel", json_remote_labels);
+
+ json_object_object_add(json, dstnet, json_binding);
+ } else {
+ json_object_object_get_ex(json, dstnet, &json_binding);
+ }
+
+ if (rt->remote_label != NO_LABEL) {
+ json_object_object_get_ex(json_binding, "remoteLabel", &json_remote_labels);
+ json_remote_label = json_object_new_object();
+ json_object_string_add(json_remote_label, "nexthop", inet_ntoa(rt->nexthop));
+ json_object_string_add(json_remote_label, "label", log_label(rt->remote_label));
+ json_object_array_add(json_remote_labels, json_remote_label);
+ }
+
+ } else {
+ if (rt->first) {
+ vty_out(vty, "%s%s", dstnet, VTY_NEWLINE);
+ vty_out(vty, "%-8sLocal binding: label: %s%s", "",
+ log_label(rt->local_label), VTY_NEWLINE);
+
+ if (rt->remote_label != NO_LABEL) {
+ vty_out(vty, "%-8sRemote bindings:%s", "",
+ VTY_NEWLINE);
+ vty_out(vty, "%-12sPeer Label%s",
+ "", VTY_NEWLINE);
+ vty_out(vty, "%-12s----------------- "
+ "---------%s", "", VTY_NEWLINE);
+ } else
+ vty_out(vty, "%-8sNo remote bindings%s", "",
+ VTY_NEWLINE);
+ }
+ if (rt->remote_label != NO_LABEL)
+ vty_out(vty, "%12s%-20s%s%s", "", inet_ntoa(rt->nexthop),
+ log_label(rt->remote_label), VTY_NEWLINE);
+ }
break;
case IMSG_CTL_END:
vty_out(vty, "%s", VTY_NEWLINE);
static int
ldp_vty_dispatch(struct vty *vty, struct imsgbuf *ibuf, enum show_command cmd,
- struct show_filter *filter)
+ struct show_filter *filter, u_char uj)
{
struct imsg imsg;
int n, done = 0;
+ struct in_addr nbr_id;
+ json_object *json = NULL;
while (ibuf->w.queued)
if (msgbuf_write(&ibuf->w) <= 0 && errno != EAGAIN) {
return (CMD_WARNING);
}
+ if (uj)
+ json = json_object_new_object();
+
while (!done) {
if ((n = imsg_read(ibuf)) == -1 && errno != EAGAIN) {
log_warnx("imsg_read error");
close(ibuf->fd);
+ if (json) {
+ vty_out (vty, "%s%s",
+ json_object_to_json_string_ext(json, JSON_C_TO_STRING_PRETTY),
+ VTY_NEWLINE);
+ json_object_free(json);
+ }
return (CMD_WARNING);
}
if (n == 0) {
log_warnx("pipe closed");
close(ibuf->fd);
+ if (json) {
+ vty_out (vty, "%s%s",
+ json_object_to_json_string_ext(json, JSON_C_TO_STRING_PRETTY),
+ VTY_NEWLINE);
+ json_object_free(json);
+ }
return (CMD_WARNING);
}
if ((n = imsg_get(ibuf, &imsg)) == -1) {
log_warnx("imsg_get error");
close(ibuf->fd);
+ if (json) {
+ vty_out (vty, "%s%s",
+ json_object_to_json_string_ext(json, JSON_C_TO_STRING_PRETTY),
+ VTY_NEWLINE);
+ json_object_free(json);
+ }
return (CMD_WARNING);
}
if (n == 0)
break;
switch (cmd) {
case SHOW_IFACE:
- done = show_interface_msg(vty, &imsg, filter);
+ done = show_interface_msg(vty, &imsg, filter, json);
break;
case SHOW_DISC:
- done = show_discovery_msg(vty, &imsg, filter);
+ done = show_discovery_msg(vty, &imsg, filter, json);
break;
case SHOW_NBR:
- done = show_nbr_msg(vty, &imsg, filter);
+ done = show_nbr_msg(vty, &imsg, filter, json, &nbr_id);
break;
case SHOW_LIB:
- done = show_lib_msg(vty, &imsg, filter);
+ done = show_lib_msg(vty, &imsg, filter, json);
break;
case SHOW_L2VPN_PW:
done = show_l2vpn_pw_msg(vty, &imsg);
close(ibuf->fd);
+ if (json) {
+ vty_out (vty, "%s%s",
+ json_object_to_json_string_ext(json, JSON_C_TO_STRING_PRETTY),
+ VTY_NEWLINE);
+ json_object_free(json);
+ }
+
return (CMD_SUCCESS);
}
}
int
-ldp_vty_show_binding(struct vty *vty, struct vty_arg *args[])
+ldp_vty_show_binding(struct vty *vty, struct vty_arg *args[], u_char uj)
{
struct imsgbuf ibuf;
struct show_filter filter;
memset(&filter, 0, sizeof(filter));
filter.family = af;
- return (ldp_vty_dispatch(vty, &ibuf, SHOW_LIB, &filter));
+ return (ldp_vty_dispatch(vty, &ibuf, SHOW_LIB, &filter, uj));
}
int
-ldp_vty_show_discovery(struct vty *vty, struct vty_arg *args[])
+ldp_vty_show_discovery(struct vty *vty, struct vty_arg *args[], u_char uj)
{
struct imsgbuf ibuf;
struct show_filter filter;
memset(&filter, 0, sizeof(filter));
filter.family = af;
- return (ldp_vty_dispatch(vty, &ibuf, SHOW_DISC, &filter));
+ return (ldp_vty_dispatch(vty, &ibuf, SHOW_DISC, &filter, uj));
}
int
-ldp_vty_show_interface(struct vty *vty, struct vty_arg *args[])
+ldp_vty_show_interface(struct vty *vty, struct vty_arg *args[], u_char uj)
{
struct imsgbuf ibuf;
struct show_filter filter;
filter.family = af;
/* header */
- vty_out(vty, "%-4s %-11s %-6s %-8s %-12s %3s%s", "AF",
- "Interface", "State", "Uptime", "Hello Timers", "ac", VTY_NEWLINE);
+ if (!uj) {
+ vty_out(vty, "%-4s %-11s %-6s %-8s %-12s %3s%s", "AF",
+ "Interface", "State", "Uptime", "Hello Timers", "ac", VTY_NEWLINE);
+ }
- return (ldp_vty_dispatch(vty, &ibuf, SHOW_IFACE, &filter));
+ return (ldp_vty_dispatch(vty, &ibuf, SHOW_IFACE, &filter, uj));
}
int
-ldp_vty_show_neighbor(struct vty *vty, struct vty_arg *args[])
+ldp_vty_show_neighbor(struct vty *vty, struct vty_arg *args[], u_char uj)
{
struct imsgbuf ibuf;
struct show_filter filter;
/* not used */
memset(&filter, 0, sizeof(filter));
- return (ldp_vty_dispatch(vty, &ibuf, SHOW_NBR, &filter));
+ return (ldp_vty_dispatch(vty, &ibuf, SHOW_NBR, &filter, uj));
}
int
/* not used */
memset(&filter, 0, sizeof(filter));
- return (ldp_vty_dispatch(vty, &ibuf, SHOW_L2VPN_BINDING, &filter));
+ return (ldp_vty_dispatch(vty, &ibuf, SHOW_L2VPN_BINDING, &filter, 0));
}
int
"---------", "---------------", "----------",
"----------------", "----------", VTY_NEWLINE);
- return (ldp_vty_dispatch(vty, &ibuf, SHOW_L2VPN_PW, &filter));
+ return (ldp_vty_dispatch(vty, &ibuf, SHOW_L2VPN_PW, &filter, 0));
}
int