diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index efed420161..728cbdc67d 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -1230,7 +1230,8 @@ isis_circuit_create (struct isis_area *area, struct interface *ifp) if (circuit && circuit->area) return NULL; circuit = isis_csm_state_change (ISIS_ENABLE, circuit, area); - assert (circuit->state == C_STATE_CONF || circuit->state == C_STATE_UP); + if (circuit->state != C_STATE_CONF && circuit->state != C_STATE_UP) + return circuit; isis_circuit_if_bind (circuit, ifp); return circuit; } diff --git a/isisd/isis_vty.c b/isisd/isis_vty.c index f9b96a42d8..4148eb55b9 100644 --- a/isisd/isis_vty.c +++ b/isisd/isis_vty.c @@ -86,9 +86,16 @@ DEFUN (ip_router_isis, if (!area) area = isis_area_create (area_tag); - if (!circuit || !circuit->area) + if (!circuit || !circuit->area) { circuit = isis_circuit_create (area, ifp); + if (circuit->state != C_STATE_CONF && circuit->state != C_STATE_UP) + { + vty_out(vty, "Couldn't bring up interface, please check log.%s", VTY_NEWLINE); + return CMD_WARNING; + } + } + bool ip = circuit->ip_router, ipv6 = circuit->ipv6_router; if (af[2] != '\0') ipv6 = true;