version 1.1.1.1, 2012/02/21 17:26:12
|
version 1.1.1.2, 2016/11/02 10:09:11
|
Line 22
|
Line 22
|
#ifndef OSPF6_SPF_H |
#ifndef OSPF6_SPF_H |
#define OSPF6_SPF_H |
#define OSPF6_SPF_H |
|
|
|
#include "ospf6_top.h" |
|
|
/* Debug option */ |
/* Debug option */ |
extern unsigned char conf_debug_ospf6_spf; |
extern unsigned char conf_debug_ospf6_spf; |
#define OSPF6_DEBUG_SPF_PROCESS 0x01 |
#define OSPF6_DEBUG_SPF_PROCESS 0x01 |
Line 77 struct ospf6_vertex
|
Line 79 struct ospf6_vertex
|
#define VERTEX_IS_TYPE(t, v) \ |
#define VERTEX_IS_TYPE(t, v) \ |
((v)->type == OSPF6_VERTEX_TYPE_ ## t ? 1 : 0) |
((v)->type == OSPF6_VERTEX_TYPE_ ## t ? 1 : 0) |
|
|
|
/* What triggered the SPF? */ |
|
#define OSPF6_SPF_FLAGS_ROUTER_LSA_ADDED (1 << 0) |
|
#define OSPF6_SPF_FLAGS_ROUTER_LSA_REMOVED (1 << 1) |
|
#define OSPF6_SPF_FLAGS_NETWORK_LSA_ADDED (1 << 2) |
|
#define OSPF6_SPF_FLAGS_NETWORK_LSA_REMOVED (1 << 3) |
|
#define OSPF6_SPF_FLAGS_LINK_LSA_ADDED (1 << 4) |
|
#define OSPF6_SPF_FLAGS_LINK_LSA_REMOVED (1 << 5) |
|
#define OSPF6_SPF_FLAGS_ROUTER_LSA_ORIGINATED (1 << 6) |
|
#define OSPF6_SPF_FLAGS_NETWORK_LSA_ORIGINATED (1 << 7) |
|
|
|
static inline void |
|
ospf6_set_spf_reason (struct ospf6* ospf, unsigned int reason) |
|
{ |
|
ospf->spf_reason |= reason; |
|
} |
|
|
|
static inline void |
|
ospf6_reset_spf_reason (struct ospf6 *ospf) |
|
{ |
|
ospf->spf_reason = 0; |
|
} |
|
|
|
static inline unsigned int |
|
ospf6_lsadd_to_spf_reason (struct ospf6_lsa *lsa) |
|
{ |
|
unsigned int reason = 0; |
|
|
|
switch (ntohs (lsa->header->type)) |
|
{ |
|
case OSPF6_LSTYPE_ROUTER: |
|
reason = OSPF6_SPF_FLAGS_ROUTER_LSA_ADDED; |
|
break; |
|
case OSPF6_LSTYPE_NETWORK: |
|
reason = OSPF6_SPF_FLAGS_NETWORK_LSA_ADDED; |
|
break; |
|
case OSPF6_LSTYPE_LINK: |
|
reason = OSPF6_SPF_FLAGS_LINK_LSA_ADDED; |
|
break; |
|
default: |
|
break; |
|
} |
|
return (reason); |
|
} |
|
|
|
static inline unsigned int |
|
ospf6_lsremove_to_spf_reason (struct ospf6_lsa *lsa) |
|
{ |
|
unsigned int reason = 0; |
|
|
|
switch (ntohs (lsa->header->type)) |
|
{ |
|
case OSPF6_LSTYPE_ROUTER: |
|
reason = OSPF6_SPF_FLAGS_ROUTER_LSA_REMOVED; |
|
break; |
|
case OSPF6_LSTYPE_NETWORK: |
|
reason = OSPF6_SPF_FLAGS_NETWORK_LSA_REMOVED; |
|
break; |
|
case OSPF6_LSTYPE_LINK: |
|
reason = OSPF6_SPF_FLAGS_LINK_LSA_REMOVED; |
|
break; |
|
default: |
|
break; |
|
} |
|
return (reason); |
|
} |
|
|
extern void ospf6_spf_table_finish (struct ospf6_route_table *result_table); |
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 (u_int32_t router_id, |
struct ospf6_route_table *result_table, |
struct ospf6_route_table *result_table, |
struct ospf6_area *oa); |
struct ospf6_area *oa); |
extern void ospf6_spf_schedule (struct ospf6_area *oa); | extern void ospf6_spf_schedule (struct ospf6 *ospf, unsigned int reason); |
|
|
extern void ospf6_spf_display_subtree (struct vty *vty, const char *prefix, |
extern void ospf6_spf_display_subtree (struct vty *vty, const char *prefix, |
int rest, struct ospf6_vertex *v); |
int rest, struct ospf6_vertex *v); |
|
|
|
extern void ospf6_spf_config_write (struct vty *vty); |
extern int config_write_ospf6_debug_spf (struct vty *vty); |
extern int config_write_ospf6_debug_spf (struct vty *vty); |
extern void install_element_ospf6_debug_spf (void); |
extern void install_element_ospf6_debug_spf (void); |
extern void ospf6_spf_init (void); |
extern void ospf6_spf_init (void); |
|
extern void ospf6_spf_reason_string (unsigned int reason, char *buf, int size); |
|
|
#endif /* OSPF6_SPF_H */ |
#endif /* OSPF6_SPF_H */ |
|
|