]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Premature aging of self-originated LSA received in flooding.
authorOndrej Filip <feela@network.cz>
Tue, 9 May 2000 21:06:48 +0000 (21:06 +0000)
committerOndrej Filip <feela@network.cz>
Tue, 9 May 2000 21:06:48 +0000 (21:06 +0000)
proto/ospf/lsupd.c

index b6037419dc53e3d0340405e064b189808b35f5a6..d9babc95c3a451407187a64260eb5144b93f14f6 100644 (file)
@@ -301,9 +301,36 @@ ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p,
     {
        struct ospf_iface *ift=NULL;
        void *body;
+       struct ospf_iface *nifa;
+       int self=0;
 
        DBG("PG143(5): Received LSA is newer\n");
 
+       if(lsatmp.rt==p->cf->global->router_id) self=1;
+
+       if(lsatmp.type==LSA_T_NET)
+       {
+         WALK_LIST(nifa,po->iface_list)
+        {
+          if(ipa_compare(nifa->iface->addr->ip,ipa_from_u32(lsatmp.id))==0)
+          {
+            self=1;
+            break;
+          }
+        }
+       }
+
+       if(self)
+       {
+         lsa->age=(htons(LSA_MAXAGE));
+        lsatmp.age=LSA_MAXAGE;
+        debug("Premature aging self originated lsa.\n");
+         flood_lsa(NULL,lsa,&lsatmp,po,NULL,oa);
+        continue;
+       }
+
+
+
       /* pg 144 (5a) */
       if(lsadb && ((now-lsadb->inst_t)<MINLSARRIVAL))
       {
@@ -344,8 +371,6 @@ ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p,
       lsadb=lsa_install_new(&lsatmp,body, oa, p);
       DBG("New LSA installed in DB\n");
 
-      /* FIXME 145 (5f) self originated? */
-
       continue;
     }