📄 ip_rte_support.h
字号:
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 + -