X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ospf6d%2Fospf6_lsdb.h;h=3b32e3ecf6d7138300ab8dc31d681e50cf2286a2;hb=7f1ace03c78ca57c7f8b5df5796c66fddb47e5fe;hp=866868080aa6d8ad678bfa34cf799b9ef3780486;hpb=a6e895a9df5972f03e528f2c4a02c3cd338799f8;p=mirror_frr.git diff --git a/ospf6d/ospf6_lsdb.h b/ospf6d/ospf6_lsdb.h index 866868080..3b32e3ecf 100644 --- a/ospf6d/ospf6_lsdb.h +++ b/ospf6d/ospf6_lsdb.h @@ -25,64 +25,72 @@ #include "table.h" #include "ospf6_route.h" -struct ospf6_lsdb -{ - void *data; /* data structure that holds this lsdb */ - struct route_table *table; - u_int32_t count; - void (*hook_add) (struct ospf6_lsa *); - void (*hook_remove) (struct ospf6_lsa *); +struct ospf6_lsdb { + void *data; /* data structure that holds this lsdb */ + struct route_table *table; + uint32_t count; + void (*hook_add)(struct ospf6_lsa *); + void (*hook_remove)(struct ospf6_lsa *); }; /* Function Prototypes */ -extern struct ospf6_lsdb *ospf6_lsdb_create (void *data); -extern void ospf6_lsdb_delete (struct ospf6_lsdb *lsdb); +extern struct ospf6_lsdb *ospf6_lsdb_create(void *data); +extern void ospf6_lsdb_delete(struct ospf6_lsdb *lsdb); -extern struct ospf6_lsa *ospf6_lsdb_lookup (u_int16_t type, u_int32_t id, - u_int32_t adv_router, - struct ospf6_lsdb *lsdb); -extern struct ospf6_lsa *ospf6_lsdb_lookup_next (u_int16_t type, u_int32_t id, - u_int32_t adv_router, - struct ospf6_lsdb *lsdb); +extern struct ospf6_lsa *ospf6_lsdb_lookup(uint16_t type, uint32_t id, + uint32_t adv_router, + struct ospf6_lsdb *lsdb); +extern struct ospf6_lsa *ospf6_lsdb_lookup_next(uint16_t type, uint32_t id, + uint32_t adv_router, + struct ospf6_lsdb *lsdb); -extern void ospf6_lsdb_add (struct ospf6_lsa *lsa, struct ospf6_lsdb *lsdb); -extern void ospf6_lsdb_remove (struct ospf6_lsa *lsa, struct ospf6_lsdb *lsdb); +extern void ospf6_lsdb_add(struct ospf6_lsa *lsa, struct ospf6_lsdb *lsdb); +extern void ospf6_lsdb_remove(struct ospf6_lsa *lsa, struct ospf6_lsdb *lsdb); -extern struct ospf6_lsa *ospf6_lsdb_head (struct ospf6_lsdb *lsdb); -extern struct ospf6_lsa *ospf6_lsdb_next (struct ospf6_lsa *lsa); +extern const struct route_node *ospf6_lsdb_head(struct ospf6_lsdb *lsdb, + int argmode, uint16_t type, + uint32_t adv_router, + struct ospf6_lsa **lsa); +extern struct ospf6_lsa *ospf6_lsdb_next(const struct route_node *iterend, + struct ospf6_lsa *lsa); -extern struct ospf6_lsa *ospf6_lsdb_type_router_head (u_int16_t type, - u_int32_t adv_router, - struct ospf6_lsdb *lsdb); -extern struct ospf6_lsa *ospf6_lsdb_type_router_next (u_int16_t type, - u_int32_t adv_router, - struct ospf6_lsa *lsa); +#define ALL_LSDB_TYPED_ADVRTR(lsdb, type, adv_router, lsa) \ + const struct route_node *iterend = \ + ospf6_lsdb_head(lsdb, 2, type, adv_router, &lsa); \ + lsa; \ + lsa = ospf6_lsdb_next(iterend, lsa) -extern struct ospf6_lsa *ospf6_lsdb_type_head (u_int16_t type, - struct ospf6_lsdb *lsdb); -extern struct ospf6_lsa *ospf6_lsdb_type_next (u_int16_t type, - struct ospf6_lsa *lsa); +#define ALL_LSDB_TYPED(lsdb, type, lsa) \ + const struct route_node *iterend = \ + ospf6_lsdb_head(lsdb, 1, type, 0, &lsa); \ + lsa; \ + lsa = ospf6_lsdb_next(iterend, lsa) -extern void ospf6_lsdb_remove_all (struct ospf6_lsdb *lsdb); -extern void ospf6_lsdb_lsa_unlock (struct ospf6_lsa *lsa); +#define ALL_LSDB(lsdb, lsa) \ + const struct route_node *iterend = \ + ospf6_lsdb_head(lsdb, 0, 0, 0, &lsa); \ + lsa; \ + lsa = ospf6_lsdb_next(iterend, lsa) + +extern void ospf6_lsdb_remove_all(struct ospf6_lsdb *lsdb); +extern void ospf6_lsdb_lsa_unlock(struct ospf6_lsa *lsa); enum ospf_lsdb_show_level { - OSPF6_LSDB_SHOW_LEVEL_NORMAL = 0, - OSPF6_LSDB_SHOW_LEVEL_DETAIL, - OSPF6_LSDB_SHOW_LEVEL_INTERNAL, - OSPF6_LSDB_SHOW_LEVEL_DUMP, + OSPF6_LSDB_SHOW_LEVEL_NORMAL = 0, + OSPF6_LSDB_SHOW_LEVEL_DETAIL, + OSPF6_LSDB_SHOW_LEVEL_INTERNAL, + OSPF6_LSDB_SHOW_LEVEL_DUMP, }; -extern void ospf6_lsdb_show (struct vty *vty, - enum ospf_lsdb_show_level level, u_int16_t *type, - u_int32_t *id, u_int32_t *adv_router, - struct ospf6_lsdb *lsdb); +extern void ospf6_lsdb_show(struct vty *vty, enum ospf_lsdb_show_level level, + uint16_t *type, uint32_t *id, uint32_t *adv_router, + struct ospf6_lsdb *lsdb); -extern u_int32_t ospf6_new_ls_id (u_int16_t type, u_int32_t adv_router, - struct ospf6_lsdb *lsdb); -extern u_int32_t ospf6_new_ls_seqnum (u_int16_t type, u_int32_t id, - u_int32_t adv_router, - struct ospf6_lsdb *lsdb); -extern int ospf6_lsdb_maxage_remover (struct ospf6_lsdb *lsdb); +extern uint32_t ospf6_new_ls_id(uint16_t type, uint32_t adv_router, + struct ospf6_lsdb *lsdb); +extern uint32_t ospf6_new_ls_seqnum(uint16_t type, uint32_t id, + uint32_t adv_router, + struct ospf6_lsdb *lsdb); +extern int ospf6_lsdb_maxage_remover(struct ospf6_lsdb *lsdb); #endif /* OSPF6_LSDB_H */