ipaddress.h
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. /*
  2.  * ipaddress data access header
  3.  *
  4.  * $Id: ipaddress.h,v 1.7 2004/10/19 03:20:34 rstory Exp $
  5.  */
  6. #ifndef NETSNMP_ACCESS_IPADDRESS_H
  7. #define NETSNMP_ACCESS_IPADDRESS_H
  8. # ifdef __cplusplus
  9. extern          "C" {
  10. #endif
  11. /**---------------------------------------------------------------------*/
  12. /*
  13.  * structure definitions
  14.  */
  15. #if defined( INET6 )
  16. #   define NETSNMP_ACCESS_IPADDRESS_BUF_SIZE 16   /* xxx-rks: 20, for ip6z? */
  17. #else
  18. #   define NETSNMP_ACCESS_IPADDRESS_BUF_SIZE 4
  19. #endif
  20. /*
  21.  * netsnmp_ipaddress_entry
  22.  *   - primary ipaddress structure for both ipv4 & ipv6
  23.  */
  24. typedef struct netsnmp_ipaddress_s {
  25.    netsnmp_index oid_index;   /* MUST BE FIRST!! for container use */
  26.    oid           ns_ia_index; /* arbitrary index */
  27.    int       flags; /* for net-snmp use */
  28.    /*
  29.     * mib related data (considered for
  30.     *  netsnmp_access_ipaddress_entry_update)
  31.     */
  32.    u_char    ia_address[NETSNMP_ACCESS_IPADDRESS_BUF_SIZE];
  33.    oid       if_index;
  34.    oid      *ia_prefix_oid; /* NULL == 0.0 */
  35.    u_char    ia_address_len;/* address len, 4 | 16 */
  36.    u_char    ia_prefix_oid_len; /* 1-128 oids */
  37.    u_char    ia_type;       /* 1-3 */
  38.    u_char    ia_status;     /* IpAddressStatus (1-7) */
  39.    u_char    ia_origin;     /* IpAddressOrigin (1-6) */
  40.    u_char    ia_storagetype; /* IpAddressStorageType (1-5) */
  41.    netsnmp_data_list *arch_data;      /* arch specific data */
  42. } netsnmp_ipaddress_entry;
  43. /**---------------------------------------------------------------------*/
  44. /*
  45.  * ACCESS function prototypes
  46.  */
  47. /*
  48.  * ifcontainer init
  49.  */
  50. netsnmp_container * netsnmp_access_ipaddress_container_init(u_int init_flags);
  51. #define NETSNMP_ACCESS_IPADDRESS_INIT_NOFLAGS               0x0000
  52. #define NETSNMP_ACCESS_IPADDRESS_INIT_ADDL_IDX_BY_ADDR      0x0001
  53. /*
  54.  * ifcontainer load and free
  55.  */
  56. netsnmp_container*
  57. netsnmp_access_ipaddress_container_load(netsnmp_container* container,
  58.                                     u_int load_flags);
  59. #define NETSNMP_ACCESS_IPADDRESS_LOAD_NOFLAGS               0x0000
  60. #define NETSNMP_ACCESS_IPADDRESS_LOAD_IPV4_ONLY             0x0001
  61. void netsnmp_access_ipaddress_container_free(netsnmp_container *container,
  62.                                          u_int free_flags);
  63. #define NETSNMP_ACCESS_IPADDRESS_FREE_NOFLAGS               0x0000
  64. #define NETSNMP_ACCESS_IPADDRESS_FREE_DONT_CLEAR            0x0001
  65. #define NETSNMP_ACCESS_IPADDRESS_FREE_KEEP_CONTAINER        0x0002
  66. /*
  67.  * create/free a ipaddress+entry
  68.  */
  69. netsnmp_ipaddress_entry *
  70. netsnmp_access_ipaddress_entry_create(void);
  71. void netsnmp_access_ipaddress_entry_free(netsnmp_ipaddress_entry * entry);
  72. /*
  73.  * copy
  74.  */
  75. int
  76. netsnmp_access_ipaddress_entry_copy(netsnmp_ipaddress_entry *old, 
  77.                                     netsnmp_ipaddress_entry *new);
  78. /*
  79.  * update/compare
  80.  */
  81. int
  82. netsnmp_access_ipaddress_entry_update(netsnmp_ipaddress_entry *old, 
  83.                                       netsnmp_ipaddress_entry *new);
  84. /*
  85.  * find entry in container
  86.  */
  87. /** not yet */
  88. /*
  89.  * create/change/delete
  90.  */
  91. int
  92. netsnmp_access_ipaddress_entry_set(netsnmp_ipaddress_entry * entry);
  93. /*
  94.  * ipaddress flags
  95.  *   upper bits for internal use
  96.  *   lower bits indicate changed fields. see FLAG_IPADDRESS* definitions in
  97.  *         ipAddressTable_constants.h
  98.  */
  99. #define NETSNMP_ACCESS_IPADDRESS_CREATE     0x80000000
  100. #define NETSNMP_ACCESS_IPADDRESS_DELETE     0x40000000
  101. #define NETSNMP_ACCESS_IPADDRESS_CHANGE     0x20000000
  102. #define NETSNMP_ACCESS_IPADDRESS_ISALIAS    0x10000000
  103. /* 
  104.  * mask for change flag bits
  105.  */
  106. #define NETSNMP_ACCESS_IPADDRESS_RESERVED_BITS 0x0000001f
  107. /**---------------------------------------------------------------------*/
  108. # ifdef __cplusplus
  109. }
  110. #endif
  111. #endif /* NETSNMP_ACCESS_IPADDRESS_H */