[quagga-dev 10264] [PATCH 1/3] ospfd: make ospf_maxage_lsa_remover actually yield

Christian Franke chris at opensourcerouting.org
Wed Feb 20 11:00:52 GMT 2013


ospf_maxage_lsa_remover whould check whether to yield,
but run on anyway.

Signed-off-by: Christian Franke <chris at opensourcerouting.org>
---
 ospfd/ospf_lsa.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c
index dfd1a61..e0e05ab 100644
--- a/ospfd/ospf_lsa.c
+++ b/ospfd/ospf_lsa.c
@@ -2843,6 +2843,9 @@ ospf_maxage_lsa_remover (struct thread *thread)
 	    continue;
 	  }
 
+        /* There is at least one neighbor from which we still await an ack
+         * for that LSA, so we are not allowed to remove it from our lsdb yet
+         * as per RFC 2328 section 14 para 4 a) */
         if (lsa->retransmit_counter > 0)
           {
             reschedule = 1;
@@ -2851,7 +2854,10 @@ ospf_maxage_lsa_remover (struct thread *thread)
         
         /* TODO: maybe convert this function to a work-queue */
         if (thread_should_yield (thread))
-          OSPF_TIMER_ON (ospf->t_maxage, ospf_maxage_lsa_remover, 0);
+          {
+            OSPF_TIMER_ON (ospf->t_maxage, ospf_maxage_lsa_remover, 0);
+            return 0;
+          }
           
         /* Remove LSA from the LSDB */
         if (IS_LSA_SELF (lsa))
-- 
1.7.10.4





More information about the Quagga-dev mailing list