Index: net-snmp/include/net-snmp/system/solaris.h
===================================================================
--- net-snmp/include/net-snmp/system/solaris.h (revision 16435)
+++ net-snmp/include/net-snmp/system/solaris.h (revision 16436)
@@ -38,3 +38,10 @@
/* Solaris 7+ */
#define NETSNMP_DONT_USE_NLIST 1
+
+/*
+ * NEW_MIB_COMPLIANT is a define used in Solaris 10U4+ to enable additional
+ * MIB information (it affects the structs in <inet/mib2.h>
+ */
+
+#define NEW_MIB_COMPLIANT
Index: net-snmp/configure.in
===================================================================
--- net-snmp/configure.in (revision 16435)
+++ net-snmp/configure.in (revision 16436)
@@ -1339,8 +1339,9 @@
AC_CHECK_TYPES([off64_t])
AC_CHECK_TYPES([uintptr_t, intptr_t])
-# solaris specific type
+# solaris specific types
AC_CHECK_TYPES([Counter64],,,[#include <inet/mib2.h>])
+AC_CHECK_TYPES([mib2_ipIfStatsEntry_t],,,[#include <inet/mib2.h>])
# guess IPv6 stack type.
if test "x$enable_ipv6" = "xyes"; then
Index: net-snmp/agent/mibgroup/kernel_sunos5.h
===================================================================
--- net-snmp/agent/mibgroup/kernel_sunos5.h (revision 16435)
+++ net-snmp/agent/mibgroup/kernel_sunos5.h (revision 16436)
@@ -71,7 +71,11 @@
MIB_TRANSMISSION = 14,
MIB_SNMP = 15,
#ifdef SOLARIS_HAVE_IPV6_MIB_SUPPORT
- MIB_IP6_ADDR = 16,
+#ifdef SOLARIS_HAVE_RFC4293_SUPPORT
+ MIB_IP_TRAFFIC_STATS,
+#endif
+ MIB_IP6,
+ MIB_IP6_ADDR,
MIB_TCP6_CONN,
MIB_UDP6_ENDPOINT,
#endif
Index: net-snmp/agent/mibgroup/if-mib/data_access/interface_solaris2.c
===================================================================
--- net-snmp/agent/mibgroup/if-mib/data_access/interface_solaris2.c (revision 16435)
+++ net-snmp/agent/mibgroup/if-mib/data_access/interface_solaris2.c (revision 16436)
@@ -3,9 +3,9 @@
*/
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
-#include "mibII/mibII_common.h"
#include "if-mib/ifTable/ifTable_constants.h"
#include "kernel_sunos5.h"
+#include "mibII/mibII_common.h"
#include <net-snmp/agent/net-snmp-agent-includes.h>
Index: net-snmp/agent/mibgroup/ip-mib/data_access/ipaddress.h
===================================================================
--- net-snmp/agent/mibgroup/ip-mib/data_access/ipaddress.h (revision 16435)
+++ net-snmp/agent/mibgroup/ip-mib/data_access/ipaddress.h (revision 16436)
@@ -20,6 +20,8 @@
config_require(ip-mib/data_access/ipaddress_common)
#if defined( linux )
config_require(ip-mib/data_access/ipaddress_linux)
+#elif defined( solaris2 )
+config_require(ip-mib/data_access/ipaddress_solaris2)
#else
config_error(the ipaddress data access library is not available in this environment.)
#endif
Index: net-snmp/agent/mibgroup/ip-mib/data_access/systemstats.h
===================================================================
--- net-snmp/agent/mibgroup/ip-mib/data_access/systemstats.h (revision 16435)
+++ net-snmp/agent/mibgroup/ip-mib/data_access/systemstats.h (revision 16436)
@@ -20,6 +20,8 @@
config_require(ip-mib/data_access/systemstats_common)
#if defined( linux )
config_require(ip-mib/data_access/systemstats_linux)
+#elif defined( solaris2 )
+config_require(ip-mib/data_access/systemstats_solaris2)
#else
config_error(the systemstats data access library is not available in this environment.)
#endif
Index: net-snmp/agent/mibgroup/mibII.h
===================================================================
--- net-snmp/agent/mibgroup/mibII.h (revision 16435)
+++ net-snmp/agent/mibgroup/mibII.h (revision 16436)
@@ -30,3 +30,10 @@
#if defined( linux )
config_require(ip-mib ip-forward-mib tcp-mib udp-mib)
#endif
+
+/*
+ * For Solaris, enable additional tables when it has extended MIB support.
+ */
+#if defined( solaris2 ) && defined( HAVE_MIB2_IPIFSTATSENTRY_T )
+config_require(ip-mib/ipSystemStatsTable ip-mib/ipAddressTable)
+#endif
Index: net-snmp/agent/mibgroup/kernel_sunos5.c
===================================================================
--- net-snmp/agent/mibgroup/kernel_sunos5.c (revision 16435)
+++ net-snmp/agent/mibgroup/kernel_sunos5.c (revision 16436)
@@ -45,6 +45,7 @@
#include <kstat.h>
#include <errno.h>
#include <time.h>
+#include <ctype.h>
#include <sys/sockio.h>
#include <sys/socket.h>
@@ -103,6 +104,13 @@
{MIB_TRANSMISSION, 0, (void *) -1, 0, 0, 0, 0},
{MIB_SNMP, 0, (void *) -1, 0, 0, 0, 0},
#ifdef SOLARIS_HAVE_IPV6_MIB_SUPPORT
+#ifdef SOLARIS_HAVE_RFC4293_SUPPORT
+ {MIB_IP_TRAFFIC_STATS, 20 * sizeof(mib2_ipIfStatsEntry_t), (void *)-1, 0,
+ 30, 0, 0},
+ {MIB_IP6, 20 * sizeof(mib2_ipIfStatsEntry_t), (void *)-1, 0, 30, 0, 0},
+#else
+ {MIB_IP6, 20 * sizeof(mib2_ipv6IfStatsEntry_t), (void *)-1, 0, 30, 0, 0},
+#endif
{MIB_IP6_ADDR, 20 * sizeof(mib2_ipv6AddrEntry_t), (void *)-1, 0, 30, 0, 0},
{MIB_TCP6_CONN, 1000 * sizeof(mib2_tcp6ConnEntry_t), (void *) -1, 0, 30,
0, 0},
@@ -131,6 +139,10 @@
{MIB2_TRANSMISSION, 0,},
{MIB2_SNMP, 0,},
#ifdef SOLARIS_HAVE_IPV6_MIB_SUPPORT
+#ifdef SOLARIS_HAVE_RFC4293_SUPPORT
+ {MIB2_IP, MIB2_IP_TRAFFIC_STATS},
+#endif
+ {MIB2_IP6, 0},
{MIB2_IP6, MIB2_IP6_ADDR},
{MIB2_TCP6, MIB2_TCP6_CONN},
{MIB2_UDP6, MIB2_UDP6_ENTRY},
@@ -343,7 +355,8 @@
kstat_ctl_t *ksc;
kstat_t *ks, *kstat_data;
kstat_named_t *d;
- size_t i, instance;
+ uint_t i;
+ int instance;
char module_name[64];
int ret;
u_longlong_t val; /* The largest value */
@@ -900,7 +913,11 @@
req = (struct opthdr *)(tor + 1);
req->level = groupname;
req->name = subgroupname;
+#if defined( SOLARIS_HAVE_RFC4293_SUPPORT )
+ req->len = 1; /* Used as a flag for S10 to grab extra data */
+#else
req->len = 0;
+#endif
strbuf.len = tor->OPT_length + tor->OPT_offset;
flags = 0;
if ((rc = putmsg(sd, &strbuf, NULL, flags))) {