📄 agentx.h
字号:
#define ENVOY_AX_BAD_SIZE 4#define ENVOY_AX_WRONG_VERSION 5#define ENVOY_AX_PARSE_ERROR 6#define ENVOY_AX_BAD_OPERATION 7#define ENVOY_AX_SESS_LOSS 8#define ENVOY_AX_TOO_BIG 9/* AgentX packet access macros */#define ax_pkt_get_context(PKTP) (&(PKTP)->context)/* AgentX version stamps */#define ENVOY_AX_VERSION_1 1#define ENVOY_AX_VERSION_MAXIMUM 1/* AgentX session admin status codes */#define ENVOY_AX_SESSION_UP 1#define ENVOY_AX_SESSION_DOWN 2/* globals variables for subagents */#ifndef ENVOY_AX_SA_TIMEOUT#define ENVOY_AX_SA_TIMEOUT 1000#endifextern bits32_t envoy_ax_sa_timeout;extern void envoy_ax_sa_init (void);extern void envoy_ax_pkt_init (ENVOY_AX_PKT_T *);extern ENVOY_AX_PKT_T *envoy_ax_pkt_allocate (void);extern ALENGTH_T envoy_ax_pkt_size (ENVOY_AX_PKT_T *, VB_T *);extern void envoy_ax_pkt_clean (ENVOY_AX_PKT_T *);extern void envoy_ax_pkt_free (ENVOY_AX_PKT_T *);extern int envoy_ax_pkt_encode (ENVOY_AX_PKT_T *, VB_T *, EBUFFER_T *, ALENGTH_T);extern ENVOY_AX_PKT_T *envoy_ax_pkt_decode (bits8_t *, ALENGTH_T, int *);extern ENVOY_AX_PKT_T *envoy_ax_pkt_create_all(int *, bits8_t, bits8_t, bits8_t, bits32_t, bits32_t, bits8_t, bits32_t, bits8_t *, int, OBJ_ID_T *, bits8_t, bits8_t, bits8_t, OIDC_T, bits32_t, bits8_t *, int, bits8_t);extern int envoy_ax_pkt_create_open (EBUFFER_T *, bits8_t, bits8_t, bits32_t, bits8_t, bits32_t, bits8_t *, OBJ_ID_T *);extern int envoy_ax_pkt_create_close (EBUFFER_T *, bits8_t, bits8_t, bits32_t, bits32_t, bits8_t);extern int envoy_ax_pkt_create_registrations(EBUFFER_T *, bits8_t, bits8_t, bits8_t, bits32_t, bits32_t, bits8_t, bits8_t, bits8_t, OBJ_ID_T *, OIDC_T, bits32_t, bits8_t *);extern int envoy_ax_pkt_create_ping (EBUFFER_T *, bits8_t, bits8_t, bits32_t, bits32_t, bits32_t, bits8_t *);extern int envoy_ax_pkt_create_agent_caps(EBUFFER_T *, bits8_t, bits8_t, bits8_t, bits32_t, bits32_t, bits32_t, bits8_t *, bits32_t, bits8_t *, OBJ_ID_T *);extern ENVOY_AX_PKT_T *envoy_ax_pkt_create_variables(int *, bits8_t, bits8_t, bits8_t, bits32_t, bits32_t, bits32_t, bits8_t *, int, int);extern int envoy_ax_bind_integer (ENVOY_AX_PKT_T *, int, int, OIDC_T *, sbits32_t);extern int envoy_ax_bind_ip_address(ENVOY_AX_PKT_T *, int, int, OIDC_T *, bits8_t *);extern int envoy_ax_bind_null (ENVOY_AX_PKT_T *, int, int, OIDC_T *);extern int envoy_ax_bind_object_id (ENVOY_AX_PKT_T *, int, int, OIDC_T *, int, OIDC_T *);extern int envoy_ax_bind_string (ENVOY_AX_PKT_T *, int, int, OIDC_T *, bits8_t, int, bits8_t *, int);extern int envoy_ax_bind_uint_64 (ENVOY_AX_PKT_T *, int, int, OIDC_T *, bits8_t, bits32_t, bits32_t);extern int envoy_ax_bind_uint (ENVOY_AX_PKT_T *, int, int, OIDC_T *, bits8_t, bits32_t);extern void envoy_ax_sa_handler(bits8_t *, ALENGTH_T, ENVOY_AX_SA_SB_T *, ENVOY_AX_ADMIN_T *, ENVOY_AX_SEND_T *, ENVOY_AX_ERROR_T *, ptr_t);extern int _snmp_find_next_helper_ax(MIBNODE_T *, int, OIDC_T*, OBJ_ID_T *, int, VB_T *, SNMP_PKT_T *, int);extern int _snmp_find_next_bound(MIBNODE_T *, VB_T *);#if INSTALL_COMMON_DYNAMIC_COMP_CONFIGextern void ax_dyncfg_init(void);#endifextern ENVOY_AX_SA_SB_T *envoy_ax_sa_state_create(void);extern void envoy_ax_sa_state_init (ENVOY_AX_SA_SB_T *);extern int envoy_ax_sa_session_loss(ENVOY_AX_SA_SB_T *, ptr_t, int, bits32_t);typedef struct ENVOY_AX_SESSION_S { struct ENVOY_AX_SESSION_S *next;/* next session in the list */ bits32_t session_id; /* id for this session */ bits32_t connection_id; /* id for this connection */ bits8_t version; /* protocol version for this session */ bits8_t timeout; /* default timeout period */ bits8_t flags; /* flags, currently byte order */ ENVOY_AX_SEND_T *send; /* routine to send to sub agent */ ENVOY_AX_ERROR_T *error; /* routine to free the cookie */ ptr_t cookie; /* cookie for use with send rtn */ OBJ_ID_T sub_id; /* tag for sub agent */ EBUFFER_T descr; /* string for sub agent */ bits32_t timestamp; /* when this session started */ bits32_t timeout_count; /* number of consecutive timeouts */ } ENVOY_AX_SESSION_T;typedef struct ENVOY_AX_MA_REG_S { bits32_t reg_index; /* index for use in agentx mib */ bits32_t context_id; /* index of context for this object */ bits8_t priority; /* priority for this object */ MIBLEAF_T *leaf; /* leaf for use in the mib tree also contains session, priority and timeout information */ struct ENVOY_AX_MA_REG_S *next; struct ENVOY_AX_MA_REG_S *mib_next; } ENVOY_AX_MA_REG_T;typedef struct ENVOY_AX_MA_REGLIST_S { struct ENVOY_AX_MA_REGLIST_S *next; /* next registration in the list */ bits32_t reg_index; /* index for use in agentx mib */ bits32_t session_id; /* id for this session */ bits32_t connection_id; /* id for this connection */ bits8_t range_id; /* subid which has range, if any */ OIDC_T bound; /* upper bound of range, if any */ bits8_t flags; /* non-zero if this is an instance */ MIBLEAF_T *mibleaf; /* MIB leaf that has more info on this reg. */ struct ENVOY_AX_MA_REGLIST_S *match; /* For list of registrations w/same OID */ bits32_t context_id; /* id for this context */ bits8_t priority; /* priority of this registration */ OBJ_ID_T start_oid; /* registered subtree, or start if range */ } ENVOY_AX_MA_REGLIST_T;typedef struct ENVOY_AX_CONTEXT_S { bits32_t id; /* this context's index in the list */ struct ENVOY_AX_CONTEXT_S *next; /* ptr to next element in list */ EBUFFER_T context; /* string for the context */ MIBNODE_T *mibroot; /* mib root node the user gave us */ TREENODE_T *indexroot; /* root for possible indexes */ } ENVOY_AX_CONTEXT_T;/* control structure for outstanding agentx requests */typedef struct AX_CB_S { struct AX_CB_S *next; bits32_t reqid; SNMP_PKT_T *pktp; VB_T *vbp; int count; } AX_CB_T;/* global variables used by an agentx master to keep state */#ifndef ENVOY_AX_DEFAULT_TIMEOUT#define ENVOY_AX_DEFAULT_TIMEOUT 1#endif#ifndef SNMP_AX_TIMEOUT_COUNT#define SNMP_AX_TIMEOUT_COUNT 3#endif /* General sub-agent response packet pre-processing. */#ifndef AX_RESPONSE_PREPROCESS#define AX_RESPONSE_PREPROCESS(PKT)#endifextern bits32_t agentxDefaultTimeout;extern AX_CB_T *first_axcb;extern bits32_t ax_reqid;extern bits32_t ax_registration_id;extern TREENODE_T *registration_root;extern bits32_t agentxRegisterDuplicate;extern bits32_t envoy_ax_session_id;extern ENVOY_AX_SESSION_T *envoy_ax_session_list;extern ENVOY_AX_MA_REGLIST_T *envoy_ax_registration_list;extern bits32_t context_list_id;extern ENVOY_AX_CONTEXT_T *context_list;extern sbits32_t agentxMasterAgentXVer;extern void envoy_ax_ma_init (void);extern void envoy_ax_ma_handler(bits8_t *, ALENGTH_T, ENVOY_AX_SA_SB_T *, ENVOY_AX_ADMIN_T *, ENVOY_AX_SEND_T *, ENVOY_AX_ERROR_T *, ptr_t);extern int envoy_ax_ma_cleanup_sessions(ptr_t, bits8_t);typedef void ENVOY_AX_HANDLER_T (bits8_t *, ALENGTH_T, ENVOY_AX_SA_SB_T *, ENVOY_AX_ADMIN_T *, ENVOY_AX_SEND_T *, ENVOY_AX_ERROR_T *, ptr_t);extern void envoy_ax_chunk_init (ENVOY_AX_CHUNK_T *);extern int envoy_ax_chunk_clean (ENVOY_AX_CHUNK_T *);extern int envoy_ax_chunk_handler(bits8_t *, ALENGTH_T, ENVOY_AX_HANDLER_T *, ENVOY_AX_CHUNK_T *, ENVOY_AX_SA_SB_T *, ENVOY_AX_ADMIN_T *, ENVOY_AX_SEND_T *, ENVOY_AX_ERROR_T *, ENVOY_AX_ADD_T *, ptr_t);#if (!defined(ENVOY_AX_COOKIE_CMP))#define ENVOY_AX_COOKIE_CMP(HAND, COOKIE) (HAND == COOKIE)#endiftypedef struct ENVOY_AX_INDEX_STR_S { ALENGTH_T length; bits8_t *buffer; } ENVOY_AX_INDEX_STR_T;typedef struct ENVOY_AX_INDEX_DATA_S { struct ENVOY_AX_INDEX_DATA_S *next; bits32_t session_id; /* 0 for no session */ union { OBJ_ID_T objid; bits32_t bits32; ENVOY_AX_INDEX_STR_T string; bits8_t ipaddr[4]; } data; } ENVOY_AX_INDEX_DATA_T;typedef struct ENVOY_AX_INDEX_HDR_S { bits8_t type; ENVOY_AX_INDEX_DATA_T *data; } ENVOY_AX_INDEX_HDR_T;#ifdef WINDNET_STRUCT_ALIGN#pragma align 0#endifextern ENVOY_AX_SESSION_T *ax_session_find_index(bits32_t, int *);extern void ax_session_release (ENVOY_AX_SESSION_T *);extern ENVOY_AX_SESSION_T *ax_session_next (bits32_t, int *);extern int envoy_ax_ma_cleanup_session_mth(bits32_t, bits8_t);extern ENVOY_AX_CONTEXT_T *ax_context_index(bits32_t);extern ENVOY_AX_CONTEXT_T *ax_context_next (ENVOY_AX_CONTEXT_T *);extern ENVOY_AX_MA_REG_T *find_reg_leaf(OBJ_ID_T *, bits8_t, bits32_t);extern sbits32_t Find_Leaf_From_Root(MIBNODE_T *, OBJ_ID_T *, MIBLEAF_T **);extern int AX_Add_Leaf_From_Root(MIBNODE_T *, OBJ_ID_T *, MIBLEAF_T *, MIBLEAF_T **);extern MIBLEAF_T * AX_Remove_Leaf_From_Root(MIBNODE_T *, OBJ_ID_T *);#define ENVOY_AX_TRANSPORT_TYPE_UNIX 1#define ENVOY_AX_TRANSPORT_TYPE_TCP 2#define ENVOY_AX_TRANSPORT_TYPE_UDP 3#define ENVOY_AX_TRANSPORT_TYPE_MEM 4#define ENVOY_AX_TRANSPORT_TYPE_OTHER 5extern void ax_ma_index_allocate (ENVOY_AX_PKT_T *, ENVOY_AX_PKT_T *, ENVOY_AX_CONTEXT_T *);extern void ax_ma_index_deallocate(ENVOY_AX_PKT_T *, ENVOY_AX_PKT_T *, ENVOY_AX_CONTEXT_T *);extern void ax_ma_cleanup_indexes (bits32_t);#if INSTALL_ENVOY_AGENTX_INDEX#define AX_MA_RTN_IND_ALLOC(AX, RP, CON) ax_ma_index_allocate(AX, RP, CON)#define AX_MA_RTN_IND_DEALLOC(AX, RP, CON) ax_ma_index_deallocate(AX, RP, CON)#else#define AX_MA_RTN_IND_ALLOC(AX, RP, CON) ((RP)->error_stat = GEN_ERR)#define AX_MA_RTN_IND_DEALLOC(AX, RP, CON) ((RP)->error_stat = GEN_ERR)#endif#ifdef __cplusplus}#endif#endif /* envoy_agentx_inc */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -