summaryrefslogtreecommitdiff
path: root/proto/ospf/topology.h
diff options
context:
space:
mode:
authorOndrej Filip <feela@network.cz>2004-07-15 16:37:52 +0000
committerOndrej Filip <feela@network.cz>2004-07-15 16:37:52 +0000
commit86c84d76b706e77ec5977a3c9e300b0fca9f6b10 (patch)
tree77663b13c8f4741893df9d4334c032c848820c46 /proto/ospf/topology.h
parent777acf91bb0d8ca0f33f367ae5fa00f46dde5a9a (diff)
Huge OSPF database redesign. Since now, all LSAs of all areas
are in single database. This avoids duplication of external LSAs and fixes bug in external LSA distribution.
Diffstat (limited to 'proto/ospf/topology.h')
-rw-r--r--proto/ospf/topology.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/proto/ospf/topology.h b/proto/ospf/topology.h
index c6031c5e..bccff056 100644
--- a/proto/ospf/topology.h
+++ b/proto/ospf/topology.h
@@ -18,6 +18,7 @@ struct top_hash_entry
*/
struct top_hash_entry *next; /* Next in hash chain */
struct ospf_lsa_header lsa;
+ struct ospf_area *oa;
void *lsa_body;
bird_clock_t inst_t; /* Time of installation into DB */
ip_addr nh; /* Next hop */
@@ -47,18 +48,18 @@ struct top_graph
struct top_graph *ospf_top_new(pool *);
void ospf_top_free(struct top_graph *);
void ospf_top_dump(struct top_graph *, struct proto *);
-struct top_hash_entry *ospf_hash_find_header(struct top_graph *f,
+struct top_hash_entry *ospf_hash_find_header(struct top_graph *f, u32 areaid,
struct ospf_lsa_header *h);
-struct top_hash_entry *ospf_hash_get_header(struct top_graph *f,
+struct top_hash_entry *ospf_hash_get_header(struct top_graph *f, struct ospf_area *oa,
struct ospf_lsa_header *h);
-struct top_hash_entry *ospf_hash_find(struct top_graph *, u32 lsa, u32 rtr,
+struct top_hash_entry *ospf_hash_find(struct top_graph *, u32 areaid, u32 lsa, u32 rtr,
u32 type);
-struct top_hash_entry *ospf_hash_get(struct top_graph *, u32 lsa, u32 rtr,
+struct top_hash_entry *ospf_hash_get(struct top_graph *, struct ospf_area *oa, u32 lsa, u32 rtr,
u32 type);
void ospf_hash_delete(struct top_graph *, struct top_hash_entry *);
void originate_rt_lsa(struct ospf_area *oa);
void originate_net_lsa(struct ospf_iface *ifa);
-int can_flush_lsa(struct ospf_area *oa);
+int can_flush_lsa(struct proto_ospf *po);
int max_ext_lsa(unsigned pxlen);
void originate_ext_lsa(net * n, rte * e, struct proto_ospf *po,
struct ea_list *attrs);