1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-19 19:59:43 +00:00

- patch for annoing OSPF infinite loop when time goes back

PR:		ports/78855
Submitted by:	Boris Kovalenko <boris@tagnet.ru> (maintainer)
This commit is contained in:
Pav Lucistnik 2005-03-15 22:22:45 +00:00
parent 59aeb02070
commit 0ccda62ace
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=131345
2 changed files with 38 additions and 5 deletions

View File

@ -7,7 +7,7 @@
PORTNAME= quagga
PORTVERSION= 0.98.2
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= net ipv6
MASTER_SITES= http://quagga.net/download/
@ -39,10 +39,6 @@ OPTIONS= ISISD "Enable experimental ISIS daemon" off \
TCPSOCKETS "Use TCP/IP sockets for protocol daemons" off \
TCPMD5 "Use experimental MD5 patch for BGP" off
.if !defined(BATCH)
SEL_OPTIONS= yes
.endif
.include <bsd.port.pre.mk>
CONFIGURE_ARGS+=--includedir=${PREFIX}/include --enable-exampledir=${PREFIX}/share/examples/quagga

View File

@ -0,0 +1,37 @@
--- ospfd/ospf_lsa.c.orig Wed Dec 22 19:16:02 2004
+++ ospfd/ospf_lsa.c Mon Mar 7 12:24:04 2005
@@ -3665,6 +3665,7 @@
struct listnode *node;
struct ospf *ospf = THREAD_ARG (t);
int i;
+ time_t ct;
struct list *lsa_to_refresh = list_new ();
if (IS_DEBUG_OSPF (lsa, LSA_REFRESH))
@@ -3672,15 +3673,25 @@
i = ospf->lsa_refresh_queue.index;
+
+ if ((ct = time(NULL)) < ospf->lsa_refresher_started) {
+ zlog_debug ("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_debug ("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_debug ("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)