From 983bd6f71cb3184ee4f155fa1dd8d92fa3934282 Mon Sep 17 00:00:00 2001 From: Renato Westphal Date: Wed, 26 Jul 2017 19:32:55 -0300 Subject: [PATCH] ldpd: add the exit-address-family command Signed-off-by: Renato Westphal --- ldpd/ldp_vty_cmds.c | 12 ++++++++++++ ldpd/ldp_vty_conf.c | 2 +- vtysh/vtysh.c | 14 +++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ldpd/ldp_vty_cmds.c b/ldpd/ldp_vty_cmds.c index d28424cbb7..871905aa8f 100644 --- a/ldpd/ldp_vty_cmds.c +++ b/ldpd/ldp_vty_cmds.c @@ -80,6 +80,16 @@ DEFUN_NOSH(ldp_address_family, return (ldp_vty_address_family(vty, negate, af)); } +DEFUN_NOSH(ldp_exit_address_family, + ldp_exit_address_family_cmd, + "exit-address-family", + "Exit from Address Family configuration mode\n") +{ + if (vty->node == LDP_IPV4_NODE || vty->node == LDP_IPV6_NODE) + vty->node = LDP_NODE; + return CMD_SUCCESS; +} + DEFUN (ldp_discovery_holdtime, ldp_discovery_holdtime_cmd, "[no] discovery holdtime (1-65535)", @@ -1082,6 +1092,7 @@ ldp_vty_init (void) install_element(LDP_IPV4_NODE, &ldp_interface_cmd); install_element(LDP_IPV4_NODE, &ldp_session_holdtime_cmd); install_element(LDP_IPV4_NODE, &ldp_neighbor_ipv4_targeted_cmd); + install_element(LDP_IPV4_NODE, &ldp_exit_address_family_cmd); install_element(LDP_IPV6_NODE, &ldp_discovery_holdtime_cmd); install_element(LDP_IPV6_NODE, &ldp_discovery_interval_cmd); @@ -1095,6 +1106,7 @@ ldp_vty_init (void) install_element(LDP_IPV6_NODE, &ldp_interface_cmd); install_element(LDP_IPV6_NODE, &ldp_session_holdtime_cmd); install_element(LDP_IPV6_NODE, &ldp_neighbor_ipv6_targeted_cmd); + install_element(LDP_IPV6_NODE, &ldp_exit_address_family_cmd); install_element(LDP_IPV4_IFACE_NODE, &ldp_discovery_holdtime_cmd); install_element(LDP_IPV4_IFACE_NODE, &ldp_discovery_interval_cmd); diff --git a/ldpd/ldp_vty_conf.c b/ldpd/ldp_vty_conf.c index 4e900ca93e..09eb6a7c55 100644 --- a/ldpd/ldp_vty_conf.c +++ b/ldpd/ldp_vty_conf.c @@ -233,7 +233,7 @@ ldp_af_config_write(struct vty *vty, int af, struct ldpd_conf *conf, ldp_af_iface_config_write(vty, af); - vty_out (vty, " !\n"); + vty_out(vty, " exit-address-family\n"); } int diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c index 666f3049d7..395982189c 100644 --- a/vtysh/vtysh.c +++ b/vtysh/vtysh.c @@ -303,7 +303,9 @@ static int vtysh_execute_func(const char *line, int pager) || saved_node == BGP_IPV4L_NODE || saved_node == BGP_IPV6L_NODE || saved_node == BGP_IPV6M_NODE - || saved_node == BGP_EVPN_NODE) + || saved_node == BGP_EVPN_NODE + || saved_node == LDP_IPV4_NODE + || saved_node == LDP_IPV6_NODE) && (tried == 1)) { vtysh_execute("exit-address-family"); } else if ((saved_node == BGP_EVPN_VNI_NODE) && (tried == 1)) { @@ -1268,6 +1270,14 @@ DEFUNSH(VTYSH_LDPD, ldp_address_family_ipv6, ldp_address_family_ipv6_cmd, return CMD_SUCCESS; } +DEFUNSH(VTYSH_LDPD, ldp_exit_address_family, ldp_exit_address_family_cmd, + "exit-address-family", "Exit from Address Family configuration mode\n") +{ + if (vty->node == LDP_IPV4_NODE || vty->node == LDP_IPV6_NODE) + vty->node = LDP_NODE; + return CMD_SUCCESS; +} + DEFUNSH(VTYSH_LDPD, ldp_interface_ifname, ldp_interface_ifname_cmd, "interface IFNAME", "Enable LDP on an interface and enter interface submode\n" @@ -2945,8 +2955,10 @@ void vtysh_init_vty(void) install_element(LDP_NODE, &vtysh_quit_ldpd_cmd); install_element(LDP_IPV4_NODE, &vtysh_exit_ldpd_cmd); install_element(LDP_IPV4_NODE, &vtysh_quit_ldpd_cmd); + install_element(LDP_IPV4_NODE, &ldp_exit_address_family_cmd); install_element(LDP_IPV6_NODE, &vtysh_exit_ldpd_cmd); install_element(LDP_IPV6_NODE, &vtysh_quit_ldpd_cmd); + install_element(LDP_IPV6_NODE, &ldp_exit_address_family_cmd); install_element(LDP_IPV4_IFACE_NODE, &vtysh_exit_ldpd_cmd); install_element(LDP_IPV4_IFACE_NODE, &vtysh_quit_ldpd_cmd); install_element(LDP_IPV6_IFACE_NODE, &vtysh_exit_ldpd_cmd); -- 2.39.5