/* ospf_neighbor.h: Header file for ospf_neighbor sub-package. */

/* Prevent multiple includes. */
#ifndef		HEADER_FILE_ospf_neighbor_h

#define		HEADER_FILE_ospf_neighbor_h

/***** Procdecs *****/
OspfT_Neighbor *				ospf_neighbor_alloc (void);
OspfT_Neighbor_Invoke_Info *	ospf_neighbor_invoke_info_create (void);
OspfT_Neighbor *				ospf_neighbor_create (IpT_Address neighbor_addr, OspfT_Neighbor_Event neighbor_event, Objid 	                               interface_objid, int router_priority, OspfT_Interface *parent_interface_ptr);
void							ospf_neighbor_destroy (OspfT_Neighbor *neighbor_ptr, OspfT_Neighbor_Event neighbor_event);
void							ospf_neighbor_static_list_create (List *neighbor_list_ptr, Objid neighbor_list_objid, Objid                                    interface_objid, OspfT_Interface *parent_interface_ptr);
void							ospf_neighbor_list_summary_print (List *neighbor_list_ptr);
void							ospf_neighbor_message_send (OspfT_Neighbor *neighbor_ptr, Packet *message_ptr, Boolean rxmt_message);
void							ospf_neighbor_message_rxmt (OspfT_Neighbor *neighbor_ptr, int intrpt_code);
void							ospf_neighbor_ls_list_clear (List *nbr_list_ptr);
int								ospf_neighbor_list_num_states_match (List *nbr_list_ptr, OspfT_Neighbor_State nbr_state);
OspfT_Neighbor_State			ospf_neighbor_state_get (OspfT_Neighbor *neighbor_ptr, char *neighbor_state_str);
void							ospf_neighbor_state_str_get (OspfT_Neighbor_State nbr_state, char *neighbor_state_str);
Boolean							ospf_neighbor_master_status_get (OspfT_Neighbor *neighbor_ptr);
int								ospf_neighbor_seq_num_get (OspfT_Neighbor *neighbor_ptr);
OspfT_Router_Id					ospf_neighbor_dr_get (OspfT_Neighbor *neighbor_ptr);
void							ospf_neighbor_dr_set (OspfT_Neighbor *neighbor_ptr, OspfT_Router_Id new_dr);
OspfT_Router_Id					ospf_neighbor_backup_dr_get (OspfT_Neighbor *neighbor_ptr);
void							ospf_neighbor_backup_dr_set (OspfT_Neighbor *neighbor_ptr, OspfT_Router_Id new_backup_dr);
List *							ospf_neighbor_ls_transmit_list_get (OspfT_Neighbor *neighbor_ptr);
List *							ospf_neighbor_dbase_summary_list_get (OspfT_Neighbor *neighbor_ptr);
List *							ospf_neighbor_ls_request_list_get (OspfT_Neighbor *neighbor_ptr);
OspfT_Router_Id					ospf_neighbor_router_id_get (OspfT_Neighbor *neighbor_ptr);
void							ospf_neighbor_router_id_set (OspfT_Neighbor *neighbor_ptr, OspfT_Router_Id new_id);
void							ospf_neighbor_event_str_get (OspfT_Neighbor_Event neighbor_event, char *event_str);
void							ospf_neighbor_invoke (OspfT_Neighbor *neighbor_ptr, OspfT_Neighbor_Event neighbor_event);
int								ospf_neighbor_priority_get (OspfT_Neighbor *neighbor_ptr);
void							ospf_neighbor_priority_set (OspfT_Neighbor *neighbor_ptr, int new_prio);
Boolean							ospf_neighbor_master_status_get (OspfT_Neighbor *neighbor_ptr);
void							ospf_neighbor_master_status_set (OspfT_Neighbor *neighbor_ptr, Boolean new_status);
int								ospf_neighbor_seq_num_get (OspfT_Neighbor *neighbor_ptr);
void							ospf_neighbor_seq_num_set (OspfT_Neighbor *neighbor_ptr, int new_seq_num);
Boolean							ospf_neighbor_adj_eval (OspfT_Neighbor *neighbor_ptr);
void							ospf_neighbor_undef_handler (OspfT_Neighbor *neighbor_ptr, OspfT_Neighbor_Event neighbor_event);
void							ospf_neighbor_process_invoke (OspfT_Neighbor *neighbor_ptr, OspfT_Neighbor_Event neighbor_event);
void							ospf_neighbor_inactive_reset (OspfT_Neighbor *neighbor_ptr, OspfT_Neighbor_Event neighbor_event);
void							ospf_neighbor_adj_reform (OspfT_Neighbor *neighbor_ptr, OspfT_Neighbor_Event neighbor_event);
void							ospf_neighbor_inactive_timer_expire (OspfT_Neighbor *neighbor_ptr, int intrpt_code);
void							ospf_neighbor_event_suppress (OspfT_Neighbor *neighbor_ptr, OspfT_Neighbor_Event neighbor_event);
void 							ospf_neighbor_lsa_rxmt (OspfT_Neighbor *neighbor_ptr, int intrpt_code);
int								ospf_neighbor_lsa_sort (OspfT_Lsa *lsa1_ptr, OspfT_Lsa *lsa2_ptr);
void							ospf_neighbor_lsa_rxmt_add (OspfT_Neighbor *neighbor_ptr, OspfT_Lsa *lsa_ptr);
void							ospf_neighbor_lsa_rxmt_remove (OspfT_Neighbor *nbr_ptr, OspfT_Lsa *lsa_ptr);
Boolean							ospf_neighbor_router_dbase_exchange_check (OspfT_Router *router_ptr);

#endif
