summaryrefslogtreecommitdiff
path: root/agent/mibgroup/kernel_sunos5.h
diff options
context:
space:
mode:
Diffstat (limited to 'agent/mibgroup/kernel_sunos5.h')
-rw-r--r--agent/mibgroup/kernel_sunos5.h224
1 files changed, 224 insertions, 0 deletions
diff --git a/agent/mibgroup/kernel_sunos5.h b/agent/mibgroup/kernel_sunos5.h
new file mode 100644
index 0000000..0bffcb9
--- /dev/null
+++ b/agent/mibgroup/kernel_sunos5.h
@@ -0,0 +1,224 @@
+/*- This is a -*- C -*- compatible header file
+ *
+ * Generic public interface for SUNOS5_INSTRUMENTATION
+ *
+ * This file contains manifest constants (#defines), macros, enumerations,
+ * public structure definitions, static const definitions, global variable
+ * declarations, and function prototypes.
+ *
+ * This file contains types and structures for SunOS 5.x instrumentation
+ *
+ */
+
+#ifndef _KERNEL_SUNOS5_H /* duplicate include prevention */
+#define _KERNEL_SUNOS5_H
+
+#include <inet/mib2.h>
+
+#ifndef HAVE_COUNTER64
+typedef uint64_t Counter64;
+#endif
+
+#define COPY_IPADDR(fp, from, tp, to) \
+ fp = from; \
+ tp = to; \
+ *tp++ = *fp++; \
+ *tp++ = *fp++; \
+ *tp++ = *fp++; \
+ *tp++ = *fp++;
+
+#ifdef MIB2_IP_TRAFFIC_STATS
+#define SOLARIS_HAVE_RFC4293_SUPPORT
+#endif
+
+#ifdef MIB2_IP6
+#define SOLARIS_HAVE_IPV6_MIB_SUPPORT
+#endif
+
+/*-
+ * Manifest constants
+ */
+
+#define KSTAT_DATA_MAX 100 /* Maximum number of kstat entries. To be changed later */
+
+/*-
+ * Macros
+ */
+#define CACHE_MOREDATA 0x001 /* There are unread data outside cache */
+
+/*-
+ * Enumeration types
+ */
+
+typedef enum { GET_FIRST, GET_EXACT, GET_NEXT } req_e;
+typedef enum { FOUND, NOT_FOUND, NEED_NEXT } found_e;
+
+typedef enum {
+ MIB_SYSTEM = 0,
+ MIB_INTERFACES = 1,
+ MIB_AT = 2,
+ MIB_IP = 3,
+ MIB_IP_ADDR = 4,
+ MIB_IP_ROUTE = 5,
+ MIB_IP_NET = 6,
+ MIB_ICMP = 7,
+ MIB_TCP = 8,
+ MIB_TCP_CONN = 9,
+ MIB_UDP = 10,
+ MIB_UDP_LISTEN = 11,
+ MIB_EGP = 12,
+ MIB_CMOT = 13,
+ MIB_TRANSMISSION = 14,
+ MIB_SNMP = 15,
+#ifdef SOLARIS_HAVE_IPV6_MIB_SUPPORT
+#ifdef SOLARIS_HAVE_RFC4293_SUPPORT
+ MIB_IP_TRAFFIC_STATS,
+#endif
+ MIB_IP6,
+ MIB_IP6_ADDR,
+ MIB_TCP6_CONN,
+ MIB_UDP6_ENDPOINT,
+#endif
+#ifdef MIB2_SCTP
+ MIB_SCTP,
+ MIB_SCTP_CONN,
+ MIB_SCTP_CONN_LOCAL,
+ MIB_SCTP_CONN_REMOTE,
+#endif
+ MIBCACHE_SIZE
+} mibgroup_e;
+
+/*-
+ * Structure definitions (use "typedef struct foo {} foo;" form)
+ */
+
+/*
+ * MIB-II cache. Simple buffering scheme - last read block is in the cache
+ */
+
+typedef struct mibcache {
+ mibgroup_e cache_groupid; /* MIB-II group */
+ size_t cache_size; /* Size of this cache table in bytes */
+ void *cache_addr; /* Pointer to real cache memory */
+ size_t cache_length; /* Useful length in bytes */
+ size_t cache_ttl; /* Time this type of cache entry stays valid */
+ time_t cache_time; /* CURRENT time left for this cache entry */
+ int cache_flags; /* Cache state */
+ int cache_last_found; /* Index of last cache element that was found */
+ void *cache_comp; /* Compare routine used to set the cache */
+ void *cache_arg; /* Argument for compare routine used to set the cache */
+} mibcache;
+
+/*
+ * Mapping between mibgroup_t, mibtable_t and mib2.h defines
+ */
+
+typedef struct mibmap {
+ int group; /* mib2.h group name */
+ int table; /* mib2.h table name */
+} mibmap;
+
+/*
+ * Structures, missing in <inet/mib2.h>
+ */
+typedef unsigned long TimeTicks;
+
+typedef struct mib2_ifEntry {
+ int ifIndex; /* ifEntry 1 */
+ DeviceName ifDescr; /* ifEntry 2 */
+ int ifType; /* ifEntry 3 */
+ int ifMtu; /* ifEntry 4 */
+ Gauge ifSpeed; /* ifEntry 5 */
+ PhysAddress ifPhysAddress; /* ifEntry 6 */
+ int ifAdminStatus; /* ifEntry 7 */
+ int ifOperStatus; /* ifEntry 8 */
+ TimeTicks ifLastChange; /* ifEntry 9 */
+ Counter ifInOctets; /* ifEntry 10 */
+ Counter ifInUcastPkts; /* ifEntry 11 */
+ Counter ifInNUcastPkts; /* ifEntry 12 */
+ Counter ifInDiscards; /* ifEntry 13 */
+ Counter ifInErrors; /* ifEntry 14 */
+ Counter ifInUnknownProtos; /* ifEntry 15 */
+ Counter ifOutOctets; /* ifEntry 16 */
+ Counter ifOutUcastPkts; /* ifEntry 17 */
+ Counter ifOutNUcastPkts; /* ifEntry 18 */
+ Counter ifOutDiscards; /* ifEntry 19 */
+ Counter ifOutErrors; /* ifEntry 20 */
+ Gauge ifOutQLen; /* ifEntry 21 */
+ int ifSpecific; /* ifEntry 22 */
+
+ /*
+ * Support ifXTable.
+ */
+ Counter64 ifHCInOctets;
+ Counter64 ifHCInUcastPkts;
+ Counter64 ifHCInMulticastPkts;
+ Counter64 ifHCInBroadcastPkts;
+ Counter64 ifHCOutOctets;
+ Counter64 ifHCOutUcastPkts;
+ Counter64 ifHCOutMulticastPkts;
+ Counter64 ifHCOutBroadcastPkts;
+
+ /*
+ * Counters not part of ifTable or ifXTable
+ */
+ Counter ifCollisions;
+ int flags; /* interface flags (IFF_*) */
+} mib2_ifEntry_t;
+
+/*-
+ * Static const definitions (must be declared static and initialized)
+ */
+
+
+/*-
+ * Global variable declarations (using extern and without initialization)
+ */
+
+/*-
+ * Function prototypes (use void as argument type if there are no arguments)
+ */
+
+#ifdef _STDC_COMPAT
+#ifdef __cplusplus
+extern "C" {
+#endif
+#endif
+ void init_kernel_sunos5(void);
+
+ int getKstat(const char *statname, const char *varname,
+ void *value);
+ int getMibstat(mibgroup_e grid, void *resp,
+ size_t entrysize, req_e req_type,
+ int (*comp) (void *, void *), void *arg);
+ int Get_everything(void *, void *);
+ int getKstatInt(const char *classname,
+ const char *statname, const char *varname,
+ int *value);
+
+ int getKstatString(const char *statname, const char *varname,
+ char *value, size_t value_len);
+
+ int solaris2_if_nametoindex(const char *, int);
+
+#ifdef _STDC_COMPAT
+#ifdef __cplusplus
+}
+#endif
+#endif
+/*-
+ * These variables describe the formatting of this file. If you don't like the
+ * template defaults, feel free to change them here (not in your .emacs file).
+ *
+ * Local Variables:
+ * comment-column: 32
+ * c-indent-level: 4
+ * c-continued-statement-offset: 4
+ * c-brace-offset: -4
+ * c-argdecl-indent: 0
+ * c-label-offset: -4
+ * fill-column: 79
+ * fill-prefix: " * "
+ * End:
+ */
+#endif