--- embedaddon/quagga/isisd/isis_lsp.h 2012/02/21 17:26:11 1.1.1.1 +++ embedaddon/quagga/isisd/isis_lsp.h 2012/10/09 09:22:28 1.1.1.2 @@ -24,10 +24,6 @@ #ifndef _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 * 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 @@ -42,15 +38,13 @@ struct isis_lsp struct list *frags; struct isis_lsp *zero_lsp; } lspu; + u_int32_t auth_tlv_offset; /* authentication TLV position in the pdu */ u_int32_t SRMflags[ISIS_MAX_CIRCUITS]; u_int32_t SSNflags[ISIS_MAX_CIRCUITS]; - u_int32_t rexmit_queue[ISIS_MAX_CIRCUITS]; int level; /* L1 or L2? */ - int purged; /* have purged this one */ int scheduled; /* scheduled for sending */ time_t installed; time_t last_generated; - time_t last_sent; int own_lsp; #ifdef TOPOLOGY_GENERATE int from_topology; @@ -58,8 +52,6 @@ struct isis_lsp #endif /* used for 60 second counting when rem_lifetime is zero */ 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 tlvs tlv_data; /* Simplifies TLV access */ }; @@ -68,37 +60,32 @@ dict_t *lsp_db_init (void); void lsp_db_destroy (dict_t * lspdb); int lsp_tick (struct thread *thread); -int lsp_l1_generate (struct isis_area *area); -int lsp_l2_generate (struct isis_area *area); -int lsp_refresh_l1 (struct thread *thread); -int lsp_refresh_l2 (struct thread *thread); -int lsp_regenerate_schedule (struct isis_area *area); +int lsp_generate (struct isis_area *area, int level); +int lsp_regenerate_schedule (struct isis_area *area, int level, + int all_pseudo); +int lsp_generate_pseudo (struct isis_circuit *circuit, int level); +int lsp_regenerate_schedule_pseudo (struct isis_circuit *circuit, int level); -int lsp_l1_pseudo_generate (struct isis_circuit *circuit); -int lsp_l2_pseudo_generate (struct isis_circuit *circuit); -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_int16_t checksum, int level); struct isis_lsp *lsp_new_from_stream_ptr (struct stream *stream, u_int16_t pdu_len, struct isis_lsp *lsp0, - struct isis_area *area); + struct isis_area *area, + int level); void lsp_insert (struct isis_lsp *lsp, 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); void lsp_build_list_nonzero_ht (u_char * start_id, u_char * stop_id, struct list *list, dict_t * lspdb); -void lsp_build_list_ssn (struct isis_circuit *circuit, struct list *list, - dict_t * lspdb); +void lsp_build_list_ssn (struct isis_circuit *circuit, u_char num_lsps, + struct list *list, 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, struct isis_area *area); @@ -115,12 +102,17 @@ void lsp_purge_non_exist (struct isis_link_state_hdr * int lsp_id_cmp (u_char * id1, u_char * id2); int lsp_compare (char *areatag, struct isis_lsp *lsp, u_int32_t seq_num, u_int16_t checksum, u_int16_t rem_lifetime); -void lsp_update (struct isis_lsp *lsp, struct isis_link_state_hdr *lsp_hdr, - struct stream *stream, struct isis_area *area, int level); +void lsp_update (struct isis_lsp *lsp, struct stream *stream, + struct isis_area *area, int level); 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, char dynhost); 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 void generate_topology_lsps (struct isis_area *area);