⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ip_rte_support.h

📁 dymo是基于多径累计的ADHOC路由算法优化,并在OPNET11.0上实现.
💻 H
📖 第 1 页 / 共 4 页
字号:
	Stathandle							global_tunnel_traffic_overhead_bits_shndl;	
	Stathandle							global_tunnel_traffic_overhead_ratio_shndl;	
	} IpT_Mipv6_Info;


typedef struct IpT_Rte_Proto_Oms_Pr_Info
	{
	OmsT_Pr_Handle			rip_procreg_handle;
	OmsT_Pr_Handle			ospf_procreg_handle;
	OmsT_Pr_Handle			igrp_procreg_handle;
	OmsT_Pr_Handle			eigrp_procreg_handle;
	OmsT_Pr_Handle			bgp_procreg_handle;
	OmsT_Pr_Handle			isis_procreg_handle;
	OmsT_Pr_Handle			ripng_procreg_handle;
	OmsT_Pr_Handle			ip_procreg_handle;
	} IpT_Rte_Proto_Oms_Pr_Info;


/* Common data shared by various IP process models 			*/
/* A global pointer is used as for a process model state	*/
/* The pointer is set by the process models before invoking	*/
/* any routines in ip_rte_support.ex.c.						*/
typedef struct IpT_Rte_Module_Data
	{
	Objid						module_id;
	Objid						node_id;
	char*						node_name;
	Prohandle					ip_root_prohandle;	/* ip_dispatch */

	/* Process handle of the ip_icmp process		*/
	Prohandle					icmp_process_handle;

	/* Memory shared between various process models */
	/* (left-over from original ip_rte_v4)			*/
	OmsT_Qm_Shared_Memory 		shared_mem;
	Ici *						arp_iciptr;
	InetT_Address				arp_next_hop_addr;
	IpT_Router_Id				router_id; 
	int							as_number;
	List *						interface_table_ptr;

	/* Table consisting of an array of all interfaces of the node */
	IpT_Interface_Table			interface_table;

	/* Reference to the IpT_Cmn_Rte_Table object that represents  */
	/* the "common routing table" used to route IP packets in     */
	/* this node. All routing protocols that are set up here      */
	/* add and delete entries into this "common" routing table    */
	/* as and when routes are discovered and deleted during their */
	/* individual protocol operations.                            */
	IpT_Cmn_Rte_Table*			ip_route_table;

	IpT_Rte_Proto_Oms_Pr_Info*	rte_proto_oms_pr_info_ptr;

	/* Static Route Table */
	IpT_Rte_Table*				ip_static_rte_table;
	int							instrm_from_ip_encap;
	int							outstrm_to_ip_encap;
	int							num_interfaces;
	int							num_phys_interfaces; /* Number of rows under Interface Information */
	int							first_loopback_intf_index;
	int							first_ipv6_loopback_intf_index;
	int							first_intf_instrm_index;
	Boolean						gateway_status;
	Objid						ip_parameters_objid; /* Objid of IP Routing Parameters or	*/
													 /* IP Host Parameters attribute 		*/
	Objid						ip_qos_params_objid; /* IP QoS attribute object id	*/
	Objid						ipv6_params_objid;   /* IPv6 attribute object id	*/
	Objid						intf_info_objid;
	List *						mcast_addr_list_ptr;
	/* State for Background Utilization. */
	Boolean						do_bgutil;
	OmsT_Bgutil_Routed_State*	bgutil_routed_state_ptr;
	OmsT_Bgutil_Routed_State*	received_bgutil_routed_state_ptr;
	OmsT_Bgutil_Routed_State*	sent_bgutil_routed_state_ptr;
	/* Time at which the background utilization statistics generation begins. */
	double						received_last_stat_update_time;
	double						sent_last_stat_update_time;
	
	/* State for Background Utilization. */
	OmsT_Bgutil_Routed_State*	mcast_rcvd_bgutil_routed_state_ptr;
	OmsT_Bgutil_Routed_State*	mcast_sent_bgutil_routed_state_ptr;
	/* Time at which the background utilization statistics generation begins. */
	double						mcast_rcvd_last_stat_update_time;
	double						mcast_sent_last_stat_update_time;
	
	Stathandle					locl_num_mcasts_drop_pkts_hndl;
	Stathandle					locl_num_mcasts_drop_bps_hndl;
	double						mcast_drop_last_stat_update_time;
	OmsT_Bgutil_Routed_State*	mcast_drop_bgutil_routed_state_ptr;
	
	/* Memory shared between this process and the child		 */
	/* processes. Its purpose is to provide a method of		 */
	/* distinguishing the child from which the process was	 */
	/* invoked, and receiving a packet in this process from	 */
	/* the invoker child process.							 */
	IpT_Ptc_Memory				ip_ptc_mem;
	/* Default Route specification related attributes.	 */
	InetT_Address				default_route_addr_array[2];
	short						default_route_intf_index_array[2];

	short*						instrm_to_intf_index_array;
	short*						instrm_to_slot_index_array;
	OmsT_Dv_Proc_Scheme			processing_scheme;
	/* Packet count statistic handle variables.				 */
	Stathandle					locl_tot_pkts_sent_hndl;
	Stathandle					locl_num_mcasts_sent_hndl;
	Stathandle					locl_num_bcasts_sent_hndl;
	Stathandle					locl_tot_pkts_rcvd_hndl;
	Stathandle					locl_num_mcasts_rcvd_hndl;
	Stathandle					locl_num_bcasts_rcvd_hndl;
	Stathandle					locl_num_pkts_dropped_hndl;
	
	/* IP Hops statistics */
	Stathandle					locl_num_hops_src_hndl;
	Stathandle					locl_num_hops_dest_hndl;
	Stathandle					globl_num_hops_hndl;

	/* IPv6 related statistic handles.						*/
	Stathandle					locl_tot_ipv6_pkts_sent_hndl;
	Stathandle					locl_num_ipv6_mcasts_sent_hndl;
	Stathandle					locl_tot_ipv6_pkts_rcvd_hndl;
	Stathandle					locl_num_ipv6_mcasts_rcvd_hndl;
	Stathandle					locl_num_ipv6_pkts_dropped_hndl;

	/* Stathandle and var for global statistic.				 */
	Stathandle					globl_num_pkts_dropped_hndl;
	Stathandle					globl_num_ipv6_pkts_dropped_hndl;

	/* Statistic handle to record packet latency through	 */
	/* the IP layer (e.g., router delay)					 */
	Stathandle					ip_rte_pkt_latency_stathandle;
	/* Placeholder for bit flags that indicate the presence/absence */
	/* of routing protocols that have been set up in this node.     */
	int							routing_protos;
	/* Statistic to record the time taken for a tracer packet */
	/* to travel from the source to the destination.          */
	Stathandle					globl_tracer_ete_delay_hndl;
	/* Stathandle to store the End to End delay statistics of all the */
	/* tracer packet that originate from this node.                   */
	Stathandle					local_tracer_in_ete_hndl;
	/* The size of the datagram after compression. */
	OpT_Packet_Size				dgram_compressed_size;
	/* Stores if the surrounding node is acting like a LAN node (OPC_TRUE	 */
	/* indicates that it is) -- note that this is needed so that if this	 */
	/* is a LAN object, then all the packets received from the higher layer	 */
	/* will be forwarded to the lower layer. If the node is not a LAN, then	 */
	/* higher layer packets destined the same node will be directly sent to	 */
	/* the higher layer														 */
	Boolean						within_lan_node;
	/* Every IP packet that is originated at this node gets a unique  */
	/* datagram identifier. This variable is maintained to guarantee  */
	/* this. Th euniqueness is used by fragmentation/reassembly code. */
	int							dgram_id;
	/* Set to true if the node model containing this IP module is */
	/* configured as a firewall node.                             */
	Boolean						firewall_flag;
	/* Table that contains information about proxy servers deployed       */
	/* on the firewall. This table is created only if the node containing */
	/* this IP module is configured as a firewall.                        */
	List *						proxy_info_table_lptr;
	/* Flag indicating the node to be a ipcloud or not				 */
	Boolean						ipcloud_flag;
	/* Packet forwarding routine for IP cloud */
	IpT_Rte_Cloud_Packet_Send_Proc	cloud_send_proc;
	/* First argument passed to cloud_send_proc */
	void *						cloud_send_proc_info_ptr;
	/* Check to see if the interface table entry has the 	 */
	/* information of the neighboring router.				 */
	Boolean						router_id_assigned;
	/* Flag to indicate unnumbered interfaces. */
	Boolean						unnumbered_interface_exists;
	/* A flag, which is set to OPC_TRUE if this node is a multicast	 */
	/* router.														 */
	Boolean						multicast_router;
	
	/* Array storing QoS data for all interfaces. */
	IpT_Rte_Iface_QoS_Data **  interface_qos_data_pptr; 
		
	/* Specifies whether RSVP is enabled on at least one interface.	 */
	Boolean						rsvp_status;
	/* Specifies whether RSVP-TE is being used to setup LSPs.		*/
	Boolean						rsvp_te_status;

	/* Specifies if the surrounding node is a cache server.   */
	/* This is currently determined if a node level attribute */
	/* called "Cache Hit Rate" is present.                    */
	Boolean						node_is_cache_server;
	/* In packets/second */
	double						service_rate;

	/* IGMP used to monopolize the module-wide memory	*/
	/* Now it is using a field in this structure instead	*/

	/* Passive RIP */
	Boolean *					passive_rip_ptr;

	/* IP Access Control List Table */
	IpT_Acl_Table *		acl_ext_table;
	IpT_Acl_Table *		acl_ipv6_ext_table;
	IpT_Acl_Table *		acl_filter_ext_table;
	IpT_Acl_Table *		acl_pre_table;
	IpT_Acl_Table *		acl_ipv6_pre_table;
	IpT_Acl_Table *		acl_as_path_table;
	IpT_Acl_Table *		acl_comm_table;
	IpT_Acl_Table *		acl_std_table;
	IpT_Acl_Table *		acl_fw_filter_table;
	
	/* Hash table that contains the object group definitions	*/
	/* These object groups may be referred to in ACLs.			*/
	PrgT_String_Hash_Table*	object_group_htable_ptr;
	
	/* IP Route Map Table */
	IpT_Rte_Map_Table *		rte_map_table;

	/* Firewall Filter table	*/
	IpT_Rte_Map_Table *		firewall_filter_table;

	/* Structure holds functions necessary for external files  		*/
	/* to access route information about specific routing protos	*/
	IpT_Rte_Map_Entry_Match_Proc 	rte_map_match_proc_array [IPC_DYN_RTE_NUM];

	/* Error/warning reporting routines.  These are updated			*/
	/* by each process model as needed.								*/
	IpT_Rte_Error_Proc			error_proc;
	IpT_Rte_Warning_Proc		warning_proc;

	/* Holds the name of local Policy Routing that will be applied	*/
    /* 	to all the packets originated from this node				*/
	char*							local_policy_name;

	/* IPv6 related attributes.										*/
	Prohandle			ipv6_prohandle;
	Prohandle			ipv6_ra_prohandle;
	
	struct IpT_Mpls_Info*			mpls_info_ptr;				/* Multiprotocol label switching info.	*/
	struct IpT_Manet_Info*			manet_info_ptr;				/* Mobile Ad hoc network information.	*/
	struct IpT_Gtp_Info*			gtp_info_ptr;				/* UMTS GTP specific information		*/
	struct IpT_Mip_Info*			mip_info_ptr;				/* Mobile IP specific information.		*/
	struct IpT_Load_Balancer_Info*	load_balancer_info_ptr;		
	struct IpT_L2TP_Info*			l2tp_info_ptr;				/* L2TP VPN information.				*/
	struct IpT_Vrf_Info*			vrf_info_ptr;				/* VPN/VRF table information			*/
	struct IpT_Nat_Info*			nat_info_ptr;				/* Network Address Translation info.	*/	
	struct IpT_Pix_Info*			pix_info_ptr;				/* PIX firewall specific information.	*/
	struct IpT_Grouping_Info*		group_info_ptr;				/* Interface aggregation specific info.	*/
	struct IpT_Mipv6_Info*			mipv6_info_ptr;				/* Mobile IPv6 related information.		*/
	} IpT_Rte_Module_Data;

/* Argument memory to pass information to the ipv6		*/
/* process.												*/
typedef struct Ipv6T_Arg_Memory
	{
	IpT_Interface_Info*		intf_info_ptr;
	Objid					ipv6_intf_attr_objid;
	} Ipv6T_Arg_Memory;

/* Enumerated type to indicate type of routing process.	*/
/* Currently there are four types: 						*/
/*  Central cpu											*/
/*	Distributed cpu										*/
/*	Slot cpu											*/
/*	Cloud cpu											*/
typedef enum IpT_Rte_Process_Type
	{
	IpC_Rte_Process_Type_Central_Cpu,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -