|
version 1.1.1.1, 2012/02/21 17:26:11
|
version 1.1.1.3, 2016/11/02 10:09:10
|
|
Line 24
|
Line 24
|
| #ifndef _ZEBRA_ISIS_LSP_H |
#ifndef _ZEBRA_ISIS_LSP_H |
| #define _ZEBRA_ISIS_LSP_H |
#define _ZEBRA_ISIS_LSP_H |
| |
|
| /* The grand plan is to support 1024 circuits so we have 32*32 bit flags |
|
| * the support will be achived using the newest drafts */ |
|
| #define ISIS_MAX_CIRCUITS 32 /* = 1024 - FIXME:defined in flags.h as well */ |
|
| |
|
| /* Structure for isis_lsp, this structure will only support the fixed |
/* Structure for isis_lsp, this structure will only support the fixed |
| * System ID (Currently 6) (atleast for now). In order to support more |
* System ID (Currently 6) (atleast for now). In order to support more |
| * We will have to split the header into two parts, and for readability |
* We will have to split the header into two parts, and for readability |
|
Line 42 struct isis_lsp
|
Line 38 struct isis_lsp
|
| struct list *frags; |
struct list *frags; |
| struct isis_lsp *zero_lsp; |
struct isis_lsp *zero_lsp; |
| } lspu; |
} lspu; |
| |
u_int32_t auth_tlv_offset; /* authentication TLV position in the pdu */ |
| u_int32_t SRMflags[ISIS_MAX_CIRCUITS]; |
u_int32_t SRMflags[ISIS_MAX_CIRCUITS]; |
| u_int32_t SSNflags[ISIS_MAX_CIRCUITS]; |
u_int32_t SSNflags[ISIS_MAX_CIRCUITS]; |
| u_int32_t rexmit_queue[ISIS_MAX_CIRCUITS]; |
|
| int level; /* L1 or L2? */ |
int level; /* L1 or L2? */ |
| int purged; /* have purged this one */ |
|
| int scheduled; /* scheduled for sending */ |
int scheduled; /* scheduled for sending */ |
| time_t installed; |
time_t installed; |
| time_t last_generated; |
time_t last_generated; |
| time_t last_sent; |
|
| int own_lsp; |
int own_lsp; |
| #ifdef TOPOLOGY_GENERATE |
#ifdef TOPOLOGY_GENERATE |
| int from_topology; |
int from_topology; |
|
Line 58 struct isis_lsp
|
Line 52 struct isis_lsp
|
| #endif |
#endif |
| /* used for 60 second counting when rem_lifetime is zero */ |
/* used for 60 second counting when rem_lifetime is zero */ |
| int age_out; |
int age_out; |
| struct isis_adjacency *adj; |
|
| /* FIXME: For now only topology LSP's use this. Is it helpful for others? */ |
|
| struct isis_area *area; |
struct isis_area *area; |
| struct tlvs tlv_data; /* Simplifies TLV access */ |
struct tlvs tlv_data; /* Simplifies TLV access */ |
| }; |
}; |
|
Line 68 dict_t *lsp_db_init (void);
|
Line 60 dict_t *lsp_db_init (void);
|
| void lsp_db_destroy (dict_t * lspdb); |
void lsp_db_destroy (dict_t * lspdb); |
| int lsp_tick (struct thread *thread); |
int lsp_tick (struct thread *thread); |
| |
|
| int lsp_l1_generate (struct isis_area *area); | int lsp_generate (struct isis_area *area, int level); |
| int lsp_l2_generate (struct isis_area *area); | int lsp_regenerate_schedule (struct isis_area *area, int level, |
| int lsp_refresh_l1 (struct thread *thread); | int all_pseudo); |
| int lsp_refresh_l2 (struct thread *thread); | int lsp_generate_pseudo (struct isis_circuit *circuit, int level); |
| int lsp_regenerate_schedule (struct isis_area *area); | int lsp_regenerate_schedule_pseudo (struct isis_circuit *circuit, int level); |
| |
|
| int lsp_l1_pseudo_generate (struct isis_circuit *circuit); | struct isis_lsp *lsp_new (struct isis_area *area, u_char * lsp_id, |
| int lsp_l2_pseudo_generate (struct isis_circuit *circuit); | u_int16_t rem_lifetime, |
| int lsp_l1_refresh_pseudo (struct thread *thread); | |
| int lsp_l2_refresh_pseudo (struct thread *thread); | |
| int isis_lsp_authinfo_check (struct stream *stream, struct isis_area *area, | |
| int pdulen, struct isis_passwd *passwd); | |
| struct isis_lsp *lsp_new (u_char * lsp_id, u_int16_t rem_lifetime, | |
| u_int32_t seq_num, u_int8_t lsp_bits, |
u_int32_t seq_num, u_int8_t lsp_bits, |
| u_int16_t checksum, int level); |
u_int16_t checksum, int level); |
| struct isis_lsp *lsp_new_from_stream_ptr (struct stream *stream, |
struct isis_lsp *lsp_new_from_stream_ptr (struct stream *stream, |
| u_int16_t pdu_len, |
u_int16_t pdu_len, |
| struct isis_lsp *lsp0, |
struct isis_lsp *lsp0, |
| struct isis_area *area); | struct isis_area *area, |
| | int level); |
| void lsp_insert (struct isis_lsp *lsp, dict_t * lspdb); |
void lsp_insert (struct isis_lsp *lsp, dict_t * lspdb); |
| struct isis_lsp *lsp_search (u_char * id, dict_t * lspdb); |
struct isis_lsp *lsp_search (u_char * id, dict_t * lspdb); |
| |
|
| void lsp_build_list (u_char * start_id, u_char * stop_id, | void lsp_build_list (u_char * start_id, u_char * stop_id, u_char num_lsps, |
| struct list *list, dict_t * lspdb); |
struct list *list, dict_t * lspdb); |
| void lsp_build_list_nonzero_ht (u_char * start_id, u_char * stop_id, |
void lsp_build_list_nonzero_ht (u_char * start_id, u_char * stop_id, |
| struct list *list, dict_t * lspdb); |
struct list *list, dict_t * lspdb); |
| void lsp_build_list_ssn (struct isis_circuit *circuit, struct list *list, | void lsp_build_list_ssn (struct isis_circuit *circuit, u_char num_lsps, |
| dict_t * lspdb); | struct list *list, dict_t * lspdb); |
| |
|
| void lsp_search_and_destroy (u_char * id, dict_t * lspdb); |
void lsp_search_and_destroy (u_char * id, dict_t * lspdb); |
| void lsp_purge_dr (u_char * id, struct isis_circuit *circuit, int level); | void lsp_purge_pseudo (u_char * id, struct isis_circuit *circuit, int level); |
| void lsp_purge_non_exist (struct isis_link_state_hdr *lsp_hdr, | void lsp_purge_non_exist (int level, |
| | struct isis_link_state_hdr *lsp_hdr, |
| struct isis_area *area); |
struct isis_area *area); |
| |
|
| #define LSP_EQUAL 1 |
#define LSP_EQUAL 1 |
|
Line 115 void lsp_purge_non_exist (struct isis_link_state_hdr *
|
Line 104 void lsp_purge_non_exist (struct isis_link_state_hdr *
|
| int lsp_id_cmp (u_char * id1, u_char * id2); |
int lsp_id_cmp (u_char * id1, u_char * id2); |
| int lsp_compare (char *areatag, struct isis_lsp *lsp, u_int32_t seq_num, |
int lsp_compare (char *areatag, struct isis_lsp *lsp, u_int32_t seq_num, |
| u_int16_t checksum, u_int16_t rem_lifetime); |
u_int16_t checksum, u_int16_t rem_lifetime); |
| void lsp_update (struct isis_lsp *lsp, struct isis_link_state_hdr *lsp_hdr, | void lsp_update (struct isis_lsp *lsp, struct stream *stream, |
| struct stream *stream, struct isis_area *area, int level); | struct isis_area *area, int level); |
| void lsp_inc_seqnum (struct isis_lsp *lsp, u_int32_t seq_num); |
void lsp_inc_seqnum (struct isis_lsp *lsp, u_int32_t seq_num); |
| |
void lsp_print (struct isis_lsp *lsp, struct vty *vty, char dynhost); |
| |
void lsp_print_detail (struct isis_lsp *lsp, struct vty *vty, char dynhost); |
| int lsp_print_all (struct vty *vty, dict_t * lspdb, char detail, |
int lsp_print_all (struct vty *vty, dict_t * lspdb, char detail, |
| char dynhost); |
char dynhost); |
| const char *lsp_bits2string (u_char *); |
const char *lsp_bits2string (u_char *); |
| |
|
| |
/* sets SRMflags for all active circuits of an lsp */ |
| |
void lsp_set_all_srmflags (struct isis_lsp *lsp); |
| |
|
| #ifdef TOPOLOGY_GENERATE |
#ifdef TOPOLOGY_GENERATE |
| void generate_topology_lsps (struct isis_area *area); |
void generate_topology_lsps (struct isis_area *area); |