diff options
Diffstat (limited to 'proto/ospf')
-rw-r--r-- | proto/ospf/topology.c | 8 | ||||
-rw-r--r-- | proto/ospf/topology.h | 1 |
2 files changed, 4 insertions, 5 deletions
diff --git a/proto/ospf/topology.c b/proto/ospf/topology.c index 15163f9..6bbc5e7 100644 --- a/proto/ospf/topology.c +++ b/proto/ospf/topology.c @@ -23,7 +23,7 @@ #define HASH_LO_STEP 2 #define HASH_LO_MIN 8 -void +unsigned int make_rt_lsa(struct ospf_area *oa, struct proto_ospf *p) { struct ospf_iface *ifa; @@ -147,17 +147,16 @@ make_rt_lsa(struct ospf_area *oa, struct proto_ospf *p) rt->links=i; if(old->lsa_body!=NULL) mb_free(old->lsa_body); old->lsa_body=rt; + return rt->links*sizeof(struct ospf_lsa_rt_link)+sizeof(struct ospf_lsa_rt); } - void addifa_rtlsa(struct ospf_iface *ifa) { struct ospf_area *oa; struct proto_ospf *po; u32 rtid; - struct top_hash_entry *rt; struct top_graph_rtlsa_link *li, *lih; po=ifa->proto; @@ -196,8 +195,7 @@ addifa_rtlsa(struct ospf_iface *ifa) DBG("%s: New OSPF area \"%d\" added.\n", po->proto.name, ifa->an); } - make_rt_lsa(oa, po); - /* FIXME length? */ + oa->rt->body_len=make_rt_lsa(oa, po); /*FIXME seq no++ */ /*FIXME lsa_flood(oa->rt) */ } diff --git a/proto/ospf/topology.h b/proto/ospf/topology.h index 9ebd0ed..3e45bbf 100644 --- a/proto/ospf/topology.h +++ b/proto/ospf/topology.h @@ -14,6 +14,7 @@ struct top_hash_entry { /* Index for fast mapping (type,rtrid,LSid)->vertex */ struct top_hash_entry *next; /* Next in hash chain */ struct ospf_lsa_header lsa; void *lsa_body; + unsigned int body_len; }; struct top_graph { |