summaryrefslogtreecommitdiff
path: root/ospfd/ospf_zebra.c
diff options
context:
space:
mode:
Diffstat (limited to 'ospfd/ospf_zebra.c')
-rw-r--r--ospfd/ospf_zebra.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c
index eb125394b8..8cf8430247 100644
--- a/ospfd/ospf_zebra.c
+++ b/ospfd/ospf_zebra.c
@@ -1353,11 +1353,18 @@ static int ospf_distribute_list_update_timer(struct thread *thread)
default_refresh = 1;
else if (
(lsa = ospf_external_info_find_lsa(
- ospf, &ei->p)))
- ospf_external_lsa_refresh(
- ospf, lsa, ei,
- LSA_REFRESH_IF_CHANGED);
- else
+ ospf, &ei->p))) {
+ if (!CHECK_FLAG(
+ lsa->flags,
+ OSPF_LSA_IN_MAXAGE))
+ ospf_external_lsa_refresh(
+ ospf, lsa, ei,
+ LSA_REFRESH_IF_CHANGED);
+ else
+ ospf_external_lsa_refresh(
+ ospf, lsa, ei,
+ LSA_REFRESH_FORCE);
+ } else
ospf_external_lsa_originate(
ospf, ei);
}