summaryrefslogtreecommitdiff
path: root/isisd/isis_circuit.c
diff options
context:
space:
mode:
Diffstat (limited to 'isisd/isis_circuit.c')
-rw-r--r--isisd/isis_circuit.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index e0e82e4725..985e07820f 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -224,10 +224,17 @@ struct isis_circuit *circuit_scan_by_ifp(struct interface *ifp)
struct isis_area *area;
struct listnode *node;
struct isis_circuit *circuit;
+ struct isis *isis = NULL;
if (ifp->info)
return (struct isis_circuit *)ifp->info;
+ isis = isis_lookup_by_vrfid(ifp->vrf_id);
+ if (isis == NULL) {
+ zlog_warn(" %s : ISIS routing instance not found", __func__);
+ return NULL;
+ }
+
if (isis->area_list) {
for (ALL_LIST_ELEMENTS_RO(isis->area_list, node, area)) {
circuit =
@@ -618,7 +625,8 @@ int isis_circuit_up(struct isis_circuit *circuit)
}
if (circuit->circ_type == CIRCUIT_T_BROADCAST) {
- circuit->circuit_id = isis_circuit_id_gen(isis, circuit->interface);
+ circuit->circuit_id = isis_circuit_id_gen(circuit->area->isis,
+ circuit->interface);
if (!circuit->circuit_id) {
flog_err(
EC_ISIS_CONFIG,
@@ -802,7 +810,8 @@ void isis_circuit_down(struct isis_circuit *circuit)
circuit->lsp_regenerate_pending[0] = 0;
circuit->lsp_regenerate_pending[1] = 0;
- _ISIS_CLEAR_FLAG(isis->circuit_ids_used, circuit->circuit_id);
+ _ISIS_CLEAR_FLAG(circuit->area->isis->circuit_ids_used,
+ circuit->circuit_id);
circuit->circuit_id = 0;
} else if (circuit->circ_type == CIRCUIT_T_P2P) {
isis_delete_adj(circuit->u.p2p.neighbor);
@@ -914,15 +923,13 @@ void isis_circuit_print_vty(struct isis_circuit *circuit, struct vty *vty,
vty_out(vty, ", Active neighbors: %u\n",
circuit->upadjcount[0]);
vty_out(vty,
- " Hello interval: %u, "
- "Holddown count: %u %s\n",
+ " Hello interval: %u, Holddown count: %u %s\n",
circuit->hello_interval[0],
circuit->hello_multiplier[0],
(circuit->pad_hellos ? "(pad)"
: "(no-pad)"));
vty_out(vty,
- " CNSP interval: %u, "
- "PSNP interval: %u\n",
+ " CNSP interval: %u, PSNP interval: %u\n",
circuit->csnp_interval[0],
circuit->psnp_interval[0]);
if (circuit->circ_type == CIRCUIT_T_BROADCAST)
@@ -948,15 +955,13 @@ void isis_circuit_print_vty(struct isis_circuit *circuit, struct vty *vty,
vty_out(vty, ", Active neighbors: %u\n",
circuit->upadjcount[1]);
vty_out(vty,
- " Hello interval: %u, "
- "Holddown count: %u %s\n",
+ " Hello interval: %u, Holddown count: %u %s\n",
circuit->hello_interval[1],
circuit->hello_multiplier[1],
(circuit->pad_hellos ? "(pad)"
: "(no-pad)"));
vty_out(vty,
- " CNSP interval: %u, "
- "PSNP interval: %u\n",
+ " CNSP interval: %u, PSNP interval: %u\n",
circuit->csnp_interval[1],
circuit->psnp_interval[1]);
if (circuit->circ_type == CIRCUIT_T_BROADCAST)
@@ -1015,6 +1020,14 @@ static int isis_interface_config_write(struct vty *vty)
struct isis_area *area;
struct isis_circuit *circuit;
int i;
+ struct isis *isis = NULL;
+
+ isis = isis_lookup_by_vrfid(vrf->vrf_id);
+
+ if (isis == NULL) {
+ vty_out(vty, "ISIS routing instance not found");
+ return 0;
+ }
FOR_ALL_INTERFACES (vrf, ifp) {
/* IF name */