summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Walton <dwalton76@gmail.com>2017-07-28 08:11:07 -0400
committerGitHub <noreply@github.com>2017-07-28 08:11:07 -0400
commit8726d93baefc7a5dda4eab09d66a71cd78660d35 (patch)
tree5017b2bfab1c36dce6f2670b63456c9768fb22cf
parent57e4c462b651548f41726d71c84a89a5986c0012 (diff)
parenta701f7eaa27a6a816170997439a96f43082c9833 (diff)
Merge pull request #866 from opensourcerouting/ldpd-config-issues
LDP config issues (Issue #858)
-rw-r--r--ldpd/ldp_vty_cmds.c12
-rw-r--r--ldpd/ldp_vty_conf.c2
-rw-r--r--vtysh/vtysh.c37
3 files changed, 49 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 <hello|targeted-hello> 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..adf47ed57c 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)) {
@@ -496,6 +498,29 @@ int vtysh_mark_file(const char *filename)
strcpy(vty_buf_copy, vty->buf);
vty_buf_trimmed = trim(vty_buf_copy);
+ switch (vty->node) {
+ case LDP_IPV4_IFACE_NODE:
+ if (strncmp(vty_buf_copy, " ", 3)) {
+ fprintf(stdout, " end\n");
+ vty->node = LDP_IPV4_NODE;
+ }
+ break;
+ case LDP_IPV6_IFACE_NODE:
+ if (strncmp(vty_buf_copy, " ", 3)) {
+ fprintf(stdout, " end\n");
+ vty->node = LDP_IPV6_NODE;
+ }
+ break;
+ case LDP_PSEUDOWIRE_NODE:
+ if (strncmp(vty_buf_copy, " ", 2)) {
+ fprintf(stdout, " end\n");
+ vty->node = LDP_L2VPN_NODE;
+ }
+ break;
+ default:
+ break;
+ }
+
if (vty_buf_trimmed[0] == '!' || vty_buf_trimmed[0] == '#') {
fprintf(stdout, "%s", vty->buf);
continue;
@@ -1268,6 +1293,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 +2978,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);