mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 11:30:30 +00:00
vtysh: use parent_node for vtysh_exit()
Cleaning up the whole mess of "exit" and "quit" commands that follows is left for a rainy day :( Signed-off-by: David Lamparter <equinox@diac24.net>
This commit is contained in:
parent
791ded4a62
commit
d42eb1019e
@ -1992,85 +1992,19 @@ DEFUNSH(VTYSH_REALLYALL, vtysh_config_terminal, vtysh_config_terminal_cmd,
|
|||||||
|
|
||||||
static int vtysh_exit(struct vty *vty)
|
static int vtysh_exit(struct vty *vty)
|
||||||
{
|
{
|
||||||
switch (vty->node) {
|
struct cmd_node *cnode = vector_lookup(cmdvec, vty->node);
|
||||||
case VIEW_NODE:
|
|
||||||
case ENABLE_NODE:
|
if (vty->node == VIEW_NODE || vty->node == ENABLE_NODE)
|
||||||
exit(0);
|
exit(0);
|
||||||
break;
|
if (cnode->node_exit)
|
||||||
case CONFIG_NODE:
|
cnode->node_exit(vty);
|
||||||
vty->node = ENABLE_NODE;
|
if (cnode->parent_node)
|
||||||
break;
|
vty->node = cnode->parent_node;
|
||||||
case INTERFACE_NODE:
|
|
||||||
case PW_NODE:
|
if (vty->node == CONFIG_NODE) {
|
||||||
case VRF_NODE:
|
/* resync in case one of the daemons is somewhere else */
|
||||||
case NH_GROUP_NODE:
|
|
||||||
case ZEBRA_NODE:
|
|
||||||
case BGP_NODE:
|
|
||||||
case RIP_NODE:
|
|
||||||
case RIPNG_NODE:
|
|
||||||
case OSPF_NODE:
|
|
||||||
case OSPF6_NODE:
|
|
||||||
case EIGRP_NODE:
|
|
||||||
case BABEL_NODE:
|
|
||||||
case LDP_NODE:
|
|
||||||
case LDP_L2VPN_NODE:
|
|
||||||
case ISIS_NODE:
|
|
||||||
case OPENFABRIC_NODE:
|
|
||||||
case RMAP_NODE:
|
|
||||||
case PBRMAP_NODE:
|
|
||||||
case VTY_NODE:
|
|
||||||
case KEYCHAIN_NODE:
|
|
||||||
case BFD_NODE:
|
|
||||||
case RPKI_NODE:
|
|
||||||
vtysh_execute("end");
|
vtysh_execute("end");
|
||||||
vtysh_execute("configure");
|
vtysh_execute("configure");
|
||||||
vty->node = CONFIG_NODE;
|
|
||||||
break;
|
|
||||||
case BGP_VPNV4_NODE:
|
|
||||||
case BGP_VPNV6_NODE:
|
|
||||||
case BGP_IPV4_NODE:
|
|
||||||
case BGP_IPV4M_NODE:
|
|
||||||
case BGP_IPV4L_NODE:
|
|
||||||
case BGP_IPV6_NODE:
|
|
||||||
case BGP_IPV6M_NODE:
|
|
||||||
case BGP_IPV6L_NODE:
|
|
||||||
case BGP_FLOWSPECV4_NODE:
|
|
||||||
case BGP_FLOWSPECV6_NODE:
|
|
||||||
case BGP_VRF_POLICY_NODE:
|
|
||||||
case BGP_EVPN_NODE:
|
|
||||||
case BGP_VNC_DEFAULTS_NODE:
|
|
||||||
case BGP_VNC_NVE_GROUP_NODE:
|
|
||||||
case BGP_VNC_L2_GROUP_NODE:
|
|
||||||
case BMP_NODE:
|
|
||||||
vty->node = BGP_NODE;
|
|
||||||
break;
|
|
||||||
case BGP_EVPN_VNI_NODE:
|
|
||||||
vty->node = BGP_EVPN_NODE;
|
|
||||||
break;
|
|
||||||
case LDP_IPV4_NODE:
|
|
||||||
case LDP_IPV6_NODE:
|
|
||||||
vty->node = LDP_NODE;
|
|
||||||
break;
|
|
||||||
case LDP_IPV4_IFACE_NODE:
|
|
||||||
vty->node = LDP_IPV4_NODE;
|
|
||||||
break;
|
|
||||||
case LDP_IPV6_IFACE_NODE:
|
|
||||||
vty->node = LDP_IPV6_NODE;
|
|
||||||
break;
|
|
||||||
case LDP_PSEUDOWIRE_NODE:
|
|
||||||
vty->node = LDP_L2VPN_NODE;
|
|
||||||
break;
|
|
||||||
case KEYCHAIN_KEY_NODE:
|
|
||||||
vty->node = KEYCHAIN_NODE;
|
|
||||||
break;
|
|
||||||
case LINK_PARAMS_NODE:
|
|
||||||
vty->node = INTERFACE_NODE;
|
|
||||||
break;
|
|
||||||
case BFD_PEER_NODE:
|
|
||||||
vty->node = BFD_NODE;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user