From owner-freebsd-ports-bugs@FreeBSD.ORG Wed Mar 2 14:50:15 2005 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9F54416A4CE for ; Wed, 2 Mar 2005 14:50:15 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 64F6E43D31 for ; Wed, 2 Mar 2005 14:50:15 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.1/8.13.1) with ESMTP id j22EoF2q075996 for ; Wed, 2 Mar 2005 14:50:15 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.1/8.13.1/Submit) id j22EoFiR075995; Wed, 2 Mar 2005 14:50:15 GMT (envelope-from gnats) Resent-Date: Wed, 2 Mar 2005 14:50:15 GMT Resent-Message-Id: <200503021450.j22EoFiR075995@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Dmitry Morozovsky Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AE07D16A4CE; Wed, 2 Mar 2005 14:41:32 +0000 (GMT) Received: from woozle.rinet.ru (woozle.rinet.ru [195.54.192.68]) by mx1.FreeBSD.org (Postfix) with ESMTP id CFB8143D58; Wed, 2 Mar 2005 14:41:31 +0000 (GMT) (envelope-from marck@woozle.rinet.ru) Received: from woozle.rinet.ru (localhost [127.0.0.1]) by woozle.rinet.ru (8.13.1/8.13.1) with ESMTP id j22EfUPC018641; Wed, 2 Mar 2005 17:41:30 +0300 (MSK) (envelope-from marck@woozle.rinet.ru) Received: (from marck@localhost) by woozle.rinet.ru (8.13.1/8.13.1/Submit) id j22EfU0C018640; Wed, 2 Mar 2005 17:41:30 +0300 (MSK) (envelope-from marck) Message-Id: <200503021441.j22EfU0C018640@woozle.rinet.ru> Date: Wed, 2 Mar 2005 17:41:30 +0300 (MSK) From: Dmitry Morozovsky To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 cc: sumikawa@FreeBSD.org Subject: ports/78302: net/zebra patch for ospfd lost database updates X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Dmitry Morozovsky List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Mar 2005 14:50:15 -0000 >Number: 78302 >Category: ports >Synopsis: net/zebra patch for ospfd lost database updates >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Mar 02 14:50:14 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Dmitry Morozovsky >Release: FreeBSD 4-STABLE i386 >Organization: Cronyx Plus LLC (RiNet ISP) >Environment: System: FreeBSD 4-STABLE >Description: It seems to be a bug in zebra's LSA Refresh algorythm when time got backwards, where refresh loop can go to virtually endless. We sometimes encounted this in rather simple topology, but with many (3k+) LSAs >How-To-Repeat: Non-deterministic, but mostly working example: run zebra's ospfd, slide time backwards. watch for adjacency goes down on other OSPF router. >Fix: We're run zebra with this fix for more than half a year now. Everything seems to be ok. Index: Makefile =================================================================== RCS file: /home/ncvs/ports/net/zebra/Makefile,v retrieving revision 1.79 diff -u -r1.79 Makefile --- Makefile 7 Feb 2005 12:36:46 -0000 1.79 +++ Makefile 2 Mar 2005 14:35:35 -0000 @@ -7,7 +7,7 @@ PORTNAME= zebra PORTVERSION= 0.94 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= net ipv6 MASTER_SITES= ftp://ftp.zebra.org/pub/zebra/ \ ftp://ftp.ripe.net/mirrors/sites/ftp.zebra.org/pub/zebra/ \ Index: files/patch-ospfd_ospf__lsa.c =================================================================== RCS file: files/patch-ospfd_ospf__lsa.c diff -N files/patch-ospfd_ospf__lsa.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/patch-ospfd_ospf__lsa.c 2 Mar 2005 14:35:35 -0000 @@ -0,0 +1,37 @@ +--- ospfd/ospf_lsa.c.orig Mon Nov 8 11:47:25 2004 ++++ ospfd/ospf_lsa.c Tue Nov 9 03:15:53 2004 +@@ -3344,6 +3344,7 @@ + listnode node; + struct ospf *ospf = THREAD_ARG (t); + int i; ++ time_t ct; + list lsa_to_refresh = list_new (); + + if (IS_DEBUG_OSPF (lsa, LSA_REFRESH)) +@@ -3351,15 +3352,25 @@ + + + i = ospf->lsa_refresh_queue.index; ++ ++ if ((ct = time(NULL)) < ospf->lsa_refresher_started) { ++ zlog_info ("LSA[Refresh]: ospf_lsa_refresh_walker(): HACK: fixing lsa_refresher_started: %d -> %d", ospf->lsa_refresher_started, ct); ++ ospf->lsa_refresher_started = ct; ++ } + + ospf->lsa_refresh_queue.index = + (ospf->lsa_refresh_queue.index + +- (time (NULL) - ospf->lsa_refresher_started) / OSPF_LSA_REFRESHER_GRANULARITY) ++ (ct - ospf->lsa_refresher_started) / OSPF_LSA_REFRESHER_GRANULARITY) + % OSPF_LSA_REFRESHER_SLOTS; + + if (IS_DEBUG_OSPF (lsa, LSA_REFRESH)) + zlog_info ("LSA[Refresh]: ospf_lsa_refresh_walker(): next index %d", + ospf->lsa_refresh_queue.index); ++ ++ if (ospf->lsa_refresh_queue.index >= OSPF_LSA_REFRESHER_SLOTS) { ++ zlog_info ("LSA[Refresh]: ospf_lsa_refresh_walker(): HACK: fixing index: %hu -> 0", ospf->lsa_refresh_queue.index); ++ ospf->lsa_refresh_queue.index = 0; ++ } + + for (;i != ospf->lsa_refresh_queue.index; + i = (i + 1) % OSPF_LSA_REFRESHER_SLOTS) >Release-Note: >Audit-Trail: >Unformatted: