isisd: using argv as a string name is categorically wrong

We are passing around the system id using the variable name
of `argv`.  Let's name the variable correctly and pass it around
correctly named.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
Donald Sharp 2021-06-22 12:44:24 -04:00
parent 730649da0e
commit 1d88e63a4e
3 changed files with 25 additions and 25 deletions

View File

@ -187,7 +187,7 @@ DEFUN (show_lsp_flooding,
vty_out(vty, "Area %s:\n", vty_out(vty, "Area %s:\n",
area->area_tag ? area->area_tag : "null"); area->area_tag ? area->area_tag : "null");
if (lspid) { if (lspid) {
lsp = lsp_for_arg(head, lspid, isis); lsp = lsp_for_sysid(head, lspid, isis);
if (lsp) if (lsp)
lsp_print_flooding(vty, lsp, isis); lsp_print_flooding(vty, lsp, isis);
continue; continue;

View File

@ -2170,8 +2170,8 @@ DEFUN(show_isis_summary, show_isis_summary_cmd,
return CMD_SUCCESS; return CMD_SUCCESS;
} }
struct isis_lsp *lsp_for_arg(struct lspdb_head *head, const char *argv, struct isis_lsp *lsp_for_sysid(struct lspdb_head *head, const char *sysid_str,
struct isis *isis) struct isis *isis)
{ {
char sysid[255] = {0}; char sysid[255] = {0};
uint8_t number[3]; uint8_t number[3];
@ -2180,11 +2180,11 @@ struct isis_lsp *lsp_for_arg(struct lspdb_head *head, const char *argv,
struct isis_dynhn *dynhn; struct isis_dynhn *dynhn;
struct isis_lsp *lsp = NULL; struct isis_lsp *lsp = NULL;
if (!argv) if (!sysid_str)
return NULL; return NULL;
/* /*
* extract fragment and pseudo id from the string argv * extract fragment and pseudo id from the string sysid_str
* in the forms: * in the forms:
* (a) <systemid/hostname>.<pseudo-id>-<framenent> or * (a) <systemid/hostname>.<pseudo-id>-<framenent> or
* (b) <systemid/hostname>.<pseudo-id> or * (b) <systemid/hostname>.<pseudo-id> or
@ -2192,10 +2192,10 @@ struct isis_lsp *lsp_for_arg(struct lspdb_head *head, const char *argv,
* Where systemid is in the form: * Where systemid is in the form:
* xxxx.xxxx.xxxx * xxxx.xxxx.xxxx
*/ */
strlcpy(sysid, argv, sizeof(sysid)); strlcpy(sysid, sysid_str, sizeof(sysid));
if (strlen(argv) > 3) { if (strlen(sysid_str) > 3) {
pos = argv + strlen(argv) - 3; pos = sysid_str + strlen(sysid_str) - 3;
if (strncmp(pos, "-", 1) == 0) { if (strncmp(pos, "-", 1) == 0) {
memcpy(number, ++pos, 2); memcpy(number, ++pos, 2);
lspid[ISIS_SYS_ID_LEN + 1] = lspid[ISIS_SYS_ID_LEN + 1] =
@ -2208,14 +2208,13 @@ struct isis_lsp *lsp_for_arg(struct lspdb_head *head, const char *argv,
memcpy(number, ++pos, 2); memcpy(number, ++pos, 2);
lspid[ISIS_SYS_ID_LEN] = lspid[ISIS_SYS_ID_LEN] =
(uint8_t)strtol((char *)number, NULL, 16); (uint8_t)strtol((char *)number, NULL, 16);
sysid[pos - argv - 1] = '\0'; sysid[pos - sysid_str - 1] = '\0';
} }
} }
/* /*
* Try to find the lsp-id if the argv * Try to find the lsp-id if the sysid_str
* string is in * is in the form
* the form
* hostname.<pseudo-id>-<fragment> * hostname.<pseudo-id>-<fragment>
*/ */
if (sysid2buff(lspid, sysid)) { if (sysid2buff(lspid, sysid)) {
@ -2233,15 +2232,15 @@ struct isis_lsp *lsp_for_arg(struct lspdb_head *head, const char *argv,
void show_isis_database_lspdb(struct vty *vty, struct isis_area *area, void show_isis_database_lspdb(struct vty *vty, struct isis_area *area,
int level, struct lspdb_head *lspdb, int level, struct lspdb_head *lspdb,
const char *argv, int ui_level) const char *sysid_str, int ui_level)
{ {
struct isis_lsp *lsp; struct isis_lsp *lsp;
int lsp_count; int lsp_count;
if (lspdb_count(lspdb) > 0) { if (lspdb_count(lspdb) > 0) {
lsp = lsp_for_arg(lspdb, argv, area->isis); lsp = lsp_for_sysid(lspdb, sysid_str, area->isis);
if (lsp != NULL || argv == NULL) { if (lsp != NULL || sysid_str == NULL) {
vty_out(vty, "IS-IS Level-%d link-state database:\n", vty_out(vty, "IS-IS Level-%d link-state database:\n",
level + 1); level + 1);
@ -2257,7 +2256,7 @@ void show_isis_database_lspdb(struct vty *vty, struct isis_area *area,
else else
lsp_print(lsp, vty, area->dynhostname, lsp_print(lsp, vty, area->dynhostname,
area->isis); area->isis);
} else if (argv == NULL) { } else if (sysid_str == NULL) {
lsp_count = lsp_count =
lsp_print_all(vty, lspdb, ui_level, lsp_print_all(vty, lspdb, ui_level,
area->dynhostname, area->isis); area->dynhostname, area->isis);
@ -2267,7 +2266,7 @@ void show_isis_database_lspdb(struct vty *vty, struct isis_area *area,
} }
} }
static void show_isis_database_common(struct vty *vty, const char *argv, static void show_isis_database_common(struct vty *vty, const char *sysid_str,
int ui_level, struct isis *isis) int ui_level, struct isis *isis)
{ {
struct listnode *node; struct listnode *node;
@ -2283,7 +2282,7 @@ static void show_isis_database_common(struct vty *vty, const char *argv,
for (level = 0; level < ISIS_LEVELS; level++) for (level = 0; level < ISIS_LEVELS; level++)
show_isis_database_lspdb(vty, area, level, show_isis_database_lspdb(vty, area, level,
&area->lspdb[level], argv, &area->lspdb[level], sysid_str,
ui_level); ui_level);
} }
} }
@ -2303,8 +2302,8 @@ static void show_isis_database_common(struct vty *vty, const char *argv,
* [ show isis database detail <sysid>.<pseudo-id>-<fragment-number> ] * [ show isis database detail <sysid>.<pseudo-id>-<fragment-number> ]
* [ show isis database detail <hostname>.<pseudo-id>-<fragment-number> ] * [ show isis database detail <hostname>.<pseudo-id>-<fragment-number> ]
*/ */
static int show_isis_database(struct vty *vty, const char *argv, int ui_level, static int show_isis_database(struct vty *vty, const char *sysid_str,
const char *vrf_name, bool all_vrf) int ui_level, const char *vrf_name, bool all_vrf)
{ {
struct listnode *node; struct listnode *node;
struct isis *isis; struct isis *isis;
@ -2312,14 +2311,15 @@ static int show_isis_database(struct vty *vty, const char *argv, int ui_level,
if (vrf_name) { if (vrf_name) {
if (all_vrf) { if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis)) for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
show_isis_database_common(vty, argv, ui_level, show_isis_database_common(vty, sysid_str,
isis); ui_level, isis);
return CMD_SUCCESS; return CMD_SUCCESS;
} }
isis = isis_lookup_by_vrfname(vrf_name); isis = isis_lookup_by_vrfname(vrf_name);
if (isis) if (isis)
show_isis_database_common(vty, argv, ui_level, isis); show_isis_database_common(vty, sysid_str, ui_level,
isis);
} }
return CMD_SUCCESS; return CMD_SUCCESS;

View File

@ -274,8 +274,8 @@ void isis_area_destroy(struct isis_area *area);
void isis_filter_update(struct access_list *access); void isis_filter_update(struct access_list *access);
void isis_prefix_list_update(struct prefix_list *plist); void isis_prefix_list_update(struct prefix_list *plist);
void print_debug(struct vty *, int, int); void print_debug(struct vty *, int, int);
struct isis_lsp *lsp_for_arg(struct lspdb_head *head, const char *argv, struct isis_lsp *lsp_for_sysid(struct lspdb_head *head, const char *sysid_str,
struct isis *isis); struct isis *isis);
void isis_area_invalidate_routes(struct isis_area *area, int levels); void isis_area_invalidate_routes(struct isis_area *area, int levels);
void isis_area_verify_routes(struct isis_area *area); void isis_area_verify_routes(struct isis_area *area);