/* ip3_rte_table.h: Header file for ip3_rte_sup.ex.c.  Contains */
/* definitions for static routing tables.                       */

/***** Typedefs *****/
typedef struct
	{
	IpT_Address_Range *	addr_range_ptr;
	IpT_Address			next_addr;
	} IpT_Rte_Table_Entry;

typedef List *		IpT_Rte_Table;

/***** Constants *****/
#define IPC_RTE_TABLE_INVALID		OPC_NIL
#define IPC_RTE_TABLE_ADDR_AUTO		"0.0.0.0"

/***** Procedure Declarations ******/
IpT_Rte_Table			ip_rte_table_create (void);
void					ip_rte_table_destroy (IpT_Rte_Table rte_table);
IpT_Rte_Table_Entry *	ip_rte_table_entry_create (void);
void					ip_rte_table_entry_add (IpT_Rte_Table rte_table, IpT_Address_Range *addr_range_ptr, 
	                        IpT_Address next_addr);
void					ip_rte_table_entry_destroy (IpT_Rte_Table_Entry *entry_ptr);
int						ip_rte_table_size (IpT_Rte_Table rte_table);
IpT_Rte_Table_Entry *	ip_rte_table_entry_get (IpT_Rte_Table rte_table, int index);
void					ip_rte_table_print (IpT_Rte_Table rte_table);
Compcode				ip_rte_table_route_select (int fast_addr, IpT_Rte_Table rte_table, IpT_Address dest_addr,
	                        IpT_Address *next_addr_ptr);
IpT_Rte_Table			ip_rte_table_parse (Objid table_objid);

