summaryrefslogtreecommitdiff
path: root/include/net-snmp/data_access/arp.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net-snmp/data_access/arp.h')
-rw-r--r--include/net-snmp/data_access/arp.h133
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 */