Revert "lib, zebra: Fixup if.c to work in the new regime"

This reverts commit 2511cb40e6.
This commit is contained in:
Daniel Walton 2016-09-22 18:23:21 +00:00
parent 7e347cbe16
commit bcff2289ed
4 changed files with 54 additions and 29 deletions

View File

@ -750,37 +750,36 @@ if_sunwzebra_get (const char *name, size_t nlen, vrf_id_t vrf_id)
DEFUN (interface, DEFUN (interface,
interface_cmd, interface_cmd,
"interface IFNAME" VRF_CMD_STR_OPT, "interface IFNAME",
"Select an interface to configure\n" "Select an interface to configure\n"
"Interface's name\n" "Interface's name\n")
VRF_CMD_HELP_STR)
{ {
struct interface *ifp; struct interface *ifp;
size_t sl; size_t sl;
vrf_id_t vrf_id = VRF_DEFAULT; vrf_id_t vrf_id = VRF_DEFAULT;
if ((sl = strlen(argv[0]->arg)) > INTERFACE_NAMSIZ) if ((sl = strlen(argv[0])) > INTERFACE_NAMSIZ)
{ {
vty_out (vty, "%% Interface name %s is invalid: length exceeds " vty_out (vty, "%% Interface name %s is invalid: length exceeds "
"%d characters%s", "%d characters%s",
argv[0]->arg, INTERFACE_NAMSIZ, VTY_NEWLINE); argv[0], INTERFACE_NAMSIZ, VTY_NEWLINE);
return CMD_WARNING; return CMD_WARNING;
} }
/*Pending: need proper vrf name based lookup/(possible creation of VRF) /*Pending: need proper vrf name based lookup/(possible creation of VRF)
Imagine forward reference of a vrf by name in this interface config */ Imagine forward reference of a vrf by name in this interface config */
if (argc > 1) if (argc > 1)
VRF_GET_ID (vrf_id, argv[1]->arg); VRF_GET_ID (vrf_id, argv[1]);
#ifdef SUNOS_5 #ifdef SUNOS_5
ifp = if_sunwzebra_get (argv[0]->arg, sl, vrf_id); ifp = if_sunwzebra_get (argv[0], sl, vrf_id);
#else #else
ifp = if_get_by_name_len_vrf (argv[0]->arg, sl, vrf_id, 1); ifp = if_get_by_name_len_vrf (argv[0], sl, vrf_id, 1);
#endif /* SUNOS_5 */ #endif /* SUNOS_5 */
if (!ifp) if (!ifp)
{ {
vty_out (vty, "%% interface %s not in %s%s", argv[0]->arg, argv[1]->arg, VTY_NEWLINE); vty_out (vty, "%% interface %s not in %s%s", argv[0], argv[1], VTY_NEWLINE);
return CMD_WARNING; return CMD_WARNING;
} }
vty->index = ifp; vty->index = ifp;
@ -789,26 +788,32 @@ DEFUN (interface,
return CMD_SUCCESS; return CMD_SUCCESS;
} }
ALIAS (interface,
interface_vrf_cmd,
"interface IFNAME " VRF_CMD_STR,
"Select an interface to configure\n"
"Interface's name\n"
VRF_CMD_HELP_STR)
DEFUN_NOSH (no_interface, DEFUN_NOSH (no_interface,
no_interface_cmd, no_interface_cmd,
"no interface IFNAME" VRF_CMD_STR_OPT, "no interface IFNAME",
NO_STR NO_STR
"Delete a pseudo interface's configuration\n" "Delete a pseudo interface's configuration\n"
"Interface's name\n" "Interface's name\n")
VRF_CMD_HELP_STR)
{ {
// deleting interface // deleting interface
struct interface *ifp; struct interface *ifp;
vrf_id_t vrf_id = VRF_DEFAULT; vrf_id_t vrf_id = VRF_DEFAULT;
if (argc > 1) if (argc > 1)
VRF_GET_ID (vrf_id, argv[1]->arg); VRF_GET_ID (vrf_id, argv[1]);
ifp = if_lookup_by_name_vrf (argv[0]->arg, vrf_id); ifp = if_lookup_by_name_vrf (argv[0], vrf_id);
if (ifp == NULL) if (ifp == NULL)
{ {
vty_out (vty, "%% Interface %s does not exist%s", argv[0]->arg, VTY_NEWLINE); vty_out (vty, "%% Interface %s does not exist%s", argv[0], VTY_NEWLINE);
return CMD_WARNING; return CMD_WARNING;
} }
@ -824,23 +829,32 @@ DEFUN_NOSH (no_interface,
return CMD_SUCCESS; return CMD_SUCCESS;
} }
ALIAS (no_interface,
no_interface_vrf_cmd,
"no interface IFNAME " VRF_CMD_STR,
NO_STR
"Delete a pseudo interface's configuration\n"
"Interface's name\n"
VRF_CMD_HELP_STR)
DEFUN (vrf, DEFUN (vrf,
vrf_cmd, vrf_cmd,
VRF_CMD_STR, "vrf NAME",
VRF_CMD_HELP_STR) "Select a VRF to configure\n"
"VRF's name\n")
{ {
struct vrf *vrfp; struct vrf *vrfp;
size_t sl; size_t sl;
if ((sl = strlen(argv[0]->arg)) > VRF_NAMSIZ) if ((sl = strlen(argv[0])) > VRF_NAMSIZ)
{ {
vty_out (vty, "%% VRF name %s is invalid: length exceeds " vty_out (vty, "%% VRF name %s is invalid: length exceeds "
"%d characters%s", "%d characters%s",
argv[0]->arg, VRF_NAMSIZ, VTY_NEWLINE); argv[0], VRF_NAMSIZ, VTY_NEWLINE);
return CMD_WARNING; return CMD_WARNING;
} }
vrfp = vrf_get (VRF_UNKNOWN, argv[0]->arg); vrfp = vrf_get (VRF_UNKNOWN, argv[0]);
vty->index = vrfp; vty->index = vrfp;
vty->node = VRF_NODE; vty->node = VRF_NODE;
@ -850,17 +864,18 @@ DEFUN (vrf,
DEFUN_NOSH (no_vrf, DEFUN_NOSH (no_vrf,
no_vrf_cmd, no_vrf_cmd,
"no " VRF_CMD_STR, "no vrf NAME",
NO_STR NO_STR
VRF_CMD_HELP_STR) "Delete a pseudo VRF's configuration\n"
"VRF's name\n")
{ {
struct vrf *vrfp; struct vrf *vrfp;
vrfp = vrf_list_lookup_by_name (argv[0]->arg); vrfp = vrf_list_lookup_by_name (argv[0]);
if (vrfp == NULL) if (vrfp == NULL)
{ {
vty_out (vty, "%% VRF %s does not exist%s", argv[0]->arg, VTY_NEWLINE); vty_out (vty, "%% VRF %s does not exist%s", argv[0], VTY_NEWLINE);
return CMD_WARNING; return CMD_WARNING;
} }
@ -880,10 +895,9 @@ DEFUN_NOSH (no_vrf,
/* For debug purpose. */ /* For debug purpose. */
DEFUN (show_address, DEFUN (show_address,
show_address_cmd, show_address_cmd,
"show address" VRF_CMD_STR_OPT, "show address",
SHOW_STR SHOW_STR
"address\n" "address\n")
VRF_CMD_HELP_STR)
{ {
struct listnode *node; struct listnode *node;
struct listnode *node2; struct listnode *node2;
@ -893,7 +907,7 @@ DEFUN (show_address,
vrf_id_t vrf_id = VRF_DEFAULT; vrf_id_t vrf_id = VRF_DEFAULT;
if (argc > 0) if (argc > 0)
VRF_GET_ID (vrf_id, argv[0]->arg); VRF_GET_ID (vrf_id, argv[0]);
for (ALL_LIST_ELEMENTS_RO (vrf_iflist (vrf_id), node, ifp)) for (ALL_LIST_ELEMENTS_RO (vrf_iflist (vrf_id), node, ifp))
{ {
@ -909,6 +923,13 @@ DEFUN (show_address,
return CMD_SUCCESS; return CMD_SUCCESS;
} }
ALIAS (show_address,
show_address_vrf_cmd,
"show address " VRF_CMD_STR,
SHOW_STR
"address\n"
VRF_CMD_HELP_STR)
DEFUN (show_address_vrf_all, DEFUN (show_address_vrf_all,
show_address_vrf_all_cmd, show_address_vrf_all_cmd,
"show address " VRF_ALL_CMD_STR, "show address " VRF_ALL_CMD_STR,

View File

@ -491,9 +491,12 @@ extern struct cmd_element interface_desc_cmd;
extern struct cmd_element no_interface_desc_cmd; extern struct cmd_element no_interface_desc_cmd;
extern struct cmd_element interface_cmd; extern struct cmd_element interface_cmd;
extern struct cmd_element no_interface_cmd; extern struct cmd_element no_interface_cmd;
extern struct cmd_element interface_vrf_cmd;
extern struct cmd_element no_interface_vrf_cmd;
extern struct cmd_element interface_pseudo_cmd; extern struct cmd_element interface_pseudo_cmd;
extern struct cmd_element no_interface_pseudo_cmd; extern struct cmd_element no_interface_pseudo_cmd;
extern struct cmd_element show_address_cmd; extern struct cmd_element show_address_cmd;
extern struct cmd_element show_address_vrf_cmd;
extern struct cmd_element show_address_vrf_all_cmd; extern struct cmd_element show_address_vrf_all_cmd;
extern struct cmd_element vrf_cmd; extern struct cmd_element vrf_cmd;
extern struct cmd_element no_vrf_cmd; extern struct cmd_element no_vrf_cmd;

View File

@ -50,7 +50,7 @@ enum {
/* /*
* The command strings * The command strings
*/ */
#define VRF_CMD_STR_OPT "[vrf NAME]"
#define VRF_CMD_STR "vrf NAME" #define VRF_CMD_STR "vrf NAME"
#define VRF_CMD_HELP_STR "Specify the VRF\nThe VRF name\n" #define VRF_CMD_HELP_STR "Specify the VRF\nThe VRF name\n"

View File

@ -2960,6 +2960,7 @@ zebra_if_init (void)
install_element (CONFIG_NODE, &zebra_interface_cmd); install_element (CONFIG_NODE, &zebra_interface_cmd);
install_element (CONFIG_NODE, &zebra_interface_vrf_cmd); install_element (CONFIG_NODE, &zebra_interface_vrf_cmd);
install_element (CONFIG_NODE, &no_interface_cmd); install_element (CONFIG_NODE, &no_interface_cmd);
install_element (CONFIG_NODE, &no_interface_vrf_cmd);
install_default (INTERFACE_NODE); install_default (INTERFACE_NODE);
install_element (INTERFACE_NODE, &interface_desc_cmd); install_element (INTERFACE_NODE, &interface_desc_cmd);
install_element (INTERFACE_NODE, &no_interface_desc_cmd); install_element (INTERFACE_NODE, &no_interface_desc_cmd);