diff options
Diffstat (limited to 'include/net-snmp/data_access/arp.h')
-rw-r--r-- | include/net-snmp/data_access/arp.h | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/include/net-snmp/data_access/arp.h b/include/net-snmp/data_access/arp.h new file mode 100644 index 0000000..e096c65 --- /dev/null +++ b/include/net-snmp/data_access/arp.h @@ -0,0 +1,133 @@ +/* + * arp data access header + * + * $Id: arp.h 17892 2009-12-09 14:37:16Z jsafranek $ + */ +#ifndef NETSNMP_ACCESS_ARP_H +#define NETSNMP_ACCESS_ARP_H + +#ifdef __cplusplus +extern "C" { +#endif + +/**---------------------------------------------------------------------*/ +#if defined( NETSNMP_ENABLE_IPV6 ) +# define NETSNMP_ACCESS_ARP_IPADDR_BUF_SIZE 16 +#else +# define NETSNMP_ACCESS_ARP_IPADDR_BUF_SIZE 4 +#endif + +/** MAC address is 6, InfiniBand uses more, 32 must be enough for near future.*/ +#define NETSNMP_ACCESS_ARP_PHYSADDR_BUF_SIZE 32 + +/************************************************************* + * constants for enums for the MIB node + * inetNetToMediaType (INTEGER / ASN_INTEGER) + * + * since a Textual Convention may be referenced more than once in a + * MIB, protect againt redefinitions of the enum values. + */ +#ifndef inetNetToMediaType_ENUMS +#define inetNetToMediaType_ENUMS + +#define INETNETTOMEDIATYPE_OTHER 1 +#define INETNETTOMEDIATYPE_INVALID 2 +#define INETNETTOMEDIATYPE_DYNAMIC 3 +#define INETNETTOMEDIATYPE_STATIC 4 +#define INETNETTOMEDIATYPE_LOCAL 5 + +#endif /* inetNetToMediaType_ENUMS */ + +/************************************************************* + * constants for enums for the MIB node + * inetNetToMediaState (INTEGER / ASN_INTEGER) + * + * since a Textual Convention may be referenced more than once in a + * MIB, protect againt redifinitions of the enum values. + */ +#ifndef inetNetToMediaState_ENUMS +#define inetNetToMediaState_ENUMS + +#define INETNETTOMEDIASTATE_REACHABLE 1 +#define INETNETTOMEDIASTATE_STALE 2 +#define INETNETTOMEDIASTATE_DELAY 3 +#define INETNETTOMEDIASTATE_PROBE 4 +#define INETNETTOMEDIASTATE_INVALID 5 +#define INETNETTOMEDIASTATE_UNKNOWN 6 +#define INETNETTOMEDIASTATE_INCOMPLETE 7 + +#endif /* inetNetToMediaState_ENUMS */ + +/**---------------------------------------------------------------------*/ +/* + * structure definitions + */ +/* + * netsnmp_arp_entry + * - primary arp structure for both ipv4 & ipv6 + */ +typedef struct netsnmp_arp_s { + + netsnmp_index oid_index; /* MUST BE FIRST!! for container use */ + oid ns_arp_index; /* arbitrary index */ + + int flags; /* for net-snmp use */ + + oid if_index; + + u_char arp_physaddress[NETSNMP_ACCESS_ARP_PHYSADDR_BUF_SIZE]; + u_char arp_ipaddress[NETSNMP_ACCESS_ARP_IPADDR_BUF_SIZE]; + + u_char arp_physaddress_len;/* phys address len, max 32 */ + u_char arp_ipaddress_len; /* ip address len, 4 | 16 */ + u_char arp_type; /* inetNetToMediaType 1-5 */ + u_char arp_state; /* inetNetToMediaState 1-7 */ + +} netsnmp_arp_entry; + + +/**---------------------------------------------------------------------*/ +/* + * ACCESS function prototypes + */ +/* + * ifcontainer init + */ +netsnmp_container * netsnmp_access_arp_container_init(u_int init_flags); +#define NETSNMP_ACCESS_ARP_INIT_NOFLAGS 0x0000 + +/* + * ifcontainer load and free + */ +netsnmp_container* +netsnmp_access_arp_container_load(netsnmp_container* container, + u_int load_flags); +#define NETSNMP_ACCESS_ARP_LOAD_NOFLAGS 0x0000 + +void netsnmp_access_arp_container_free(netsnmp_container *container, + u_int free_flags); +#define NETSNMP_ACCESS_ARP_FREE_NOFLAGS 0x0000 +#define NETSNMP_ACCESS_ARP_FREE_DONT_CLEAR 0x0001 +#define NETSNMP_ACCESS_ARP_FREE_KEEP_CONTAINER 0x0002 + + +/* + * create/free a arp+entry + */ +netsnmp_arp_entry * +netsnmp_access_arp_entry_create(void); + +void netsnmp_access_arp_entry_free(netsnmp_arp_entry * entry); + +/* + * find entry in container + */ +/** not yet */ + +/**---------------------------------------------------------------------*/ + +#ifdef __cplusplus +} +#endif + +#endif /* NETSNMP_ACCESS_ARP_H */ |