mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 03:27:25 +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)
|
||||
{
|
||||
switch (vty->node) {
|
||||
case VIEW_NODE:
|
||||
case ENABLE_NODE:
|
||||
struct cmd_node *cnode = vector_lookup(cmdvec, vty->node);
|
||||
|
||||
if (vty->node == VIEW_NODE || vty->node == ENABLE_NODE)
|
||||
exit(0);
|
||||
break;
|
||||
case CONFIG_NODE:
|
||||
vty->node = ENABLE_NODE;
|
||||
break;
|
||||
case INTERFACE_NODE:
|
||||
case PW_NODE:
|
||||
case VRF_NODE:
|
||||
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:
|
||||
if (cnode->node_exit)
|
||||
cnode->node_exit(vty);
|
||||
if (cnode->parent_node)
|
||||
vty->node = cnode->parent_node;
|
||||
|
||||
if (vty->node == CONFIG_NODE) {
|
||||
/* resync in case one of the daemons is somewhere else */
|
||||
vtysh_execute("end");
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user