]> git.puffer.fish Git - mirror/frr.git/commitdiff
[ospf6d] Fix regression in monotonic time patch - LSA max-aging broke
authorTom Henderson <tomh@tomh.org>
Thu, 16 Jul 2009 16:20:37 +0000 (17:20 +0100)
committerPaul Jakma <paul@quagga.net>
Thu, 16 Jul 2009 16:20:37 +0000 (17:20 +0100)
* ospf6_lsa.c: (ospf6_lsa_premature_aging) set age to MAX_AGE - don't
  rely on 0 magically meaning same.
  (ospf6_lsa_age_current) handle MAXAGE.

ospf6d/ospf6_lsa.c

index 108c025d6c750f091600fb5355c66411a4900a64..34040b84b4341520871a678f6a3e8b7d3ac924e6 100644 (file)
@@ -207,6 +207,12 @@ ospf6_lsa_age_current (struct ospf6_lsa *lsa)
     zlog_warn ("LSA: quagga_gettime failed, may fail LSA AGEs: %s",
                safe_strerror (errno));
 
+  if (lsa->header->age >= htons (MAXAGE))
+    {
+      /* LSA may have been prematurely aged */
+      lsa->header->age = htons (MAXAGE);
+      return MAXAGE;
+    }
   /* calculate age */
   ulage = now.tv_sec - lsa->birth.tv_sec;
 
@@ -239,7 +245,12 @@ ospf6_lsa_premature_aging (struct ospf6_lsa *lsa)
   THREAD_OFF (lsa->expire);
   THREAD_OFF (lsa->refresh);
 
+  /* 
+   * The below technique to age out LSA does not work when using relative time 
+   *
   memset (&lsa->birth, 0, sizeof (struct timeval));
+   */
+  lsa->header->age = htons (MAXAGE);
   thread_execute (master, ospf6_lsa_expire, lsa, 0);
 }