]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/vrf.c
*: move CLI node names to cmd_node->name
[mirror_frr.git] / lib / vrf.c
index 370a1b235ae0567593f142cd9d3b694afd1b8ef8..0f57c602b10ce421332a3ca4f5912c3d96f0f1c5 100644 (file)
--- a/lib/vrf.c
+++ b/lib/vrf.c
@@ -116,7 +116,7 @@ static void vrf_update_vrf_id(ns_id_t ns_id, void *opaqueptr)
        vrf->vrf_id = vrf_id;
        RB_INSERT(vrf_id_head, &vrfs_by_id, vrf);
        if (old_vrf_id == VRF_UNKNOWN)
-               vrf_enable((struct vrf *)vrf);
+               vrf_enable(vrf);
 }
 
 int vrf_switch_to_netns(vrf_id_t vrf_id)
@@ -324,10 +324,7 @@ const char *vrf_id_to_name(vrf_id_t vrf_id)
        struct vrf *vrf;
 
        vrf = vrf_lookup_by_id(vrf_id);
-       if (vrf)
-               return vrf->name;
-
-       return "n/a";
+       return VRF_LOGNAME(vrf);
 }
 
 vrf_id_t vrf_name_to_id(const char *name)
@@ -593,10 +590,22 @@ int vrf_get_backend(void)
        return vrf_backend;
 }
 
-void vrf_configure_backend(int vrf_backend_netns)
+int vrf_configure_backend(enum vrf_backend_type backend)
 {
-       vrf_backend = vrf_backend_netns;
+       /* Work around issue in old gcc */
+       switch (backend) {
+       case VRF_BACKEND_UNKNOWN:
+       case VRF_BACKEND_NETNS:
+       case VRF_BACKEND_VRF_LITE:
+               break;
+       default:
+               return -1;
+       }
+
+       vrf_backend = backend;
        vrf_backend_configured = 1;
+
+       return 0;
 }
 
 int vrf_handler_create(struct vty *vty, const char *vrfname,
@@ -749,7 +758,12 @@ DEFUN (no_vrf,
 }
 
 
-static struct cmd_node vrf_node = {VRF_NODE, "%s(config-vrf)# ", 1};
+static struct cmd_node vrf_node = {
+       .name = "vrf",
+       .node = VRF_NODE,
+       .parent_node = CONFIG_NODE,
+       .prompt = "%s(config-vrf)# ",
+};
 
 DEFUN_NOSH (vrf_netns,
        vrf_netns_cmd,
@@ -839,11 +853,17 @@ static int vrf_write_host(struct vty *vty)
        return 1;
 }
 
-static struct cmd_node vrf_debug_node = {VRF_DEBUG_NODE, "", 1};
+static int vrf_write_host(struct vty *vty);
+static struct cmd_node vrf_debug_node = {
+       .name = "vrf debug",
+       .node = VRF_DEBUG_NODE,
+       .prompt = "",
+       .config_write = vrf_write_host,
+};
 
 void vrf_install_commands(void)
 {
-       install_node(&vrf_debug_node, vrf_write_host);
+       install_node(&vrf_debug_node);
 
        install_element(CONFIG_NODE, &vrf_debug_cmd);
        install_element(ENABLE_NODE, &vrf_debug_cmd);
@@ -856,7 +876,8 @@ void vrf_cmd_init(int (*writefunc)(struct vty *vty),
 {
        install_element(CONFIG_NODE, &vrf_cmd);
        install_element(CONFIG_NODE, &no_vrf_cmd);
-       install_node(&vrf_node, writefunc);
+       vrf_node.config_write = writefunc;
+       install_node(&vrf_node);
        install_default(VRF_NODE);
        install_element(VRF_NODE, &vrf_exit_cmd);
        if (vrf_is_backend_netns() && ns_have_netns()) {