summaryrefslogtreecommitdiffstats
path: root/proto/ospf/topology.c
diff options
context:
space:
mode:
authorOndrej Filip <feela@network.cz>2000-06-04 21:20:28 +0200
committerOndrej Filip <feela@network.cz>2000-06-04 21:20:28 +0200
commit67cc9135bfd515149ecca62f32026cd6e2a390b0 (patch)
tree1df4337448cbe848555a4f4078286e59fd789c79 /proto/ospf/topology.c
parentce8f0c083a5f46e001dff759e924910c415cfb48 (diff)
downloadbird-67cc9135bfd515149ecca62f32026cd6e2a390b0.tar
bird-67cc9135bfd515149ecca62f32026cd6e2a390b0.zip
Many bugs in ext lsa origination.
Diffstat (limited to 'proto/ospf/topology.c')
-rw-r--r--proto/ospf/topology.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/proto/ospf/topology.c b/proto/ospf/topology.c
index 5e33811..c834cf5 100644
--- a/proto/ospf/topology.c
+++ b/proto/ospf/topology.c
@@ -192,13 +192,10 @@ addifa_rtlsa(struct ospf_iface *ifa)
/* FIXME 16?? (Oh, sweet 16.... :-) */
po->areano++;
DBG("%s: New OSPF area \"%d\" added.\n", po->proto.name, ifa->an);
+ ifa->oa=oa;
+ schedule_rt_lsa(oa);
}
-
- ifa->oa=oa;
-
- originate_rt_lsa(oa);
- DBG("RT LSA: rt: %I, id: %I, type: %u\n",oa->rt->lsa.rt,oa->rt->lsa.id,oa->rt->lsa.type);
- flood_lsa(NULL,NULL,&oa->rt->lsa,po,NULL,oa,1);
+ else ifa->oa=oa;
}
void
@@ -353,7 +350,7 @@ originate_ext_lsa(net *n, rte *e, struct proto_ospf *po, struct ea_list *attrs)
u32 rtid=po->proto.cf->global->router_id;
struct top_hash_entry *en=NULL;
void *body=NULL;
- struct ospf_iface *ifa;
+ struct ospf_area *oa;
debug("%s: Originating Ext lsa for %I/%d.\n", po->proto.name, n->n.prefix,
n->n.pxlen);
@@ -367,12 +364,13 @@ originate_ext_lsa(net *n, rte *e, struct proto_ospf *po, struct ea_list *attrs)
lsa.length=sizeof(struct ospf_lsa_ext)+sizeof(struct ospf_lsa_ext_tos)+
sizeof(struct ospf_lsa_header);
lsasum_calculate(&lsa,body,po);
- WALK_LIST(ifa, po->iface_list)
+ WALK_LIST(oa, po->area_list)
{
- en=lsa_install_new(&lsa, body, ifa->oa, &po->proto);
+ en=lsa_install_new(&lsa, body, oa, &po->proto);
+ flood_lsa(NULL,NULL,&en->lsa,po,NULL,oa,1);
+ body=originate_ext_lsa_body(n, e, po, attrs);
}
- if(en==NULL) die("Some bug in Ext lsa generating\n");
- flood_lsa(NULL,NULL,&en->lsa,po,NULL,ifa->oa,1);
+ mb_free(body);
}