components/net-snmp/patches/004.16436.patch
author gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
Fri, 20 May 2011 12:17:45 +0530
changeset 252 ee0fb1eabcbf
permissions -rw-r--r--
7041085 move net-snmp to userland

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))) {