Merge pull request #15922 from anlancs/isisd/fix-unnecessary-check-vrf-cleanup

isisd: remove unnecessary checkings for vrf
This commit is contained in:
Russ White 2024-05-07 11:00:14 -04:00 committed by GitHub
commit 61c4d4f6c7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 205 additions and 262 deletions

View File

@ -2469,37 +2469,33 @@ DEFUN(show_isis_topology, show_isis_topology_cmd,
}
ISIS_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf);
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis)) {
if (all_algorithm) {
for (algorithm = SR_ALGORITHM_FLEX_MIN;
algorithm <= SR_ALGORITHM_FLEX_MAX;
algorithm++)
show_isis_topology_common(
vty, levels, isis,
(uint8_t)algorithm);
} else {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis)) {
if (all_algorithm) {
for (algorithm = SR_ALGORITHM_FLEX_MIN;
algorithm <= SR_ALGORITHM_FLEX_MAX;
algorithm++)
show_isis_topology_common(
vty, levels, isis,
(uint8_t)algorithm);
}
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis == NULL)
return CMD_SUCCESS;
if (all_algorithm) {
for (algorithm = SR_ALGORITHM_FLEX_MIN;
algorithm <= SR_ALGORITHM_FLEX_MAX; algorithm++) {
} else {
show_isis_topology_common(vty, levels, isis,
(uint8_t)algorithm);
}
} else
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis == NULL)
return CMD_SUCCESS;
if (all_algorithm) {
for (algorithm = SR_ALGORITHM_FLEX_MIN;
algorithm <= SR_ALGORITHM_FLEX_MAX; algorithm++) {
show_isis_topology_common(vty, levels, isis,
(uint8_t)algorithm);
}
}
} else
show_isis_topology_common(vty, levels, isis, (uint8_t)algorithm);
return CMD_SUCCESS;
}
@ -2672,17 +2668,14 @@ DEFUN(show_isis_flex_algo, show_isis_flex_algo_cmd,
ISIS_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf);
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
show_isis_flex_algo_common(vty, isis,
flex_algo);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL)
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
show_isis_flex_algo_common(vty, isis, flex_algo);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL)
show_isis_flex_algo_common(vty, isis, flex_algo);
return CMD_SUCCESS;
}
@ -3140,34 +3133,8 @@ DEFUN(show_isis_route, show_isis_route_cmd,
if (uj)
json = json_object_new_array();
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis)) {
if (all_algorithm)
show_isis_route_all_algos(vty, levels,
isis,
prefix_sid,
backup,
uj ? &json_vrf
: NULL);
else
show_isis_route_common(vty, levels,
isis, prefix_sid,
backup, algorithm,
uj ? &json_vrf
: NULL);
if (uj) {
json_object_object_add(
json_vrf, "vrf_id",
json_object_new_int(
isis->vrf_id));
json_object_array_add(json, json_vrf);
}
}
goto out;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis)) {
if (all_algorithm)
show_isis_route_all_algos(vty, levels, isis,
prefix_sid, backup,
@ -3178,12 +3145,28 @@ DEFUN(show_isis_route, show_isis_route_cmd,
algorithm,
uj ? &json_vrf : NULL);
if (uj) {
json_object_object_add(
json_vrf, "vrf_id",
json_object_new_int(isis->vrf_id));
json_object_object_add(json_vrf, "vrf_id",
json_object_new_int(
isis->vrf_id));
json_object_array_add(json, json_vrf);
}
}
goto out;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
if (all_algorithm)
show_isis_route_all_algos(vty, levels, isis, prefix_sid,
backup, uj ? &json_vrf : NULL);
else
show_isis_route_common(vty, levels, isis, prefix_sid,
backup, algorithm,
uj ? &json_vrf : NULL);
if (uj) {
json_object_object_add(json_vrf, "vrf_id",
json_object_new_int(isis->vrf_id));
json_object_array_add(json, json_vrf);
}
}
out:
@ -3395,16 +3378,14 @@ DEFUN(show_isis_frr_summary, show_isis_frr_summary_cmd,
}
ISIS_FIND_VRF_ARGS(argv, argc, idx, vrf_name, all_vrf);
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
show_isis_frr_summary_common(vty, levels, isis);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL)
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
show_isis_frr_summary_common(vty, levels, isis);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL)
show_isis_frr_summary_common(vty, levels, isis);
return CMD_SUCCESS;
}

View File

@ -1690,30 +1690,26 @@ DEFUN(show_isis_mpls_te_router,
return CMD_SUCCESS;
}
ISIS_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf);
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, inode, isis)) {
for (ALL_LIST_ELEMENTS_RO(isis->area_list,
anode, area)) {
if (!IS_MPLS_TE(area->mta))
continue;
show_router_id(vty, area);
}
}
return 0;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
for (ALL_LIST_ELEMENTS_RO(isis->area_list, anode,
area)) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, inode, isis)) {
for (ALL_LIST_ELEMENTS_RO(isis->area_list, anode, area)) {
if (!IS_MPLS_TE(area->mta))
continue;
show_router_id(vty, area);
}
}
return 0;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
for (ALL_LIST_ELEMENTS_RO(isis->area_list, anode, area)) {
if (!IS_MPLS_TE(area->mta))
continue;
show_router_id(vty, area);
}
}
return CMD_SUCCESS;
@ -2162,19 +2158,18 @@ DEFUN(show_isis_mpls_te_db,
int rc = CMD_WARNING;
ISIS_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf);
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis)) {
rc = show_isis_ted(vty, argv, argc, isis);
if (rc != CMD_SUCCESS)
return rc;
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis)
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis)) {
rc = show_isis_ted(vty, argv, argc, isis);
if (rc != CMD_SUCCESS)
return rc;
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis)
rc = show_isis_ted(vty, argv, argc, isis);
return rc;
}

View File

@ -988,63 +988,17 @@ int show_isis_interface_common_json(struct json_object *json,
"no");
return CMD_SUCCESS;
}
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, inode, isis)) {
areas_json = json_object_new_array();
json_object_object_add(json, "areas",
areas_json);
for (ALL_LIST_ELEMENTS_RO(isis->area_list,
anode, area)) {
area_json = json_object_new_object();
json_object_string_add(
area_json, "area",
area->area_tag ? area->area_tag
: "null");
circuits_json = json_object_new_array();
json_object_object_add(area_json,
"circuits",
circuits_json);
for (ALL_LIST_ELEMENTS_RO(
area->circuit_list, cnode,
circuit)) {
circuit_json =
json_object_new_object();
json_object_int_add(
circuit_json, "circuit",
circuit->circuit_id);
if (!ifname)
isis_circuit_print_json(
circuit,
circuit_json,
detail);
else if (strcmp(circuit->interface->name, ifname) == 0)
isis_circuit_print_json(
circuit,
circuit_json,
detail);
json_object_array_add(
circuits_json,
circuit_json);
}
json_object_array_add(areas_json,
area_json);
}
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, inode, isis)) {
areas_json = json_object_new_array();
json_object_object_add(json, "areas", areas_json);
for (ALL_LIST_ELEMENTS_RO(isis->area_list, anode,
area)) {
for (ALL_LIST_ELEMENTS_RO(isis->area_list, anode, area)) {
area_json = json_object_new_object();
json_object_string_add(area_json, "area",
area->area_tag
? area->area_tag
: "null");
circuits_json = json_object_new_array();
json_object_object_add(area_json, "circuits",
circuits_json);
@ -1055,22 +1009,56 @@ int show_isis_interface_common_json(struct json_object *json,
circuit_json, "circuit",
circuit->circuit_id);
if (!ifname)
isis_circuit_print_json(
circuit, circuit_json,
detail);
else if (
strcmp(circuit->interface->name,
ifname) == 0)
isis_circuit_print_json(
circuit, circuit_json,
detail);
isis_circuit_print_json(circuit,
circuit_json,
detail);
else if (strcmp(circuit->interface->name,
ifname) == 0)
isis_circuit_print_json(circuit,
circuit_json,
detail);
json_object_array_add(circuits_json,
circuit_json);
}
json_object_array_add(areas_json, area_json);
}
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
areas_json = json_object_new_array();
json_object_object_add(json, "areas", areas_json);
for (ALL_LIST_ELEMENTS_RO(isis->area_list, anode, area)) {
area_json = json_object_new_object();
json_object_string_add(area_json, "area",
area->area_tag ? area->area_tag
: "null");
circuits_json = json_object_new_array();
json_object_object_add(area_json, "circuits",
circuits_json);
for (ALL_LIST_ELEMENTS_RO(area->circuit_list, cnode,
circuit)) {
circuit_json = json_object_new_object();
json_object_int_add(circuit_json, "circuit",
circuit->circuit_id);
if (!ifname)
isis_circuit_print_json(circuit,
circuit_json,
detail);
else if (strcmp(circuit->interface->name,
ifname) == 0)
isis_circuit_print_json(circuit,
circuit_json,
detail);
json_object_array_add(circuits_json,
circuit_json);
}
json_object_array_add(areas_json, area_json);
}
}
return CMD_SUCCESS;
}
@ -1087,37 +1075,10 @@ int show_isis_interface_common_vty(struct vty *vty, const char *ifname,
vty_out(vty, "IS-IS Routing Process not enabled\n");
return CMD_SUCCESS;
}
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, inode, isis)) {
for (ALL_LIST_ELEMENTS_RO(isis->area_list,
anode, area)) {
vty_out(vty, "Area %s:\n",
area->area_tag);
if (detail == ISIS_UI_LEVEL_BRIEF)
vty_out(vty,
" Interface CircId State Type Level\n");
for (ALL_LIST_ELEMENTS_RO(
area->circuit_list, cnode,
circuit))
if (!ifname)
isis_circuit_print_vty(
circuit, vty,
detail);
else if (strcmp(circuit->interface->name, ifname) == 0)
isis_circuit_print_vty(
circuit, vty,
detail);
}
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
for (ALL_LIST_ELEMENTS_RO(isis->area_list, anode,
area)) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, inode, isis)) {
for (ALL_LIST_ELEMENTS_RO(isis->area_list, anode, area)) {
vty_out(vty, "Area %s:\n", area->area_tag);
if (detail == ISIS_UI_LEVEL_BRIEF)
@ -1127,15 +1088,37 @@ int show_isis_interface_common_vty(struct vty *vty, const char *ifname,
for (ALL_LIST_ELEMENTS_RO(area->circuit_list,
cnode, circuit))
if (!ifname)
isis_circuit_print_vty(
circuit, vty, detail);
else if (
strcmp(circuit->interface->name,
ifname) == 0)
isis_circuit_print_vty(
circuit, vty, detail);
isis_circuit_print_vty(circuit,
vty,
detail);
else if (strcmp(circuit->interface->name,
ifname) == 0)
isis_circuit_print_vty(circuit,
vty,
detail);
}
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
for (ALL_LIST_ELEMENTS_RO(isis->area_list, anode, area)) {
vty_out(vty, "Area %s:\n", area->area_tag);
if (detail == ISIS_UI_LEVEL_BRIEF)
vty_out(vty,
" Interface CircId State Type Level\n");
for (ALL_LIST_ELEMENTS_RO(area->circuit_list, cnode,
circuit))
if (!ifname)
isis_circuit_print_vty(circuit, vty,
detail);
else if (strcmp(circuit->interface->name,
ifname) == 0)
isis_circuit_print_vty(circuit, vty,
detail);
}
}
return CMD_SUCCESS;
@ -1376,28 +1359,23 @@ int show_isis_neighbor_common(struct vty *vty, struct json_object *json,
return CMD_SUCCESS;
}
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis)) {
if (id_to_sysid(isis, id, sysid)) {
vty_out(vty, "Invalid system id %s\n",
id);
return CMD_SUCCESS;
}
isis_neighbor_common(vty, json, id, detail,
isis, sysid);
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis)) {
if (id_to_sysid(isis, id, sysid)) {
vty_out(vty, "Invalid system id %s\n", id);
return CMD_SUCCESS;
}
isis_neighbor_common(vty, json, id, detail, isis,
sysid);
isis_neighbor_common(vty, json, id, detail, isis, sysid);
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
if (id_to_sysid(isis, id, sysid)) {
vty_out(vty, "Invalid system id %s\n", id);
return CMD_SUCCESS;
}
isis_neighbor_common(vty, json, id, detail, isis, sysid);
}
return CMD_SUCCESS;
@ -1461,27 +1439,23 @@ int clear_isis_neighbor_common(struct vty *vty, const char *id, const char *vrf_
return CMD_SUCCESS;
}
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis)) {
if (id_to_sysid(isis, id, sysid)) {
vty_out(vty, "Invalid system id %s\n",
id);
return CMD_SUCCESS;
}
isis_neighbor_common_clear(vty, id, sysid,
isis);
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis)) {
if (id_to_sysid(isis, id, sysid)) {
vty_out(vty, "Invalid system id %s\n", id);
return CMD_SUCCESS;
}
isis_neighbor_common_clear(vty, id, sysid, isis);
}
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL) {
if (id_to_sysid(isis, id, sysid)) {
vty_out(vty, "Invalid system id %s\n", id);
return CMD_SUCCESS;
}
isis_neighbor_common_clear(vty, id, sysid, isis);
}
return CMD_SUCCESS;
@ -2234,17 +2208,16 @@ DEFUN (show_hostname,
struct isis *isis;
ISIS_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf);
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
dynhn_print_all(vty, isis);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL)
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
dynhn_print_all(vty, isis);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL)
dynhn_print_all(vty, isis);
return CMD_SUCCESS;
}
@ -2307,17 +2280,15 @@ DEFUN(show_isis_spf_ietf, show_isis_spf_ietf_cmd,
return CMD_SUCCESS;
}
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
isis_spf_ietf_common(vty, isis);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL)
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
isis_spf_ietf_common(vty, isis);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL)
isis_spf_ietf_common(vty, isis);
return CMD_SUCCESS;
}
@ -2596,17 +2567,16 @@ DEFUN(show_isis_summary, show_isis_summary_cmd,
}
if (uj)
json = json_object_new_object();
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
common_isis_summary(vty, json, isis);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL)
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
common_isis_summary(vty, json, isis);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis != NULL)
common_isis_summary(vty, json, isis);
if (uj)
vty_json(vty, json);
@ -2828,19 +2798,16 @@ static int show_isis_database(struct vty *vty, struct json_object *json, const c
struct listnode *node;
struct isis *isis;
if (vrf_name) {
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
show_isis_database_common(vty, json, sysid_str,
ui_level, isis);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis)
if (all_vrf) {
for (ALL_LIST_ELEMENTS_RO(im->isis, node, isis))
show_isis_database_common(vty, json, sysid_str,
ui_level, isis);
return CMD_SUCCESS;
}
isis = isis_lookup_by_vrfname(vrf_name);
if (isis)
show_isis_database_common(vty, json, sysid_str, ui_level, isis);
return CMD_SUCCESS;
}