]> git.proxmox.com Git - mirror_frr.git/blobdiff - isisd/isis_csm.c
isisd: generate unique circuit ids
[mirror_frr.git] / isisd / isis_csm.c
index d434d2c91e92a76fcb3bc6ed539c14ba62fe6737..5feeeae936bc1bd606f97a479ab79b7e64f4ac47 100644 (file)
@@ -87,6 +87,13 @@ isis_csm_state_change(int event, struct isis_circuit *circuit, void *arg)
                case IF_UP_FROM_Z:
                        circuit = isis_circuit_new();
                        isis_circuit_if_add(circuit, (struct interface *)arg);
+                       if (!circuit->circuit_id) {
+                               isis_circuit_if_del(circuit,
+                                                   (struct interface *)arg);
+                               isis_circuit_del(circuit);
+                               circuit = NULL;
+                               break;
+                       }
                        listnode_add(isis->init_circ_list, circuit);
                        circuit->state = C_STATE_INIT;
                        break;
@@ -137,6 +144,8 @@ isis_csm_state_change(int event, struct isis_circuit *circuit, void *arg)
                        break;
                case IF_UP_FROM_Z:
                        isis_circuit_if_add(circuit, (struct interface *)arg);
+                       if (!circuit->circuit_id)
+                               break;
                        if (isis_circuit_up(circuit) != ISIS_OK) {
                                zlog_err(
                                        "Could not bring up %s because of invalid config.",