#ifndef OSPF6_SPF_H
#define OSPF6_SPF_H
+#include "typesafe.h"
#include "ospf6_top.h"
/* Debug option */
#define IS_OSPF6_DEBUG_SPF(level) \
(conf_debug_ospf6_spf & OSPF6_DEBUG_SPF_##level)
+PREDECL_SKIPLIST_NONUNIQ(vertex_pqueue)
/* Transit Vertex */
struct ospf6_vertex {
/* type of this vertex */
- u_int8_t type;
+ uint8_t type;
/* Vertex Identifier */
struct prefix vertex_id;
+ struct vertex_pqueue_item pqi;
+
/* Identifier String */
char name[128];
struct ospf6_lsa *lsa;
/* Distance from Root (i.e. Cost) */
- u_int32_t cost;
+ uint32_t cost;
/* Router hops to this node */
- u_char hops;
+ uint8_t hops;
/* capability bits */
- u_char capability;
+ uint8_t capability;
/* Optional capabilities */
- u_char options[3];
+ uint8_t options[3];
/* For tree display */
struct ospf6_vertex *parent;
}
extern void ospf6_spf_table_finish(struct ospf6_route_table *result_table);
-extern void ospf6_spf_calculation(u_int32_t router_id,
+extern void ospf6_spf_calculation(uint32_t router_id,
struct ospf6_route_table *result_table,
struct ospf6_area *oa);
extern void ospf6_spf_schedule(struct ospf6 *ospf, unsigned int reason);
extern void install_element_ospf6_debug_spf(void);
extern void ospf6_spf_init(void);
extern void ospf6_spf_reason_string(unsigned int reason, char *buf, int size);
+extern struct ospf6_lsa *ospf6_create_single_router_lsa(struct ospf6_area *area,
+ struct ospf6_lsdb *lsdb,
+ uint32_t adv_router);
+extern void ospf6_remove_temp_router_lsa(struct ospf6_area *area);
#endif /* OSPF6_SPF_H */