From: Kaushik Date: Thu, 10 Sep 2020 08:58:56 +0000 (-0700) Subject: ospfd : Resolving conflict in distribute-list update during MaxAge LSA. X-Git-Tag: base_7.6~538^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=e6baea10a420f4fcfb82cda42258a5e44178aa82;p=mirror%2Ffrr.git ospfd : Resolving conflict in distribute-list update during MaxAge LSA. 1. Fix for duplicating calls of ospf_external_lsa_refresh() in ospf_distribute_list_update_timer(). 2. Added the comment and change from PR 6981. Signed-off-by: Kaushik --- diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c index 0487ace301..dc8a8dccd2 100644 --- a/ospfd/ospf_zebra.c +++ b/ospfd/ospf_zebra.c @@ -1355,16 +1355,26 @@ static int ospf_distribute_list_update_timer(struct thread *thread) else if ( (lsa = ospf_external_info_find_lsa( 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); + int force = + LSA_REFRESH_IF_CHANGED; + /* If this is a MaxAge LSA, we + * need to force refresh it + * because distribute settings + * might have changed and now, + * this LSA needs to be + * originated, not be removed. + * If we don't force refresh it, + * it will remain a MaxAge LSA + * because it will look like it + * hasn't changed. Neighbors + * will not receive updates for + * this LSA. + */ + if (IS_LSA_MAXAGE(lsa)) + force = LSA_REFRESH_FORCE; + + ospf_external_lsa_refresh( + ospf, lsa, ei, force); } else ospf_external_lsa_originate( ospf, ei);