]> git.puffer.fish Git - mirror/frr.git/commitdiff
Fixes from LIU Xin.
authorhasso <hasso>
Fri, 10 Sep 2004 21:19:13 +0000 (21:19 +0000)
committerhasso <hasso>
Fri, 10 Sep 2004 21:19:13 +0000 (21:19 +0000)
isisd/ChangeLog
isisd/isis_circuit.c
isisd/isis_lsp.c
isisd/isis_pdu.c

index 4c119e2d05131652276c4771b596f9aa8b14562b..33608b136fa5b146866d39936601f6ae874e4ca2 100644 (file)
@@ -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
index 671ebbffe6c2926e40624d87b3b9b4b3f4071115..9a41c582cf31c1043ca0d565e44ed0f8c0cada60 100644 (file)
@@ -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]);
index 214b438c1d3ce4a352a5b266d19cd2799a282e10..677e2c3a2b23834c0bbd5a9571a6dceddc1d1b32 100644 (file)
@@ -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);
 
   /*
index cae346109015998ece08d5ce8bdaa3af2b424292..c7142eeacdb7ddaffdbebac1a58454b1e184aef9 100644 (file)
@@ -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);