]> git.puffer.fish Git - matthieu/frr.git/commitdiff
ospf6d: Link LSAs are not getting MAX_AGE in neighbor
authorYash Ranjan <ranjany@vmware.com>
Thu, 11 Mar 2021 13:41:05 +0000 (05:41 -0800)
committerYash Ranjan <ranjany@vmware.com>
Thu, 25 Mar 2021 07:25:16 +0000 (00:25 -0700)
When the ospf6 daemon goes down, it originates MAX_AGE
LSAs for all the self-originated LSAs so that it gets
flushed from the neighbor's database. But the link-LSAs
are not getting MAX_AGE.
Set the self-originated link-LSAs age to MAX_AGE and
flood it

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
ospf6d/ospf6_lsa.c

index f2a933d8780da08a419ffb24db846b73cd8ed880..b4f0c30f1221c201f74ff23d9abd3e1cb8289a4b 100644 (file)
@@ -853,11 +853,12 @@ int ospf6_lsa_refresh(struct thread *thread)
 
 void ospf6_flush_self_originated_lsas_now(struct ospf6 *ospf6)
 {
-       struct listnode *node;
+       struct listnode *node, *nnode;
        struct ospf6_area *oa;
        struct ospf6_lsa *lsa;
        const struct route_node *end = NULL;
        uint32_t type, adv_router;
+       struct ospf6_interface *oi;
 
        ospf6->inst_shutdown = 1;
 
@@ -872,6 +873,19 @@ void ospf6_flush_self_originated_lsas_now(struct ospf6 *ospf6)
 
                        lsa = ospf6_lsdb_next(end, lsa);
                }
+
+               for (ALL_LIST_ELEMENTS(oa->if_list, node, nnode, oi)) {
+                       end = ospf6_lsdb_head(oi->lsdb_self, 0, 0,
+                                             ospf6->router_id, &lsa);
+                       while (lsa) {
+                               /* RFC 2328 (14.1):  Set MAXAGE */
+                               lsa->header->age = htons(OSPF_LSA_MAXAGE);
+                               /* Flood MAXAGE LSA*/
+                               ospf6_flood(NULL, lsa);
+
+                               lsa = ospf6_lsdb_next(end, lsa);
+                       }
+               }
        }
 
        type = htons(OSPF6_LSTYPE_AS_EXTERNAL);