/* ospf_area.h: Data type defintions and constants for OSPF areas. */

/* Prevent multiple includes */
#ifndef			HEADER_FILE_ospf_area_h

#define			HEADER_FILE_ospf_area_h

/***** Procedure Declarations *****/
OspfT_Area *					ospf_area_create (void);
OspfT_Area_Range *				ospf_area_range_create (void);
List *							ospf_area_list_get (OspfT_Router *router_ptr);
OspfT_Area *					ospf_area_backbone_get (OspfT_Router *router_ptr);
Boolean							ospf_area_border_router_check (OspfT_Router *router_ptr);
void							ospf_area_list_summary_print (List *area_list_ptr);
void							ospf_area_interfaces_print (OspfT_Area *area_ptr);
void							ospf_area_list_interfaces_print (List *area_list_ptr, Boolean detailed);
OspfT_Area *					ospf_area_lookup (List *area_list_ptr, OspfT_Area_Id area_id);
void							ospf_area_lsa_install (OspfT_Area *area_ptr, OspfT_Lsa *lsa_ptr);
List *							ospf_area_summary_lsa_generate (List *area_list_ptr, OspfT_Area_Id exclude_area_id, OspfT_Router_Id router_id);
Boolean							ospf_area_flood (OspfT_Area *area_ptr, OspfT_Lsa *lsa_ptr, OspfT_Neighbor *rcvd_nbr_ptr, Boolean self_orig);
void							ospf_area_router_links_lsa_regenerate (OspfT_Area *area_ptr, int intrpt_code);
void							ospf_area_router_links_originate (OspfT_Area *area_ptr);
OspfT_Lsa *						ospf_area_router_links_lsa_create (OspfT_Area *area_ptr, Boolean override_timer_check);
void							ospf_area_list_lsa_print (List *area_list_ptr);
void							ospf_area_lsa_print (OspfT_Area *area_ptr);
void							ospf_area_list_config_print (List *area_list_ptr);
void							ospf_area_config_print (OspfT_Area *area_ptr);

#endif
