Index: isis_dr.c =================================================================== RCS file: /var/cvsroot/quagga/isisd/isis_dr.c,v retrieving revision 1.1.1.1 diff -u -3 -p -u -w -b -r1.1.1.1 isis_dr.c --- isis_dr.c 23 Dec 2003 08:09:54 -0000 1.1.1.1 +++ isis_dr.c 28 Dec 2003 12:32:23 -0000 @@ -80,6 +80,7 @@ isis_run_dr_l1 (struct thread *thread) if (circuit->u.bc.run_dr_elect[0]) zlog_warn ("isis_run_dr(): run_dr_elect already set for l1"); + circuit->u.bc.t_run_dr[0] = NULL; circuit->u.bc.run_dr_elect[0] = 1; return ISIS_OK; @@ -97,6 +98,7 @@ isis_run_dr_l2 (struct thread *thread) zlog_warn ("isis_run_dr(): run_dr_elect already set for l2"); + circuit->u.bc.t_run_dr[1] = NULL; circuit->u.bc.run_dr_elect[1] = 1; return ISIS_OK; @@ -273,8 +275,8 @@ isis_dr_resign (struct isis_circuit *cir } else { memset (circuit->u.bc.l2_desig_is, 0, ISIS_SYS_ID_LEN + 1); - if (circuit->t_send_csnp[0]) - thread_cancel (circuit->t_send_csnp[0]); + if (circuit->t_send_csnp[1]) + thread_cancel (circuit->t_send_csnp[1]); circuit->u.bc.t_run_dr[1] = thread_add_timer (master, isis_run_dr_l2, circuit, @@ -328,6 +330,8 @@ isis_dr_commence (struct isis_circuit *c thread_cancel (circuit->t_send_l1_psnp); */ lsp_l1_pseudo_generate (circuit); + if (circuit->u.bc.t_run_dr[0]) + THREAD_OFF(circuit->u.bc.t_run_dr[0]); circuit->u.bc.t_run_dr[0] = thread_add_timer (master, isis_run_dr_l1, circuit, 2 * circuit->hello_interval[0]); @@ -353,6 +357,8 @@ isis_dr_commence (struct isis_circuit *c thread_cancel (circuit->t_send_l1_psnp); */ lsp_l2_pseudo_generate (circuit); + if (circuit->u.bc.t_run_dr[1]) + THREAD_OFF(circuit->u.bc.t_run_dr[1]); circuit->u.bc.t_run_dr[1] = thread_add_timer (master, isis_run_dr_l2, circuit, 2 * circuit->hello_interval[1]);