summaryrefslogtreecommitdiffstats
path: root/proto/ospf/ospf.c
diff options
context:
space:
mode:
authorOndrej Filip <feela@network.cz>2001-08-11 16:01:54 +0200
committerOndrej Filip <feela@network.cz>2001-08-11 16:01:54 +0200
commit78e2c6ccf16b41bc19a4cd69f959c8ae47e68b9d (patch)
tree447e98707f9a409d70d240fb6f302cd2518b6a09 /proto/ospf/ospf.c
parent5fc7c5c51344a8cc1fae2cc9077c2c331c1e419a (diff)
downloadbird-78e2c6ccf16b41bc19a4cd69f959c8ae47e68b9d.tar
bird-78e2c6ccf16b41bc19a4cd69f959c8ae47e68b9d.zip
I will not originate the same lsa before MINLSINTERVAL.
Diffstat (limited to 'proto/ospf/ospf.c')
-rw-r--r--proto/ospf/ospf.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c
index 151187f..8447e69 100644
--- a/proto/ospf/ospf.c
+++ b/proto/ospf/ospf.c
@@ -265,7 +265,8 @@ schedule_rtcalc(struct ospf_area *oa)
* @timer: it's called every @ospf_area->tick seconds
*
* It ivokes aging and when @ospf_area->origrt is set to 1, start
- * function for origination of router LSA. It also start routing
+ * function for origination of router LSA and network LSA's.
+ * It also start routing
* table calculation when @ospf_area->calcrt is set.
*/
void
@@ -273,13 +274,20 @@ area_disp(timer *timer)
{
struct ospf_area *oa=timer->data;
struct top_hash_entry *en,*nxt;
+ struct proto_ospf *po=oa->po;
+ struct ospf_iface *ifa;
/* First of all try to age LSA DB */
ospf_age(oa);
/* Now try to originage rt_lsa */
if(oa->origrt) originate_rt_lsa(oa);
- oa->origrt=0;
+
+ /* Now try to originate network LSA's */
+ WALK_LIST(ifa, po->iface_list)
+ {
+ if(ifa->orignet&&(ifa->an==oa->areaid)) originate_net_lsa(ifa);
+ }
if(oa->calcrt) ospf_rt_spfa(oa);
oa->calcrt=0;