From aabbb1ae358a3fd9af011cddc1a67dfa0b3df2d2 Mon Sep 17 00:00:00 2001 From: Tom Henderson Date: Fri, 28 Aug 2009 15:10:00 +0100 Subject: ospf6d: bug #529, fix endianness problem in earlier commit * ospf6_lsa.c: (ospf6_lsa_age_current) arithmetical compares make no sense in non-host order.. --- ospf6d/ospf6_lsa.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'ospf6d/ospf6_lsa.c') diff --git a/ospf6d/ospf6_lsa.c b/ospf6d/ospf6_lsa.c index 34040b84..07d9f91e 100644 --- a/ospf6d/ospf6_lsa.c +++ b/ospf6d/ospf6_lsa.c @@ -207,9 +207,11 @@ 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)) + if (ntohs (lsa->header->age) >= MAXAGE) { - /* LSA may have been prematurely aged */ + /* ospf6_lsa_premature_aging () sets age to MAXAGE; when using + relative time, we cannot compare against lsa birth time, so + we catch this special case here. */ lsa->header->age = htons (MAXAGE); return MAXAGE; } @@ -245,11 +247,6 @@ 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); } -- cgit v1.2.1