mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-04-30 04:42:58 +00:00
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:
parent
730649da0e
commit
1d88e63a4e
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user