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); |