]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Do not stop lsrr_timer in FULL state. Use it for retransmition.
authorOndrej Filip <feela@network.cz>
Mon, 8 May 2000 23:46:31 +0000 (23:46 +0000)
committerOndrej Filip <feela@network.cz>
Mon, 8 May 2000 23:46:31 +0000 (23:46 +0000)
proto/ospf/lsreq.c
proto/ospf/neighbor.c
proto/ospf/ospf.h

index 3a682120ab8f7ba45e4391fe3d463470d1f297e1..580fd1dba17000e43bf48dfc2b12ed5887d9ac8d 100644 (file)
@@ -69,7 +69,11 @@ lsrr_timer_hook(timer *timer)
   p=(struct proto *)(ifa->proto);
   debug("%s: LSRR timer fired on interface %s for neigh: %I.\n",
     p->name, ifa->iface->name, n->rid);
-  ospf_lsreq_tx(n);
+  if(n->state<NEIGHBOR_FULL) ospf_lsreq_tx(n);
+  else
+  {
+    int i;     /* FIXME Retransmit lsupd again */
+  }
 }
 
 void
index 56e8aabe15477ef29bc25a957f189d4f8c6ec990..0d479df3d374d6490c7f9d756b5398ee99c6e8e4 100644 (file)
@@ -45,7 +45,6 @@ neigh_chstate(struct ospf_neighbor *n, u8 state)
       ifa->fadj++;
       originate_rt_lsa(n->ifa->oa,n->ifa->oa->po);
       originate_net_lsa(ifa,ifa->oa->po);
-      tm_stop(n->lsrr_timer);
     }
     if(oldstate>=NEIGHBOR_EXSTART && state<NEIGHBOR_EXSTART)
     {
@@ -65,6 +64,7 @@ neigh_chstate(struct ospf_neighbor *n, u8 state)
       n->myimms.bit.i=1;
       tm_start(n->rxmt_timer,1);       /* Or some other number ? */
     }
+    if(state<NEIGHBOR_EXCHANGE) tm_stop(n->lsrr_timer);
   }
 }
 
index b1d14bd4db54f0f9da65bec0eee2207a67551aa8..e761bdf1912096bc97cd4651546979f5148e224a 100644 (file)
@@ -294,7 +294,7 @@ struct ospf_neighbor
   struct top_graph *lsrth;
   void *ldbdes;                /* Last database description packet */
   timer *rxmt_timer;   /* RXMT timer */
-  timer *lsrr_timer;   /* Link state requiest retransmition timer */
+  timer *lsrr_timer;   /* Link state request retransmition timer */
   list ackl;
   timer *ackd_timer;   /* Delayed ack timer */
 };