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

SNMP编程

开发平台:

Unix_Linux

  1. #ifndef NET_SNMP_TYPES_H
  2. #define NET_SNMP_TYPES_H
  3.     /**
  4.      *  Definitions of data structures, used within the library API.
  5.      */
  6. #include <stdio.h>
  7. #ifndef NET_SNMP_CONFIG_H
  8. #error "Please include <net-snmp/net-snmp-config.h> before this file"
  9. #endif
  10.                         /*
  11.                          * For 'timeval' 
  12.                          */
  13. #if TIME_WITH_SYS_TIME
  14. # ifdef WIN32
  15. #  include <sys/timeb.h>
  16. # else
  17. #  include <sys/time.h>
  18. # endif
  19. # include <time.h>
  20. #else
  21. # if HAVE_SYS_TIME_H
  22. #  include <sys/time.h>
  23. # else
  24. #  include <time.h>
  25. # endif
  26. #endif
  27. #ifdef HAVE_INTTYPES_H
  28. #include <inttypes.h>
  29. #endif
  30. #include <sys/types.h>
  31. #ifdef HAVE_WINSOCK_H
  32. #include <winsock.h>
  33. #endif
  34. #if HAVE_NETINET_IN_H
  35. #include <netinet/in.h> /* For definition of in_addr_t */
  36. #endif
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40. #ifndef MAX_SUBID               /* temporary - duplicate definition protection */
  41. #ifndef EIGHTBIT_SUBIDS
  42. typedef u_long  oid;
  43. #define MAX_SUBID   0xFFFFFFFF
  44. #else
  45. typedef u_char  oid;
  46. #define MAX_SUBID   0xFF
  47. #endif
  48. #endif
  49. #ifndef HAVE_SOCKLEN_T
  50. typedef u_int socklen_t;
  51. #endif
  52. #ifndef HAVE_IN_ADDR_T
  53. typedef u_int in_addr_t;
  54. #endif
  55. #ifndef HAVE_SSIZE_T
  56. #if defined(__INT_MAX__) && __INT_MAX__ == 2147483647
  57. typedef int ssize_t;
  58. #else
  59. typedef long ssize_t;
  60. #endif
  61. #endif
  62.     /*
  63.      * Try to ensure we have 32-bit (and hopefully 64-bit)
  64.      *    integer types available.
  65.      */
  66. #ifndef HAVE_INT32_T
  67. #if   SIZEOF_INT == 4
  68. #define INT32_T int 
  69. #elif SIZEOF_LONG == 4
  70. #define INT32_T long 
  71. #elif SIZEOF_SHORT == 4
  72. #define INT32_T short 
  73. #else
  74. #define _INT32_IS_NOT_32BIT
  75. #define INT32_T int 
  76. #endif
  77. typedef INT32_T int32_t;
  78. #endif /* !HAVE_INT32_T */
  79. #ifndef HAVE_UINT32_T
  80. #ifdef HAVE_U_INT32_T
  81. typedef u_int32_t        uint32_t;
  82. #else
  83. #ifdef INT32_T
  84. typedef unsigned INT32_T uint32_t;
  85. #else
  86. typedef unsigned int     uint32_t;
  87. #endif
  88. #endif
  89. #endif /* !HAVE_UINT32_T */
  90. #ifndef HAVE_INT64_T
  91. #if SIZEOF_LONG == 8
  92. #define INT64_T long 
  93. #elif SIZEOF_LONG_LONG == 8
  94. #define INT64_T long long
  95. #elif   SIZEOF_INT == 8
  96. #define INT64_T int 
  97. #elif SIZEOF_LONG >= 8
  98. #define INT64_T long 
  99. #define _INT64_IS_NOT_64BIT
  100. #endif
  101. #ifdef INT64_T
  102. typedef INT64_T int64_t;
  103. #endif
  104. #endif /* !HAVE_INT64_T */
  105. #ifndef HAVE_UINT64_T
  106. #ifdef HAVE_U_INT64_T
  107. typedef u_int64_t        uint64_t;
  108. #elif defined(INT64_T)
  109. typedef unsigned INT64_T uint64_t;
  110. #endif
  111. #endif
  112.     /*
  113.      *  For the initial release, this will just refer to the
  114.      *  relevant UCD header files.
  115.      *    In due course, the types and structures relevant to the
  116.      *  Net-SNMP API will be identified, and defined here directly.
  117.      *
  118.      *  But for the time being, this header file is primarily a placeholder,
  119.      *  to allow application writers to adopt the new header file names.
  120.      */
  121. #include <net-snmp/definitions.h>
  122. #include <net-snmp/library/snmp_api.h>
  123. /*
  124.  * #include <net-snmp/library/libsnmp.h> 
  125.  */
  126.     typedef struct netsnmp_index_s {
  127.        int          len;
  128.        oid         *oids;
  129.     } netsnmp_index;
  130.     typedef struct netsnmp_void_array_s {
  131.        size_t  size;
  132.        void * *array;
  133.     } netsnmp_void_array;
  134.     /*
  135.      * references to various types
  136.      */
  137.     typedef struct netsnmp_ref_void {
  138.        void * val;
  139.     } netsnmp_ref_void;
  140. #if 0
  141.     typedef struct netsnmp_ref_u_char {
  142.        u_char * val;
  143.     } netsnmp_ref_U_char;
  144.     typedef struct netsnmp_ref_char {
  145.        char * val;
  146.     } netsnmp_ref_void;
  147.     typedef struct netsnmp_ref_int_s {
  148.        int val;
  149.     } netsnmp_ref_int;
  150.     typedef struct netsnmp_ref_u_int_s {
  151.        u_int val;
  152.     } netsnmp_ref_int;
  153.     typedef struct netsnmp_ref_u_long_s {
  154.        u_long val;
  155.     } netsnmp_ref_u_long;
  156. #endif
  157.     typedef struct netsnmp_ref_size_t_s {
  158.        size_t val;
  159.     } * netsnmp_ref_size_t;
  160. #ifdef __cplusplus
  161. }
  162. #endif
  163. #endif                          /* NET_SNMP_TYPES_H */