summaryrefslogtreecommitdiff
path: root/include/net-snmp/data_access/ipaddress.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net-snmp/data_access/ipaddress.h')
-rw-r--r--include/net-snmp/data_access/ipaddress.h168
1 files changed, 168 insertions, 0 deletions
diff --git a/include/net-snmp/data_access/ipaddress.h b/include/net-snmp/data_access/ipaddress.h
new file mode 100644
index 0000000..75056f2
--- /dev/null
+++ b/include/net-snmp/data_access/ipaddress.h
@@ -0,0 +1,168 @@
+/*
+ * ipaddress data access header
+ *
+ * $Id$
+ */
+#ifndef NETSNMP_ACCESS_IPADDRESS_H
+#define NETSNMP_ACCESS_IPADDRESS_H
+
+# ifdef __cplusplus
+extern "C" {
+#endif
+
+/**---------------------------------------------------------------------*/
+/*
+ * structure definitions
+ */
+#if defined( NETSNMP_ENABLE_IPV6 )
+# define NETSNMP_ACCESS_IPADDRESS_BUF_SIZE 16 /* xxx-rks: 20, for ip6z? */
+#else
+# define NETSNMP_ACCESS_IPADDRESS_BUF_SIZE 4
+#endif
+
+
+/*
+ * netsnmp_ipaddress_entry
+ * - primary ipaddress structure for both ipv4 & ipv6
+ */
+typedef struct netsnmp_ipaddress_s {
+
+ netsnmp_index oid_index; /* MUST BE FIRST!! for container use */
+ oid ns_ia_index; /* arbitrary index */
+
+ int flags; /* for net-snmp use */
+
+ /*
+ * mib related data (considered for
+ * netsnmp_access_ipaddress_entry_update)
+ */
+
+ u_char ia_address[NETSNMP_ACCESS_IPADDRESS_BUF_SIZE];
+
+ oid if_index;
+
+ u_char ia_address_len;/* address len, 4 | 16 */
+ u_char ia_prefix_len; /* 1-128 bits */
+ u_char ia_type; /* 1-3 */
+ u_char ia_status; /* IpAddressStatus (1-7) */
+ u_char ia_origin; /* IpAddressOrigin (1-6) */
+ u_char ia_storagetype; /* IpAddressStorageType (1-5) */
+ u_char ia_onlink_flag; /* IpOnlinkFlag */
+ u_char ia_autonomous_flag; /*IpAutonomousFlag */
+ u_long ia_prefered_lifetime;/*IpPreferedLifeTime*/
+ u_long ia_valid_lifetime;/*IpValidLifeTime*/
+ netsnmp_data_list *arch_data; /* arch specific data */
+
+} netsnmp_ipaddress_entry;
+
+
+/**---------------------------------------------------------------------*/
+/*
+ * ACCESS function prototypes
+ */
+/*
+ * ifcontainer init
+ */
+netsnmp_container * netsnmp_access_ipaddress_container_init(u_int init_flags);
+#define NETSNMP_ACCESS_IPADDRESS_INIT_NOFLAGS 0x0000
+#define NETSNMP_ACCESS_IPADDRESS_INIT_ADDL_IDX_BY_ADDR 0x0001
+
+/*
+ * ifcontainer load and free
+ */
+netsnmp_container*
+netsnmp_access_ipaddress_container_load(netsnmp_container* container,
+ u_int load_flags);
+#define NETSNMP_ACCESS_IPADDRESS_LOAD_NOFLAGS 0x0000
+#define NETSNMP_ACCESS_IPADDRESS_LOAD_IPV4_ONLY 0x0001
+#define NETSNMP_ACCESS_IPADDRESS_LOAD_IPV6_ONLY 0x0002
+#define NETSNMP_ACCESS_IPADDRESS_LOAD_ADDL_IDX_BY_ADDR 0x0004
+
+void netsnmp_access_ipaddress_container_free(netsnmp_container *container,
+ u_int free_flags);
+#define NETSNMP_ACCESS_IPADDRESS_FREE_NOFLAGS 0x0000
+#define NETSNMP_ACCESS_IPADDRESS_FREE_DONT_CLEAR 0x0001
+#define NETSNMP_ACCESS_IPADDRESS_FREE_KEEP_CONTAINER 0x0002
+
+
+/*
+ * create/free a ipaddress+entry
+ */
+netsnmp_ipaddress_entry *
+netsnmp_access_ipaddress_entry_create(void);
+
+void netsnmp_access_ipaddress_entry_free(netsnmp_ipaddress_entry * entry);
+
+/*
+ * copy
+ */
+int
+netsnmp_access_ipaddress_entry_copy(netsnmp_ipaddress_entry *old,
+ netsnmp_ipaddress_entry *new_val);
+
+/*
+ * update/compare
+ */
+int
+netsnmp_access_ipaddress_entry_update(netsnmp_ipaddress_entry *old,
+ netsnmp_ipaddress_entry *new_val);
+
+/*
+ * find entry in container
+ */
+/** not yet */
+
+/*
+ * create/change/delete
+ */
+int
+netsnmp_access_ipaddress_entry_set(netsnmp_ipaddress_entry * entry);
+
+
+/*
+ * ipaddress flags
+ * upper bits for internal use
+ * lower bits indicate changed fields. see FLAG_IPADDRESS* definitions in
+ * ipAddressTable_constants.h
+ */
+#define NETSNMP_ACCESS_IPADDRESS_CREATE 0x80000000
+#define NETSNMP_ACCESS_IPADDRESS_DELETE 0x40000000
+#define NETSNMP_ACCESS_IPADDRESS_CHANGE 0x20000000
+
+#define NETSNMP_ACCESS_IPADDRESS_ISALIAS 0x10000000
+
+/*
+ * mask for change flag bits
+ */
+#define NETSNMP_ACCESS_IPADDRESS_RESERVED_BITS 0x0000001f
+
+
+/*
+ * utility routines
+ */
+int netsnmp_ipaddress_prefix_copy(u_char *dst, u_char *src,
+ int addr_len, int pfx_len);
+
+int netsnmp_ipaddress_ipv4_prefix_len(in_addr_t mask);
+
+int netsnmp_ipaddress_flags_copy(u_long *ipAddressPrefixAdvPreferredLifetime,
+ u_long *ipAddressPrefixAdvValidLifetime,
+ u_long *ipAddressPrefixOnLinkFlag,
+ u_long *ipAddressPrefixAutonomousFlag,
+ u_long *ia_prefered_lifetime,
+ u_long *ia_valid_lifetime,
+ u_char *ia_onlink_flag,
+ u_char *ia_autonomous_flag);
+
+int netsnmp_ipaddress_prefix_origin_copy(u_long *ipAddressPrefixOrigin,
+ u_char ia_origin,
+ int flags,
+ u_long ipAddressAddrType);
+
+/**---------------------------------------------------------------------*/
+
+# ifdef __cplusplus
+}
+#endif
+
+#endif /* NETSNMP_ACCESS_IPADDRESS_H */