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

SNMP编程

开发平台:

Unix_Linux

  1. /*- This is a -*- C -*- compatible header file
  2.  *
  3.  * Generic public interface for SUNOS5_INSTRUMENTATION
  4.  *
  5.  * This file contains manifest constants (#defines), macros, enumerations,
  6.  * public structure definitions, static const definitions, global variable
  7.  * declarations, and function prototypes.
  8.  *
  9.  * This file contains types and structures for SunOS 5.x instrumentation
  10.  *
  11.  */
  12. #include <inet/mib2.h>
  13. #define COPY_IPADDR(fp, from, tp, to) 
  14. fp = from;
  15. tp = to;
  16. *tp++ = *fp++;
  17. *tp++ = *fp++;
  18. *tp++ = *fp++;
  19. *tp++ = *fp++;
  20. #ifndef ZZ_SUNOS5_INSTR         /* duplicate include prevention */
  21. #define ZZ_SUNOS5_INSTR
  22. /*-
  23.  * Manifest constants
  24.  */
  25. #define KSTAT_DATA_MAX 100     /* Maximum number of kstat entries. To be changed later  */
  26. #define MIBCACHE_SIZE 20      /* Number of MIB cache entries */
  27. /*-
  28.  * Macros
  29.  */
  30. #define CACHE_MOREDATA 0x001   /* There are unread data outside cache */
  31. /*-
  32.  * Enumeration types
  33.  */
  34. typedef enum { GET_FIRST, GET_EXACT, GET_NEXT } req_e;
  35. typedef enum { FOUND, NOT_FOUND, NEED_NEXT } found_e;
  36. typedef enum {
  37.     MIB_SYSTEM = 0,
  38.     MIB_INTERFACES = 1,
  39.     MIB_AT = 2,
  40.     MIB_IP = 3,
  41.     MIB_IP_ADDR = 4,
  42.     MIB_IP_ROUTE = 5,
  43.     MIB_IP_NET = 6,
  44.     MIB_ICMP = 7,
  45.     MIB_TCP = 8,
  46.     MIB_TCP_CONN = 9,
  47.     MIB_UDP = 10,
  48.     MIB_UDP_LISTEN = 11,
  49.     MIB_EGP = 12,
  50.     MIB_CMOT = 13,
  51.     MIB_TRANSMISSION = 14,
  52.     MIB_SNMP = 15
  53. } mibgroup_e;
  54. /*-
  55.  * Structure definitions (use "typedef struct foo {} foo;" form)
  56.  */
  57. /*
  58.  * MIB-II cache. Simple buffering scheme - last read block is in the cache 
  59.  */
  60. typedef struct mibcache {
  61.     mibgroup_e      cache_groupid;      /* MIB-II group */
  62.     size_t          cache_size; /* Size of this cache table in bytes */
  63.     void           *cache_addr; /* Pointer to real cache memory */
  64.     size_t          cache_length;       /* Useful length in bytes */
  65.     size_t          cache_ttl;  /* Time this type of cache entry stays valid */
  66.     time_t          cache_time; /* CURRENT time left for this cache entry */
  67.     int             cache_flags;        /* Cache state */
  68.     int             cache_last_found;   /* Index of last cache element that was found */
  69.     void           *cache_comp; /* Compare routine used to set the cache */
  70.     void           *cache_arg;  /* Argument for compare routine used to set the cache */
  71. } mibcache;
  72. /*
  73.  * Mapping between mibgroup_t, mibtable_t and mib2.h defines 
  74.  */
  75. typedef struct mibmap {
  76.     int             group;      /* mib2.h group name */
  77.     int             table;      /* mib2.h table name */
  78. } mibmap;
  79. /*
  80.  * Structures, missing in <inet/mib2.h> 
  81.  */
  82. typedef unsigned long TimeTicks;
  83. typedef struct mib2_ifEntry {
  84.     int             ifIndex;    /* ifEntry 1 */
  85.     DeviceName      ifDescr;    /* ifEntry 2 */
  86.     int             ifType;     /* ifEntry 3 */
  87.     int             ifMtu;      /* ifEntry 4 */
  88.     Gauge           ifSpeed;    /* ifEntry 5 */
  89.     PhysAddress     ifPhysAddress;      /* ifEntry 6 */
  90.     int             ifAdminStatus;      /* ifEntry 7 */
  91.     int             ifOperStatus;       /* ifEntry 8 */
  92.     TimeTicks       ifLastChange;       /* ifEntry 9 */
  93.     Counter         ifInOctets; /* ifEntry 10 */
  94.     Counter         ifInUcastPkts;      /* ifEntry 11 */
  95.     Counter         ifInNUcastPkts;     /* ifEntry 12 */
  96.     Counter         ifInDiscards;       /* ifEntry 13 */
  97.     Counter         ifInErrors; /* ifEntry 14 */
  98.     Counter         ifInUnknownProtos;  /* ifEntry 15 */
  99.     Counter         ifOutOctets;        /* ifEntry 16 */
  100.     Counter         ifOutUcastPkts;     /* ifEntry 17 */
  101.     Counter         ifOutNUcastPkts;    /* ifEntry 18 */
  102.     Counter         ifOutDiscards;      /* ifEntry 19 */
  103.     Counter         ifOutErrors;        /* ifEntry 20 */
  104.     Gauge           ifOutQLen;  /* ifEntry 21 */
  105.     int             ifSpecific; /* ifEntry 22 */
  106. } mib2_ifEntry_t;
  107. /*-
  108.  * Static const definitions (must be declared static and initialized)
  109.  */
  110. /*-
  111.  * Global variable declarations (using extern and without initialization)
  112.  */
  113. /*-
  114.  * Function prototypes (use void as argument type if there are no arguments)
  115.  */
  116. #ifdef _STDC_COMPAT
  117. #ifdef __cplusplus
  118. extern          "C" {
  119. #endif
  120. #endif
  121.     void            init_kernel_sunos5(void);
  122.     int             getKstat(const char *statname, const char *varname,
  123.                              void *value);
  124.     int             getMibstat(mibgroup_e grid, void *resp,
  125.                                size_t entrysize, req_e req_type,
  126.                                int (*comp) (void *, void *), void *arg);
  127.     int             Get_everything(void *, void *);
  128.     int             getKstatInt(const char *classname,
  129.                                 const char *statname, const char *varname,
  130.                                 int *value);
  131.     int             getKstatString(const char *statname, const char *varname,
  132.                                    char *value, size_t value_len);
  133. #ifdef _STDC_COMPAT
  134. #ifdef __cplusplus
  135. }
  136. #endif
  137. #endif
  138. /*-
  139.  * These variables describe the formatting of this file.  If you don't like the
  140.  * template defaults, feel free to change them here (not in your .emacs file).
  141.  *
  142.  * Local Variables:
  143.  * comment-column: 32
  144.  * c-indent-level: 4
  145.  * c-continued-statement-offset: 4
  146.  * c-brace-offset: -4
  147.  * c-argdecl-indent: 0
  148.  * c-label-offset: -4
  149.  * fill-column: 79
  150.  * fill-prefix: " * "
  151.  * End:
  152.  */
  153. #endif