📄 interface.h
字号:
/* * interface data access header * * $Id: interface.h 15205 2006-09-14 17:15:32Z rstory $ */#ifndef NETSNMP_ACCESS_INTERFACE_H#define NETSNMP_ACCESS_INTERFACE_H#ifdef __cplusplusextern "C" {#endif/* * define flags to indicate the availability of certain data */#define NETSNMP_INTERFACE_FLAGS_ACTIVE 0x00000001#define NETSNMP_INTERFACE_FLAGS_HAS_BYTES 0x00000002#define NETSNMP_INTERFACE_FLAGS_HAS_DROPS 0x00000004#define NETSNMP_INTERFACE_FLAGS_HAS_MCAST_PKTS 0x00000008#define NETSNMP_INTERFACE_FLAGS_HAS_HIGH_BYTES 0x00000010#define NETSNMP_INTERFACE_FLAGS_HAS_HIGH_PACKETS 0x00000020#define NETSNMP_INTERFACE_FLAGS_HAS_HIGH_SPEED 0x00000040#define NETSNMP_INTERFACE_FLAGS_DYNAMIC_SPEED 0x00000080#define NETSNMP_INTERFACE_FLAGS_HAS_LASTCHANGE 0x00000100#define NETSNMP_INTERFACE_FLAGS_HAS_DISCONTINUITY 0x00000200#define NETSNMP_INTERFACE_FLAGS_HAS_IF_FLAGS 0x00000400#define NETSNMP_INTERFACE_FLAGS_CAN_DOWN_PROTOCOL 0x00000800#define NETSNMP_INTERFACE_FLAGS_HAS_IPV4 0x00001000#define NETSNMP_INTERFACE_FLAGS_HAS_IPV6 0x00002000#define NETSNMP_INTERFACE_FLAGS_HAS_V4_RETRANSMIT 0x00004000#define NETSNMP_INTERFACE_FLAGS_HAS_V4_REASMMAX 0x00008000#define NETSNMP_INTERFACE_FLAGS_HAS_V6_RETRANSMIT 0x00010000#define NETSNMP_INTERFACE_FLAGS_HAS_V6_REASMMAX 0x00020000#define NETSNMP_INTERFACE_FLAGS_HAS_V6_REACHABLE 0x00040000#define NETSNMP_INTERFACE_FLAGS_HAS_V6_IFID 0x00080000#define NETSNMP_INTERFACE_FLAGS_HAS_V6_FORWARDING 0x00100000/************************************************************* * constants for enums for the MIB node * ifAdminStatus (INTEGER / ASN_INTEGER) * * since a Textual Convention may be referenced more than once in a * MIB, protect againt redifinitions of the enum values. */#ifndef ifAdminStatus_ENUMS#define ifAdminStatus_ENUMS#define IFADMINSTATUS_UP 1#define IFADMINSTATUS_DOWN 2#define IFADMINSTATUS_TESTING 3#endif /* ifAdminStatus_ENUMS *//************************************************************* * constants for enums for the MIB node * ifOperStatus (INTEGER / ASN_INTEGER) * * since a Textual Convention may be referenced more than once in a * MIB, protect againt redifinitions of the enum values. */#ifndef ifOperStatus_ENUMS#define ifOperStatus_ENUMS#define IFOPERSTATUS_UP 1#define IFOPERSTATUS_DOWN 2#define IFOPERSTATUS_TESTING 3#define IFOPERSTATUS_UNKNOWN 4#define IFOPERSTATUS_DORMANT 5#define IFOPERSTATUS_NOTPRESENT 6#define IFOPERSTATUS_LOWERLAYERDOWN 7#endif /* ifOperStatus_ENUMS *//**---------------------------------------------------------------------*//* * structure definitions * * NOTE: if you add fields, update code dealing with * stats in interface_common.c, particularly * netsnmp_access_interface_entry_update_stats() * */typedef struct netsnmp_interface_stats_s { /* * "Dynamic" fields * Cached versions of byte/packet counters, etc * (saved as a 'struct counter64' even if the * high order half isn't actually used) * */ /** input */ struct counter64 ibytes; struct counter64 iucast; struct counter64 imcast; struct counter64 ibcast; unsigned int ierrors; unsigned int idiscards; unsigned int iunknown_protos; unsigned int inucast; /** output */ struct counter64 obytes; struct counter64 oucast; struct counter64 omcast; struct counter64 obcast; unsigned int oerrors; unsigned int odiscards; unsigned int oqlen; unsigned int collisions; unsigned int onucast;} netsnmp_interface_stats;/* * * NOTE: if you add fields, update code dealing with * them in interface_common.c, particularly * netsnmp_access_interface_entry_copy(). */typedef struct netsnmp_interface_entry_s { netsnmp_index oid_index; u_int ns_flags; /* net-snmp flags */ oid index; /* * "Static" information * Typically constant for a given interface */ char *name; char *descr; int type; u_int speed; u_int speed_high; char *paddr; u_int paddr_len; u_int mtu; u_int retransmit_v4; /* milliseconds */ u_int retransmit_v6; /* milliseconds */ u_int reachable_time; /* ipv6 / milliseconds */ u_long lastchange; time_t discontinuity; uint16_t reasm_max_v4; /* 0..65535 */ uint16_t reasm_max_v6; /* 1500..65535 */ char admin_status; char oper_status; /** booleans (not TruthValues!) */ char promiscuous; char connector_present; char forwarding_v6; char v6_if_id_len; u_char v6_if_id[8]; /*----------------------------------------------- * platform/arch/access specific data */ u_int os_flags; /* iff NETSNMP_INTERFACE_FLAGS_HAS_IF_FLAGS */ /* * statistics */ netsnmp_interface_stats stats; /** old_stats is used in netsnmp_access_interface_entry_update_stats */ netsnmp_interface_stats *old_stats;} netsnmp_interface_entry;/* * conf file overrides */typedef struct _conf_if_list { const char *name; int type; u_long speed; struct _conf_if_list *next;} netsnmp_conf_if_list; typedef netsnmp_conf_if_list conf_if_list; /* backwards compat *//**---------------------------------------------------------------------*//* * ACCESS function prototypes */void init_interface(void);void netsnmp_access_interface_init(void);/* * ifcontainer init */netsnmp_container * netsnmp_access_interface_container_init(u_int init_flags);#define NETSNMP_ACCESS_INTERFACE_INIT_NOFLAGS 0x0000#define NETSNMP_ACCESS_INTERFACE_INIT_ADDL_IDX_BY_NAME 0x0001/* * ifcontainer load and free */netsnmp_container*netsnmp_access_interface_container_load(netsnmp_container* container, u_int load_flags);#define NETSNMP_ACCESS_INTERFACE_LOAD_NOFLAGS 0x0000#define NETSNMP_ACCESS_INTERFACE_LOAD_NO_STATS 0x0001#define NETSNMP_ACCESS_INTERFACE_LOAD_IP4_ONLY 0x0002#define NETSNMP_ACCESS_INTERFACE_LOAD_IP6_ONLY 0x0004void netsnmp_access_interface_container_free(netsnmp_container *container, u_int free_flags);#define NETSNMP_ACCESS_INTERFACE_FREE_NOFLAGS 0x0000#define NETSNMP_ACCESS_INTERFACE_FREE_DONT_CLEAR 0x0001/* * create/free an ifentry */netsnmp_interface_entry *netsnmp_access_interface_entry_create(const char *name, oid if_index);void netsnmp_access_interface_entry_free(netsnmp_interface_entry * entry);intnetsnmp_access_interface_entry_set_admin_status(netsnmp_interface_entry * entry, int ifAdminStatus);/* * find entry in container */netsnmp_interface_entry *netsnmp_access_interface_entry_get_by_name(netsnmp_container *container, const char *name);netsnmp_interface_entry *netsnmp_access_interface_entry_get_by_index(netsnmp_container *container, oid index);/* * find ifIndex for given interface. 0 == not found. */oid netsnmp_access_interface_index_find(const char *name);/* * find name for given index */const char *netsnmp_access_interface_name_find(oid index);/* * copy interface entry data */int netsnmp_access_interface_entry_copy(netsnmp_interface_entry * lhs, netsnmp_interface_entry * rhs);/* * utility routines */void netsnmp_access_interface_entry_guess_speed(netsnmp_interface_entry *);void netsnmp_access_interface_entry_overrides(netsnmp_interface_entry *);netsnmp_conf_if_list *netsnmp_access_interface_entry_overrides_get(const char * name);/**---------------------------------------------------------------------*/#if defined( USING_IF_MIB_IFTABLE_IFTABLE_DATA_ACCESS_MODULE ) && \ ! defined( NETSNMP_NO_BACKWARDS_COMPATABILITY )voidInterface_Scan_Init(void);intInterface_Scan_Next(short *index, char *name, netsnmp_interface_entry **entry, void *dc);#endif/**---------------------------------------------------------------------*/#ifdef __cplusplus}#endif#endif /* NETSNMP_ACCESS_INTERFACE_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -