]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Doc in lsalib.c + related minor changes.
authorOndrej Filip <feela@network.cz>
Wed, 7 Jun 2000 22:31:47 +0000 (22:31 +0000)
committerOndrej Filip <feela@network.cz>
Wed, 7 Jun 2000 22:31:47 +0000 (22:31 +0000)
proto/ospf/Doc
proto/ospf/lsalib.c
proto/ospf/lsalib.h
proto/ospf/lsupd.c
proto/ospf/topology.c

index 8b8906ff92e1815bf4a915e9a5c794930bd7f580..3cc298f8d8c7c3ec93317f1fdec3f46fbb2c92ce 100644 (file)
@@ -3,3 +3,4 @@ S topology.c
 S neighbor.c
 S iface.c
 S packet.c
+S lsalib.c
index 46b6d09d38db4b265d1591c98fa35c6cf8280c57..cd294214cc892494b0373a13b00358386a60492f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     BIRD -- OSPF
  *
- *     (c) 1999-2000 Ondrej Filip <feela@network.cz>
+ *     (c) 1999 - 2000 Ondrej Filip <feela@network.cz>
  *
  *     Can be freely distributed and used under the terms of the GNU GPL.
  */
@@ -18,6 +18,18 @@ flush_lsa(struct top_hash_entry *en, struct ospf_area *oa)
   ospf_hash_delete(oa->gr,en);
 }
 
+/**
+ * ospf_age
+ * @oa: ospf area
+ *
+ * This function is periodicaly invoked from area_disp(). It computes new
+ * age of all LSAs and old (@age is higher than %LSA_MAXAGE) are flushed
+ * when ever possible. If some LSA originated by router itself is older
+ * than %LSREFRESHTIME new instance is originated.
+ *
+ * RFC says, that router should check checksum of every LSA to detect some
+ * hardware problem. BIRD does not do it to minimalize CPU utilization.
+ */
 void
 ospf_age(struct ospf_area *oa)
 {
@@ -379,11 +391,21 @@ lsa_comp(struct ospf_lsa_header *l1, struct ospf_lsa_header *l2)
   return CMP_SAME;
 }
 
-/* LSA can be temporarrily, but body must be mb_alloced. */
+/**
+ * lsa_install_new - install new LSA into database
+ * @lsa: LSA header
+ * @body pointer to LSA body
+ * @oa: current ospf_area
+ *
+ * This function ensures installing new LSA into LSA database. Old instance is
+ * replaced. Several actions are taken to detec if new routing table
+ * calculation is necessary. This is described in 13.2 of RFC 2328.
+ */
 struct top_hash_entry *
-lsa_install_new(struct ospf_lsa_header *lsa, void *body, struct ospf_area *oa,
-  struct proto *p)
+lsa_install_new(struct ospf_lsa_header *lsa, void *body, struct ospf_area *oa)
 {
+  /* LSA can be temporarrily, but body must be mb_alloced. */
+  struct proto *p=&oa->po->proto;
   int change=0;
   unsigned i;
   struct top_hash_entry *en;
index 4c74bc48282f5c2b37142175a447c8e4ea5b727f..5722e8efd289c94201a41f4fb7aba28091900476 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *      BIRD -- OSPF
  *
- *      (c) 2000 Ondrej Filip <feela@network.cz>
+ *      (c) 1999 - 2000 Ondrej Filip <feela@network.cz>
  *
  *      Can be freely distributed and used under the terms of the GNU GPL.
  *
@@ -22,7 +22,7 @@ u16 lsasum_check(struct ospf_lsa_header *h,void *body,struct proto_ospf *po);
 #define CMP_OLDER -1
 int lsa_comp(struct ospf_lsa_header *l1, struct ospf_lsa_header *l2);
 struct top_hash_entry *lsa_install_new(struct ospf_lsa_header *lsa, void *body,
-  struct ospf_area *oa, struct proto *p);
+  struct ospf_area *oa);
 void ospf_age(struct ospf_area *oa);
 void flush_lsa(struct top_hash_entry *en, struct ospf_area *oa);
 
index a5f2b794409c504c43f5c6787d8913829b24e9f5..57d95752671e203a4793d6d3b77c4fd0d474d2a2 100644 (file)
@@ -425,7 +425,7 @@ ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p,
       body=mb_alloc(p->pool,lsatmp.length-sizeof(struct ospf_lsa_header));
       ntohlsab(lsa+1,body,lsatmp.type,
         lsatmp.length-sizeof(struct ospf_lsa_header));
-      lsadb=lsa_install_new(&lsatmp,body, oa, p);
+      lsadb=lsa_install_new(&lsatmp,body, oa);
       DBG("New LSA installed in DB\n");
 
       continue;
index 3b3f80648a95aa18689bfcac818e6cd32e78a3c4..8affb1ff9316fc70b8e288bf1f381821286c4307 100644 (file)
@@ -205,7 +205,7 @@ originate_rt_lsa(struct ospf_area *oa)
   }
   body=originate_rt_lsa_body(oa, &lsa.length, po);
   lsasum_calculate(&lsa,body,po);
-  en=lsa_install_new(&lsa, body, oa, &po->proto);
+  en=lsa_install_new(&lsa, body, oa);
   oa->rt=en;
   flood_lsa(NULL,NULL,&oa->rt->lsa,po,NULL,oa,1);
   schedule_rtcalc(oa);
@@ -297,7 +297,7 @@ originate_net_lsa(struct ospf_iface *ifa)
 
   body=originate_net_lsa_body(ifa, &lsa.length, po);
   lsasum_calculate(&lsa,body,po);
-  ifa->nlsa=lsa_install_new(&lsa, body, ifa->oa, &po->proto);
+  ifa->nlsa=lsa_install_new(&lsa, body, ifa->oa);
   flood_lsa(NULL,NULL,&ifa->nlsa->lsa,po,NULL,ifa->oa,1);
 }
 
@@ -401,7 +401,7 @@ originate_ext_lsa(net *n, rte *e, struct proto_ospf *po, struct ea_list *attrs)
   lsasum_calculate(&lsa,body,po);
   WALK_LIST(oa, po->area_list)
   {
-    en=lsa_install_new(&lsa, body, oa, &po->proto);
+    en=lsa_install_new(&lsa, body, oa);
     flood_lsa(NULL,NULL,&en->lsa,po,NULL,oa,1);
     body=originate_ext_lsa_body(n, e, po, attrs);
   }