📄 ldp_struct.h
字号:
/* * Copyright (C) James R. Leu 2000 * jleu@mindspring.com * * This software is covered under the LGPL, for more * info check out http://www.gnu.org/copyleft/lgpl.html */#ifndef _LDP_STRUCT_H_#define _LDP_STRUCT_H_#include "mpls_struct.h"#include "mpls_list.h"#include "mpls_refcnt.h"MPLS_LIST_ROOT(ldp_outlabel_list, ldp_outlabel);MPLS_LIST_ROOT(ldp_resource_list, ldp_resource);MPLS_LIST_ROOT(ldp_hop_list_list, ldp_hop_list);MPLS_LIST_ROOT(ldp_inlabel_list, ldp_inlabel);MPLS_LIST_ROOT(ldp_session_list, ldp_session);MPLS_LIST_ROOT(ldp_nexthop_list, ldp_nexthop);MPLS_LIST_ROOT(ldp_entity_list, ldp_entity);MPLS_LIST_ROOT(ldp_tunnel_list, ldp_tunnel);MPLS_LIST_ROOT(ldp_addr_list, ldp_addr);MPLS_LIST_ROOT(ldp_attr_list, ldp_attr);MPLS_LIST_ROOT(ldp_peer_list, ldp_peer);MPLS_LIST_ROOT(_ldp_hop_list, ldp_hop);MPLS_LIST_ROOT(ldp_adj_list, ldp_adj);MPLS_LIST_ROOT(ldp_fec_list, ldp_fec);MPLS_LIST_ROOT(ldp_fs_list, ldp_fs);MPLS_LIST_ROOT(ldp_if_list, ldp_if);typedef struct ldp_attr_list ldp_attr_list;typedef enum { LDP_UNKNOWN = 0, LDP_DIRECT, LDP_INDIRECT,} ldp_entity_type_enum;typedef enum { LDP_CONTROL_INDEPENDENT = 1, LDP_CONTROL_ORDERED} ldp_control_mode;typedef enum { LDP_RETENTION_LIBERAL = 1, LDP_RETENTION_CONSERVATIVE} ldp_retention_mode;typedef enum { LDP_REPAIR_LOCAL = 1, LDP_REPAIR_GLOBAL} ldp_repaire_mode;typedef enum { LDP_LOOP_NONE = 0, LDP_LOOP_HOPCOUNT, LDP_LOOP_PATHVECTOR, LDP_LOOP_HOPCOUNT_PATHVECTOR, LDP_LOOP_OTHER,} ldp_loop_detection_mode;typedef enum { LDP_TRANS_ADDR_NONE = 0, LDP_TRANS_ADDR_INTERFACE, LDP_TRANS_ADDR_LSRID} ldp_trans_addr_mode;typedef enum { LDP_DISTRIBUTION_UNSOLICITED = 0, LDP_DISTRIBUTION_ONDEMAND = 1,} ldp_distribution_mode;typedef enum { LDP_INFINIT = 0,} ldp_count;typedef enum { LDP_NONE, LDP_PASSIVE, LDP_ACTIVE} ldp_role_enum;typedef enum { LDP_EVENT_HELLO = 0, LDP_EVENT_CONNECT, LDP_EVENT_INIT, LDP_EVENT_KEEP, LDP_EVENT_ADDR, LDP_EVENT_LABEL, LDP_EVENT_NOTIF, LDP_EVENT_CLOSE, LDP_EVENT_HTIMER, LDP_EVENT_KTIMER, LDP_EVENT_TCP_LISTEN, LDP_EVENT_TCP_CONNECT, LDP_EVENT_UDP_DATA, LDP_EVENT_TCP_DATA,} ldp_event_enum;typedef enum { LDP_STATE_NONE = 0, LDP_STATE_NON_EXIST, LDP_STATE_INITIALIZED, LDP_STATE_OPENSENT, LDP_STATE_OPENREC, LDP_STATE_OPERATIONAL} ldp_state_enum;typedef enum { LDP_KEEPALIVE_RECV = 1, LDP_KEEPALIVE_SEND} ldp_keepalive_type;typedef enum { LDP_LSP_STATE_REQ_RECV, LDP_LSP_STATE_REQ_SENT, LDP_LSP_STATE_MAP_RECV, LDP_LSP_STATE_MAP_SENT, LDP_LSP_STATE_WITH_SENT, LDP_LSP_STATE_WITH_RECV, LDP_LSP_STATE_NO_LABEL_RESOURCE_SENT, LDP_LSP_STATE_NO_LABEL_RESOURCE_RECV, LDP_LSP_STATE_ABORT_SENT, LDP_LSP_STATE_ABORT_RECV, LDP_LSP_STATE_NOTIF_SENT, LDP_LSP_STATE_NOTIF_RECV} ldp_lsp_state;typedef enum { LDP_TRACE_FLAG_ADDRESS = 0x00000001, LDP_TRACE_FLAG_BINDING = 0x00000002, LDP_TRACE_FLAG_DEBUG = 0x00000004, LDP_TRACE_FLAG_ERROR = 0x00000008, LDP_TRACE_FLAG_EVENT = 0x00000010, LDP_TRACE_FLAG_GENERAL = 0x00000020, LDP_TRACE_FLAG_INIT = 0x00000040, LDP_TRACE_FLAG_LABEL = 0x00000080, LDP_TRACE_FLAG_NORMAL = 0x00000100, LDP_TRACE_FLAG_NOTIF = 0x00000200, LDP_TRACE_FLAG_PACKET_DUMP = 0x00000400, LDP_TRACE_FLAG_PACKET = 0x00000800, LDP_TRACE_FLAG_PATH = 0x00001000, LDP_TRACE_FLAG_PERIODIC = 0x00002000, LDP_TRACE_FLAG_POLICY = 0x00004000, LDP_TRACE_FLAG_ROUTE = 0x00008000, LDP_TRACE_FLAG_STATE = 0x00010000, LDP_TRACE_FLAG_TASK = 0x00020000, LDP_TRACE_FLAG_TIMER = 0x00040000, LDP_TRACE_FLAG_ALL = 0xFFFFFFFF} ldp_trace_flags;typedef enum { LDP_NOTIF_NONE = 0, LDP_NOTIF_SUCCESS, LDP_NOTIF_BAD_LDP_ID, LDP_NOTIF_BAD_PROTO, LDP_NOTIF_BAD_PDU_LEN, LDP_NOTIF_UNKNOWN_MESG, LDP_NOTIF_BAD_MESG_LEN, LDP_NOTIF_UNKNOWN_TVL, LDP_NOTIF_BAD_TLV_LEN, LDP_NOTIF_MALFORMED_TLV, LDP_NOTIF_HOLD_TIMER_EXPIRED, LDP_NOTIF_SHUTDOWN, LDP_NOTIF_LOOP_DETECTED, LDP_NOTIF_UNKNOWN_FEC, LDP_NOTIF_NO_ROUTE, LDP_NOTIF_NO_LABEL_RESOURCES_AVAILABLE, LDP_NOTIF_LABEL_RESOURCES_AVAILABLE, LDP_NOTIF_SESSION_REJECTED_NO_HELLO, LDP_NOTIF_SESSION_REJECTED_PARAMETERS_ADVERTISEMENT_MODE, LDP_NOTIF_SESSION_REJECTED_PARAMETERS_MAX_PDU_LEN, LDP_NOTIF_SESSION_REJECTED_PARAMETERS_LABEL_RANGE, LDP_NOTIF_KEEPALIVE_TIMER_EXPIRED, LDP_NOTIF_LABEL_ABORT, LDP_NOTIF_MISSING_MSG_PARAMS, LDP_NOTIF_UNSUPORTED_AF, LDP_NOTIF_SESSION_REJECTED_BAD_KEEPALIVE_TIME, LDP_NOTIF_INTERNAL_ERROR} ldp_notif_status;#define LDP_STATE_NUM 6#define LDP_EVENT_NUM 10#define LDP_FUNC_NUM 10#include "ldp_defaults.h"#include "mpls_handle_type.h"#include "ldp_nortel.h"typedef struct ldp_mesg { mplsLdpHeader_t header; union { mplsLdpMsg_t generic; mplsLdpInitMsg_t init; mplsLdpNotifMsg_t notif; mplsLdpHelloMsg_t hello; mplsLdpKeepAlMsg_t keep; mplsLdpAdrMsg_t addr; mplsLdpLblMapMsg_t map; mplsLdpLblReqMsg_t request; mplsLdpLbl_W_R_Msg_t release; mplsLdpLblAbortMsg_t abort; } u;} ldp_mesg;typedef struct ldp_buf { uint8_t *buffer; uint8_t *current; int current_size; int size; int total; int want;} ldp_buf;typedef struct ldp_global { struct ldp_outlabel_list outlabel; struct ldp_resource_list resource; struct ldp_hop_list_list hop_list; struct ldp_inlabel_list inlabel; struct ldp_nexthop_list nexthop; struct ldp_session_list session; struct ldp_tunnel_list tunnel; struct ldp_entity_list entity; struct ldp_peer_list peer; struct ldp_attr_list attr; struct ldp_addr_list addr; struct ldp_adj_list adj; struct ldp_if_list iff; struct ldp_fec_list fec; mpls_lock_handle global_lock; mpls_instance_handle user_data; mpls_tree_handle addr_tree; mpls_tree_handle fec_tree; mpls_socket_handle hello_socket; mpls_socket_handle listen_socket; mpls_timer_mgr_handle timer_handle; mpls_socket_mgr_handle socket_handle; mpls_fib_handle fib_handle; mpls_ifmgr_handle ifmgr_handle;#if MPLS_USE_LSR mpls_cfg_handle lsr_handle;#else mpls_mpls_handle mpls_handle;#endif /* * CSN changes with every MIB set, BUT only when a entity goes through * shutdown/startup cycle will it grab the new CSN and use it in hellos */ uint32_t configuration_sequence_number; /* * Message ID increaments with EVERY message, this means it will roll over */ uint32_t message_identifier; struct mpls_inet_addr lsr_identifier; mpls_bool send_address_messages; mpls_bool send_lsrid_mapping; ldp_control_mode lsp_control_mode; ldp_retention_mode label_retention_mode; ldp_repaire_mode lsp_repair_mode; mpls_bool propagate_release; mpls_bool label_merge; ldp_loop_detection_mode loop_detection_mode; mpls_bool ttl_less_domain; uint16_t local_tcp_port; uint16_t local_udp_port; uint16_t backoff_step; int no_route_to_peer_time; /* * some global defaults, entities will inherit these values unless * instructed otherwise */ struct mpls_inet_addr transport_address; uint16_t keepalive_timer; uint16_t keepalive_interval; uint16_t hellotime_timer; uint16_t hellotime_interval; mpls_admin_state_enum admin_state;} ldp_global;typedef struct ldp_entity { MPLS_REFCNT_FIELD; MPLS_LIST_ELEM(ldp_entity) _global; struct ldp_adj_list adj_root; ldp_entity_type_enum entity_type; union { struct ldp_peer *peer; struct ldp_if *iff; } p; ldp_state_enum state; uint32_t inherit_flag; uint32_t sub_index; uint32_t index; struct mpls_inet_addr transport_address; uint8_t protocol_version; uint16_t remote_tcp_port; uint16_t remote_udp_port; uint16_t max_pdu; uint16_t keepalive_timer; uint16_t keepalive_interval; uint16_t hellotime_timer; uint16_t hellotime_interval; uint16_t session_setup_count; uint16_t session_backoff_timer; ldp_distribution_mode label_distribution_mode; uint8_t path_vector_limit; uint8_t hop_count_limit; uint8_t label_request_count; uint16_t label_request_timer; ldp_loop_detection_mode loop_detection_mode; mpls_admin_state_enum admin_state; mpls_bool remote_in_ttl_less_domain; mpls_bool request_retry; /* mesg counters */ uint32_t mesg_tx; uint32_t mesg_rx; /* only used for cfg gets */ int adj_index; int adj_count;} ldp_entity;typedef struct ldp_if { MPLS_REFCNT_FIELD; MPLS_LIST_ELEM(ldp_if) _global; struct mpls_link_list session_root; struct ldp_nexthop_list nh_root; struct ldp_addr_list addr_root; struct ldp_entity *entity; mpls_timer_handle hellotime_send_timer; int hellotime_send_timer_duration; int label_space; uint32_t index; mpls_if_handle handle; struct ldp_mesg *tx_message; struct ldp_buf *tx_buffer; struct ldp_mesg *hello;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -