diff options
Diffstat (limited to 'isisd')
-rw-r--r-- | isisd/ChangeLog | 9 | ||||
-rw-r--r-- | isisd/isis_circuit.c | 4 | ||||
-rw-r--r-- | isisd/isis_lsp.c | 5 | ||||
-rw-r--r-- | isisd/isis_pdu.c | 6 |
4 files changed, 22 insertions, 2 deletions
diff --git a/isisd/ChangeLog b/isisd/ChangeLog index 4c119e2d..33608b13 100644 --- a/isisd/ChangeLog +++ b/isisd/ChangeLog @@ -1,3 +1,12 @@ +2004-09-10 LIU Xin <lx at ns.6test.edu.cn> + + * isis_pdu.c: Goto out only if no adjacency exist. + * isis_circuit.c: Don't crash while executing "isis circuit-type" + command if circuit exists, but circuit->area is still NULL. + * isis_lsp.c: Set pointers to thread to NULL before initiating new + thread in lsp_l1_refresh_pseudo(), lsp_l2_refresh_pseudo() and + lsp_tick() functions. + 2004-05-19 Laurent Rabret <laurent.rabret at francetelecom.com> * isis_constants.h: change the ISIS Hello interval from 1 to 10 (cisco's diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index 671ebbff..9a41c582 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -880,6 +880,10 @@ DEFUN (isis_circuit_type, return CMD_WARNING; } + /* XXX what to do when ip_router_isis is not executed */ + if (circuit->area == NULL) + return CMD_WARNING; + assert (circuit); circuit_t = string2circuit_t (argv[0]); diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c index 214b438c..677e2c3a 100644 --- a/isisd/isis_lsp.c +++ b/isisd/isis_lsp.c @@ -2087,6 +2087,8 @@ lsp_l1_refresh_pseudo (struct thread *thread) if (!circuit->u.bc.is_dr[0]) return ISIS_ERROR; /* FIXME: purge and such */ + circuit->u.bc.t_refresh_pseudo_lsp[0] = NULL; + retval = lsp_pseudo_regenerate (circuit, 1); ref_time = circuit->area->lsp_refresh[0] > MAX_LSP_GEN_INTERVAL ? @@ -2145,6 +2147,8 @@ lsp_l2_refresh_pseudo (struct thread *thread) if (!circuit->u.bc.is_dr[1]) return ISIS_ERROR; /* FIXME: purge and such */ + circuit->u.bc.t_refresh_pseudo_lsp[1] = NULL; + retval = lsp_pseudo_regenerate (circuit, 2); ref_time = circuit->area->lsp_refresh[1] > MAX_LSP_GEN_INTERVAL ? @@ -2211,6 +2215,7 @@ lsp_tick (struct thread *thread) area = THREAD_ARG (thread); assert (area); + area->t_tick = NULL; THREAD_TIMER_ON (master, area->t_tick, lsp_tick, area, 1); /* diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c index cae34610..c7142eea 100644 --- a/isisd/isis_pdu.c +++ b/isisd/isis_pdu.c @@ -812,8 +812,10 @@ process_lan_hello (int level, struct isis_circuit *circuit, u_char * ssnpa) */ adj = isis_new_adj (hdr.source_id, ssnpa, level, circuit); if (adj == NULL) - retval = ISIS_ERROR; - goto out; + { + retval = ISIS_ERROR; + goto out; + } adj->level = level; isis_adj_state_change (adj, ISIS_ADJ_INITIALIZING, NULL); |