| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- /*
- * 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);
- in_addr_t netsnmp_ipaddress_ipv4_mask(int len);
- int netsnmp_ipaddress_ipv6_prefix_len(struct in6_addr 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 */
|