int isis_if_new_hook(struct interface *);
int isis_if_delete_hook(struct interface *);
-struct isis_circuit *isis_circuit_new(void)
+struct isis_circuit *isis_circuit_new(struct isis *isis)
{
struct isis_circuit *circuit;
int i;
circuit = XCALLOC(MTYPE_ISIS_CIRCUIT, sizeof(struct isis_circuit));
+ circuit->isis = isis;
/*
* Default values
*/
DECLARE_QOBJ_TYPE(isis_circuit)
void isis_circuit_init(void);
-struct isis_circuit *isis_circuit_new(void);
+struct isis_circuit *isis_circuit_new(struct isis *isis);
void isis_circuit_del(struct isis_circuit *circuit);
struct isis_circuit *circuit_lookup_by_ifp(struct interface *ifp,
struct list *list);
{
int old_state;
struct isis *isis = NULL;
+ struct isis_area *area = NULL;
old_state = circuit ? circuit->state : C_STATE_NA;
if (IS_DEBUG_EVENTS)
assert(circuit == NULL);
switch (event) {
case ISIS_ENABLE:
- circuit = isis_circuit_new();
- isis_circuit_configure(circuit,
- (struct isis_area *)arg);
+ area = arg;
+
+ circuit = isis_circuit_new(area->isis);
+ isis_circuit_configure(circuit, area);
circuit->state = C_STATE_CONF;
break;
case IF_UP_FROM_Z:
__func__);
break;
}
- circuit = isis_circuit_new();
+ circuit = isis_circuit_new(isis);
isis_circuit_if_add(circuit, (struct interface *)arg);
listnode_add(isis->init_circ_list, circuit);
- circuit->isis = isis;
circuit->state = C_STATE_INIT;
break;
case ISIS_DISABLE:
zlog_warn("circuit already connected");
break;
case ISIS_DISABLE:
- isis = circuit->area->isis;
+ isis = circuit->isis;
isis_circuit_down(circuit);
isis_circuit_deconfigure(circuit,
(struct isis_area *)arg);
isis_event_circuit_state_change(
circuit, (struct isis_area *)arg, 0);
listnode_add(isis->init_circ_list, circuit);
- circuit->isis = isis;
break;
case IF_DOWN_FROM_Z:
isis_circuit_down(circuit);