summaryrefslogtreecommitdiff
path: root/lib/vrf.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vrf.c')
-rw-r--r--lib/vrf.c38
1 files changed, 29 insertions, 9 deletions
diff --git a/lib/vrf.c b/lib/vrf.c
index 61b278dabf..ab7b43b078 100644
--- a/lib/vrf.c
+++ b/lib/vrf.c
@@ -480,20 +480,21 @@ DEFUN (vrf,
"Select a VRF to configure\n"
"VRF's name\n")
{
+ int idx_name = 1;
+ const char *vrfname = argv[idx_name]->arg;
struct vrf *vrfp;
- size_t sl;
- if ((sl = strlen(argv[0])) > VRF_NAMSIZ)
+ if (strlen(vrfname) > VRF_NAMSIZ)
{
vty_out (vty, "%% VRF name %s is invalid: length exceeds "
- "%d characters%s",
- argv[0], VRF_NAMSIZ, VTY_NEWLINE);
+ "%d characters%s",
+ vrfname, VRF_NAMSIZ, VTY_NEWLINE);
return CMD_WARNING;
}
- vrfp = vrf_get (VRF_UNKNOWN, argv[0]);
+ vrfp = vrf_get (VRF_UNKNOWN, vrfname);
- VTY_PUSH_CONTEXT_COMPAT (VRF_NODE, vrfp);
+ VTY_PUSH_CONTEXT (VRF_NODE, vrfp);
return CMD_SUCCESS;
}
@@ -505,20 +506,22 @@ DEFUN_NOSH (no_vrf,
"Delete a pseudo VRF's configuration\n"
"VRF's name\n")
{
+ const char *vrfname = argv[2]->arg;
+
struct vrf *vrfp;
- vrfp = vrf_lookup_by_name (argv[0]);
+ vrfp = vrf_lookup_by_name (vrfname);
if (vrfp == NULL)
{
- vty_out (vty, "%% VRF %s does not exist%s", argv[0], VTY_NEWLINE);
+ vty_out (vty, "%% VRF %s does not exist%s", vrfname, VTY_NEWLINE);
return CMD_WARNING;
}
if (CHECK_FLAG (vrfp->status, VRF_ACTIVE))
{
vty_out (vty, "%% Only inactive VRFs can be deleted%s",
- VTY_NEWLINE);
+ VTY_NEWLINE);
return CMD_WARNING;
}
@@ -527,6 +530,14 @@ DEFUN_NOSH (no_vrf,
return CMD_SUCCESS;
}
+
+struct cmd_node vrf_node =
+{
+ VRF_NODE,
+ "%s(config-vrf)# ",
+ 1
+};
+
/*
* Debug CLI for vrf's
*/
@@ -579,3 +590,12 @@ vrf_install_commands (void)
install_element (CONFIG_NODE, &no_vrf_debug_cmd);
install_element (ENABLE_NODE, &no_vrf_debug_cmd);
}
+
+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);
+ install_default (VRF_NODE);
+}