components/net-snmp/patches/004.16436.patch
changeset 252 ee0fb1eabcbf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/004.16436.patch	Fri May 20 12:17:45 2011 +0530
@@ -0,0 +1,162 @@
+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))) {