backout 16488880/15685782/15997718/15705167/15754602/16003771/16242256 - needs more work
--- a/components/net-snmp/Makefile Thu May 16 14:50:57 2013 -0700
+++ b/components/net-snmp/Makefile Sat May 18 09:18:20 2013 -0700
@@ -18,7 +18,7 @@
#
# CDDL HEADER END
#
-# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
#
include ../../make-rules/shared-macros.mk
@@ -26,13 +26,14 @@
DOXYGEN=/usr/bin/doxygen
COMPONENT_NAME= net-snmp
-COMPONENT_VERSION= 5.7.2
+COMPONENT_VERSION= 5.4.1
COMPONENT_PROJECT_URL= http://www.net-snmp.org/
COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_HASH= \
- sha256:09ed31b4cc1f3c0411ef9a16eff79ef3b30d89c32ca46d5a01a41826c4ceb816
-COMPONENT_ARCHIVE_URL= http://ftp.ntua.gr/mirror/net-snmp/net-snmp/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
+ sha256:0ea976722c993c87dede8eb6348e6feb059e3851bbef2de824bf18ac97cdb565
+#COMPONENT_ARCHIVE_URL= http://ftp.ntua.gr/mirror/net-snmp/net-snmp/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
+COMPONENT_ARCHIVE_URL= http://ftp.ntua.gr/mirror/net-snmp/OldFiles/net-snmp-5.4.x/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
COMPONENT_BUGDB= service/net-snmp utility/net-snmp library/net-snmp
include $(WS_TOP)/make-rules/prep.mk
@@ -80,9 +81,6 @@
CONFIGURE_OPTIONS += CPPFLAGS="$(CPPFLAGS)"
CONFIGURE_OPTIONS += CC="$(CC)"
-# Enable ASLR for this component
-ASLR_MODE = $(ASLR_ENABLE)
-
PKG_MACROS += BUILD_DIR=$(BUILD_DIR)
COMPONENT_PRE_CONFIGURE_ACTION = \
@@ -110,9 +108,7 @@
$(INSTALL_32): COMPONENT_POST_INSTALL_ACTION= \
($(MKDIR) -p $(BUILD_DIR)/prototype/$(MACH)/etc/net-snmp/snmp/mibs; \
cd $(BUILD_DIR)/$(MACH32)/sun ; ls agent; $(CCSMAKE) -e $(CCSMAKE_ARGS) install) ; \
- (cd $(@D)/python2.7 ; env CFLAGS="-I$(BUILD_DIR)/$(MACH32)/include \
- -L$(BUILD_DIR)/$(MACH32)/agent/.libs -L$(BUILD_DIR)/$(MACH32)/snmplib/.libs" \
- PYTHON=$(PYTHON.2.7.$(BITS)) \
+ (cd $(@D)/python2.7 ; env PYTHON=$(PYTHON.2.7.$(BITS)) \
$(PYTHON.2.7.$(BITS)) ./setup.py install \
--root $(PROTO_DIR) \
--install-lib=$(PYTHON.2.7.VENDOR_PACKAGES))
--- a/components/net-snmp/net-snmp-26.p5m Thu May 16 14:50:57 2013 -0700
+++ b/components/net-snmp/net-snmp-26.p5m Sat May 18 09:18:20 2013 -0700
@@ -25,7 +25,6 @@
value=pkg:/library/python-2/net-snmp-26@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="The Net-SNMP - Python 2.6 bindings"
set name=com.oracle.info.description value="Python 2.6 bindings for Net-SNMP"
-set name=com.oracle.info.tpno value=13120
set name=info.classification \
value=org.opensolaris.category.2008:Development/Python
set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
--- a/components/net-snmp/net-snmp-27.p5m Thu May 16 14:50:57 2013 -0700
+++ b/components/net-snmp/net-snmp-27.p5m Sat May 18 09:18:20 2013 -0700
@@ -25,7 +25,6 @@
value=pkg:/library/python-2/net-snmp-27@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="The Net-SNMP - Python 2.7 bindings"
set name=com.oracle.info.description value="Python 2.7 bindings for Net-SNMP"
-set name=com.oracle.info.tpno value=13120
set name=info.classification \
value=org.opensolaris.category.2008:Development/Python
set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
--- a/components/net-snmp/net-snmp-addons.p5m Thu May 16 14:50:57 2013 -0700
+++ b/components/net-snmp/net-snmp-addons.p5m Sat May 18 09:18:20 2013 -0700
@@ -24,7 +24,6 @@
set name=pkg.fmri value=pkg:/system/management/snmp/net-snmp/addons@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="Net-SNMP addon libraries"
set name=com.oracle.info.description value="the Net-SNMP addon libraries"
-set name=com.oracle.info.tpno value=13120
set name=info.classification value="org.opensolaris.category.2008:System/Enterprise Management"
set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
--- a/components/net-snmp/net-snmp-base.p5m Thu May 16 14:50:57 2013 -0700
+++ b/components/net-snmp/net-snmp-base.p5m Sat May 18 09:18:20 2013 -0700
@@ -29,7 +29,6 @@
set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
set name=com.oracle.info.description value="the Net-SNMP agent files and libraries"
-set name=com.oracle.info.tpno value=13120
set name=info.classification value="org.opensolaris.category.2008:System/Enterprise Management"
set name=org.opensolaris.arc-caseid \
@@ -103,7 +102,6 @@
file local/mib2c-conf.d/syntax-RowStatus-varbind-validate.m2i path=etc/net-snmp/snmp/mib2c-data/syntax-RowStatus-varbind-validate.m2i
file local/mib2c-conf.d/syntax-StorageType-dependencies.m2i path=etc/net-snmp/snmp/mib2c-data/syntax-StorageType-dependencies.m2i
file local/mib2c-conf.d/syntax-TestAndIncr-get.m2i path=etc/net-snmp/snmp/mib2c-data/syntax-TestAndIncr-get.m2i
-file local/mib2c-conf.d/generic-get-U64.m2i path=etc/net-snmp/snmp/mib2c-data/generic-get-U64.m2i
file local/mib2c.access_functions.conf path=etc/net-snmp/snmp/mib2c.access_functions.conf
file local/mib2c.array-user.conf path=etc/net-snmp/snmp/mib2c.array-user.conf
file local/mib2c.check_values.conf path=etc/net-snmp/snmp/mib2c.check_values.conf
@@ -123,7 +121,6 @@
file local/mib2c.notify.conf path=etc/net-snmp/snmp/mib2c.notify.conf
file local/mib2c.old-api.conf path=etc/net-snmp/snmp/mib2c.old-api.conf
file local/mib2c.perl.conf path=etc/net-snmp/snmp/mib2c.perl.conf
-file local/mib2c.raw-table.conf path=etc/net-snmp/snmp/mib2c.raw-table.conf
file local/mib2c.row.conf path=etc/net-snmp/snmp/mib2c.row.conf
file local/mib2c.scalar.conf path=etc/net-snmp/snmp/mib2c.scalar.conf
file local/mib2c.table_data.conf path=etc/net-snmp/snmp/mib2c.table_data.conf
@@ -135,9 +132,6 @@
file $(MACH32)/sun/agent/mibs/SUN-SEA-PROXY-MIB.txt path=etc/net-snmp/snmp/mibs/SUN-SEA-PROXY-MIB.txt
file $(MACH32)/sun/agent/mibs/smatrap.mib path=etc/net-snmp/snmp/mibs/smatrap.mib
file mibs/AGENTX-MIB.txt path=etc/net-snmp/snmp/mibs/AGENTX-MIB.txt
-file mibs/BRIDGE-MIB.txt path=etc/net-snmp/snmp/mibs/BRIDGE-MIB.txt
-file mibs/NET-SNMP-PASS-MIB.txt path=etc/net-snmp/snmp/mibs/NET-SNMP-PASS-MIB.txt
-file mibs/SCTP-MIB.txt path=etc/net-snmp/snmp/mibs/SCTP-MIB.txt
file mibs/DISMAN-EVENT-MIB.txt path=etc/net-snmp/snmp/mibs/DISMAN-EVENT-MIB.txt
file mibs/DISMAN-EXPRESSION-MIB.txt path=etc/net-snmp/snmp/mibs/DISMAN-EXPRESSION-MIB.txt
file mibs/DISMAN-NSLOOKUP-MIB.txt path=etc/net-snmp/snmp/mibs/DISMAN-NSLOOKUP-MIB.txt
@@ -234,7 +228,6 @@
file path=usr/bin/mib2c
file path=usr/bin/mib2c-update
file usr/bin/net-snmp-config path=usr/bin/net-snmp-config-32
-file path=usr/bin/net-snmp-create-v3-user
file build/prototype/$(MACH64)/usr/bin/$(MACH64)/net-snmp-config path=usr/bin/net-snmp-config-64
file path=usr/bin/snmpbulkget
file path=usr/bin/snmpbulkwalk
@@ -256,17 +249,12 @@
file path=usr/bin/snmpwalk
file path=usr/bin/tkmib
file path=usr/bin/traptoemail
-file build/prototype/$(MACH64)/usr/bin/$(MACH64)/net-snmp-create-v3-user path=usr/bin/$(MACH64)/net-snmp-create-v3-user
-file build/prototype/$(MACH64)/usr/bin/$(MACH64)/agentxtrap path=usr/lib/$(MACH64)/agentxtrap
-file build/prototype/$(MACH64)/usr/bin/$(MACH64)/net-snmp-cert path=usr/lib/$(MACH64)/net-snmp-cert
-file build/prototype/$(MACH64)/usr/bin/$(MACH64)/snmp-bridge-mib path=usr/lib/$(MACH64)/snmp-bridge-mib
file path=usr/include/net-snmp/agent/agent_callbacks.h
file path=usr/include/net-snmp/agent/agent_handler.h
file path=usr/include/net-snmp/agent/agent_index.h
file path=usr/include/net-snmp/agent/agent_module_config.h
file path=usr/include/net-snmp/agent/agent_read_config.h
file path=usr/include/net-snmp/agent/agent_registry.h
-file path=usr/include/net-snmp/agent/agent_sysORTable.h
file path=usr/include/net-snmp/agent/agent_trap.h
file path=usr/include/net-snmp/agent/all_helpers.h
file path=usr/include/net-snmp/agent/auto_nlist.h
@@ -292,12 +280,9 @@
file path=usr/include/net-snmp/agent/serialize.h
file path=usr/include/net-snmp/agent/set_helper.h
file path=usr/include/net-snmp/agent/snmp_agent.h
-file path=usr/include/net-snmp/agent/snmp_get_statistic.h
file path=usr/include/net-snmp/agent/snmp_vars.h
file path=usr/include/net-snmp/agent/stash_cache.h
file path=usr/include/net-snmp/agent/stash_to_next.h
-file path=usr/include/net-snmp/agent/struct.h
-file path=usr/include/net-snmp/agent/sysORTable.h
file path=usr/include/net-snmp/agent/table_array.h
file path=usr/include/net-snmp/agent/table_container.h
file path=usr/include/net-snmp/agent/table_data.h
@@ -312,8 +297,8 @@
file path=usr/include/net-snmp/definitions.h
file path=usr/include/net-snmp/library/asn1.h
file path=usr/include/net-snmp/library/callback.h
-file path=usr/include/net-snmp/library/cert_util.h
file path=usr/include/net-snmp/library/check_varbind.h
+file path=usr/include/net-snmp/library/cmu_compat.h
file path=usr/include/net-snmp/library/container_binary_array.h
file path=usr/include/net-snmp/library/container_iterator.h
file path=usr/include/net-snmp/library/container_list_ssll.h
@@ -321,19 +306,16 @@
file path=usr/include/net-snmp/library/container.h
file path=usr/include/net-snmp/library/data_list.h
file path=usr/include/net-snmp/library/default_store.h
-file path=usr/include/net-snmp/library/dir_utils.h
file path=usr/include/net-snmp/library/factory.h
file path=usr/include/net-snmp/library/fd_event_manager.h
file path=usr/include/net-snmp/library/file_utils.h
file path=usr/include/net-snmp/library/getopt.h
file path=usr/include/net-snmp/library/int64.h
file path=usr/include/net-snmp/library/keytools.h
-file path=usr/include/net-snmp/library/large_fd_set.h
file path=usr/include/net-snmp/library/lcd_time.h
file path=usr/include/net-snmp/library/md5.h
file path=usr/include/net-snmp/library/mib.h
file path=usr/include/net-snmp/library/mt_support.h
-file path=usr/include/net-snmp/library/oid.h
file path=usr/include/net-snmp/library/oid_stash.h
file path=usr/include/net-snmp/library/parse.h
file path=usr/include/net-snmp/library/read_config.h
@@ -353,17 +335,10 @@
file path=usr/include/net-snmp/library/snmp_transport.h
file path=usr/include/net-snmp/library/snmp-tc.h
file path=usr/include/net-snmp/library/snmp.h
-file path=usr/include/net-snmp/library/snmpAliasDomain.h
file path=usr/include/net-snmp/library/snmpCallbackDomain.h
-file path=usr/include/net-snmp/library/snmpIPv4BaseDomain.h
-file path=usr/include/net-snmp/library/snmpIPv6BaseDomain.h
-file path=usr/include/net-snmp/library/snmpSocketBaseDomain.h
-file path=usr/include/net-snmp/library/snmpTCPBaseDomain.h
file path=usr/include/net-snmp/library/snmpTCPDomain.h
file path=usr/include/net-snmp/library/snmpTCPIPv6Domain.h
-file path=usr/include/net-snmp/library/snmpUDPBaseDomain.h
file path=usr/include/net-snmp/library/snmpUDPDomain.h
-file path=usr/include/net-snmp/library/snmpUDPIPv4BaseDomain.h
file path=usr/include/net-snmp/library/snmpUDPIPv6Domain.h
file path=usr/include/net-snmp/library/snmpUnixDomain.h
file path=usr/include/net-snmp/library/snmpusm.h
@@ -373,7 +348,6 @@
file path=usr/include/net-snmp/library/text_utils.h
file path=usr/include/net-snmp/library/tools.h
file path=usr/include/net-snmp/library/transform_oids.h
-file path=usr/include/net-snmp/library/types.h
file path=usr/include/net-snmp/library/ucd_compat.h
file path=usr/include/net-snmp/library/vacm.h
file path=usr/include/net-snmp/library/winpipe.h
@@ -382,7 +356,6 @@
file path=usr/include/net-snmp/mib_api.h
file path=usr/include/net-snmp/net-snmp-config.h
file path=usr/include/net-snmp/net-snmp-includes.h
-file path=usr/include/net-snmp/net-snmp-features.h
file path=usr/include/net-snmp/output_api.h
file path=usr/include/net-snmp/pdu_api.h
file path=usr/include/net-snmp/session_api.h
@@ -397,7 +370,6 @@
file path=usr/include/net-snmp/system/darwin7.h
file path=usr/include/net-snmp/system/darwin8.h
file path=usr/include/net-snmp/system/darwin9.h
-file path=usr/include/net-snmp/system/darwin10.h
file path=usr/include/net-snmp/system/dragonfly.h
file path=usr/include/net-snmp/system/dynix.h
file path=usr/include/net-snmp/system/freebsd.h
@@ -406,10 +378,6 @@
file path=usr/include/net-snmp/system/freebsd4.h
file path=usr/include/net-snmp/system/freebsd5.h
file path=usr/include/net-snmp/system/freebsd6.h
-file path=usr/include/net-snmp/system/freebsd7.h
-file path=usr/include/net-snmp/system/freebsd8.h
-file path=usr/include/net-snmp/system/freebsd9.h
-file path=usr/include/net-snmp/system/freebsd10.h
file path=usr/include/net-snmp/system/generic.h
file path=usr/include/net-snmp/system/hpux.h
file path=usr/include/net-snmp/system/irix.h
@@ -418,8 +386,6 @@
file path=usr/include/net-snmp/system/mips.h
file path=usr/include/net-snmp/system/netbsd.h
file path=usr/include/net-snmp/system/openbsd.h
-file path=usr/include/net-snmp/system/openbsd4.h
-file path=usr/include/net-snmp/system/openbsd5.h
file path=usr/include/net-snmp/system/osf5.h
file path=usr/include/net-snmp/system/solaris.h
file path=usr/include/net-snmp/system/solaris2.3.h
@@ -476,19 +442,18 @@
file path=usr/include/ucd-snmp/var_struct.h
file path=usr/include/ucd-snmp/version.h
file $(MACH64)/sun/agent/modules/entityMib/libentity.so path=usr/lib/$(MACH64)/libentity.so
-file build/prototype/$(MACH64)/usr/lib/$(MACH64)/libnetsnmp.so.30.0.2 path=usr/lib/$(MACH64)/libnetsnmp.so.30.0.2
-file build/prototype/$(MACH64)/usr/lib/$(MACH64)/libnetsnmpagent.so.30.0.2 path=usr/lib/$(MACH64)/libnetsnmpagent.so.30.0.2
-file build/prototype/$(MACH64)/usr/lib/$(MACH64)/libnetsnmphelpers.so.30.0.2 path=usr/lib/$(MACH64)/libnetsnmphelpers.so.30.0.2
-file build/prototype/$(MACH64)/usr/lib/$(MACH64)/libnetsnmpmibs.so.30.0.2 path=usr/lib/$(MACH64)/libnetsnmpmibs.so.30.0.2
-file build/prototype/$(MACH64)/usr/lib/$(MACH64)/libnetsnmptrapd.so.30.0.2 path=usr/lib/$(MACH64)/libnetsnmptrapd.so.30.0.2
-file build/prototype/$(MACH64)/usr/lib/$(MACH64)/libsnmp.so.30.0.2 path=usr/lib/$(MACH64)/libsnmp.so.30.0.2
+file build/prototype/$(MACH64)/usr/lib/$(MACH64)/libnetsnmp.so.15.1.0 path=usr/lib/$(MACH64)/libnetsnmp.so.15.1.0
+file build/prototype/$(MACH64)/usr/lib/$(MACH64)/libnetsnmpagent.so.15.1.0 path=usr/lib/$(MACH64)/libnetsnmpagent.so.15.1.0
+file build/prototype/$(MACH64)/usr/lib/$(MACH64)/libnetsnmphelpers.so.15.1.0 path=usr/lib/$(MACH64)/libnetsnmphelpers.so.15.1.0
+file build/prototype/$(MACH64)/usr/lib/$(MACH64)/libnetsnmpmibs.so.15.1.0 path=usr/lib/$(MACH64)/libnetsnmpmibs.so.15.1.0
+file build/prototype/$(MACH64)/usr/lib/$(MACH64)/libnetsnmptrapd.so.15.1.0 path=usr/lib/$(MACH64)/libnetsnmptrapd.so.15.1.0
file $(MACH32)/sun/agent/modules/entityMib/libentity.so path=usr/lib/libentity.so
-file path=usr/lib/libnetsnmp.so.30.0.2
-file path=usr/lib/libnetsnmpagent.so.30.0.2
-file path=usr/lib/libnetsnmphelpers.so.30.0.2
-file path=usr/lib/libnetsnmpmibs.so.30.0.2
-file path=usr/lib/libnetsnmptrapd.so.30.0.2
-file path=usr/lib/libsnmp.so.30.0.2
+file path=usr/lib/libnetsnmp.so.15.1.0
+file path=usr/lib/libnetsnmpagent.so.15.1.0
+file path=usr/lib/libnetsnmphelpers.so.15.1.0
+file path=usr/lib/libnetsnmpmibs.so.15.1.0
+file path=usr/lib/libnetsnmptrapd.so.15.1.0
+file path=usr/lib/libsnmp.so.15.1.0
file $(MACH32)/sun/masfcnv path=usr/lib/net-snmp/masfcnv
file $(MACH32)/sun/masfd path=usr/lib/net-snmp/masfd
file path=usr/perl5/$(PERL_VERSION)/man/man3/NetSNMP::agent::default_store.3
@@ -540,43 +505,28 @@
link path=usr/bin/net-snmp-config target=./net-snmp-config-32 variant.arch=i386
link path=usr/bin/net-snmp-config target=./net-snmp-config-64 variant.arch=sparc
link path=usr/bin/snmpinform target=snmptrap
-link path=usr/lib/$(MACH64)/libnetsnmp.so target=./libnetsnmp.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmp.so.30 target=./libnetsnmp.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmpagent.so target=./libnetsnmpagent.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmpagent.so.30 target=./libnetsnmpagent.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmphelpers.so target=./libnetsnmphelpers.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmphelpers.so.30 target=./libnetsnmphelpers.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmpmibs.so target=./libnetsnmpmibs.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmpmibs.so.30 target=./libnetsnmpmibs.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmptrapd.so target=./libnetsnmptrapd.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmptrapd.so.30 target=./libnetsnmptrapd.so.30.0.2
-link path=usr/lib/$(MACH64)/libsnmp.so target=./libsnmp.so.30.0.2
-link path=usr/lib/$(MACH64)/libsnmp.so.30 target=./libsnmp.so.30.0.2
-link path=usr/lib/libnetsnmp.so target=./libnetsnmp.so.30.0.2
-link path=usr/lib/libnetsnmp.so.30 target=./libnetsnmp.so.30.0.2
-link path=usr/lib/libnetsnmpagent.so target=./libnetsnmpagent.so.30.0.2
-link path=usr/lib/libnetsnmpagent.so.30 target=./libnetsnmpagent.so.30.0.2
-link path=usr/lib/libnetsnmphelpers.so target=./libnetsnmphelpers.so.30.0.2
-link path=usr/lib/libnetsnmphelpers.so.30 target=./libnetsnmphelpers.so.30.0.2
-link path=usr/lib/libnetsnmpmibs.so target=./libnetsnmpmibs.so.30.0.2
-link path=usr/lib/libnetsnmpmibs.so.30 target=./libnetsnmpmibs.so.30.0.2
-link path=usr/lib/libnetsnmptrapd.so target=./libnetsnmptrapd.so.30.0.2
-link path=usr/lib/libnetsnmptrapd.so.30 target=./libnetsnmptrapd.so.30.0.2
-link path=usr/lib/libsnmp.so target=./libsnmp.so.30.0.2
-link path=usr/lib/libsnmp.so.30 target=./libsnmp.so.30.0.2
-
-link path=usr/lib/libnetsnmpagent.so.15 target=./libnetsnmpagent.so.30.0.2
-link path=usr/lib/libnetsnmp.so.15 target=./libnetsnmp.so.30.0.2
-link path=usr/lib/libnetsnmphelpers.so.15 target=./libnetsnmphelpers.so.30.0.2
-link path=usr/lib/libsnmp.so.15 target=./libsnmp.so.30.0.2
-link path=usr/lib/libnetsnmptrapd.so.15 target=./libnetsnmptrapd.so.30.0.2
-link path=usr/lib/libnetsnmpmibs.so.15 target=./libnetsnmpmibs.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmpagent.so.15 target=./libnetsnmpagent.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmp.so.15 target=./libnetsnmp.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmphelpers.so.15 target=./libnetsnmphelpers.so.30.0.2
-link path=usr/lib/$(MACH64)/libsnmp.so.15 target=./libsnmp.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmptrapd.so.15 target=./libnetsnmptrapd.so.30.0.2
-link path=usr/lib/$(MACH64)/libnetsnmpmibs.so.15 target=./libnetsnmpmibs.so.30.0.2
+link path=usr/lib/$(MACH64)/libnetsnmp.so target=./libnetsnmp.so.15.1.0
+link path=usr/lib/$(MACH64)/libnetsnmp.so.15 target=./libnetsnmp.so.15.1.0
+link path=usr/lib/$(MACH64)/libnetsnmpagent.so target=./libnetsnmpagent.so.15.1.0
+link path=usr/lib/$(MACH64)/libnetsnmpagent.so.15 target=./libnetsnmpagent.so.15.1.0
+link path=usr/lib/$(MACH64)/libnetsnmphelpers.so target=./libnetsnmphelpers.so.15.1.0
+link path=usr/lib/$(MACH64)/libnetsnmphelpers.so.15 target=./libnetsnmphelpers.so.15.1.0
+link path=usr/lib/$(MACH64)/libnetsnmpmibs.so target=./libnetsnmpmibs.so.15.1.0
+link path=usr/lib/$(MACH64)/libnetsnmpmibs.so.15 target=./libnetsnmpmibs.so.15.1.0
+link path=usr/lib/$(MACH64)/libnetsnmptrapd.so target=./libnetsnmptrapd.so.15.1.0
+link path=usr/lib/$(MACH64)/libnetsnmptrapd.so.15 target=./libnetsnmptrapd.so.15.1.0
+link path=usr/lib/libnetsnmp.so target=./libnetsnmp.so.15.1.0
+link path=usr/lib/libnetsnmp.so.15 target=./libnetsnmp.so.15.1.0
+link path=usr/lib/libnetsnmpagent.so target=./libnetsnmpagent.so.15.1.0
+link path=usr/lib/libnetsnmpagent.so.15 target=./libnetsnmpagent.so.15.1.0
+link path=usr/lib/libnetsnmphelpers.so target=./libnetsnmphelpers.so.15.1.0
+link path=usr/lib/libnetsnmphelpers.so.15 target=./libnetsnmphelpers.so.15.1.0
+link path=usr/lib/libnetsnmpmibs.so target=./libnetsnmpmibs.so.15.1.0
+link path=usr/lib/libnetsnmpmibs.so.15 target=./libnetsnmpmibs.so.15.1.0
+link path=usr/lib/libnetsnmptrapd.so target=./libnetsnmptrapd.so.15.1.0
+link path=usr/lib/libnetsnmptrapd.so.15 target=./libnetsnmptrapd.so.15.1.0
+link path=usr/lib/libsnmp.so target=./libsnmp.so.15.1.0
+link path=usr/lib/libsnmp.so.15 target=./libsnmp.so.15.1.0
depend fmri=library/python-2/net-snmp-26@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) \
predicate=runtime/python-26 \
@@ -584,4 +534,4 @@
depend fmri=library/python-2/net-snmp-27@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) \
predicate=runtime/python-27 \
- type=conditional
+ type=conditional
--- a/components/net-snmp/net-snmp-documentation.p5m Thu May 16 14:50:57 2013 -0700
+++ b/components/net-snmp/net-snmp-documentation.p5m Sat May 18 09:18:20 2013 -0700
@@ -27,7 +27,6 @@
set name=pkg.summary \
value="Net-SNMP Agent manpages and html documentation files"
set name=com.oracle.info.description value="the Net-SNMP agent manpages and html documentation files"
-set name=com.oracle.info.tpno value=13120
set name=info.classification \
value="org.opensolaris.category.2008:System/Enterprise Management"
set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
@@ -222,10 +221,6 @@
path=usr/share/doc/net-snmp/html/agent__registry_8c_source.html
file build/$(MACH32)/docs/html/agent__registry_8h_source.html \
path=usr/share/doc/net-snmp/html/agent__registry_8h_source.html
-file build/$(MACH32)/docs/html/agent__sysORTable_8c_source.html \
- path=usr/share/doc/net-snmp/html/agent__sysORTable_8c_source.html
-file build/$(MACH32)/docs/html/agent__sysORTable_8h_source.html \
- path=usr/share/doc/net-snmp/html/agent__sysORTable_8h_source.html
file build/$(MACH32)/docs/html/agent__trap_8c_source.html \
path=usr/share/doc/net-snmp/html/agent__trap_8c_source.html
file build/$(MACH32)/docs/html/agent__trap_8h_source.html \
@@ -264,12 +259,6 @@
path=usr/share/doc/net-snmp/html/callback_8c_source.html
file build/$(MACH32)/docs/html/callback_8h_source.html \
path=usr/share/doc/net-snmp/html/callback_8h_source.html
-file build/$(MACH32)/docs/html/cert__util_8c_source.html \
- path=usr/share/doc/net-snmp/html/cert__util_8c_source.html
-file build/$(MACH32)/docs/html/cert__util_8h_source.html \
- path=usr/share/doc/net-snmp/html/cert__util_8h_source.html
-file build/$(MACH32)/docs/html/closedir_8c_source.html \
- path=usr/share/doc/net-snmp/html/closedir_8c_source.html
file build/$(MACH32)/docs/html/check__varbind_8c_source.html \
path=usr/share/doc/net-snmp/html/check__varbind_8c_source.html
file build/$(MACH32)/docs/html/check__varbind_8h_source.html \
@@ -278,6 +267,10 @@
path=usr/share/doc/net-snmp/html/classes.html
file build/$(MACH32)/docs/html/closed.png \
path=usr/share/doc/net-snmp/html/closed.png
+file build/$(MACH32)/docs/html/cmu__compat_8c_source.html \
+ path=usr/share/doc/net-snmp/html/cmu__compat_8c_source.html
+file build/$(MACH32)/docs/html/cmu__compat_8h_source.html \
+ path=usr/share/doc/net-snmp/html/cmu__compat_8h_source.html
file build/$(MACH32)/docs/html/config__api_8h_source.html \
path=usr/share/doc/net-snmp/html/config__api_8h_source.html
file build/$(MACH32)/docs/html/container_8c_source.html \
@@ -330,12 +323,6 @@
path=usr/share/doc/net-snmp/html/delayed_instance_8c-example.html
file build/$(MACH32)/docs/html/deprecated.html \
path=usr/share/doc/net-snmp/html/deprecated.html
-file build/$(MACH32)/docs/html/dir__utils_8c_source.html \
- path=usr/share/doc/net-snmp/html/dir__utils_8c_source.html
-file build/$(MACH32)/docs/html/dir__utils_8h_source.html \
- path=usr/share/doc/net-snmp/html/dir__utils_8h_source.html
-file build/$(MACH32)/docs/html/dummy_8c_source.html \
- path=usr/share/doc/net-snmp/html/dummy_8c_source.html
file build/$(MACH32)/docs/html/doxygen.css \
path=usr/share/doc/net-snmp/html/doxygen.css
file build/$(MACH32)/docs/html/doxygen.png \
@@ -368,8 +355,6 @@
path=usr/share/doc/net-snmp/html/getopt_8c_source.html
file build/$(MACH32)/docs/html/getopt_8h_source.html \
path=usr/share/doc/net-snmp/html/getopt_8h_source.html
-file build/$(MACH32)/docs/html/gettimeofday_8c_source.html \
- path=usr/share/doc/net-snmp/html/gettimeofday_8c_source.html
file build/$(MACH32)/docs/html/globals.html \
path=usr/share/doc/net-snmp/html/globals.html
file build/$(MACH32)/docs/html/globals_defs.html \
@@ -382,18 +367,6 @@
path=usr/share/doc/net-snmp/html/group__access__multiplexer.html
file build/$(MACH32)/docs/html/group__agent.html \
path=usr/share/doc/net-snmp/html/group__agent.html
-file build/$(MACH32)/docs/html/group__agent__context__cache.html \
- path=usr/share/doc/net-snmp/html/group__agent__context__cache.html
-file build/$(MACH32)/docs/html/group__agent__lookup__cache.html \
- path=usr/share/doc/net-snmp/html/group__agent__lookup__cache.html
-file build/$(MACH32)/docs/html/group__agent__mib__registering.html \
- path=usr/share/doc/net-snmp/html/group__agent__mib__registering.html
-file build/$(MACH32)/docs/html/group__agent__mib__subtree.html \
- path=usr/share/doc/net-snmp/html/group__agent__mib__subtree.html
-file build/$(MACH32)/docs/html/group__agent__signals.html \
- path=usr/share/doc/net-snmp/html/group__agent__signals.html
-file build/$(MACH32)/docs/html/group__null__container.html \
- path=usr/share/doc/net-snmp/html/group__null__container.html
file build/$(MACH32)/docs/html/group__agent__registry.html \
path=usr/share/doc/net-snmp/html/group__agent__registry.html
file build/$(MACH32)/docs/html/group__agent__trap.html \
@@ -496,12 +469,6 @@
path=usr/share/doc/net-snmp/html/index.html
file build/$(MACH32)/docs/html/inet__ntop_8c_source.html \
path=usr/share/doc/net-snmp/html/inet__ntop_8c_source.html
-file build/$(MACH32)/docs/html/inet__ntop_8h_source.html \
- path=usr/share/doc/net-snmp/html/inet__ntop_8h_source.html
-file build/$(MACH32)/docs/html/inet__pton_8h_source.html \
- path=usr/share/doc/net-snmp/html/inet__pton_8h_source.html
-file build/$(MACH32)/docs/html/int64_8c.html \
- path=usr/share/doc/net-snmp/html/int64_8c.html
file build/$(MACH32)/docs/html/inet__pton_8c_source.html \
path=usr/share/doc/net-snmp/html/inet__pton_8c_source.html
file build/$(MACH32)/docs/html/instance_8c_source.html \
@@ -514,10 +481,6 @@
path=usr/share/doc/net-snmp/html/int64_8h_source.html
file build/$(MACH32)/docs/html/jquery.js \
path=usr/share/doc/net-snmp/html/jquery.js
-file build/$(MACH32)/docs/html/kernel_8c.html \
- path=usr/share/doc/net-snmp/html/kernel_8c.html
-file build/$(MACH32)/docs/html/kernel_8h.html \
- path=usr/share/doc/net-snmp/html/kernel_8h.html
file build/$(MACH32)/docs/html/kernel_8c_source.html \
path=usr/share/doc/net-snmp/html/kernel_8c_source.html
file build/$(MACH32)/docs/html/kernel_8h_source.html \
@@ -526,18 +489,6 @@
path=usr/share/doc/net-snmp/html/keytools_8c_source.html
file build/$(MACH32)/docs/html/keytools_8h_source.html \
path=usr/share/doc/net-snmp/html/keytools_8h_source.html
-file build/$(MACH32)/docs/html/large__fd__set_8c.html \
- path=usr/share/doc/net-snmp/html/large__fd__set_8c.html
-file build/$(MACH32)/docs/html/large__fd__set_8c_source.html \
- path=usr/share/doc/net-snmp/html/large__fd__set_8c_source.html
-file build/$(MACH32)/docs/html/large__fd__set_8h.html \
- path=usr/share/doc/net-snmp/html/large__fd__set_8h.html
-file build/$(MACH32)/docs/html/large__fd__set_8h_source.html \
- path=usr/share/doc/net-snmp/html/large__fd__set_8h_source.html
-file build/$(MACH32)/docs/html/library_2openssl__md5_8h_source.html \
- path=usr/share/doc/net-snmp/html/library_2openssl__md5_8h_source.html
-file build/$(MACH32)/docs/html/library_2types_8h_source.html \
- path=usr/share/doc/net-snmp/html/library_2types_8h_source.html
file build/$(MACH32)/docs/html/lcd__time_8c_source.html \
path=usr/share/doc/net-snmp/html/lcd__time_8c_source.html
file build/$(MACH32)/docs/html/lcd__time_8h_source.html \
@@ -586,8 +537,6 @@
path=usr/share/doc/net-snmp/html/net-snmp-agent-includes_8h_source.html
file build/$(MACH32)/docs/html/net-snmp-config_8h_source.html \
path=usr/share/doc/net-snmp/html/net-snmp-config_8h_source.html
-file build/$(MACH32)/docs/html/net-snmp-features_8h_source.html \
- path=usr/share/doc/net-snmp/html/net-snmp-features_8h_source.html
file build/$(MACH32)/docs/html/net-snmp-includes_8h_source.html \
path=usr/share/doc/net-snmp/html/net-snmp-includes_8h_source.html
file build/$(MACH32)/docs/html/netSnmpHostsTable_8c_source.html \
@@ -628,18 +577,6 @@
path=usr/share/doc/net-snmp/html/oid__stash_8c_source.html
file build/$(MACH32)/docs/html/oid__stash_8h_source.html \
path=usr/share/doc/net-snmp/html/oid__stash_8h_source.html
-file build/$(MACH32)/docs/html/oid_8h_source.html \
- path=usr/share/doc/net-snmp/html/oid_8h_source.html
-file build/$(MACH32)/docs/html/opendir_8c_source.html \
- path=usr/share/doc/net-snmp/html/opendir_8c_source.html
-file build/$(MACH32)/docs/html/openssl__aes_8h_source.html \
- path=usr/share/doc/net-snmp/html/openssl__aes_8h_source.html
-file build/$(MACH32)/docs/html/openssl__des_8h_source.html \
- path=usr/share/doc/net-snmp/html/openssl__des_8h_source.html
-file build/$(MACH32)/docs/html/openssl__md5_8h_source.html \
- path=usr/share/doc/net-snmp/html/openssl__md5_8h_source.html
-file build/$(MACH32)/docs/html/openssl__sha_8h_source.html \
- path=usr/share/doc/net-snmp/html/openssl__sha_8h_source.html
file build/$(MACH32)/docs/html/old__api_8c_source.html \
path=usr/share/doc/net-snmp/html/old__api_8c_source.html
file build/$(MACH32)/docs/html/old__api_8h_source.html \
@@ -658,8 +595,6 @@
path=usr/share/doc/net-snmp/html/pdu__api_8h_source.html
file build/$(MACH32)/docs/html/pkcs_8c_source.html \
path=usr/share/doc/net-snmp/html/pkcs_8c_source.html
-file build/$(MACH32)/docs/html/readdir_8c_source.html \
- path=usr/share/doc/net-snmp/html/readdir_8c_source.html
file build/$(MACH32)/docs/html/read__config_8c_source.html \
path=usr/share/doc/net-snmp/html/read__config_8c_source.html
file build/$(MACH32)/docs/html/read__config_8h_source.html \
@@ -702,62 +637,40 @@
path=usr/share/doc/net-snmp/html/snmp-tc_8c_source.html
file build/$(MACH32)/docs/html/snmp-tc_8h_source.html \
path=usr/share/doc/net-snmp/html/snmp-tc_8h_source.html
-file build/$(MACH32)/docs/html/snmpAliasDomain_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpAliasDomain_8h_source.html
-file build/$(MACH32)/docs/html/snmpDTLSUDPDomain_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpDTLSUDPDomain_8h_source.html
-file build/$(MACH32)/docs/html/snmpIPv4BaseDomain_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpIPv4BaseDomain_8h_source.html
-file build/$(MACH32)/docs/html/snmpIPv6BaseDomain_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpIPv6BaseDomain_8h_source.html
-file build/$(MACH32)/docs/html/snmpSSHDomain_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpSSHDomain_8h_source.html
-file build/$(MACH32)/docs/html/snmpSocketBaseDomain_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpSocketBaseDomain_8h_source.html
-file build/$(MACH32)/docs/html/snmpTCPBaseDomain_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpTCPBaseDomain_8h_source.html
-file build/$(MACH32)/docs/html/snmpTLSBaseDomain_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpTLSBaseDomain_8h_source.html
-file build/$(MACH32)/docs/html/snmpTLSTCPDomain_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpTLSTCPDomain_8h_source.html
-file build/$(MACH32)/docs/html/snmpUDPBaseDomain_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpUDPBaseDomain_8h_source.html
-file build/$(MACH32)/docs/html/snmpUDPIPv4BaseDomain_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpUDPIPv4BaseDomain_8h_source.html
-file build/$(MACH32)/docs/html/snmp__get__statistic_8c_source.html \
- path=usr/share/doc/net-snmp/html/snmp__get__statistic_8c_source.html
-file build/$(MACH32)/docs/html/snmp__get__statistic_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmp__get__statistic_8h_source.html
-file build/$(MACH32)/docs/html/snmp__openssl_8c_source.html \
- path=usr/share/doc/net-snmp/html/snmp__openssl_8c_source.html
-file build/$(MACH32)/docs/html/snmp__openssl_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmp__openssl_8h_source.html
-file build/$(MACH32)/docs/html/snmp__parse__args_8h.html \
- path=usr/share/doc/net-snmp/html/snmp__parse__args_8h.html
-file build/$(MACH32)/docs/html/snmp__perl_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmp__perl_8h_source.html
-file build/$(MACH32)/docs/html/snmpsm__shutdown_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmpsm__shutdown_8h_source.html
-file build/$(MACH32)/docs/html/snmptsm_8c_source.html \
- path=usr/share/doc/net-snmp/html/snmptsm_8c_source.html
-file build/$(MACH32)/docs/html/snmptsm_8h_source.html \
- path=usr/share/doc/net-snmp/html/snmptsm_8h_source.html
+file build/$(MACH32)/docs/html/snmpAAL5PVCDomain_8c_source.html \
+ path=usr/share/doc/net-snmp/html/snmpAAL5PVCDomain_8c_source.html
file build/$(MACH32)/docs/html/snmpAAL5PVCDomain_8h_source.html \
path=usr/share/doc/net-snmp/html/snmpAAL5PVCDomain_8h_source.html
+file build/$(MACH32)/docs/html/snmpCallbackDomain_8c_source.html \
+ path=usr/share/doc/net-snmp/html/snmpCallbackDomain_8c_source.html
file build/$(MACH32)/docs/html/snmpCallbackDomain_8h_source.html \
path=usr/share/doc/net-snmp/html/snmpCallbackDomain_8h_source.html
+file build/$(MACH32)/docs/html/snmpIPXDomain_8c_source.html \
+ path=usr/share/doc/net-snmp/html/snmpIPXDomain_8c_source.html
file build/$(MACH32)/docs/html/snmpIPXDomain_8h_source.html \
path=usr/share/doc/net-snmp/html/snmpIPXDomain_8h_source.html
+file build/$(MACH32)/docs/html/snmpSTDDomain_8c_source.html \
+ path=usr/share/doc/net-snmp/html/snmpSTDDomain_8c_source.html
file build/$(MACH32)/docs/html/snmpSTDDomain_8h_source.html \
path=usr/share/doc/net-snmp/html/snmpSTDDomain_8h_source.html
+file build/$(MACH32)/docs/html/snmpTCPDomain_8c_source.html \
+ path=usr/share/doc/net-snmp/html/snmpTCPDomain_8c_source.html
file build/$(MACH32)/docs/html/snmpTCPDomain_8h_source.html \
path=usr/share/doc/net-snmp/html/snmpTCPDomain_8h_source.html
+file build/$(MACH32)/docs/html/snmpTCPIPv6Domain_8c_source.html \
+ path=usr/share/doc/net-snmp/html/snmpTCPIPv6Domain_8c_source.html
file build/$(MACH32)/docs/html/snmpTCPIPv6Domain_8h_source.html \
path=usr/share/doc/net-snmp/html/snmpTCPIPv6Domain_8h_source.html
+file build/$(MACH32)/docs/html/snmpUDPDomain_8c_source.html \
+ path=usr/share/doc/net-snmp/html/snmpUDPDomain_8c_source.html
file build/$(MACH32)/docs/html/snmpUDPDomain_8h_source.html \
path=usr/share/doc/net-snmp/html/snmpUDPDomain_8h_source.html
+file build/$(MACH32)/docs/html/snmpUDPIPv6Domain_8c_source.html \
+ path=usr/share/doc/net-snmp/html/snmpUDPIPv6Domain_8c_source.html
file build/$(MACH32)/docs/html/snmpUDPIPv6Domain_8h_source.html \
path=usr/share/doc/net-snmp/html/snmpUDPIPv6Domain_8h_source.html
+file build/$(MACH32)/docs/html/snmpUnixDomain_8c_source.html \
+ path=usr/share/doc/net-snmp/html/snmpUnixDomain_8c_source.html
file build/$(MACH32)/docs/html/snmpUnixDomain_8h_source.html \
path=usr/share/doc/net-snmp/html/snmpUnixDomain_8h_source.html
file build/$(MACH32)/docs/html/snmp_8c_source.html \
@@ -830,6 +743,10 @@
path=usr/share/doc/net-snmp/html/snmpksm_8c_source.html
file build/$(MACH32)/docs/html/snmpksm_8h_source.html \
path=usr/share/doc/net-snmp/html/snmpksm_8h_source.html
+file build/$(MACH32)/docs/html/snmplocalsm_8c_source.html \
+ path=usr/share/doc/net-snmp/html/snmplocalsm_8c_source.html
+file build/$(MACH32)/docs/html/snmplocalsm_8h_source.html \
+ path=usr/share/doc/net-snmp/html/snmplocalsm_8h_source.html
file build/$(MACH32)/docs/html/snmpsm__init_8h_source.html \
path=usr/share/doc/net-snmp/html/snmpsm__init_8h_source.html
file build/$(MACH32)/docs/html/snmpusm_8c_source.html \
@@ -854,12 +771,6 @@
path=usr/share/doc/net-snmp/html/stash__to__next_8c_source.html
file build/$(MACH32)/docs/html/stash__to__next_8h_source.html \
path=usr/share/doc/net-snmp/html/stash__to__next_8h_source.html
-file build/$(MACH32)/docs/html/strlcat_8c_source.html \
- path=usr/share/doc/net-snmp/html/strlcat_8c_source.html
-file build/$(MACH32)/docs/html/strtoull_8c_source.html \
- path=usr/share/doc/net-snmp/html/strtoull_8c_source.html
-file build/$(MACH32)/docs/html/sysORTable_8h_source.html \
- path=usr/share/doc/net-snmp/html/sysORTable_8h_source.html
file build/$(MACH32)/docs/html/strlcpy_8c_source.html \
path=usr/share/doc/net-snmp/html/strlcpy_8c_source.html
file build/$(MACH32)/docs/html/strtok__r_8c_source.html \
@@ -868,52 +779,6 @@
path=usr/share/doc/net-snmp/html/strtol_8c_source.html
file build/$(MACH32)/docs/html/strtoul_8c_source.html \
path=usr/share/doc/net-snmp/html/strtoul_8c_source.html
-file build/$(MACH32)/docs/html/structDES__ks.html \
- path=usr/share/doc/net-snmp/html/structDES__ks.html
-file build/$(MACH32)/docs/html/structMD5state__st.html \
- path=usr/share/doc/net-snmp/html/structMD5state__st.html
-file build/$(MACH32)/docs/html/structSHA256state__st.html \
- path=usr/share/doc/net-snmp/html/structSHA256state__st.html
-file build/$(MACH32)/docs/html/structSHA512state__st.html \
- path=usr/share/doc/net-snmp/html/structSHA512state__st.html
-file build/$(MACH32)/docs/html/structSHAstate__st.html \
- path=usr/share/doc/net-snmp/html/structSHAstate__st.html
-file build/$(MACH32)/docs/html/struct__dir__struc.html \
- path=usr/share/doc/net-snmp/html/struct__dir__struc.html
-file build/$(MACH32)/docs/html/struct__netsnmpTLSBaseData__s.html \
- path=usr/share/doc/net-snmp/html/struct__netsnmpTLSBaseData__s.html
-file build/$(MACH32)/docs/html/struct__netsnmp__verify__info__s.html \
- path=usr/share/doc/net-snmp/html/struct__netsnmp__verify__info__s.html
-file build/$(MACH32)/docs/html/structaes__key__st.html \
- path=usr/share/doc/net-snmp/html/structaes__key__st.html
-file build/$(MACH32)/docs/html/structdata__node__s.html \
- path=usr/share/doc/net-snmp/html/structdata__node__s.html
-file build/$(MACH32)/docs/html/structdirect.html \
- path=usr/share/doc/net-snmp/html/structdirect.html
-file build/$(MACH32)/docs/html/structnetsnmp__addr__pair__s.html \
- path=usr/share/doc/net-snmp/html/structnetsnmp__addr__pair__s.html
-file build/$(MACH32)/docs/html/structnetsnmp__indexed__addr__pair__s.html \
- path=usr/share/doc/net-snmp/html/structnetsnmp__indexed__addr__pair__s.html
-file build/$(MACH32)/docs/html/structnetsnmp__large__fd__set__s.html \
- path=usr/share/doc/net-snmp/html/structnetsnmp__large__fd__set__s.html
-file build/$(MACH32)/docs/html/structnetsnmp__state__machine__input__s.html \
- path=usr/share/doc/net-snmp/html/structnetsnmp__state__machine__input__s.html
-file build/$(MACH32)/docs/html/structnetsnmp__state__machine__step__s.html \
- path=usr/share/doc/net-snmp/html/structnetsnmp__state__machine__step__s.html
-file build/$(MACH32)/docs/html/structnetsnmp__tmStateReference__s.html \
- path=usr/share/doc/net-snmp/html/structnetsnmp__tmStateReference__s.html
-file build/$(MACH32)/docs/html/structnetsnmp__transport__config__s.html \
- path=usr/share/doc/net-snmp/html/structnetsnmp__transport__config__s.html
-file build/$(MACH32)/docs/html/structnetsnmp__tsmSecurityReference__s.html \
- path=usr/share/doc/net-snmp/html/structnetsnmp__tsmSecurityReference__s.html
-file build/$(MACH32)/docs/html/structregister__sysOR__parameters.html \
- path=usr/share/doc/net-snmp/html/structregister__sysOR__parameters.html
-file build/$(MACH32)/docs/html/structrowcreate__state__s.html \
- path=usr/share/doc/net-snmp/html/structrowcreate__state__s.html
-file build/$(MACH32)/docs/html/structssll__iterator__s.html \
- path=usr/share/doc/net-snmp/html/structssll__iterator__s.html
-file build/$(MACH32)/docs/html/structsysORTable.html \
- path=usr/share/doc/net-snmp/html/structsysORTable.html
file build/$(MACH32)/docs/html/structMDstruct.html \
path=usr/share/doc/net-snmp/html/structMDstruct.html
file build/$(MACH32)/docs/html/struct__InputParams.html \
@@ -922,6 +787,12 @@
path=usr/share/doc/net-snmp/html/struct__PrefixList.html
file build/$(MACH32)/docs/html/struct__agent__nsap.html \
path=usr/share/doc/net-snmp/html/struct__agent__nsap.html
+file build/$(MACH32)/docs/html/struct__com2SecEntry.html \
+ path=usr/share/doc/net-snmp/html/struct__com2SecEntry.html
+file build/$(MACH32)/docs/html/struct__com2SecUnixEntry.html \
+ path=usr/share/doc/net-snmp/html/struct__com2SecUnixEntry.html
+file build/$(MACH32)/docs/html/struct__sockaddr__un__pair.html \
+ path=usr/share/doc/net-snmp/html/struct__sockaddr__un__pair.html
file build/$(MACH32)/docs/html/structaddrCache.html \
path=usr/share/doc/net-snmp/html/structaddrCache.html
file build/$(MACH32)/docs/html/structagent__add__trap__args.html \
@@ -940,10 +811,16 @@
path=usr/share/doc/net-snmp/html/structconfig__files.html
file build/$(MACH32)/docs/html/structconfig__line.html \
path=usr/share/doc/net-snmp/html/structconfig__line.html
+file build/$(MACH32)/docs/html/structcontainer__table__data__s.html \
+ path=usr/share/doc/net-snmp/html/structcontainer__table__data__s.html
+file build/$(MACH32)/docs/html/structcontainer__type__s.html \
+ path=usr/share/doc/net-snmp/html/structcontainer__type__s.html
file build/$(MACH32)/docs/html/structcounter64.html \
path=usr/share/doc/net-snmp/html/structcounter64.html
file build/$(MACH32)/docs/html/structdata__set__cache__s.html \
path=usr/share/doc/net-snmp/html/structdata__set__cache__s.html
+file build/$(MACH32)/docs/html/structdata__set__tables__s.html \
+ path=usr/share/doc/net-snmp/html/structdata__set__tables__s.html
file build/$(MACH32)/docs/html/structenginetime__struct.html \
path=usr/share/doc/net-snmp/html/structenginetime__struct.html
file build/$(MACH32)/docs/html/structenum__list.html \
@@ -952,12 +829,42 @@
path=usr/share/doc/net-snmp/html/structget__req__state.html
file build/$(MACH32)/docs/html/structindex__list.html \
path=usr/share/doc/net-snmp/html/structindex__list.html
+file build/$(MACH32)/docs/html/structiterator__info__s.html \
+ path=usr/share/doc/net-snmp/html/structiterator__info__s.html
file build/$(MACH32)/docs/html/structksm__cache__entry.html \
path=usr/share/doc/net-snmp/html/structksm__cache__entry.html
file build/$(MACH32)/docs/html/structksm__secStateRef.html \
path=usr/share/doc/net-snmp/html/structksm__secStateRef.html
file build/$(MACH32)/docs/html/structlookup__cache__context__s.html \
path=usr/share/doc/net-snmp/html/structlookup__cache__context__s.html
+file build/$(MACH32)/docs/html/structlookup__cache__s.html \
+ path=usr/share/doc/net-snmp/html/structlookup__cache__s.html
+file build/$(MACH32)/docs/html/structmib__atEntry.html \
+ path=usr/share/doc/net-snmp/html/structmib__atEntry.html
+file build/$(MACH32)/docs/html/structmib__egp.html \
+ path=usr/share/doc/net-snmp/html/structmib__egp.html
+file build/$(MACH32)/docs/html/structmib__egpNeighEntry.html \
+ path=usr/share/doc/net-snmp/html/structmib__egpNeighEntry.html
+file build/$(MACH32)/docs/html/structmib__icmp.html \
+ path=usr/share/doc/net-snmp/html/structmib__icmp.html
+file build/$(MACH32)/docs/html/structmib__ifEntry.html \
+ path=usr/share/doc/net-snmp/html/structmib__ifEntry.html
+file build/$(MACH32)/docs/html/structmib__interface.html \
+ path=usr/share/doc/net-snmp/html/structmib__interface.html
+file build/$(MACH32)/docs/html/structmib__ip.html \
+ path=usr/share/doc/net-snmp/html/structmib__ip.html
+file build/$(MACH32)/docs/html/structmib__ipAddrEntry.html \
+ path=usr/share/doc/net-snmp/html/structmib__ipAddrEntry.html
+file build/$(MACH32)/docs/html/structmib__ipRouteEntry.html \
+ path=usr/share/doc/net-snmp/html/structmib__ipRouteEntry.html
+file build/$(MACH32)/docs/html/structmib__system.html \
+ path=usr/share/doc/net-snmp/html/structmib__system.html
+file build/$(MACH32)/docs/html/structmib__tcp.html \
+ path=usr/share/doc/net-snmp/html/structmib__tcp.html
+file build/$(MACH32)/docs/html/structmib__tcpConnEntry.html \
+ path=usr/share/doc/net-snmp/html/structmib__tcpConnEntry.html
+file build/$(MACH32)/docs/html/structmib__udp.html \
+ path=usr/share/doc/net-snmp/html/structmib__udp.html
file build/$(MACH32)/docs/html/structmodule.html \
path=usr/share/doc/net-snmp/html/structmodule.html
file build/$(MACH32)/docs/html/structmodule__compatability.html \
@@ -1034,6 +941,8 @@
path=usr/share/doc/net-snmp/html/structnetsnmp__monitor__callback__header__s.html
file build/$(MACH32)/docs/html/structnetsnmp__monitor__callback__set__request__s.html \
path=usr/share/doc/net-snmp/html/structnetsnmp__monitor__callback__set__request__s.html
+file build/$(MACH32)/docs/html/structnetsnmp__num__file__instance__s.html \
+ path=usr/share/doc/net-snmp/html/structnetsnmp__num__file__instance__s.html
file build/$(MACH32)/docs/html/structnetsnmp__oid__stash__node__s.html \
path=usr/share/doc/net-snmp/html/structnetsnmp__oid__stash__node__s.html
file build/$(MACH32)/docs/html/structnetsnmp__oid__stash__save__info__s.html \
@@ -1092,12 +1001,16 @@
path=usr/share/doc/net-snmp/html/structnetsnmp__transport__s.html
file build/$(MACH32)/docs/html/structnetsnmp__tree__cache__s.html \
path=usr/share/doc/net-snmp/html/structnetsnmp__tree__cache__s.html
+file build/$(MACH32)/docs/html/structnetsnmp__udp__addr__pair__s.html \
+ path=usr/share/doc/net-snmp/html/structnetsnmp__udp__addr__pair__s.html
file build/$(MACH32)/docs/html/structnetsnmp__void__array__s.html \
path=usr/share/doc/net-snmp/html/structnetsnmp__void__array__s.html
file build/$(MACH32)/docs/html/structnetsnmp__watcher__info__s.html \
path=usr/share/doc/net-snmp/html/structnetsnmp__watcher__info__s.html
file build/$(MACH32)/docs/html/structnewrow__stash__s.html \
path=usr/share/doc/net-snmp/html/structnewrow__stash__s.html
+file build/$(MACH32)/docs/html/structnode.html \
+ path=usr/share/doc/net-snmp/html/structnode.html
file build/$(MACH32)/docs/html/structobjgroup.html \
path=usr/share/doc/net-snmp/html/structobjgroup.html
file build/$(MACH32)/docs/html/structold__opi__cache__s.html \
@@ -1114,12 +1027,18 @@
path=usr/share/doc/net-snmp/html/structsession__list.html
file build/$(MACH32)/docs/html/structsl__container__s.html \
path=usr/share/doc/net-snmp/html/structsl__container__s.html
+file build/$(MACH32)/docs/html/structsl__node.html \
+ path=usr/share/doc/net-snmp/html/structsl__node.html
file build/$(MACH32)/docs/html/structsnmp__alarm.html \
path=usr/share/doc/net-snmp/html/structsnmp__alarm.html
file build/$(MACH32)/docs/html/structsnmp__enum__list.html \
path=usr/share/doc/net-snmp/html/structsnmp__enum__list.html
+file build/$(MACH32)/docs/html/structsnmp__enum__list__str.html \
+ path=usr/share/doc/net-snmp/html/structsnmp__enum__list__str.html
file build/$(MACH32)/docs/html/structsnmp__gen__callback.html \
path=usr/share/doc/net-snmp/html/structsnmp__gen__callback.html
+file build/$(MACH32)/docs/html/structsnmp__index.html \
+ path=usr/share/doc/net-snmp/html/structsnmp__index.html
file build/$(MACH32)/docs/html/structsnmp__internal__session.html \
path=usr/share/doc/net-snmp/html/structsnmp__internal__session.html
file build/$(MACH32)/docs/html/structsnmp__log__message.html \
@@ -1150,8 +1069,12 @@
path=usr/share/doc/net-snmp/html/structti__cache__info__s.html
file build/$(MACH32)/docs/html/structtok.html \
path=usr/share/doc/net-snmp/html/structtok.html
+file build/$(MACH32)/docs/html/structtrap__sink.html \
+ path=usr/share/doc/net-snmp/html/structtrap__sink.html
file build/$(MACH32)/docs/html/structtree.html \
path=usr/share/doc/net-snmp/html/structtree.html
+file build/$(MACH32)/docs/html/structundoInfo.html \
+ path=usr/share/doc/net-snmp/html/structundoInfo.html
file build/$(MACH32)/docs/html/structusmStateReference.html \
path=usr/share/doc/net-snmp/html/structusmStateReference.html
file build/$(MACH32)/docs/html/structusmUser.html \
@@ -1232,6 +1155,8 @@
path=usr/share/doc/net-snmp/html/table__tdata_8h_source.html
file build/$(MACH32)/docs/html/tabs.css \
path=usr/share/doc/net-snmp/html/tabs.css
+file build/$(MACH32)/docs/html/test__binary__array_8c_source.html \
+ path=usr/share/doc/net-snmp/html/test__binary__array_8c_source.html
file build/$(MACH32)/docs/html/text__utils_8c_source.html \
path=usr/share/doc/net-snmp/html/text__utils_8c_source.html
file build/$(MACH32)/docs/html/text__utils_8h_source.html \
@@ -1248,10 +1173,6 @@
path=usr/share/doc/net-snmp/html/transform__oids_8h_source.html
file build/$(MACH32)/docs/html/types_8h_source.html \
path=usr/share/doc/net-snmp/html/types_8h_source.html
-file build/$(MACH32)/docs/html/testing_8h_source.html \
- path=usr/share/doc/net-snmp/html/testing_8h_source.html
-file build/$(MACH32)/docs/html/unionnetsnmp__sockaddr__storage__u.html \
- path=usr/share/doc/net-snmp/html/unionnetsnmp__sockaddr__storage__u.html
file build/$(MACH32)/docs/html/ucd-snmp-includes_8h_source.html \
path=usr/share/doc/net-snmp/html/ucd-snmp-includes_8h_source.html
file build/$(MACH32)/docs/html/ucdDemoPublic_8c_source.html \
@@ -1296,14 +1217,11 @@
path=usr/share/doc/net-snmp/html/winservice_8c_source.html
file build/$(MACH32)/docs/html/winservice_8h_source.html \
path=usr/share/doc/net-snmp/html/winservice_8h_source.html
-file path=usr/share/man/man1/agentxtrap.1
file path=usr/share/man/man1/encode_keychange.1
file path=usr/share/man/man1/fixproc.1
file path=usr/share/man/man1/mib2c-update.1
file path=usr/share/man/man1/mib2c.1
file path=usr/share/man/man1/net-snmp-config.1
-file path=usr/share/man/man1/net-snmp-create-v3-user.1
-file path=usr/share/man/man1/snmp-bridge-mib.1
file path=usr/share/man/man1/snmpbulkget.1
file path=usr/share/man/man1/snmpbulkwalk.1
file path=usr/share/man/man1/snmpcmd.1
@@ -1334,58 +1252,88 @@
file path=usr/share/man/man3/fprint_value.3
file path=usr/share/man/man3/fprint_variable.3
file path=usr/share/man/man3/get_module_node.3
-file path=usr/share/man/man3/netsnmp_agent_api.3
-file path=usr/share/man/man3/netsnmp_config_api.3
-file path=usr/share/man/man3/netsnmp_init_mib.3
-file path=usr/share/man/man3/netsnmp_mib_api.3
-file path=usr/share/man/man3/netsnmp_pdu_api.3
-file path=usr/share/man/man3/netsnmp_read_module.3
-file path=usr/share/man/man3/netsnmp_sess_api.3
-file path=usr/share/man/man3/netsnmp_session_api.3
-file path=usr/share/man/man3/netsnmp_trap_api.3
-file path=usr/share/man/man3/netsnmp_varbind_api.3
+file path=usr/share/man/man3/init_mib.3
+file path=usr/share/man/man3/init_mib_internals.3
+file path=usr/share/man/man3/mib_api.3
+file path=usr/share/man/man3/netsnmp_Container_iterator.3
+file path=usr/share/man/man3/netsnmp_agent.3
+file path=usr/share/man/man3/netsnmp_baby_steps.3
+file path=usr/share/man/man3/netsnmp_bulk_to_next.3
+file path=usr/share/man/man3/netsnmp_cache_handler.3
+file path=usr/share/man/man3/netsnmp_container.3
+file path=usr/share/man/man3/netsnmp_debug.3
+file path=usr/share/man/man3/netsnmp_ds_get_boolean.3
+file path=usr/share/man/man3/netsnmp_ds_get_int.3
+file path=usr/share/man/man3/netsnmp_ds_get_string.3
+file path=usr/share/man/man3/netsnmp_ds_register_config.3
+file path=usr/share/man/man3/netsnmp_ds_register_premib.3
+file path=usr/share/man/man3/netsnmp_ds_set_boolean.3
+file path=usr/share/man/man3/netsnmp_ds_set_int.3
+file path=usr/share/man/man3/netsnmp_ds_set_string.3
+file path=usr/share/man/man3/netsnmp_ds_shutdown.3
+file path=usr/share/man/man3/netsnmp_example_scalar_int.3
+file path=usr/share/man/man3/netsnmp_handler.3
+file path=usr/share/man/man3/netsnmp_instance.3
+file path=usr/share/man/man3/netsnmp_iterator_info_s.3
+file path=usr/share/man/man3/netsnmp_leaf.3
+file path=usr/share/man/man3/netsnmp_library.3
+file path=usr/share/man/man3/netsnmp_mib_handler_methods.3
+file path=usr/share/man/man3/netsnmp_mib_utilities.3
+file path=usr/share/man/man3/netsnmp_mode_end_call.3
+file path=usr/share/man/man3/netsnmp_multiplexer.3
+file path=usr/share/man/man3/netsnmp_old_api.3
+file path=usr/share/man/man3/netsnmp_read_only.3
+file path=usr/share/man/man3/netsnmp_row_merge.3
+file path=usr/share/man/man3/netsnmp_scalar.3
+file path=usr/share/man/man3/netsnmp_scalar_group_group.3
+file path=usr/share/man/man3/netsnmp_serialize.3
+file path=usr/share/man/man3/netsnmp_stash_cache.3
+file path=usr/share/man/man3/netsnmp_table.3
+file path=usr/share/man/man3/netsnmp_table_array.3
+file path=usr/share/man/man3/netsnmp_table_data.3
+file path=usr/share/man/man3/netsnmp_table_dataset.3
+file path=usr/share/man/man3/netsnmp_table_iterator.3
+file path=usr/share/man/man3/netsnmp_utilities.3
+file path=usr/share/man/man3/netsnmp_watcher.3
file path=usr/share/man/man3/print_description.3
file path=usr/share/man/man3/print_mib.3
file path=usr/share/man/man3/print_objid.3
file path=usr/share/man/man3/print_value.3
file path=usr/share/man/man3/print_variable.3
file path=usr/share/man/man3/read_all_mibs.3
+file path=usr/share/man/man3/read_config.3
file path=usr/share/man/man3/read_config_print_usage.3
file path=usr/share/man/man3/read_configs.3
file path=usr/share/man/man3/read_mib.3
+file path=usr/share/man/man3/read_module.3
+file path=usr/share/man/man3/read_module_node.3
file path=usr/share/man/man3/read_objid.3
file path=usr/share/man/man3/read_premib_configs.3
file path=usr/share/man/man3/register_app_config_handler.3
-file path=usr/share/man/man3/register_app_prenetsnmp_mib_handler.3
+file path=usr/share/man/man3/register_app_premib_handler.3
file path=usr/share/man/man3/register_config_handler.3
-file path=usr/share/man/man3/register_const_config_handler.3
file path=usr/share/man/man3/register_mib_handlers.3
-file path=usr/share/man/man3/register_prenetsnmp_mib_handler.3
+file path=usr/share/man/man3/register_premib_handler.3
file path=usr/share/man/man3/send_easy_trap.3
file path=usr/share/man/man3/send_trap_vars.3
file path=usr/share/man/man3/send_v2trap.3
file path=usr/share/man/man3/shutdown_mib.3
-file path=usr/share/man/man3/snmp_add_null_var.3
+file path=usr/share/man/man3/snmp_agent_api.3
file path=usr/share/man/man3/snmp_alarm.3
file path=usr/share/man/man3/snmp_alarm_register.3
file path=usr/share/man/man3/snmp_alarm_register_hr.3
file path=usr/share/man/man3/snmp_alarm_unregister.3
+file path=usr/share/man/man3/snmp_api.3
file path=usr/share/man/man3/snmp_api_errstring.3
file path=usr/share/man/man3/snmp_close.3
-file path=usr/share/man/man3/snmp_clone_pdu.3
file path=usr/share/man/man3/snmp_error.3
-file path=usr/share/man/man3/snmp_fix_pdu.3
file path=usr/share/man/man3/snmp_free_pdu.3
-file path=usr/share/man/man3/snmp_free_var.3
-file path=usr/share/man/man3/snmp_free_varbind.3
file path=usr/share/man/man3/snmp_open.3
-file path=usr/share/man/man3/snmp_parse_oid.3
file path=usr/share/man/man3/snmp_perror.3
-file path=usr/share/man/man3/snmp_pdu_add_variable.3
-file path=usr/share/man/man3/snmp_pdu_create.3
file path=usr/share/man/man3/snmp_read.3
file path=usr/share/man/man3/snmp_select_info.3
file path=usr/share/man/man3/snmp_send.3
+file path=usr/share/man/man3/snmp_sess_api.3
file path=usr/share/man/man3/snmp_sess_async_send.3
file path=usr/share/man/man3/snmp_sess_close.3
file path=usr/share/man/man3/snmp_sess_error.3
@@ -1397,20 +1345,16 @@
file path=usr/share/man/man3/snmp_sess_send.3
file path=usr/share/man/man3/snmp_sess_session.3
file path=usr/share/man/man3/snmp_sess_timeout.3
-file path=usr/share/man/man3/snmp_set_mib_errors.3
file path=usr/share/man/man3/snmp_set_mib_warnings.3
file path=usr/share/man/man3/snmp_set_save_descriptions.3
-file path=usr/share/man/man3/snmp_set_var_objid.3
-file path=usr/share/man/man3/snmp_set_var_typed_integer.3
-file path=usr/share/man/man3/snmp_set_var_typed_value.3
-file path=usr/share/man/man3/snmp_set_var_value.3
file path=usr/share/man/man3/snmp_timeout.3
-file path=usr/share/man/man3/snmp_varlist_add_variable.3
-file path=usr/share/man/man3/snprint_description.3
+file path=usr/share/man/man3/snmp_trap_api.3
file path=usr/share/man/man3/snprint_objid.3
file path=usr/share/man/man3/snprint_value.3
file path=usr/share/man/man3/snprint_variable.3
-file path=usr/share/man/man3/unregister_all_config_handlers.3
+file path=usr/share/man/man3/sprint_realloc_objid.3
+file path=usr/share/man/man3/sprint_realloc_value.3
+file path=usr/share/man/man3/sprint_realloc_variable.3
file path=usr/share/man/man3/unregister_app_config_handler.3
file path=usr/share/man/man3/unregister_config_handler.3
file path=usr/share/man/man5/mib2c.conf.5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/001.scapi.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,31 @@
+--- net-snmp-5.4.1/snmplib/scapi.c Fri Sep 15 05:47:01 2006
++++ net-snmp-5.4.1.mod/snmplib/scapi.c Sat Jul 4 02:58:34 2009
+@@ -406,11 +406,11 @@
+ int rval = SNMPERR_SUCCESS;
+ #endif
+ int ret;
++ unsigned int tmp_len;
+
+ #ifdef NETSNMP_USE_OPENSSL
+ const EVP_MD *hashfn;
+ EVP_MD_CTX ctx, *cptr;
+- unsigned int tmp_len;
+ #endif
+
+ DEBUGTRACE;
+@@ -479,13 +479,11 @@
+
+ #ifndef NETSNMP_DISABLE_MD5
+ if (ISTRANSFORM(hashtype, HMACMD5Auth)) {
+- rval = pkcs_digest(CKM_MD5, buf, buf_len, MAC, &tmp_len);
+- *MAC_len = tmp_len;
++ rval = pkcs_digest(CKM_MD5, buf, buf_len, MAC, MAC_len);
+ } else
+ #endif
+ if (ISTRANSFORM(hashtype, HMACSHA1Auth)) {
+- rval = pkcs_digest(CKM_SHA_1, buf, buf_len, MAC, &tmp_len);
+- *MAC_len = tmp_len;
++ rval = pkcs_digest(CKM_SHA_1, buf, buf_len, MAC, MAC_len);
+ } else {
+ return (SNMPERR_GENERR);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/003.solaris-ip-mib.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,491 @@
+--- net-snmp-5.4.1/agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c (revision 0)
++++ net-snmp-5.4.1-patch/agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c (revision 0)
+@@ -0,0 +1,199 @@
++#include <net-snmp/net-snmp-config.h>
++#include <net-snmp/net-snmp-includes.h>
++
++#include <net-snmp/agent/net-snmp-agent-includes.h>
++#include <net-snmp/data_access/ipstats.h>
++#include <net-snmp/data_access/systemstats.h>
++
++#include "kernel_sunos5.h"
++
++static int _systemstats(mibgroup_e, netsnmp_container *, u_int);
++static void _add_ipstats(mib2_ipIfStatsEntry_t *, mib2_ipIfStatsEntry_t *);
++static int _insert_entry(netsnmp_container *, mib2_ipIfStatsEntry_t *);
++
++void
++netsnmp_access_systemstats_arch_init(void)
++{
++ init_kernel_sunos5();
++}
++
++/*
++ * @retval 0 success
++ * @retval -1 container error
++ * @retval -2 could not create entry (probably malloc)
++ */
++int
++netsnmp_access_systemstats_container_arch_load(netsnmp_container* container,
++ u_int load_flags)
++{
++ int rc;
++
++ if (container == NULL)
++ return (-1);
++
++ if ((rc = _systemstats(MIB_IP_TRAFFIC_STATS, container, load_flags)) < 0)
++ return (rc);
++#if defined(NETSNMP_ENABLE_IPV6)
++ if ((rc = _systemstats(MIB_IP6, container, load_flags)) < 0) {
++ netsnmp_access_systemstats_container_free(container,
++ NETSNMP_ACCESS_SYSTEMSTATS_FREE_NOFLAGS);
++ return (rc);
++ }
++#endif
++ return (0);
++}
++
++/*
++ * @retval 0 success
++ * @retval <0 error
++ */
++static int
++_systemstats(mibgroup_e mib, netsnmp_container *container, u_int load_flags)
++{
++ mib2_ipIfStatsEntry_t ipe, iptot;
++ req_e req = GET_FIRST;
++ int ipversion = (mib == MIB_IP6) ? MIB2_INETADDRESSTYPE_ipv6 :
++ MIB2_INETADDRESSTYPE_ipv4;
++ bzero((void *)&iptot, sizeof(iptot));
++
++ while (getMibstat(mib, &ipe, sizeof(ipe), req,
++ &Get_everything, NULL) == 0) {
++ req = GET_NEXT;
++ netsnmp_assert(ipe.ipIfStatsIPVersion == ipversion);
++ _add_ipstats(&iptot, &ipe);
++ }
++ iptot.ipIfStatsIPVersion = ipversion;
++ return _insert_entry(container, &iptot);
++}
++
++static void
++_add_ipstats(mib2_ipIfStatsEntry_t *o1, mib2_ipIfStatsEntry_t *o2)
++{
++ o1->ipIfStatsInHdrErrors += o2->ipIfStatsInHdrErrors;
++ o1->ipIfStatsInTooBigErrors += o2->ipIfStatsInTooBigErrors;
++ o1->ipIfStatsInNoRoutes += o2->ipIfStatsInNoRoutes;
++ o1->ipIfStatsInAddrErrors += o2->ipIfStatsInAddrErrors;
++ o1->ipIfStatsInUnknownProtos += o2->ipIfStatsInUnknownProtos;
++ o1->ipIfStatsInTruncatedPkts += o2->ipIfStatsInTruncatedPkts;
++ o1->ipIfStatsInDiscards += o2->ipIfStatsInDiscards;
++ o1->ipIfStatsOutDiscards += o2->ipIfStatsOutDiscards;
++ o1->ipIfStatsOutFragOKs += o2->ipIfStatsOutFragOKs;
++ o1->ipIfStatsOutFragFails += o2->ipIfStatsOutFragFails;
++ o1->ipIfStatsOutFragCreates += o2->ipIfStatsOutFragCreates;
++ o1->ipIfStatsReasmReqds += o2->ipIfStatsReasmReqds;
++ o1->ipIfStatsReasmOKs += o2->ipIfStatsReasmOKs;
++ o1->ipIfStatsReasmFails += o2->ipIfStatsReasmFails;
++ o1->ipIfStatsOutNoRoutes += o2->ipIfStatsOutNoRoutes;
++ o1->ipIfStatsReasmDuplicates += o2->ipIfStatsReasmDuplicates;
++ o1->ipIfStatsReasmPartDups += o2->ipIfStatsReasmPartDups;
++ o1->ipIfStatsForwProhibits += o2->ipIfStatsForwProhibits;
++ o1->udpInCksumErrs += o2->udpInCksumErrs;
++ o1->udpInOverflows += o2->udpInOverflows;
++ o1->rawipInOverflows += o2->rawipInOverflows;
++ o1->ipIfStatsInWrongIPVersion += o2->ipIfStatsInWrongIPVersion;
++ o1->ipIfStatsOutWrongIPVersion += o2->ipIfStatsOutWrongIPVersion;
++ o1->ipIfStatsOutSwitchIPVersion += o2->ipIfStatsOutSwitchIPVersion;
++ o1->ipIfStatsHCInReceives += o2->ipIfStatsHCInReceives;
++ o1->ipIfStatsHCInOctets += o2->ipIfStatsHCInOctets;
++ o1->ipIfStatsHCInForwDatagrams += o2->ipIfStatsHCInForwDatagrams;
++ o1->ipIfStatsHCInDelivers += o2->ipIfStatsHCInDelivers;
++ o1->ipIfStatsHCOutRequests += o2->ipIfStatsHCOutRequests;
++ o1->ipIfStatsHCOutForwDatagrams += o2->ipIfStatsHCOutForwDatagrams;
++ o1->ipIfStatsOutFragReqds += o2->ipIfStatsOutFragReqds;
++ o1->ipIfStatsHCOutTransmits += o2->ipIfStatsHCOutTransmits;
++ o1->ipIfStatsHCOutOctets += o2->ipIfStatsHCOutOctets;
++ o1->ipIfStatsHCInMcastPkts += o2->ipIfStatsHCInMcastPkts;
++ o1->ipIfStatsHCInMcastOctets += o2->ipIfStatsHCInMcastOctets;
++ o1->ipIfStatsHCOutMcastPkts += o2->ipIfStatsHCOutMcastPkts;
++ o1->ipIfStatsHCOutMcastOctets += o2->ipIfStatsHCOutMcastOctets;
++ o1->ipIfStatsHCInBcastPkts += o2->ipIfStatsHCInBcastPkts;
++ o1->ipIfStatsHCOutBcastPkts += o2->ipIfStatsHCOutBcastPkts;
++ o1->ipsecInSucceeded += o2->ipsecInSucceeded;
++ o1->ipsecInFailed += o2->ipsecInFailed;
++ o1->ipInCksumErrs += o2->ipInCksumErrs;
++ o1->tcpInErrs += o2->tcpInErrs;
++ o1->udpNoPorts += o2->udpNoPorts;
++}
++
++/*
++ * @retval 0 entry was successfully inserted in the container
++ * @retval -1 container error
++ * @retval -2 memory allocation error
++ */
++static int
++_insert_entry(netsnmp_container *container, mib2_ipIfStatsEntry_t *ipe)
++{
++ netsnmp_systemstats_entry *ep =
++ netsnmp_access_systemstats_entry_create(ipe->ipIfStatsIPVersion);
++
++ DEBUGMSGTL(("access:systemstats:arch", "insert entry for v%d\n",
++ ipe->ipIfStatsIPVersion));
++ if (ep == NULL) {
++ DEBUGMSGT(("access:systemstats:arch", "insert failed (alloc)"));
++ return (-2);
++ }
++
++ ep->stats.HCInReceives.low =
++ ipe->ipIfStatsHCInReceives & 0xffffffff;
++ ep->stats.HCInReceives.high = ipe->ipIfStatsHCInReceives >> 32;
++ ep->stats.HCInOctets.low =
++ ipe->ipIfStatsHCInOctets & 0xffffffff;
++ ep->stats.HCInOctets.high = ipe->ipIfStatsHCInOctets >> 32;
++ ep->stats.InHdrErrors = ipe->ipIfStatsInHdrErrors;
++ ep->stats.InAddrErrors = ipe->ipIfStatsInAddrErrors;
++ ep->stats.InUnknownProtos = ipe->ipIfStatsInUnknownProtos;
++ ep->stats.InTruncatedPkts = ipe->ipIfStatsInTruncatedPkts;
++ ep->stats.HCInForwDatagrams.low =
++ ipe->ipIfStatsHCInForwDatagrams & 0xffffffff;
++ ep->stats.HCInForwDatagrams.high =
++ ipe->ipIfStatsHCInForwDatagrams >> 32;
++ ep->stats.ReasmReqds = ipe->ipIfStatsReasmReqds;
++ ep->stats.ReasmOKs = ipe->ipIfStatsReasmOKs;
++ ep->stats.ReasmFails = ipe->ipIfStatsReasmFails;
++ ep->stats.InDiscards = ipe->ipIfStatsInDiscards;
++ ep->stats.HCInDelivers.low =
++ ipe->ipIfStatsHCInDelivers & 0xffffffff;
++ ep->stats.HCInDelivers.high =
++ ipe->ipIfStatsHCInDelivers >> 32;
++ ep->stats.HCOutRequests.low =
++ ipe->ipIfStatsHCOutRequests & 0xffffffff;
++ ep->stats.HCOutRequests.high =
++ ipe->ipIfStatsHCOutRequests >> 32;
++ ep->stats.OutNoRoutes = ipe->ipIfStatsOutNoRoutes;
++ ep->stats.HCOutForwDatagrams.low =
++ ipe->ipIfStatsHCOutForwDatagrams & 0xffffffff;
++ ep->stats.HCOutForwDatagrams.high =
++ ipe->ipIfStatsHCOutForwDatagrams >> 32;
++ ep->stats.OutDiscards = ipe->ipIfStatsOutDiscards;
++ ep->stats.OutFragOKs = ipe->ipIfStatsOutFragOKs;
++ ep->stats.OutFragFails = ipe->ipIfStatsOutFragFails;
++ ep->stats.OutFragCreates = ipe->ipIfStatsOutFragCreates;
++ ep->stats.HCOutTransmits.low =
++ ipe->ipIfStatsHCOutTransmits & 0xffffffff;
++ ep->stats.HCOutTransmits.high = ipe->ipIfStatsHCOutTransmits >> 32;
++ ep->stats.HCOutOctets.low = ipe->ipIfStatsHCOutOctets & 0xffffffff;
++ ep->stats.HCOutOctets.high = ipe->ipIfStatsHCOutOctets >> 32;
++ ep->stats.HCInMcastPkts.low = ipe->ipIfStatsHCInMcastPkts & 0xffffffff;
++ ep->stats.HCInMcastPkts.high = ipe->ipIfStatsHCInMcastPkts >> 32;
++ ep->stats.HCInMcastOctets.low =
++ ipe->ipIfStatsHCInMcastOctets & 0xffffffff;
++ ep->stats.HCInMcastOctets.high = ipe->ipIfStatsHCInMcastOctets >> 32;
++ ep->stats.HCOutMcastPkts.low =
++ ipe->ipIfStatsHCOutMcastPkts & 0xffffffff;
++ ep->stats.HCOutMcastPkts.high = ipe->ipIfStatsHCOutMcastPkts >> 32;
++ ep->stats.HCOutMcastOctets.low =
++ ipe->ipIfStatsHCOutMcastOctets & 0xffffffff;
++ ep->stats.HCOutMcastOctets.high = ipe->ipIfStatsHCOutMcastOctets >> 32;
++ ep->stats.HCInBcastPkts.low = ipe->ipIfStatsHCInBcastPkts & 0xffffffff;
++ ep->stats.HCInBcastPkts.high = ipe->ipIfStatsHCInBcastPkts >> 32;
++ ep->stats.HCOutBcastPkts.low =
++ ipe->ipIfStatsHCOutBcastPkts & 0xffffffff;
++ ep->stats.HCOutBcastPkts.high = ipe->ipIfStatsHCOutBcastPkts >> 32;
++
++ if (CONTAINER_INSERT(container, ep) < 0) {
++ DEBUGMSGT(("access:systemstats:arch", "unable to insert entry"));
++ netsnmp_access_systemstats_entry_free(ep);
++ return (-1);
++ }
++ return (0);
++}
+--- net-snmp-5.4.1/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c (revision 0)
++++ net-snmp-5.4.1-patch/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c (revision 0)
+@@ -0,0 +1,286 @@
++/*
++ * IP-MIB architecture support
++ *
++ */
++#include <net-snmp/net-snmp-config.h>
++#include <net-snmp/net-snmp-includes.h>
++
++#include <net-snmp/agent/net-snmp-agent-includes.h>
++#include <net-snmp/data_access/ipaddress.h>
++#include <net-snmp/data_access/interface.h>
++
++#include "ip-mib/ipAddressTable/ipAddressTable_constants.h"
++
++#include "kernel_sunos5.h"
++#include "mibII/mibII_common.h"
++
++static int _load_v4(netsnmp_container *container, int idx_offset);
++#if defined( NETSNMP_ENABLE_IPV6 )
++static int _load_v6(netsnmp_container *container, int idx_offset);
++#endif
++
++/*
++ * initialize arch specific storage
++ *
++ * @retval 0: success
++ * @retval <0: error
++ */
++int
++netsnmp_arch_ipaddress_entry_init(netsnmp_ipaddress_entry *entry)
++{
++ init_kernel_sunos5();
++ return 0;
++}
++
++/*
++ * cleanup arch specific storage
++ */
++void
++netsnmp_arch_ipaddress_entry_cleanup(netsnmp_ipaddress_entry *entry)
++{
++ /*
++ * Nothing to do.
++ */
++}
++
++/*
++ * copy arch specific storage
++ */
++int
++netsnmp_arch_ipaddress_entry_copy(netsnmp_ipaddress_entry *lhs,
++ netsnmp_ipaddress_entry *rhs)
++{
++ /*
++ * Nothing to do.
++ */
++ return 0;
++}
++
++/*
++ * create a new entry
++ */
++int
++netsnmp_arch_ipaddress_create(netsnmp_ipaddress_entry *entry)
++{
++ if (NULL == entry)
++ return -1;
++
++ DEBUGMSGT(("access:ipaddress:create", "not applicable\n"));
++ return 0;
++}
++
++/*
++ * delete an entry
++ */
++int
++netsnmp_arch_ipaddress_delete(netsnmp_ipaddress_entry *entry)
++{
++ if (NULL == entry)
++ return -1;
++
++ DEBUGMSGT(("access:ipaddress:create", "not applicable\n"));
++ return 0;
++}
++
++/**
++ *
++ * @retval 0 no errors
++ * @retval !0 errors
++ */
++int
++netsnmp_arch_ipaddress_container_load(netsnmp_container *container,
++ u_int load_flags)
++{
++ int rc = 0, idx_offset = 0;
++
++ if (!(load_flags & NETSNMP_ACCESS_IPADDRESS_LOAD_IPV6_ONLY)) {
++ rc = _load_v4(container, idx_offset);
++ if(rc < 0) {
++ u_int flags = NETSNMP_ACCESS_IPADDRESS_FREE_KEEP_CONTAINER;
++ netsnmp_access_ipaddress_container_free(container, flags);
++ }
++ }
++
++#if defined( NETSNMP_ENABLE_IPV6 )
++
++ if (!(load_flags & NETSNMP_ACCESS_IPADDRESS_LOAD_IPV4_ONLY)) {
++ if (rc < 0)
++ rc = 0;
++
++ idx_offset = rc;
++
++ rc = _load_v6(container, idx_offset);
++ if(rc < 0) {
++ u_int flags = NETSNMP_ACCESS_IPADDRESS_FREE_KEEP_CONTAINER;
++ netsnmp_access_ipaddress_container_free(container, flags);
++ }
++ }
++#endif
++
++ /*
++ * return no errors (0) if we found any interfaces
++ */
++ if(rc > 0)
++ rc = 0;
++ return rc;
++}
++
++/*
++ * @retval >=idx_offset ok
++ * @retval -1 memory allocation error
++ * @retval -2 interface lookup error
++ * @retval -3 container error
++ */
++static int
++_load_v4(netsnmp_container *container, int idx_offset)
++{
++ mib2_ipAddrEntry_t ipae;
++ netsnmp_ipaddress_entry *entry;
++ req_e req = GET_FIRST;
++ int rc = 0;
++
++ DEBUGMSGTL(("access:ipaddress:container", "loading v4\n"));
++ while ((rc = getMibstat(MIB_IP_ADDR, &ipae, sizeof(ipae), req,
++ &Get_everything, NULL)) == 0) {
++ req = GET_NEXT;
++ entry = netsnmp_access_ipaddress_entry_create();
++ if (entry == NULL)
++ return (-1);
++ if (ipae.ipAdEntAddr == INADDR_ANY)
++ continue;
++
++ ipae.ipAdEntIfIndex.o_bytes[ipae.ipAdEntIfIndex.o_length] = '\0';
++ DEBUGMSGTL(("access:ipaddress:container", "found if %s\n",
++ ipae.ipAdEntIfIndex.o_bytes));
++ /* Obtain interface index */
++ entry->if_index =
++ netsnmp_access_interface_index_find(ipae.ipAdEntIfIndex.o_bytes);
++ if (entry->if_index == 0) {
++ DEBUGMSGTL(("access:ipaddress:container", "cannot find if %s\n",
++ ipae.ipAdEntIfIndex));
++ netsnmp_access_ipaddress_entry_free(entry);
++ return (-2);
++ }
++
++ if (strchr((const char *)&ipae.ipAdEntIfIndex.o_bytes, ':') != 0)
++ entry->flags |= NETSNMP_ACCESS_IPADDRESS_ISALIAS;
++
++ /* Get the address */
++ entry->ia_address_len = sizeof(ipae.ipAdEntAddr);
++ netsnmp_assert(entry->ia_address_len == 4 &&
++ entry->ia_address_len <= sizeof(entry->ia_address));
++ memcpy(&entry->ia_address, &ipae.ipAdEntAddr, entry->ia_address_len);
++
++ /* prefix */
++ entry->ia_prefix_len = ipae.ipAdEntInfo.ae_subnet_len;
++
++ /* set the Origin */
++ if (ipae.ipAdEntInfo.ae_flags & IFF_DHCPRUNNING)
++ entry->ia_origin = IPADDRESSORIGINTC_DHCP;
++ else
++ entry->ia_origin = IPADDRESSORIGINTC_MANUAL;
++
++ /* set ipv4 constants */
++ entry->ia_type = IPADDRESSTYPE_UNICAST;
++ entry->ia_status = IPADDRESSSTATUSTC_PREFERRED;
++
++ entry->ns_ia_index = ++idx_offset;
++
++ DEBUGMSGTL(("access:ipaddress:container", "insert if %d, addrlen %d\n",
++ entry->if_index, entry->ia_address_len));
++
++ if (CONTAINER_INSERT(container, entry) < 0) {
++ DEBUGMSGTL(("access:ipaddress:container", "unable to insert %s\n",
++ ipae.ipAdEntIfIndex.o_bytes));
++ netsnmp_access_ipaddress_entry_free(entry);
++ return (-3);
++ }
++ }
++ return (idx_offset);
++}
++
++/*
++ * @retval >=idx_offset ok
++ * @retval -1 memory allocation error
++ * @retval -2 interface lookup error
++ * @retval -3 container error
++ */
++#if defined( NETSNMP_ENABLE_IPV6 )
++static int
++_load_v6(netsnmp_container *container, int idx_offset)
++{
++ mib2_ipv6AddrEntry_t ip6ae;
++ netsnmp_ipaddress_entry *entry;
++ req_e req = GET_FIRST;
++ int rc = 0;
++
++ DEBUGMSGTL(("access:ipaddress:container", "loading v6... cache %d\n",
++ MIB_IP6_ADDR));
++ while ((rc = getMibstat(MIB_IP6_ADDR, &ip6ae, sizeof(ip6ae), req,
++ &Get_everything, NULL)) == 0) {
++ req = GET_NEXT;
++ entry = netsnmp_access_ipaddress_entry_create();
++ if (entry == NULL)
++ return (-1);
++ if (bcmp((const void *)&ip6ae.ipv6AddrAddress,
++ (const void *)&in6addr_any,
++ sizeof (ip6ae.ipv6AddrAddress)) == 0)
++ continue;
++
++ ip6ae.ipv6AddrIfIndex.o_bytes[ip6ae.ipv6AddrIfIndex.o_length] = '\0';
++ DEBUGMSGTL(("access:ipaddress:container", "found if %s\n",
++ ip6ae.ipv6AddrIfIndex.o_bytes));
++
++ /* Obtain interface index */
++ entry->if_index =
++ netsnmp_access_interface_index_find(
++ ip6ae.ipv6AddrIfIndex.o_bytes);
++ if (entry->if_index == 0) {
++ DEBUGMSGTL(("access:ipaddress:container", "cannot find if %s\n",
++ ip6ae.ipv6AddrIfIndex.o_bytes));
++ netsnmp_access_ipaddress_entry_free(entry);
++ return (-2);
++ }
++
++ /* Get the address */
++ entry->ia_address_len = sizeof(ip6ae.ipv6AddrAddress);
++ netsnmp_assert(entry->ia_address_len == 16 &&
++ entry->ia_address_len <= sizeof(entry->ia_address));
++ memcpy(&entry->ia_address, &ip6ae.ipv6AddrAddress,
++ entry->ia_address_len);
++
++ /* prefix */
++ entry->ia_prefix_len = ip6ae.ipv6AddrPfxLength;
++
++ /* type is anycast? (mib2.h: 1 = yes, 2 = no) */
++ entry->ia_type = (ip6ae.ipv6AddrAnycastFlag == 1) ?
++ IPADDRESSTYPE_ANYCAST : IPADDRESSTYPE_UNICAST;
++
++ /* origin (mib2.h: 1 = stateless, 2 = stateful, 3 = unknown) */
++ DEBUGMSGTL(("access:ipaddress:container", "origin %d\n",
++ ip6ae.ipv6AddrType));
++ if (ip6ae.ipv6AddrType == 1)
++ entry->ia_origin = IPADDRESSORIGINTC_LINKLAYER;
++ else if (ip6ae.ipv6AddrInfo.ae_flags & IFF_DHCPRUNNING)
++ entry->ia_origin = IPADDRESSORIGINTC_DHCP;
++ else
++ entry->ia_origin = IPADDRESSORIGINTC_MANUAL;
++
++ /* status */
++ entry->ia_status = ip6ae.ipv6AddrStatus;
++
++ entry->ns_ia_index = ++idx_offset;
++
++ DEBUGMSGTL(("access:ipaddress:container", "insert if %d, addrlen %d\n",
++ entry->if_index, entry->ia_address_len));
++
++ if (CONTAINER_INSERT(container, entry) < 0) {
++ DEBUGMSGTL(("access:ipaddress:container", "unable to insert %s\n",
++ ip6ae.ipv6AddrIfIndex.o_bytes));
++ netsnmp_access_ipaddress_entry_free(entry);
++ return (-3);
++ }
++ }
++ return (idx_offset);
++}
++#endif /* defined( NETSNMP_ENABLE_IPV6 ) */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/004.16436.patch Sat May 18 09:18:20 2013 -0700
@@ -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))) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/005.16736.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,759 @@
+Index: net-snmp/agent/mibgroup/kernel_sunos5.h
+===================================================================
+--- net-snmp/agent/mibgroup/kernel_sunos5.h (revision 16735)
++++ net-snmp/agent/mibgroup/kernel_sunos5.h (revision 16736)
+@@ -193,6 +193,8 @@
+ 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
+ }
+Index: net-snmp/agent/mibgroup/if-mib/data_access/interface_solaris2.c
+===================================================================
+--- net-snmp/agent/mibgroup/if-mib/data_access/interface_solaris2.c (revision 16735)
++++ net-snmp/agent/mibgroup/if-mib/data_access/interface_solaris2.c (revision 16736)
+@@ -14,6 +14,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/sockio.h>
+ #include <strings.h>
++#include <string.h>
+
+ static int _set_ip_flags_v4(netsnmp_interface_entry *, mib2_ifEntry_t *);
+ static int _match_ifname_v4addr(void *ifname, void *ipaddr);
+@@ -43,25 +44,7 @@
+ #if defined(HAVE_IF_NAMETOINDEX)
+ return if_nametoindex(name);
+ #else /* use GIFINDEX */
+- int sd;
+- struct ifreq ifr;
+-
+- if (name == 0) {
+- return (0);
+- }
+-
+- if ((sd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
+- return (0);
+- }
+-
+- strncpy(ifr.ifr_name, name, IFNAMSIZ);
+- if (ioctl(sd, SIOCGIFINDEX, (char *) &ifr) < 0) {
+- close(sd);
+- return (0);
+- }
+-
+- close(sd);
+- return (ifr.ifr_index);
++ return solaris2_if_nametoindex(name, strlen(name));
+ #endif /* defined(HAVE_IF_NAMETOINDEX) */
+ }
+
+Index: net-snmp/agent/mibgroup/mibII/interfaces.c
+===================================================================
+--- net-snmp/agent/mibgroup/mibII/interfaces.c (revision 16735)
++++ net-snmp/agent/mibgroup/mibII/interfaces.c (revision 16736)
+@@ -2245,71 +2245,7 @@
+ int
+ Interface_Index_By_Name(char *Name, int Len)
+ {
+- int i, sd, lastlen = 0, interfaces = 0;
+- struct ifconf ifc;
+- struct ifreq *ifrp = NULL;
+- char *buf = NULL;
+-
+- if (Name == 0) {
+- return 0;
+- }
+- if ((sd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
+- return 0;
+- }
+-
+- /*
+- * Cope with lots of interfaces and brokenness of ioctl SIOCGIFCONF
+- * on some platforms; see W. R. Stevens, ``Unix Network Programming
+- * Volume I'', p.435.
+- */
+-
+- for (i = 8;; i += 8) {
+- buf = calloc(i, sizeof(struct ifreq));
+- if (buf == NULL) {
+- close(sd);
+- return 0;
+- }
+- ifc.ifc_len = i * sizeof(struct ifreq);
+- ifc.ifc_buf = (caddr_t) buf;
+-
+- if (ioctl(sd, SIOCGIFCONF, (char *) &ifc) < 0) {
+- if (errno != EINVAL || lastlen != 0) {
+- /*
+- * Something has gone genuinely wrong.
+- */
+- free(buf);
+- close(sd);
+- return 0;
+- }
+- /*
+- * Otherwise, it could just be that the buffer is too small.
+- */
+- } else {
+- if (ifc.ifc_len == lastlen) {
+- /*
+- * The length is the same as the last time; we're done.
+- */
+- break;
+- }
+- lastlen = ifc.ifc_len;
+- }
+- free(buf);
+- }
+-
+- ifrp = ifc.ifc_req;
+- interfaces = (ifc.ifc_len / sizeof(struct ifreq)) + 1;
+-
+- for (i = 1; i < interfaces; i++, ifrp++) {
+- if (strncmp(ifrp->ifr_name, Name, Len) == 0) {
+- free(buf);
+- close(sd);
+- return i;
+- }
+- }
+-
+- free(buf);
+- close(sd);
+- return 0;
++ return (solaris2_if_nametoindex(Name, Len));
+ }
+
+ #endif /* solaris2 */
+Index: net-snmp/agent/mibgroup/kernel_sunos5.c
+===================================================================
+--- net-snmp/agent/mibgroup/kernel_sunos5.c (revision 16735)
++++ net-snmp/agent/mibgroup/kernel_sunos5.c (revision 16736)
+@@ -169,11 +169,14 @@
+ getif(mib2_ifEntry_t *ifbuf, size_t size, req_e req_type, mib2_ifEntry_t *resp,
+ size_t *length, int (*comp)(void *, void *), void *arg);
+ static void
+-set_if_info(mib2_ifEntry_t *ifp, unsigned index, char *name, uint64_t flags,int mtu);
++set_if_info(mib2_ifEntry_t *ifp, unsigned index, char *name, uint64_t flags,
++ int mtu);
+ static int get_if_stats(mib2_ifEntry_t *ifp);
+
+-static int get_phys_address(mib2_ifEntry_t *ifp);
+-static int _dlpi_phys_address(int fd, char *paddr, int maxlen, int *paddrlen);
++static int _dlpi_open(const char *devname);
++static int _dlpi_get_phys_address(int fd, char *paddr, int maxlen,
++ int *paddrlen);
++static int _dlpi_get_iftype(int fd, unsigned int *iftype);
+ static int _dlpi_attach(int fd, int ppa);
+ static int _dlpi_parse_devname(char *devname, int *ppap);
+
+@@ -1047,7 +1050,7 @@
+ mib2_ifEntry_t *resp, size_t *length, int (*comp)(void *, void *),
+ void *arg)
+ {
+- int i, ret;
++ int fd, i, ret;
+ int ifsd, ifsd6 = -1;
+ struct lifreq lifreq, *lifrp;
+ mib2_ifEntry_t *ifp;
+@@ -1109,6 +1112,15 @@
+
+ memset(ifp, 0, sizeof(mib2_ifEntry_t));
+
++ if ((fd = _dlpi_open(ifnp->if_name)) != -1) {
++ /* Could open DLPI... now try to grab some info */
++ (void) _dlpi_get_phys_address(fd, ifp->ifPhysAddress.o_bytes,
++ sizeof(ifp->ifPhysAddress.o_bytes),
++ &ifp->ifPhysAddress.o_length);
++ (void) _dlpi_get_iftype(fd, &ifp->ifType);
++ close(fd);
++ }
++
+ set_if_info(ifp, ifnp->if_index, ifnp->if_name, if_flags,
+ lifrp->lifr_metric);
+
+@@ -1117,9 +1129,6 @@
+ continue;
+ }
+
+- /* try to obtain the physical address */
+- (void) get_phys_address(ifp);
+-
+ /*
+ * Once we reach here we know that all went well, so move to
+ * the next ifEntry.
+@@ -1294,8 +1303,11 @@
+ #endif /*defined(HAVE_IF_NAMEINDEX)&&defined(NETSNMP_INCLUDE_IFTABLE_REWRITES)*/
+
+ static void
+-set_if_info(mib2_ifEntry_t *ifp, unsigned index, char *name, uint64_t flags, int mtu)
++set_if_info(mib2_ifEntry_t *ifp, unsigned index, char *name, uint64_t flags,
++ int mtu)
+ {
++ boolean_t havespeed = B_FALSE;
++
+ /*
+ * Set basic information
+ */
+@@ -1307,101 +1319,122 @@
+ ifp->ifLastChange = 0; /* Who knows ... */
+ ifp->flags = flags;
+ ifp->ifMtu = mtu;
++ ifp->ifSpeed = 0;
+
+- /* make ifOperStatus depend on link status if available */
+- if (ifp->ifAdminStatus == 1) {
+- int i_tmp;
+- /* only UPed interfaces get correct link status - if any */
+- if (getKstatInt(NULL, name,"link_up",&i_tmp) == 0) {
+- ifp->ifOperStatus = i_tmp ? 1 : 2;
+- }
+- }
+-
+ /*
+- * Set link Type and Speed
++ * Get link speed
+ */
+- ifp->ifType = 1;
+- ifp->ifSpeed = 0;
+-
+- if ((getKstatInt(NULL, name, "ifspeed", &ifp->ifSpeed) == 0) &&
+- (ifp->ifSpeed != 0)) {
++ if ((getKstatInt(NULL, name, "ifspeed", &ifp->ifSpeed) == 0)) {
+ /*
+ * check for SunOS patch with half implemented ifSpeed
+ */
+- if (ifp->ifSpeed < 10000) {
++ if (ifp->ifSpeed > 0 && ifp->ifSpeed < 10000) {
+ ifp->ifSpeed *= 1000000;
+ }
++ havespeed = B_TRUE;
+ } else if (getKstatInt(NULL, name, "ifSpeed", &ifp->ifSpeed) == 0) {
+ /*
+ * this is good
+ */
++ havespeed = B_TRUE;
+ }
+
+- switch (name[0]) {
+- case 'a': /* ath (802.11) */
+- if (name[1] == 't' && name[2] == 'h')
+- ifp->ifType = 71;
+- break;
+- case 'l': /* le / lo / lane (ATM LAN Emulation) */
+- if (name[1] == 'o') {
+- if (!ifp->ifSpeed)
+- ifp->ifSpeed = 127000000;
+- ifp->ifType = 24;
+- } else if (name[1] == 'e') {
+- if (!ifp->ifSpeed)
+- ifp->ifSpeed = 10000000;
+- ifp->ifType = 6;
+- } else if (name[1] == 'a') {
+- if (!ifp->ifSpeed)
+- ifp->ifSpeed = 155000000;
+- ifp->ifType = 37;
+- }
+- break;
++ /* make ifOperStatus depend on link status if available */
++ if (ifp->ifAdminStatus == 1) {
++ int i_tmp;
++ /* only UPed interfaces get correct link status - if any */
++ if (getKstatInt(NULL, name,"link_up",&i_tmp) == 0) {
++ ifp->ifOperStatus = i_tmp ? 1 : 2;
++#ifdef IFF_FAILED
++ } else if (flags & IFF_FAILED) {
++ /*
++ * If IPMP is used, and if the daemon marks the interface
++ * as 'failed', then we know for sure something is amiss.
++ */
++ ifp->ifOperStatus = 2;
++#endif
++ } else if (havespeed == B_TRUE && ifp->ifSpeed == 0) {
++ /* Heuristic */
++ ifp->ifOperStatus = 2;
++ }
++ }
+
+- case 'g': /* ge (gigabit ethernet card) */
+- case 'c': /* ce (Cassini Gigabit-Ethernet (PCI) */
+- if (!ifp->ifSpeed)
+- ifp->ifSpeed = 1000000000;
+- ifp->ifType = 6;
+- break;
+-
+- case 'h': /* hme (SBus card) */
+- case 'e': /* eri (PCI card) */
+- case 'b': /* be */
+- case 'd': /* dmfe -- found on netra X1 */
+- if (!ifp->ifSpeed)
+- ifp->ifSpeed = 100000000;
+- ifp->ifType = 6;
+- break;
+-
+- case 'f': /* fa (Fore ATM) */
+- if (!ifp->ifSpeed)
+- ifp->ifSpeed = 155000000;
+- ifp->ifType = 37;
+- break;
+-
+- case 'q': /* qe (QuadEther)/qa (Fore ATM)/qfe (QuadFastEther) */
+- if (name[1] == 'a') {
+- if (!ifp->ifSpeed)
+- ifp->ifSpeed = 155000000;
+- ifp->ifType = 37;
+- } else if (name[1] == 'e') {
++ /*
++ * Set link Type and Speed (if it could not be determined from kstat)
++ */
++ if (ifp->ifType == 24) {
++ ifp->ifSpeed = 127000000;
++ } else if (ifp->ifType == 1 || ifp->ifType == 0) {
++ /*
++ * Could not get the type from DLPI, so lets fall back to the hardcoded
++ * values.
++ */
++ switch (name[0]) {
++ case 'a': /* ath (802.11) */
++ if (name[1] == 't' && name[2] == 'h')
++ ifp->ifType = 71;
++ break;
++ case 'l': /* le / lo / lane (ATM LAN Emulation) */
++ if (name[1] == 'o') {
+ if (!ifp->ifSpeed)
++ ifp->ifSpeed = 127000000;
++ ifp->ifType = 24;
++ } else if (name[1] == 'e') {
++ if (!ifp->ifSpeed)
+ ifp->ifSpeed = 10000000;
+ ifp->ifType = 6;
+- } else if (name[1] == 'f') {
++ } else if (name[1] == 'a') {
+ if (!ifp->ifSpeed)
+- ifp->ifSpeed = 100000000;
++ ifp->ifSpeed = 155000000;
++ ifp->ifType = 37;
++ }
++ break;
++
++ case 'g': /* ge (gigabit ethernet card) */
++ case 'c': /* ce (Cassini Gigabit-Ethernet (PCI) */
++ if (!ifp->ifSpeed)
++ ifp->ifSpeed = 1000000000;
+ ifp->ifType = 6;
++ break;
++
++ case 'h': /* hme (SBus card) */
++ case 'e': /* eri (PCI card) */
++ case 'b': /* be */
++ case 'd': /* dmfe -- found on netra X1 */
++ if (!ifp->ifSpeed)
++ ifp->ifSpeed = 100000000;
++ ifp->ifType = 6;
++ break;
++
++ case 'f': /* fa (Fore ATM) */
++ if (!ifp->ifSpeed)
++ ifp->ifSpeed = 155000000;
++ ifp->ifType = 37;
++ break;
++
++ case 'q': /* qe (QuadEther)/qa (Fore ATM)/qfe (QuadFastEther) */
++ if (name[1] == 'a') {
++ if (!ifp->ifSpeed)
++ ifp->ifSpeed = 155000000;
++ ifp->ifType = 37;
++ } else if (name[1] == 'e') {
++ if (!ifp->ifSpeed)
++ ifp->ifSpeed = 10000000;
++ ifp->ifType = 6;
++ } else if (name[1] == 'f') {
++ if (!ifp->ifSpeed)
++ ifp->ifSpeed = 100000000;
++ ifp->ifType = 6;
++ }
++ break;
++
++ case 'i': /* ibd (Infiniband)/ip.tun (IP tunnel) */
++ if (name[1] == 'b')
++ ifp->ifType = 199;
++ else if (name[1] == 'p')
++ ifp->ifType = 131;
++ break;
+ }
+- break;
+-
+- case 'i': /* ibd (Infiniband)/ip.tun (IP tunnel) */
+- if (name[1] == 'b')
+- ifp->ifType = 199;
+- else if (name[1] == 'p')
+- ifp->ifType = 131;
+- break;
+ }
+ }
+
+@@ -1491,68 +1524,69 @@
+ }
+
+ /*
+- * Obtain the physical address using DLPI. Pieces of this code is directly
+- * taken from libdlpi, which unfortunately is not yet commonly available.
++ * Open a DLPI device.
++ *
++ * On success the file descriptor is returned.
++ * On error -1 is returned.
+ */
+-
+-static int
+-get_phys_address(mib2_ifEntry_t *ifp)
++static int
++_dlpi_open(const char *devname)
+ {
+- char *devstr;
+- int fd;
+- int ppa = -1;
+- int rc = -1;
++ char *devstr;
++ int fd = -1;
++ int ppa = -1;
+
+- DEBUGMSGTL(("kernel_sunos5", "get_phys_address called\n"));
++ DEBUGMSGTL(("kernel_sunos5", "_dlpi_open called\n"));
+
+- if ((devstr = malloc(5 + ifp->ifDescr.o_length + 1)) == NULL)
++ if (devname == NULL)
+ return (-1);
+- (void) sprintf(devstr, "/dev/%s", ifp->ifDescr.o_bytes);
++
++ if ((devstr = malloc(5 + strlen(devname) + 1)) == NULL)
++ return (-1);
++ (void) sprintf(devstr, "/dev/%s", devname);
+ DEBUGMSGTL(("kernel_sunos5:dlpi", "devstr(%s)\n", devstr));
+ /*
+ * First try opening the device using style 1, if the device does not
+ * exist we try style 2. Modules will not be pushed, so something like
+ * ip tunnels will not work.
+ */
+- if ((fd = open(devstr, O_RDWR | O_NONBLOCK)) != -1) {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open(%s)\n", devstr));
+- rc = _dlpi_phys_address(fd, ifp->ifPhysAddress.o_bytes,
+- sizeof(ifp->ifPhysAddress.o_bytes),
+- &ifp->ifPhysAddress.o_length);
+- } else if (_dlpi_parse_devname(devstr, &ppa) == 0) {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 parse: %s, %d\n",
+- devstr, ppa));
+- /* try style 2 */
+- if ((fd = open(devstr, O_RDWR | O_NONBLOCK)) != -1) {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 open(%s)\n", devstr));
+- if (_dlpi_attach(fd, ppa) == 0) {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "attached\n"));
+- rc = _dlpi_phys_address(fd, ifp->ifPhysAddress.o_bytes,
+- sizeof(ifp->ifPhysAddress.o_bytes),
+- &ifp->ifPhysAddress.o_length);
+- }
+- }
+- }
++
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open(%s)\n", devstr));
++ if ((fd = open(devstr, O_RDWR | O_NONBLOCK)) < 0) {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open failed\n"));
++ if (_dlpi_parse_devname(devstr, &ppa) == 0) {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 parse: %s, %d\n",
++ devstr, ppa));
++ /* try style 2 */
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 open(%s)\n", devstr));
+
+- free(devstr);
+- if (fd != -1)
+- close(fd);
++ if ((fd = open(devstr, O_RDWR | O_NONBLOCK)) != -1) {
++ if (_dlpi_attach(fd, ppa) == 0) {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "attached\n"));
++ } else {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "attached failed\n"));
++ close(fd);
++ fd = -1;
++ }
++ } else {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 open failed\n"));
++ }
++ }
++ } else {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open succeeded\n"));
++ }
+
+- if (rc == 0) {
+- /* successful */
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "got phys addr using DLPI\n"));
+- return (0);
+- } else {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "unable to get phys address\n"));
+- return (-1);
+- }
++ /* clean up */
++ free(devstr);
++
++ return (fd);
+ }
+
+ /*
+- *
++ * Obtain the physical address of the interface using DLPI
+ */
+ static int
+-_dlpi_phys_address(int fd, char *addr, int maxlen, int *addrlen)
++_dlpi_get_phys_address(int fd, char *addr, int maxlen, int *addrlen)
+ {
+ dl_phys_addr_req_t paddr_req;
+ union DL_primitives *dlp;
+@@ -1560,6 +1594,8 @@
+ char buf[MAX(DL_PHYS_ADDR_ACK_SIZE+64, DL_ERROR_ACK_SIZE)];
+ int flag = 0;
+
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "_dlpi_get_phys_address\n"));
++
+ paddr_req.dl_primitive = DL_PHYS_ADDR_REQ;
+ paddr_req.dl_addr_type = DL_CURR_PHYS_ADDR;
+ ctlbuf.buf = (char *)&paddr_req;
+@@ -1570,7 +1606,7 @@
+ ctlbuf.maxlen = sizeof(buf);
+ ctlbuf.len = 0;
+ ctlbuf.buf = buf;
+- if (getmsg(fd, &ctlbuf, NULL, &flag) != 0)
++ if (getmsg(fd, &ctlbuf, NULL, &flag) < 0)
+ return (-1);
+
+ if (ctlbuf.len < sizeof(uint32_t))
+@@ -1580,6 +1616,7 @@
+ case DL_PHYS_ADDR_ACK: {
+ dl_phys_addr_ack_t *phyp = (dl_phys_addr_ack_t *)buf;
+
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "got ACK\n"));
+ if (ctlbuf.len < DL_PHYS_ADDR_ACK_SIZE || phyp->dl_addr_length > maxlen)
+ return (-1);
+ (void) memcpy(addr, buf+phyp->dl_addr_offset, phyp->dl_addr_length);
+@@ -1589,16 +1626,137 @@
+ case DL_ERROR_ACK: {
+ dl_error_ack_t *errp = (dl_error_ack_t *)buf;
+
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "got ERROR ACK\n"));
+ if (ctlbuf.len < DL_ERROR_ACK_SIZE)
+ return (-1);
+ return (errp->dl_errno);
+ }
+ default:
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "got type: %x\n", dlp->dl_primitive));
+ return (-1);
+ }
+ }
+
++/*
++ * Query the interface about it's type.
++ */
+ static int
++_dlpi_get_iftype(int fd, unsigned int *iftype)
++{
++ dl_info_req_t info_req;
++ union DL_primitives *dlp;
++ struct strbuf ctlbuf;
++ char buf[MAX(DL_INFO_ACK_SIZE, DL_ERROR_ACK_SIZE)];
++ int flag = 0;
++
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "_dlpi_get_iftype\n"));
++
++ info_req.dl_primitive = DL_INFO_REQ;
++ ctlbuf.buf = (char *)&info_req;
++ ctlbuf.len = DL_INFO_REQ_SIZE;
++ if (putmsg(fd, &ctlbuf, NULL, 0) < 0) {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "putmsg failed: %d\nn", errno));
++ return (-1);
++ }
++
++ ctlbuf.maxlen = sizeof(buf);
++ ctlbuf.len = 0;
++ ctlbuf.buf = buf;
++ if (getmsg(fd, &ctlbuf, NULL, &flag) < 0) {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "getmsg failed: %d\n", errno));
++ return (-1);
++ }
++
++ if (ctlbuf.len < sizeof(uint32_t))
++ return (-1);
++ dlp = (union DL_primitives *)buf;
++ switch (dlp->dl_primitive) {
++ case DL_INFO_ACK: {
++ dl_info_ack_t *info = (dl_info_ack_t *)buf;
++
++ if (ctlbuf.len < DL_INFO_ACK_SIZE)
++ return (-1);
++
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "dl_mac_type: %x\n",
++ info->dl_mac_type));
++ switch (info->dl_mac_type) {
++ case DL_CSMACD:
++ case DL_ETHER:
++ case DL_ETH_CSMA:
++ *iftype = 6;
++ break;
++ case DL_TPB: /* Token Passing Bus */
++ *iftype = 8;
++ break;
++ case DL_TPR: /* Token Passing Ring */
++ *iftype = 9;
++ break;
++ case DL_HDLC:
++ *iftype = 118;
++ break;
++ case DL_FDDI:
++ *iftype = 15;
++ break;
++ case DL_FC: /* Fibre channel */
++ *iftype = 56;
++ break;
++ case DL_ATM:
++ *iftype = 37;
++ break;
++ case DL_X25:
++ case DL_ISDN:
++ *iftype = 63;
++ break;
++ case DL_HIPPI:
++ *iftype = 47;
++ break;
++#ifdef DL_IB
++ case DL_IB:
++ *iftype = 199;
++ break;
++#endif
++ case DL_FRAME: /* Frame Relay */
++ *iftype = 32;
++ break;
++ case DL_LOOP:
++ *iftype = 24;
++ break;
++#ifdef DL_WIFI
++ case DL_WIFI:
++ *iftype = 71;
++ break;
++#endif
++#ifdef DL_IPV4 /* then IPv6 is also defined */
++ case DL_IPV4: /* IPv4 Tunnel */
++ case DL_IPV6: /* IPv6 Tunnel */
++ *iftype = 131;
++ break;
++#endif
++ default:
++ *iftype = 1; /* Other */
++ break;
++ }
++
++ return (0);
++ }
++ case DL_ERROR_ACK: {
++ dl_error_ack_t *errp = (dl_error_ack_t *)buf;
++
++ DEBUGMSGTL(("kernel_sunos5:dlpi",
++ "got DL_ERROR_ACK: dlpi %d, error %d\n", errp->dl_errno,
++ errp->dl_unix_errno));
++
++ if (ctlbuf.len < DL_ERROR_ACK_SIZE)
++ return (-1);
++ return (errp->dl_errno);
++ }
++ default:
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "got type %x\n", dlp->dl_primitive));
++ return (-1);
++ }
++}
++
++static int
+ _dlpi_attach(int fd, int ppa)
+ {
+ dl_attach_req_t attach_req;
+@@ -1680,8 +1838,83 @@
+ } else {
+ return 1;
+ }
+-}
++}
+
++/*
++ * Try to determine the index of a particular interface. If mfd-rewrites is
++ * specified, then this function would only be used when the system does not
++ * have if_nametoindex(3SOCKET).
++ */
++int
++solaris2_if_nametoindex(const char *Name, int Len)
++{
++ int i, sd, lastlen = 0, interfaces = 0;
++ struct ifconf ifc;
++ struct ifreq *ifrp = NULL;
++ char *buf = NULL;
++
++ if (Name == 0) {
++ return 0;
++ }
++ if ((sd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
++ return 0;
++ }
++
++ /*
++ * Cope with lots of interfaces and brokenness of ioctl SIOCGIFCONF
++ * on some platforms; see W. R. Stevens, ``Unix Network Programming
++ * Volume I'', p.435.
++ */
++
++ for (i = 8;; i += 8) {
++ buf = calloc(i, sizeof(struct ifreq));
++ if (buf == NULL) {
++ close(sd);
++ return 0;
++ }
++ ifc.ifc_len = i * sizeof(struct ifreq);
++ ifc.ifc_buf = (caddr_t) buf;
++
++ if (ioctl(sd, SIOCGIFCONF, (char *) &ifc) < 0) {
++ if (errno != EINVAL || lastlen != 0) {
++ /*
++ * Something has gone genuinely wrong.
++ */
++ free(buf);
++ close(sd);
++ return 0;
++ }
++ /*
++ * Otherwise, it could just be that the buffer is too small.
++ */
++ } else {
++ if (ifc.ifc_len == lastlen) {
++ /*
++ * The length is the same as the last time; we're done.
++ */
++ break;
++ }
++ lastlen = ifc.ifc_len;
++ }
++ free(buf);
++ }
++
++ ifrp = ifc.ifc_req;
++ interfaces = (ifc.ifc_len / sizeof(struct ifreq)) + 1;
++
++ for (i = 1; i < interfaces; i++, ifrp++) {
++ if (strncmp(ifrp->ifr_name, Name, Len) == 0) {
++ free(buf);
++ close(sd);
++ return i;
++ }
++ }
++
++ free(buf);
++ close(sd);
++ return 0;
++}
++
+ #ifdef _STDC_COMPAT
+ #ifdef __cplusplus
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/006.16742.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,625 @@
+Index: net-snmp/agent/mibgroup/kernel_sunos5.c
+===================================================================
+--- net-snmp/agent/mibgroup/kernel_sunos5.c (revision 16741)
++++ net-snmp/agent/mibgroup/kernel_sunos5.c (revision 16742)
+@@ -173,12 +173,14 @@
+ int mtu);
+ static int get_if_stats(mib2_ifEntry_t *ifp);
+
++#if defined(HAVE_IF_NAMEINDEX) && defined(NETSNMP_INCLUDE_IFTABLE_REWRITES)
+ static int _dlpi_open(const char *devname);
+ static int _dlpi_get_phys_address(int fd, char *paddr, int maxlen,
+ int *paddrlen);
+ static int _dlpi_get_iftype(int fd, unsigned int *iftype);
+ static int _dlpi_attach(int fd, int ppa);
+ static int _dlpi_parse_devname(char *devname, int *ppap);
++#endif
+
+
+
+@@ -1044,8 +1046,300 @@
+ * Get info for interfaces group. Mimics getmib interface as much as possible
+ * to be substituted later if SunSoft decides to extend its mib2 interface.
+ */
++
+ #if defined(HAVE_IF_NAMEINDEX) && defined(NETSNMP_INCLUDE_IFTABLE_REWRITES)
++
++/*
++ * If IFTABLE_REWRITES is enabled, then we will also rely on DLPI to obtain
++ * information from the NIC.
++ */
++
++/*
++ * Open a DLPI device.
++ *
++ * On success the file descriptor is returned.
++ * On error -1 is returned.
++ */
+ static int
++_dlpi_open(const char *devname)
++{
++ char *devstr;
++ int fd = -1;
++ int ppa = -1;
++
++ DEBUGMSGTL(("kernel_sunos5", "_dlpi_open called\n"));
++
++ if (devname == NULL)
++ return (-1);
++
++ if ((devstr = malloc(5 + strlen(devname) + 1)) == NULL)
++ return (-1);
++ (void) sprintf(devstr, "/dev/%s", devname);
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "devstr(%s)\n", devstr));
++ /*
++ * First try opening the device using style 1, if the device does not
++ * exist we try style 2. Modules will not be pushed, so something like
++ * ip tunnels will not work.
++ */
++
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open(%s)\n", devstr));
++ if ((fd = open(devstr, O_RDWR | O_NONBLOCK)) < 0) {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open failed\n"));
++ if (_dlpi_parse_devname(devstr, &ppa) == 0) {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 parse: %s, %d\n",
++ devstr, ppa));
++ /* try style 2 */
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 open(%s)\n", devstr));
++
++ if ((fd = open(devstr, O_RDWR | O_NONBLOCK)) != -1) {
++ if (_dlpi_attach(fd, ppa) == 0) {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "attached\n"));
++ } else {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "attached failed\n"));
++ close(fd);
++ fd = -1;
++ }
++ } else {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 open failed\n"));
++ }
++ }
++ } else {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open succeeded\n"));
++ }
++
++ /* clean up */
++ free(devstr);
++
++ return (fd);
++}
++
++/*
++ * Obtain the physical address of the interface using DLPI
++ */
++static int
++_dlpi_get_phys_address(int fd, char *addr, int maxlen, int *addrlen)
++{
++ dl_phys_addr_req_t paddr_req;
++ union DL_primitives *dlp;
++ struct strbuf ctlbuf;
++ char buf[MAX(DL_PHYS_ADDR_ACK_SIZE+64, DL_ERROR_ACK_SIZE)];
++ int flag = 0;
++
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "_dlpi_get_phys_address\n"));
++
++ paddr_req.dl_primitive = DL_PHYS_ADDR_REQ;
++ paddr_req.dl_addr_type = DL_CURR_PHYS_ADDR;
++ ctlbuf.buf = (char *)&paddr_req;
++ ctlbuf.len = DL_PHYS_ADDR_REQ_SIZE;
++ if (putmsg(fd, &ctlbuf, NULL, 0) < 0)
++ return (-1);
++
++ ctlbuf.maxlen = sizeof(buf);
++ ctlbuf.len = 0;
++ ctlbuf.buf = buf;
++ if (getmsg(fd, &ctlbuf, NULL, &flag) < 0)
++ return (-1);
++
++ if (ctlbuf.len < sizeof(uint32_t))
++ return (-1);
++ dlp = (union DL_primitives *)buf;
++ switch (dlp->dl_primitive) {
++ case DL_PHYS_ADDR_ACK: {
++ dl_phys_addr_ack_t *phyp = (dl_phys_addr_ack_t *)buf;
++
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "got ACK\n"));
++ if (ctlbuf.len < DL_PHYS_ADDR_ACK_SIZE || phyp->dl_addr_length > maxlen)
++ return (-1);
++ (void) memcpy(addr, buf+phyp->dl_addr_offset, phyp->dl_addr_length);
++ *addrlen = phyp->dl_addr_length;
++ return (0);
++ }
++ case DL_ERROR_ACK: {
++ dl_error_ack_t *errp = (dl_error_ack_t *)buf;
++
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "got ERROR ACK\n"));
++ if (ctlbuf.len < DL_ERROR_ACK_SIZE)
++ return (-1);
++ return (errp->dl_errno);
++ }
++ default:
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "got type: %x\n", dlp->dl_primitive));
++ return (-1);
++ }
++}
++
++/*
++ * Query the interface about it's type.
++ */
++static int
++_dlpi_get_iftype(int fd, unsigned int *iftype)
++{
++ dl_info_req_t info_req;
++ union DL_primitives *dlp;
++ struct strbuf ctlbuf;
++ char buf[MAX(DL_INFO_ACK_SIZE, DL_ERROR_ACK_SIZE)];
++ int flag = 0;
++
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "_dlpi_get_iftype\n"));
++
++ info_req.dl_primitive = DL_INFO_REQ;
++ ctlbuf.buf = (char *)&info_req;
++ ctlbuf.len = DL_INFO_REQ_SIZE;
++ if (putmsg(fd, &ctlbuf, NULL, 0) < 0) {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "putmsg failed: %d\nn", errno));
++ return (-1);
++ }
++
++ ctlbuf.maxlen = sizeof(buf);
++ ctlbuf.len = 0;
++ ctlbuf.buf = buf;
++ if (getmsg(fd, &ctlbuf, NULL, &flag) < 0) {
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "getmsg failed: %d\n", errno));
++ return (-1);
++ }
++
++ if (ctlbuf.len < sizeof(uint32_t))
++ return (-1);
++ dlp = (union DL_primitives *)buf;
++ switch (dlp->dl_primitive) {
++ case DL_INFO_ACK: {
++ dl_info_ack_t *info = (dl_info_ack_t *)buf;
++
++ if (ctlbuf.len < DL_INFO_ACK_SIZE)
++ return (-1);
++
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "dl_mac_type: %x\n",
++ info->dl_mac_type));
++ switch (info->dl_mac_type) {
++ case DL_CSMACD:
++ case DL_ETHER:
++ case DL_ETH_CSMA:
++ *iftype = 6;
++ break;
++ case DL_TPB: /* Token Passing Bus */
++ *iftype = 8;
++ break;
++ case DL_TPR: /* Token Passing Ring */
++ *iftype = 9;
++ break;
++ case DL_HDLC:
++ *iftype = 118;
++ break;
++ case DL_FDDI:
++ *iftype = 15;
++ break;
++ case DL_FC: /* Fibre channel */
++ *iftype = 56;
++ break;
++ case DL_ATM:
++ *iftype = 37;
++ break;
++ case DL_X25:
++ case DL_ISDN:
++ *iftype = 63;
++ break;
++ case DL_HIPPI:
++ *iftype = 47;
++ break;
++#ifdef DL_IB
++ case DL_IB:
++ *iftype = 199;
++ break;
++#endif
++ case DL_FRAME: /* Frame Relay */
++ *iftype = 32;
++ break;
++ case DL_LOOP:
++ *iftype = 24;
++ break;
++#ifdef DL_WIFI
++ case DL_WIFI:
++ *iftype = 71;
++ break;
++#endif
++#ifdef DL_IPV4 /* then IPv6 is also defined */
++ case DL_IPV4: /* IPv4 Tunnel */
++ case DL_IPV6: /* IPv6 Tunnel */
++ *iftype = 131;
++ break;
++#endif
++ default:
++ *iftype = 1; /* Other */
++ break;
++ }
++
++ return (0);
++ }
++ case DL_ERROR_ACK: {
++ dl_error_ack_t *errp = (dl_error_ack_t *)buf;
++
++ DEBUGMSGTL(("kernel_sunos5:dlpi",
++ "got DL_ERROR_ACK: dlpi %d, error %d\n", errp->dl_errno,
++ errp->dl_unix_errno));
++
++ if (ctlbuf.len < DL_ERROR_ACK_SIZE)
++ return (-1);
++ return (errp->dl_errno);
++ }
++ default:
++ DEBUGMSGTL(("kernel_sunos5:dlpi", "got type %x\n", dlp->dl_primitive));
++ return (-1);
++ }
++}
++
++static int
++_dlpi_attach(int fd, int ppa)
++{
++ dl_attach_req_t attach_req;
++ struct strbuf ctlbuf;
++ union DL_primitives *dlp;
++ char buf[MAX(DL_OK_ACK_SIZE, DL_ERROR_ACK_SIZE)];
++ int flag = 0;
++
++ attach_req.dl_primitive = DL_ATTACH_REQ;
++ attach_req.dl_ppa = ppa;
++ ctlbuf.buf = (char *)&attach_req;
++ ctlbuf.len = DL_ATTACH_REQ_SIZE;
++ if (putmsg(fd, &ctlbuf, NULL, 0) != 0)
++ return (-1);
++
++ ctlbuf.buf = buf;
++ ctlbuf.len = 0;
++ ctlbuf.maxlen = sizeof(buf);
++ if (getmsg(fd, &ctlbuf, NULL, &flag) != 0)
++ return (-1);
++
++ if (ctlbuf.len < sizeof(uint32_t))
++ return (-1);
++
++ dlp = (union DL_primitives *)buf;
++ if (dlp->dl_primitive == DL_OK_ACK && ctlbuf.len >= DL_OK_ACK_SIZE)
++ return (0);
++ return (-1);
++}
++
++static int
++_dlpi_parse_devname(char *devname, int *ppap)
++{
++ int ppa = 0;
++ int m = 1;
++ int i = strlen(devname) - 1;
++
++ while (i >= 0 && isdigit(devname[i])) {
++ ppa += m * (devname[i] - '0');
++ m *= 10;
++ i--;
++ }
++
++ if (m == 1) {
++ return (-1);
++ }
++ *ppap = ppa;
++ devname[i + 1] = '\0';
++
++ return (0);
++}
++static int
+ getif(mib2_ifEntry_t *ifbuf, size_t size, req_e req_type,
+ mib2_ifEntry_t *resp, size_t *length, int (*comp)(void *, void *),
+ void *arg)
+@@ -1229,7 +1523,8 @@
+
+ if (ioctl(ifsd, SIOCGIFFLAGS, ifrp) < 0) {
+ ret = -1;
+- snmp_log(LOG_ERR, "SIOCGIFFLAGS %s: %s\n", ifrp->ifr_name, strerror(errno));
++ snmp_log(LOG_ERR, "SIOCGIFFLAGS %s: %s\n", ifrp->ifr_name,
++ strerror(errno));
+ goto Return;
+ }
+ if_flags = ifrp->ifr_flags;
+@@ -1522,294 +1817,7 @@
+ ifp->ifHCOutMulticastPkts);
+ return(0);
+ }
+-
+ /*
+- * Open a DLPI device.
+- *
+- * On success the file descriptor is returned.
+- * On error -1 is returned.
+- */
+-static int
+-_dlpi_open(const char *devname)
+-{
+- char *devstr;
+- int fd = -1;
+- int ppa = -1;
+-
+- DEBUGMSGTL(("kernel_sunos5", "_dlpi_open called\n"));
+-
+- if (devname == NULL)
+- return (-1);
+-
+- if ((devstr = malloc(5 + strlen(devname) + 1)) == NULL)
+- return (-1);
+- (void) sprintf(devstr, "/dev/%s", devname);
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "devstr(%s)\n", devstr));
+- /*
+- * First try opening the device using style 1, if the device does not
+- * exist we try style 2. Modules will not be pushed, so something like
+- * ip tunnels will not work.
+- */
+-
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open(%s)\n", devstr));
+- if ((fd = open(devstr, O_RDWR | O_NONBLOCK)) < 0) {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open failed\n"));
+- if (_dlpi_parse_devname(devstr, &ppa) == 0) {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 parse: %s, %d\n",
+- devstr, ppa));
+- /* try style 2 */
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 open(%s)\n", devstr));
+-
+- if ((fd = open(devstr, O_RDWR | O_NONBLOCK)) != -1) {
+- if (_dlpi_attach(fd, ppa) == 0) {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "attached\n"));
+- } else {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "attached failed\n"));
+- close(fd);
+- fd = -1;
+- }
+- } else {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "style2 open failed\n"));
+- }
+- }
+- } else {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "style1 open succeeded\n"));
+- }
+-
+- /* clean up */
+- free(devstr);
+-
+- return (fd);
+-}
+-
+-/*
+- * Obtain the physical address of the interface using DLPI
+- */
+-static int
+-_dlpi_get_phys_address(int fd, char *addr, int maxlen, int *addrlen)
+-{
+- dl_phys_addr_req_t paddr_req;
+- union DL_primitives *dlp;
+- struct strbuf ctlbuf;
+- char buf[MAX(DL_PHYS_ADDR_ACK_SIZE+64, DL_ERROR_ACK_SIZE)];
+- int flag = 0;
+-
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "_dlpi_get_phys_address\n"));
+-
+- paddr_req.dl_primitive = DL_PHYS_ADDR_REQ;
+- paddr_req.dl_addr_type = DL_CURR_PHYS_ADDR;
+- ctlbuf.buf = (char *)&paddr_req;
+- ctlbuf.len = DL_PHYS_ADDR_REQ_SIZE;
+- if (putmsg(fd, &ctlbuf, NULL, 0) < 0)
+- return (-1);
+-
+- ctlbuf.maxlen = sizeof(buf);
+- ctlbuf.len = 0;
+- ctlbuf.buf = buf;
+- if (getmsg(fd, &ctlbuf, NULL, &flag) < 0)
+- return (-1);
+-
+- if (ctlbuf.len < sizeof(uint32_t))
+- return (-1);
+- dlp = (union DL_primitives *)buf;
+- switch (dlp->dl_primitive) {
+- case DL_PHYS_ADDR_ACK: {
+- dl_phys_addr_ack_t *phyp = (dl_phys_addr_ack_t *)buf;
+-
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "got ACK\n"));
+- if (ctlbuf.len < DL_PHYS_ADDR_ACK_SIZE || phyp->dl_addr_length > maxlen)
+- return (-1);
+- (void) memcpy(addr, buf+phyp->dl_addr_offset, phyp->dl_addr_length);
+- *addrlen = phyp->dl_addr_length;
+- return (0);
+- }
+- case DL_ERROR_ACK: {
+- dl_error_ack_t *errp = (dl_error_ack_t *)buf;
+-
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "got ERROR ACK\n"));
+- if (ctlbuf.len < DL_ERROR_ACK_SIZE)
+- return (-1);
+- return (errp->dl_errno);
+- }
+- default:
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "got type: %x\n", dlp->dl_primitive));
+- return (-1);
+- }
+-}
+-
+-/*
+- * Query the interface about it's type.
+- */
+-static int
+-_dlpi_get_iftype(int fd, unsigned int *iftype)
+-{
+- dl_info_req_t info_req;
+- union DL_primitives *dlp;
+- struct strbuf ctlbuf;
+- char buf[MAX(DL_INFO_ACK_SIZE, DL_ERROR_ACK_SIZE)];
+- int flag = 0;
+-
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "_dlpi_get_iftype\n"));
+-
+- info_req.dl_primitive = DL_INFO_REQ;
+- ctlbuf.buf = (char *)&info_req;
+- ctlbuf.len = DL_INFO_REQ_SIZE;
+- if (putmsg(fd, &ctlbuf, NULL, 0) < 0) {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "putmsg failed: %d\nn", errno));
+- return (-1);
+- }
+-
+- ctlbuf.maxlen = sizeof(buf);
+- ctlbuf.len = 0;
+- ctlbuf.buf = buf;
+- if (getmsg(fd, &ctlbuf, NULL, &flag) < 0) {
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "getmsg failed: %d\n", errno));
+- return (-1);
+- }
+-
+- if (ctlbuf.len < sizeof(uint32_t))
+- return (-1);
+- dlp = (union DL_primitives *)buf;
+- switch (dlp->dl_primitive) {
+- case DL_INFO_ACK: {
+- dl_info_ack_t *info = (dl_info_ack_t *)buf;
+-
+- if (ctlbuf.len < DL_INFO_ACK_SIZE)
+- return (-1);
+-
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "dl_mac_type: %x\n",
+- info->dl_mac_type));
+- switch (info->dl_mac_type) {
+- case DL_CSMACD:
+- case DL_ETHER:
+- case DL_ETH_CSMA:
+- *iftype = 6;
+- break;
+- case DL_TPB: /* Token Passing Bus */
+- *iftype = 8;
+- break;
+- case DL_TPR: /* Token Passing Ring */
+- *iftype = 9;
+- break;
+- case DL_HDLC:
+- *iftype = 118;
+- break;
+- case DL_FDDI:
+- *iftype = 15;
+- break;
+- case DL_FC: /* Fibre channel */
+- *iftype = 56;
+- break;
+- case DL_ATM:
+- *iftype = 37;
+- break;
+- case DL_X25:
+- case DL_ISDN:
+- *iftype = 63;
+- break;
+- case DL_HIPPI:
+- *iftype = 47;
+- break;
+-#ifdef DL_IB
+- case DL_IB:
+- *iftype = 199;
+- break;
+-#endif
+- case DL_FRAME: /* Frame Relay */
+- *iftype = 32;
+- break;
+- case DL_LOOP:
+- *iftype = 24;
+- break;
+-#ifdef DL_WIFI
+- case DL_WIFI:
+- *iftype = 71;
+- break;
+-#endif
+-#ifdef DL_IPV4 /* then IPv6 is also defined */
+- case DL_IPV4: /* IPv4 Tunnel */
+- case DL_IPV6: /* IPv6 Tunnel */
+- *iftype = 131;
+- break;
+-#endif
+- default:
+- *iftype = 1; /* Other */
+- break;
+- }
+-
+- return (0);
+- }
+- case DL_ERROR_ACK: {
+- dl_error_ack_t *errp = (dl_error_ack_t *)buf;
+-
+- DEBUGMSGTL(("kernel_sunos5:dlpi",
+- "got DL_ERROR_ACK: dlpi %d, error %d\n", errp->dl_errno,
+- errp->dl_unix_errno));
+-
+- if (ctlbuf.len < DL_ERROR_ACK_SIZE)
+- return (-1);
+- return (errp->dl_errno);
+- }
+- default:
+- DEBUGMSGTL(("kernel_sunos5:dlpi", "got type %x\n", dlp->dl_primitive));
+- return (-1);
+- }
+-}
+-
+-static int
+-_dlpi_attach(int fd, int ppa)
+-{
+- dl_attach_req_t attach_req;
+- struct strbuf ctlbuf;
+- union DL_primitives *dlp;
+- char buf[MAX(DL_OK_ACK_SIZE, DL_ERROR_ACK_SIZE)];
+- int flag = 0;
+-
+- attach_req.dl_primitive = DL_ATTACH_REQ;
+- attach_req.dl_ppa = ppa;
+- ctlbuf.buf = (char *)&attach_req;
+- ctlbuf.len = DL_ATTACH_REQ_SIZE;
+- if (putmsg(fd, &ctlbuf, NULL, 0) != 0)
+- return (-1);
+-
+- ctlbuf.buf = buf;
+- ctlbuf.len = 0;
+- ctlbuf.maxlen = sizeof(buf);
+- if (getmsg(fd, &ctlbuf, NULL, &flag) != 0)
+- return (-1);
+-
+- if (ctlbuf.len < sizeof(uint32_t))
+- return (-1);
+-
+- dlp = (union DL_primitives *)buf;
+- if (dlp->dl_primitive == DL_OK_ACK && ctlbuf.len >= DL_OK_ACK_SIZE)
+- return (0);
+- return (-1);
+-}
+-
+-static int
+-_dlpi_parse_devname(char *devname, int *ppap)
+-{
+- int ppa = 0;
+- int m = 1;
+- int i = strlen(devname) - 1;
+-
+- while (i >= 0 && isdigit(devname[i])) {
+- ppa += m * (devname[i] - '0');
+- m *= 10;
+- i--;
+- }
+-
+- if (m == 1) {
+- return (-1);
+- }
+- *ppap = ppa;
+- devname[i + 1] = '\0';
+-
+- return (0);
+-}
+-
+-/*
+ * Always TRUE. May be used as a comparison function in getMibstat
+ * to obtain the whole table (GET_FIRST should be used)
+ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/007.16863.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,13 @@
+Index: net-snmp/snmplib/asn1.c
+===================================================================
+--- net-snmp/snmplib/asn1.c (revision 16862)
++++ net-snmp/snmplib/asn1.c (revision 16863)
+@@ -2735,7 +2735,7 @@
+ }
+
+ CHECK_OVERFLOW_S(integer,10);
+- testvalue = (*intp < 0) ? -1 : 0;
++ testvalue = (integer < 0) ? -1 : 0;
+
+ if (((*pkt_len - *offset) < 1) && !(r && asn_realloc(pkt, pkt_len))) {
+ return 0;
--- a/components/net-snmp/patches/009.ltmain.sh.patch Thu May 16 14:50:57 2013 -0700
+++ b/components/net-snmp/patches/009.ltmain.sh.patch Sat May 18 09:18:20 2013 -0700
@@ -1,28 +1,31 @@
-#
-# The Net-SNMP libraries are built without -zdefs and are missing a large
-# number of dependency specifications (DT_NEEDED). This makes it
-# impossible to build plugin modules against these libraries using
-# -zdefs, which should work. One such example is FMA in ON gate.
-#
---- net-snmp-5.7.2/ltmain.sh Sun Dec 30 23:42:05 2012
-+++ net-snmp-5.7.2/ltmain.sh Sun Dec 30 23:49:01 2012
-@@ -5406,7 +5406,9 @@
+--- net-snmp-5.4.2.1/ltmain.sh Fri Jun 6 02:34:34 2008
++++ net-snmp-5.4.2.1/ltmain.mod.sh Tue Feb 3 11:02:05 2009
+@@ -1425,7 +1425,9 @@
if test "$prev" = rpath; then
case "$rpath " in
*" $arg "*) ;;
-- *) func_append rpath " $arg" ;;
-+ *) func_append rpath " $arg"
-+ # This is make sure only $libdir path is encoded in RUNPATH
-+ sma_rpath="$rpath" ;;
+- *) rpath="$rpath $arg" ;;
++ *) rpath="$rpath $arg"
++ # This is make sure only $libdir path is encoded in RUNPATH
++ sma_rpath="$rpath" ;;
esac
else
case "$xrpath " in
-@@ -8046,7 +8048,7 @@
+@@ -3915,7 +3917,7 @@
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+- dep_rpath=
++ dep_rpath="-R $sma_rpath"
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+@@ -3935,7 +3937,7 @@
fi
else
eval flag=\"$hardcode_libdir_flag_spec\"
-- func_append dep_rpath " $flag"
-+#func_append dep_rpath " $flag"
+- dep_rpath="$dep_rpath $flag"
++ #dep_rpath="$dep_rpath $flag"
fi
elif test -n "$runpath_var"; then
case "$perm_rpath " in
--- a/components/net-snmp/patches/011.Makefile.in.patch Thu May 16 14:50:57 2013 -0700
+++ b/components/net-snmp/patches/011.Makefile.in.patch Sat May 18 09:18:20 2013 -0700
@@ -1,42 +1,38 @@
-#
-# The Net-SNMP libraries are built without -zdefs and are missing a large
-# number of dependency specifications (DT_NEEDED). This makes it
-# impossible to build plugin modules against these libraries using
-# -zdefs, which should work. One such example is FMA in ON gate.
-#
---- net-snmp-5.7.2/agent/Makefile.in Tue Oct 9 15:28:58 2012
-+++ net-snmp-5.7.2/agent/Makefile.in Sun Dec 30 23:58:44 2012
-@@ -274,9 +274,13 @@
+Only in net-snmp-5.4.1.mod: .patches.011.Makefile.in.patch
+diff -ru net-snmp-5.4.1/agent/Makefile.in net-snmp-5.4.1.mod/agent/Makefile.in
+--- net-snmp-5.4.1/agent/Makefile.in 2007-07-05 04:56:56.000000000 +0530
++++ net-snmp-5.4.1.mod/agent/Makefile.in 2009-06-24 06:08:28.858891018 +0530
+@@ -120,8 +120,11 @@
+ OBJS = $(LIBAGENTOBJS) $(AGENTOBJS) mib_modules.o auto_nlist.o
LOBJS = $(LLIBAGENTOBJS) $(LAGENTOBJS) mib_modules.lo auto_nlist.lo
- FTOBJS = $(LLIBAGENTFTS) $(FTAGENTOBJS) mib_modules.ft auto_nlist.ft
-+LIB_LD_ADD_AGENT =-lnetsnmp -lnetsnmphelpers
-+
-+LIB_LD_ADD_PATH_MIBS =-Lhelpers -L../snmplib
-+
- FEATUREFILE = $(top_builddir)/include/net-snmp/agent/features.h
++LIB_LD_ADD_AGENT =-lnetsnmp -lnetsnmphelpers
++
++LIB_LD_ADD_PATH_MIBS =-Lhelpers -L../snmplib
-all: agentlib subdirs miblib $(INSTALLBINPROGS) $(INSTALLSBINPROGS)
+all: agentlib subdirs miblib relinklib $(INSTALLBINPROGS) $(INSTALLSBINPROGS)
#
# build stuff targets
-@@ -306,6 +310,10 @@
+@@ -152,6 +155,10 @@
agentlib: $(AGENTLIB)
-+relinklib: ${LLIBAGENTOBJS} $(USELIBS)
++relinklib: ${LLIBAGENTOBJS} $(USELIBS)
+ $(LIB_LD_CMD) $(AGENTLIB) $(LIB_LD_ADD_PATH_MIBS) ${LLIBAGENTOBJS} $(USELIBS) ${LAGENTLIBS} $(LDFLAGS) $(PERLLDOPTS_FOR_LIBS) $(LIB_LD_LIBS) $(LIB_LD_ADD_AGENT)
+ $(RANLIB) $(AGENTLIB) $(LIB_LD_ADD_AGENT)
+
miblib: $(MIBLIB)
- libs: $(AGENTLIB) $(MIBLIB)
---- net-snmp-5.7.2/agent/helpers/Makefile.in Sun Dec 30 22:37:05 2012
-+++ net-snmp-5.7.2/agent/helpers/Makefile.in Mon Dec 31 00:02:37 2012
-@@ -31,8 +31,11 @@
-
- LOBJS = dummy.lo
+ libs: $(INSTALLLIBS)
+Only in net-snmp-5.4.1.mod/agent: Makefile.in~
+diff -ru net-snmp-5.4.1/agent/helpers/Makefile.in net-snmp-5.4.1.mod/agent/helpers/Makefile.in
+--- net-snmp-5.4.1/agent/helpers/Makefile.in 2007-06-27 03:15:20.000000000 +0530
++++ net-snmp-5.4.1.mod/agent/helpers/Makefile.in 2009-06-24 06:01:35.912702710 +0530
+@@ -137,8 +137,11 @@
+ table_tdata.lo \
+ watcher.lo
+LIB_LD_ADD =-lnetsnmp
+LIB_LD_ADD_PATH =-L../../snmplib
@@ -44,30 +40,31 @@
all: standardall
libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION): $(LOBJS)
-- $(LIB_LD_CMD) $@ $(LOBJS) @LD_NO_UNDEFINED@ $(LDFLAGS) $(LIB_LD_LIBS)
+- $(LIB_LD_CMD) $@ $(LOBJS) $(AGENTLIB) $(NETSNMPLIB) $(LDFLAGS) $(LIB_LD_LIBS)
- $(RANLIB) $@
-+ $(LIB_LD_CMD) $@ $(LIB_LD_ADD_PATH) $(LOBJS) @LD_NO_UNDEFINED@ $(LDFLAGS) $(LIB_LD_LIBS) $(LIB_LD_ADD)
++ $(LIB_LD_CMD) $@ $(LIB_LD_ADD_PATH) $(LOBJS) $(AGENTLIB) $(NETSNMPLIB) $(LDFLAGS) $(LIB_LD_LIBS) $(LIB_LD_ADD)
+ $(RANLIB) $@ $(LIB_LD_ADD)
---- net-snmp-5.7.2/snmplib/Makefile.in Sun Dec 30 22:37:08 2012
-+++ net-snmp-5.7.2/agent/helpers/Makefile.in Mon Dec 31 00:06:01 2012
-@@ -221,6 +221,9 @@
+diff -ru net-snmp-5.4.1/snmplib/Makefile.in net-snmp-5.4.1.mod/snmplib/Makefile.in
+--- net-snmp-5.4.1/snmplib/Makefile.in 2007-06-19 03:04:43.000000000 +0530
++++ net-snmp-5.4.1.mod/snmplib/Makefile.in 2009-06-24 06:01:35.912972597 +0530
+@@ -181,6 +181,9 @@
# just in case someone wants to remove libtool, change this to OBJS.
TOBJS=$(LOBJS)
+# To satisfy -zdefs
-+LIB_LD_ADD =-lnsl -lsocket -L$(libdir)
++LIB_LD_ADD =-lnsl -lsocket -L$(libdir)
+
- FEATUREFILE = $(top_builddir)/include/net-snmp/library/features.h
+ #
+ CPPFLAGS = $(TOP_INCLUDES) -I. $(SNMPLIB_INCLUDES) @CPPFLAGS@
- #
-@@ -230,8 +233,8 @@
+@@ -188,8 +191,8 @@
# how to build the libraries.
libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION): $(TOBJS)
-- $(LIB_LD_CMD) $@ $(TOBJS) @LD_NO_UNDEFINED@ $(LDFLAGS) @LNETSNMPLIBS@
+- $(LIB_LD_CMD) $@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
- $(RANLIB) $@
-+ $(LIB_LD_CMD) $@ $(TOBJS) @LD_NO_UNDEFINED@ $(LDFLAGS) @LNETSNMPLIBS@ } $(LIB_LD_ADD)
-+ $(RANLIB) $@ $(LIB_LD_ADD)
++ $(LIB_LD_CMD) $@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@ } $(LIB_LD_ADD)
++ $(RANLIB) $@ $(LIB_LD_ADD)
libsnmp.$(LIB_EXTENSION)$(LIB_VERSION): $(TOBJS)
- $(LIB_LD_CMD) $@ $(TOBJS) @LD_NO_UNDEFINED@ $(LDFLAGS) @LNETSNMPLIBS@
+ $(LIB_LD_CMD) $@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/013.6852099.proxy.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,29 @@
+--- a/agent/mibgroup/ucd-snmp/proxy.c 2006-10-17 18:16:29.000000000 +0200
++++ b/agent/mibgroup/ucd-snmp/proxy.c 2012-03-27 09:02:10.488425400 +0200
+@@ -396,6 +396,8 @@
+
+ if (!pdu || !sp) {
+ netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_GENERR);
++ if (pdu)
++ snmp_free_pdu(pdu);
+ return SNMP_ERR_NOERROR;
+ }
+
+@@ -408,6 +410,8 @@
+ /*
+ * too large
+ */
++ if (pdu)
++ snmp_free_pdu(pdu);
+ snmp_log(LOG_ERR,
+ "proxy oid request length is too long\n");
+ return SNMP_ERR_NOERROR;
+@@ -437,6 +441,8 @@
+ */
+ if (!proxy_fill_in_session(handler, reqinfo, (void **)&configured)) {
+ netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_GENERR);
++ if (pdu)
++ snmp_free_pdu(pdu);
+ return SNMP_ERR_NOERROR;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/017.6984919.kernel_sunos5.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,11 @@
+--- patch/net-snmp-5.4.1/agent/mibgroup/kernel_sunos5.c Tue Oct 12 06:55:48 2010
++++ net-snmp-5.4.1/agent/mibgroup/kernel_sunos5.c Tue Oct 12 07:03:49 2010
+@@ -82,7 +82,7 @@
+ static
+ mibcache Mibcache[MIBCACHE_SIZE+1] = {
+ {MIB_SYSTEM, 0, (void *) -1, 0, 0, 0, 0},
+- {MIB_INTERFACES, 10 * sizeof(mib2_ifEntry_t), (void *) -1, 0, 30, 0,
++ {MIB_INTERFACES, 50 * sizeof(mib2_ifEntry_t), (void *) -1, 0, 30, 0,
+ 0},
+ {MIB_AT, 0, (void *) -1, 0, 0, 0, 0},
+ {MIB_IP, sizeof(mib2_ip_t), (void *) -1, 0, 60, 0, 0},
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/018.6932608.systemstats_common.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,19 @@
+--- patch/net-snmp-5.4.1-64/agent/mibgroup/ip-mib/data_access/systemstats_common.c Tue Feb 8 13:58:36 2005
++++ net-snmp-5.4.1/agent/mibgroup/ip-mib/data_access/systemstats_common.c Mon Aug 2 05:21:15 2010
+@@ -339,7 +339,7 @@
+ */
+ if (0 == need_wrap_check) {
+ SNMP_FREE(prev_vals->old_stats);
+- }
++ } else {
+
+ /*
+ * update old stats from new stats.
+@@ -346,6 +346,7 @@
+ * careful - old_stats is a pointer to stats...
+ */
+ memcpy(prev_vals->old_stats, &new_vals->stats, sizeof(new_vals->stats));
++ }
+
+ return 0;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/019.6998845.container.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,314 @@
+--- net-snmp/include/net-snmp/library/container.h Mon Dec 5 00:13:04 2005
++++ net-snmp/include/net-snmp/library/container.h Fri Jan 14 17:35:37 2011
+@@ -31,8 +31,16 @@
+ struct netsnmp_container_s; /** forward declare */
+
+ /*
+- * function returning an int for an operation on a container
++ * function for performing an operation on a container which
++ * returns (maybe the same) container.
+ */
++
++ typedef struct netsnmp_container_s* (netsnmp_container_mod_op)
++ (struct netsnmp_container_s *, void *context, u_int flags);
++
++ /*
++ * function for setting an option on a container
++ */
+ typedef int (netsnmp_container_option)(struct netsnmp_container_s *,
+ int set, u_int flags);
+
+@@ -192,6 +200,14 @@
+ netsnmp_container_op *insert_filter;
+
+ /*
++ * OPTIONAL function to duplicate a container. Defaults to a shallow
++ * copy. Only the specified container is copied (i.e. sub-containers
++ * not included).
++ */
++
++ netsnmp_container_mod_op *duplicate;
++
++ /*
+ * function to compare two object stored in the container.
+ *
+ * Returns:
+@@ -219,11 +235,16 @@
+
+ /*
+ * sort count, for iterators to track (insert/delete
+- * bumps coutner, invalidates iterator
++ * bumps counter, invalidates iterator)
+ */
+ u_long sync;
+
+ /*
++ * flags
++ */
++ u_int flags;
++
++ /*
+ * containers can contain other containers (additional indexes)
+ */
+ struct netsnmp_container_s *next, *prev;
+@@ -288,15 +309,15 @@
+ #define CONTAINER_SET_OPTIONS(x,o,rc) do { \
+ if (NULL==(x)->options) \
+ rc = -1; \
+- else \
++ else { \
+ rc = (x)->options(x, 1, o); \
++ if (rc != -1 ) \
++ (x)->flags |= o; \
++ } \
+ } while(0)
+
+ #define CONTAINER_CHECK_OPTION(x,o,rc) do { \
+- if (NULL==(x)->options) \
+- rc = -1; \
+- else \
+- rc = (x)->options(x,0, o); \
++ rc = x->flags & 0; \
+ } while(0)
+
+
+@@ -335,6 +356,12 @@
+ int CONTAINER_REMOVE(netsnmp_container *x, const void *k);
+
+ /*
++ * duplicate container
++ */
++ netsnmp_container *CONTAINER_DUP(netsnmp_container *x, void *ctx,
++ u_int flags);
++
++ /*
+ * clear all containers. When clearing the *first* container, and
+ * *only* the first container, call the function f for each item.
+ * After calling this function, all containers should be empty.
+@@ -364,7 +391,7 @@
+ continue;
+ rc2 = x->insert(x,k);
+ if (rc2) {
+- snmp_log(LOG_ERR,"error on subcontainer '%s' insert (%d)\n",
++ snmp_log(LOG_DEBUG,"error on subcontainer '%s' insert (%d)\n",
+ x->container_name ? x->container_name : "", rc2);
+ rc = rc2;
+ }
+@@ -402,6 +429,22 @@
+ * container.c. If you change one, change them both.
+ */
+ NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
++ netsnmp_container *CONTAINER_DUP(netsnmp_container *x, void *ctx,
++ u_int flags)
++ {
++ if (NULL == x->duplicate) {
++ snmp_log(LOG_ERR, "container '%s' does not support duplicate\n",
++ x->container_name ? x->container_name : "");
++ return NULL;
++ }
++ return x->duplicate(x, ctx, flags);
++ }
++
++ /*------------------------------------------------------------------
++ * These functions should EXACTLY match the function version in
++ * container.c. If you change one, change them both.
++ */
++ NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
+ int CONTAINER_FREE(netsnmp_container *x)
+ {
+ int rc2, rc = 0;
+@@ -474,6 +517,10 @@
+ }
+
+ #endif
++
++ /** Duplicate container meta-data. */
++ int netsnmp_container_data_dup(netsnmp_container *dup,
++ netsnmp_container *c);
+
+ /*************************************************************************
+ *
+--- net-snmp/snmplib/container_binary_array.c Wed Aug 23 21:23:22 2006
++++ net-snmp/snmplib/container_binary_array.c Fri Jan 14 17:35:37 2011
+@@ -36,7 +36,6 @@
+ typedef struct binary_array_table_s {
+ size_t max_size; /* Size of the current data table */
+ size_t count; /* Index of the next free entry */
+- u_int flags; /* flags */
+ int dirty;
+ int data_size; /* Size of an individual entry */
+ void **data; /* The table itself */
+@@ -99,7 +98,7 @@
+ netsnmp_assert(t!=NULL);
+ netsnmp_assert(c->compare!=NULL);
+
+- if (t->flags & CONTAINER_KEY_UNSORTED)
++ if (c->flags & CONTAINER_KEY_UNSORTED)
+ return 0;
+
+ if (t->dirty) {
+@@ -204,11 +203,16 @@
+ int
+ netsnmp_binary_array_options_set(netsnmp_container *c, int set, u_int flags)
+ {
+- binary_array_table *t = (binary_array_table*)c->container_data;
+- if (set)
+- t->flags = flags;
++#define BA_FLAGS (CONTAINER_KEY_ALLOW_DUPLICATES|CONTAINER_KEY_UNSORTED)
++
++ if (set) {
++ if ((flags & BA_FLAGS) == flags)
++ c->flags = flags;
++ else
++ flags = (u_int)-1; /* unsupported flag */
++ }
+ else
+- return ((t->flags & flags) == flags);
++ return ((c->flags & flags) == flags);
+ return flags;
+ }
+
+@@ -371,7 +375,7 @@
+ /*
+ * check for duplicates
+ */
+- if (! (t->flags & CONTAINER_KEY_ALLOW_DUPLICATES)) {
++ if (! (c->flags & CONTAINER_KEY_ALLOW_DUPLICATES)) {
+ new_data = netsnmp_binary_array_get(c, entry, 1);
+ if (NULL != new_data) {
+ DEBUGMSGTL(("container","not inserting duplicate key\n"));
+@@ -579,6 +583,56 @@
+ return va;
+ }
+
++static netsnmp_container *
++_ba_duplicate(netsnmp_container *c, void *ctx, u_int flags)
++{
++ netsnmp_container *dup;
++ binary_array_table *dupt, *t;
++
++ if (flags) {
++ snmp_log(LOG_ERR, "binary arry duplicate does not supprt flags yet\n");
++ return NULL;
++ }
++
++ dup = netsnmp_container_get_binary_array();
++ if (NULL == dup) {
++ snmp_log(LOG_ERR," no memory for binary array duplicate\n");
++ return NULL;
++ }
++ /*
++ * deal with container stuff
++ */
++ if (netsnmp_container_data_dup(dup, c) != 0) {
++ netsnmp_binary_array_release(dup);
++ return NULL;
++ }
++
++ /*
++ * deal with data
++ */
++ dupt = (binary_array_table*)dup->container_data;
++ t = (binary_array_table*)c->container_data;
++
++ dupt->max_size = t->max_size;
++ dupt->count = t->count;
++ dupt->dirty = t->dirty;
++ dupt->data_size = t->data_size;
++
++ /*
++ * shallow copy
++ */
++ dupt->data = (void**) calloc(dupt->max_size, dupt->data_size);
++ if (NULL == dupt->data) {
++ snmp_log(LOG_ERR, "no memory for binary array duplicate\n");
++ netsnmp_binary_array_release(dup);
++ return NULL;
++ }
++
++ memcpy(dupt->data, t->data, dupt->max_size * dupt->data_size);
++
++ return dup;
++}
++
+ netsnmp_container *
+ netsnmp_container_get_binary_array(void)
+ {
+@@ -592,7 +646,11 @@
+ }
+
+ c->container_data = netsnmp_binary_array_initialize();
+-
++
++ /*
++ * NOTE: CHANGES HERE MUST BE DUPLICATED IN duplicate AS WELL!!
++ */
++
+ c->get_size = _ba_size;
+ c->init = NULL;
+ c->cfree = _ba_free;
+@@ -604,6 +662,7 @@
+ c->get_iterator = _ba_iterator_get;
+ c->for_each = _ba_for_each;
+ c->clear = _ba_clear;
++ c->duplicate = _ba_duplicate;
+
+ return c;
+ }
+--- net-snmp/snmplib/container.c Fri Aug 25 15:11:06 2006
++++ net-snmp/snmplib/container.c Fri Jan 14 17:35:37 2011
+@@ -278,7 +278,7 @@
+ continue;
+ rc2 = x->insert(x,k);
+ if (rc2) {
+- snmp_log(LOG_ERR,"error on subcontainer '%s' insert (%d)\n",
++ snmp_log(LOG_DEBUG,"error on subcontainer '%s' insert (%d)\n",
+ x->container_name ? x->container_name : "", rc2);
+ rc = rc2;
+ }
+@@ -311,6 +311,20 @@
+ }
+
+ /*------------------------------------------------------------------
++ * These functions should EXACTLY match the function version in
++ * container.c. If you change one, change them both.
++ */
++netsnmp_container *CONTAINER_DUP(netsnmp_container *x, void *ctx, u_int flags)
++{
++ if (NULL == x->duplicate) {
++ snmp_log(LOG_ERR, "container '%s' does not support duplicate\n",
++ x->container_name ? x->container_name : "");
++ return NULL;
++ }
++ return x->duplicate(x, ctx, flags);
++}
++
++/*------------------------------------------------------------------
+ * These functions should EXACTLY match the inline version in
+ * container.h. If you change one, change them both.
+ */
+@@ -408,6 +422,24 @@
+ c->find = fnd;
+ }
+
++int
++netsnmp_container_data_dup(netsnmp_container *dup, netsnmp_container *c)
++{
++ if (!dup || !c)
++ return -1;
++
++ if (c->container_name)
++ dup->container_name = strdup(c->container_name);
++ dup->compare = c->compare;
++ dup->ncompare = c->ncompare;
++ dup->release = c->release;
++ dup->insert_filter = c->insert_filter;
++ dup->sync = c->sync;
++ dup->flags = c->flags;
++
++ return 0;
++}
++
+ /*------------------------------------------------------------------
+ *
+ * simple comparison routines
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/021.7046749.snmp_api.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,38 @@
+--- net-snmp/snmplib/snmp_api.c Fri Nov 11 12:36:16 2011
++++ net-snmp/snmplib/snmp_api.c Fri Nov 11 12:35:36 2011
+@@ -419,7 +419,7 @@
+ if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_16BIT_IDS))
+ return (retVal & 0x7fff); /* mask to 15 bits */
+ else
+- return retVal;
++ return (retVal & 0x7fffffff); /* mask to 31 bits */
+ }
+
+ long
+@@ -435,7 +435,7 @@
+ if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_16BIT_IDS))
+ return (retVal & 0x7fff); /* mask to 15 bits */
+ else
+- return retVal;
++ return (retVal & 0x7fffffff); /* mask to 31 bits */
+ }
+
+ long
+@@ -451,7 +451,7 @@
+ if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_16BIT_IDS))
+ return (retVal & 0x7fff); /* mask to 15 bits */
+ else
+- return retVal;
++ return (retVal & 0x7fffffff); /* mask to 31 bits */
+ }
+
+ long
+@@ -467,7 +467,7 @@
+ if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_16BIT_IDS))
+ return (retVal & 0x7fff); /* mask to 15 bits */
+ else
+- return retVal;
++ return (retVal & 0x7fffffff); /* mask to 31 bits */
+ }
+
+ void
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/025.7162956.util_funcs.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,11 @@
+--- a/agent/mibgroup/util_funcs.c 2007-01-11 23:13:56.000000000 +0100
++++ b/agent/mibgroup/util_funcs.c 2012-06-01 13:20:07.243670066 +0200
+@@ -254,7 +254,7 @@
+ #if HAVE_EXECV
+ char cachefile[STRMAX];
+ char cache[NETSNMP_MAXCACHESIZE];
+- ssize_t cachebytes;
++ int cachebytes;
+ int cfd;
+ #ifdef NETSNMP_EXCACHETIME
+ long curtime;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/026.7186501.cpu_kstat.patch Sat May 18 09:18:20 2013 -0700
@@ -0,0 +1,11 @@
+--- net-snmp-5.4.1/agent/mibgroup/hardware/cpu/cpu_kstat.c Thu Oct 5 08:53:42 2006
++++ net-snmp-5.4.1.mod/agent/mibgroup/hardware/cpu/cpu_kstat.c Thu Mar 29 07:57:19 2012
+@@ -103,6 +103,8 @@
+ if (strcmp(ksp->ks_module, "cpu_stat") == 0) {
+ i = ksp->ks_instance;
+ cpu2 = netsnmp_cpu_get_byIdx( i, 0 );
++ if ( !cpu2 )
++ break; /* or continue ?*/ /*Skip new CPUs */
+ if ((ksp->ks_type != KSTAT_TYPE_RAW) ||
+ (ksp->ks_data_size != sizeof(cs))||
+ (kstat_read(kstat_fd, ksp, &cs) == -1)) {
--- a/components/net-snmp/patches/027.7118090.hr_filesys.patch Thu May 16 14:50:57 2013 -0700
+++ b/components/net-snmp/patches/027.7118090.hr_filesys.patch Sat May 18 09:18:20 2013 -0700
@@ -1,9 +1,4 @@
/*
- * Version 2 - Modified the patch file to make it work for the newer
- * revision in net-snmp 5.7.2. Some fragments of the patch had gone
- * into the community net-snmp source. So this patch file has been
- * updated with the correct diffs.
- *
* This patch fixes the performance issue observed while retrieving the
* hrStorage parameters in systems with large number of mountpoints
* parameters using snmpwalk.
@@ -13,20 +8,19 @@
* Get_Next_HR_FileSys() function.
*
* We see that in the Get_Next_HR_FileSys() function, inorder to access
- * the last mountpoint, the /etc/mnttab is opened and we walk through
- * all the mnttab entries for all filesystems till the end. This is the
- * reason we find a large number of the MNTIOC_GETMNTENT ioctl() calls.
+ * the last mountpoint, the /etc/mnttab is opened and we walk through
+ * all the mnttab entries for all filesystems till the end. This is the
+ * reason we find a large number of the MNTIOC_GETMNTENT ioctl() calls.
*
* To reduce the overhead of the getmntent() calls, we maintain a cache
- * of all the /etc/mnttab entries and walk through the cache instead of
+ * of all the /etc/mnttab entries and walk through the cache instead of
* opening /etc/mnttab and walking all the entries for each mountpoint.
* This functionality is provided by the load_mnttab_cache_solaris()
* function called from the Init_HR_FileSys() function.
*/
-
---- net-snmp/agent/mibgroup/host/hr_filesys.c Sun Dec 30 22:37:05 2012
-+++ net-snmp/agent/mibgroup/host/hr_filesys.c Mon Dec 31 00:55:29 2012
-@@ -46,6 +46,10 @@
+--- net-snmp-5.4.1.orig/agent/mibgroup/host/hr_filesys.c 2007-05-18 11:08:01.000000000 -0700
++++ net-snmp-5.4.1/agent/mibgroup/host/hr_filesys.c 2013-01-17 03:36:28.181493003 -0800
+@@ -31,6 +31,10 @@
#include <sys/mount.h>
#endif
@@ -37,7 +31,7 @@
#include <ctype.h>
#if HAVE_STRING_H
#include <string.h>
-@@ -108,7 +112,11 @@
+@@ -85,7 +89,11 @@
#ifdef solaris2
struct mnttab HRFS_entry_struct;
@@ -45,86 +39,155 @@
+struct mnttab *HRFS_entry;
+struct mnttab *HRFS_list;
+static int fscount;
-+static time_t last_access=-1;
++static time_t last_access = -1;
+
#define HRFS_name mnt_special
#define HRFS_mount mnt_mountp
#define HRFS_type mnt_fstype
-@@ -619,6 +627,12 @@
- void
- Init_HR_FileSys(void)
- {
+@@ -167,6 +175,9 @@
+ static u_char *when_dumped(char *filesys, int level, size_t * length);
+ int header_hrfilesys(struct variable *, oid *, size_t *, int,
+ size_t *, WriteMethod **);
+#ifdef solaris2
-+ char buf[512]={NULL};
-+ int lines=0, i=0;
-+ struct stat file_stat;
++static int load_mnttab_cache_solaris(void);
+#endif
-+
- #if HAVE_GETFSSTAT
- #if defined(HAVE_STATVFS) && defined(__NetBSD__)
- fscount = getvfsstat(NULL, 0, ST_NOWAIT);
-@@ -662,7 +676,59 @@
+
+ /*********************
+ *
+@@ -606,8 +617,14 @@
HRFS_index = 1;
if (fp != NULL)
fclose(fp);
-- fp = fopen(ETC_MNTTAB, "r");
+#ifdef solaris2
-+ HRFS_index = 0;
-+ stat(ETC_MNTTAB, &file_stat);
-+ if (last_access == -1 || last_access != file_stat.st_mtime) {
-+ fp = fopen(ETC_MNTTAB, "r");
-+ if(fp == NULL)
-+ {
-+ DEBUGMSGTL(("host/hr_filesys", "fopen failed for mnttab.\n"));
-+ return;
-+ }
++ if(!load_mnttab_cache_solaris())
++ return;
++#else
+ fp = fopen(ETC_MNTTAB, "r");
+ #endif
++
++#endif
+ }
+
+ const char *HRFS_ignores[] = {
+@@ -663,6 +680,117 @@
+ 0
+ };
+
++#ifdef solaris2
++
++/*
++ * This function has been introduced to reduce the overhead
++ * of the getmntent() calls used to fetch the details of
++ * the /etc/mnttab entries in Init_HR_FileSys().
++ *
++ * We maintain a cache of all the /etc/mnttab entries and
++ * walk through the cache instead of opening /etc/mnttab and
++ * walking all the entries for each mountpoint.
++ */
+
-+ while ( (fgets((char *)&buf,sizeof(buf),fp)) != NULL) {
-+ lines++;
-+ }
-+ fclose(fp);
-+
-+ HRFS_list = (struct mnttab *) malloc (sizeof(struct mnttab) * lines);
-+
-+ if(HRFS_list == NULL)
-+ {
-+ DEBUGMSGTL(("host/hr_filesys", "Memory allocation for mnttab cache failed.\n"));
-+ return;
-+ }
++static int
++load_mnttab_cache_solaris()
++{
++ char buf[512] = {NULL};
++ int i = 0;
++ struct stat file_stat;
++ const char **cpp;
++ char *ch;
++ int token_flag = 0;
++ int skip_flag = 0;
++ int ignore_flag = 0;
++ int j = 0;
++ int lines = 0;
++ int ret = 0;
++ HRFS_index = 0;
++
++ stat(ETC_MNTTAB, &file_stat);
++ if (last_access == -1 || last_access != file_stat.st_mtime) {
++ fp = fopen(ETC_MNTTAB, "r");
++ if(fp == NULL)
++ {
++ DEBUGMSGTL(("host/hr_filesys", "fopen failed for mnttab.\n"));
++ return -1;
++ }
++
++ /* find the number of valid entries in mnttab. */
++
++ while ((fgets((char *) &buf, sizeof(buf), fp)) != NULL) {
++ j = 0;
++ skip_flag = 0;
++ token_flag = 0;
+
-+ fp = fopen(ETC_MNTTAB, "r");
-+
-+ if(fp == NULL)
-+ {
-+ DEBUGMSGTL(("host/hr_filesys", "fopen failed for mnttab.\n"));
-+ free(HRFS_list);
-+ return;
++ /* tokenize the mnttab entries to fetch the fstype
++ * which determines the valid entries.
++ */
++
++ ch = strtok(buf, " \t");
++ while (ch != NULL) {
++ j++;
++ if(j == 3) {
++ for (cpp = HRFS_ignores; *cpp != NULL; ++cpp) {
++ if(!strncmp(ch, *cpp, strlen(ch))) {
++ skip_flag = 1;
++ break;
++ }
++ }
++ token_flag = 1;
+ }
++ if(token_flag)
++ break;
++ ch = strtok(NULL, " \t");
++ }
++ if(!skip_flag)
++ lines++;
++ }
++ fclose(fp);
++
++ fscount = lines;
++ HRFS_list = (struct mnttab *) malloc (sizeof(struct mnttab) * fscount);
++ if(HRFS_list == NULL) {
++ DEBUGMSGTL(("host/hr_filesys", "Memory allocation for mnttab cache failed.\n"));
++ return -1;
++ }
+
-+ fscount = lines;
-+ while (i < fscount)
-+ {
-+ if (getmntent(fp, &HRFS_entry_struct) == 0)
-+ {
-+ HRFS_list[i].mnt_special = strdup(HRFS_entry_struct.mnt_special);
-+ HRFS_list[i].mnt_mountp = strdup(HRFS_entry_struct.mnt_mountp);
-+ HRFS_list[i].mnt_fstype = strdup(HRFS_entry_struct.mnt_fstype);
-+ HRFS_list[i].mnt_mntopts = strdup(HRFS_entry_struct.mnt_mntopts);
-+ i++;
-+ }
-+ }
-+
-+ HRFS_entry = HRFS_list;
-+ last_access = file_stat.st_mtime;
-+ }
-+#else
-+ fp = fopen(ETC_MNTTAB, "r");
++ fp = fopen(ETC_MNTTAB, "r");
++ if(fp == NULL) {
++ DEBUGMSGTL(("host/hr_filesys", "fopen failed for mnttab.\n"));
++ free(HRFS_list);
++ return -1;
++ }
++
++ while (i < fscount) {
++ if (getmntent(fp, &HRFS_entry_struct) == 0) {
++ for (cpp = HRFS_ignores; *cpp != NULL; ++cpp) {
++ if (!strcmp(HRFS_entry_struct.HRFS_type, *cpp)) {
++ ignore_flag = 1;
++ break;
++ }
++ }
++
++ if(!ignore_flag) {
++ HRFS_list[i].mnt_special = strdup(HRFS_entry_struct.mnt_special);
++ HRFS_list[i].mnt_mountp = strdup(HRFS_entry_struct.mnt_mountp);
++ HRFS_list[i].mnt_fstype = strdup(HRFS_entry_struct.mnt_fstype);
++ HRFS_list[i].mnt_mntopts = strdup(HRFS_entry_struct.mnt_mntopts);
++ i++;
++ }
++
++ ignore_flag = 0;
++ }
++ }
++
++ HRFS_entry = HRFS_list;
++ last_access = file_stat.st_mtime;
++ }
++ return ret;
++}
+#endif
+
- if (!fp) {
- netsnmp_config_error("Can't open mnttab %s\n", ETC_MNTTAB);
- }
-@@ -758,17 +824,20 @@
+ int
+ Get_Next_HR_FileSys(void)
+ {
+@@ -699,17 +827,18 @@
#else
const char **cpp;
@@ -133,16 +196,13 @@
#ifdef solaris2
- if (getmntent(fp, HRFS_entry) != 0)
-- return -1;
-+
-+ if (HRFS_index >= fscount)
-+ return -1;
-+ HRFS_entry = &HRFS_list[HRFS_index];
-+ return ++HRFS_index;
-+
++ if (HRFS_index >= fscount)
+ return -1;
++ HRFS_entry = &HRFS_list[HRFS_index];
++ return ++HRFS_index;
#else
-+ if (fp == NULL)
-+ return -1;
++ if (fp == NULL)
++ return -1;
HRFS_entry = getmntent(fp);
if (HRFS_entry == NULL)
return -1;
@@ -150,7 +210,7 @@
for (cpp = HRFS_ignores; *cpp != NULL; ++cpp)
if (!strcmp(HRFS_entry->HRFS_type, *cpp))
-@@ -787,6 +856,8 @@
+@@ -728,6 +857,8 @@
}
return HRFS_index++;
@@ -159,28 +219,28 @@
#endif /* HAVE_GETFSSTAT */
}
-@@ -854,10 +925,24 @@
+@@ -791,9 +922,24 @@
HRFS_entry = NULL;
}
#else
-+ int i=0;
++ int i = 0;
if (fp != NULL)
fclose(fp);
fp = NULL;
+
+#ifdef solaris2
-+ while (i < fscount) {
-+ free(HRFS_list[i].mnt_special);
-+ free(HRFS_list[i].mnt_mountp);
-+ free(HRFS_list[i].mnt_fstype);
-+ free(HRFS_list[i].mnt_mntopts);
-+ i++;
-+ }
-+ if (HRFS_list != NULL)
-+ free(HRFS_list);
++while (i < fscount) {
++ free(HRFS_list[i].mnt_special);
++ free(HRFS_list[i].mnt_mountp);
++ free(HRFS_list[i].mnt_fstype);
++ free(HRFS_list[i].mnt_mntopts);
++ i++;
++}
++ if (HRFS_list != NULL)
++ free(HRFS_list);
++ last_access = -1;
++#endif
++
#endif
-+
-+#endif
}
-
--- a/components/net-snmp/patches/029.7097655.ipAddressTable_container.patch Thu May 16 14:50:57 2013 -0700
+++ b/components/net-snmp/patches/029.7097655.ipAddressTable_container.patch Sat May 18 09:18:20 2013 -0700
@@ -1,24 +1,457 @@
-#
-# netsnmp_access_ipaddress_container_load() can return NULL.
-# ipaddressTable_container_load() should check for the validity
-# of return value before accessing it or else it causes SEGV.
-#
---- net-snmp-5.7.2/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c Wed Jan 30 02:01:56 2013
-+++ net-snmp-5.7.2/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c Wed Jan 30 02:04:46 2013
-@@ -348,6 +348,8 @@
+diff -ur net-snmp-5.4.1.org/agent/helpers/table_tdata.c net-snmp-5.4.1.container/agent/helpers/table_tdata.c
+--- net-snmp-5.4.1.org/agent/helpers/table_tdata.c 2012-04-02 01:31:08.387259100 -0700
++++ net-snmp-5.4.1.container/agent/helpers/table_tdata.c 2012-04-02 01:58:23.019636200 -0700
+@@ -57,9 +57,18 @@
+ if ( !table )
+ return NULL;
+
++ table->flags = flags;
+ if (name)
+ table->name = strdup(name);
+- table->container = netsnmp_container_find( "table_container" );
++
++ if (!(table->flags & TDATA_FLAG_NO_CONTAINER)) {
++ table->container = netsnmp_container_find( name );
++ if (!table->container)
++ table->container = netsnmp_container_find( "table_container" );
++ if (table->container)
++ table->container->container_name = strdup(name);
++ }
++
+ return table;
+ }
+
+diff -ur net-snmp-5.4.1.org/agent/mibgroup/ip-forward-mib/data_access/route_common.c net-snmp-5.4.1.container/agent/mibgroup/ip-forward-mib/data_access/route_common.c
+--- net-snmp-5.4.1.org/agent/mibgroup/ip-forward-mib/data_access/route_common.c 2012-04-02 01:31:08.334343300 -0700
++++ net-snmp-5.4.1.container/agent/mibgroup/ip-forward-mib/data_access/route_common.c 2012-04-02 02:00:46.671129800 -0700
+@@ -47,8 +47,11 @@
+
+ DEBUGMSGTL(("access:route:container", "load\n"));
+
+- if (NULL == container)
++ if (NULL == container) {
+ container = netsnmp_container_find("access:_route:table_container");
++ if (container)
++ container->container_name = strdup("_route");
++ }
+ if (NULL == container) {
+ snmp_log(LOG_ERR, "no container specified/found for access_route\n");
+ return NULL;
+diff -ur net-snmp-5.4.1.org/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c net-snmp-5.4.1.container/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
+--- net-snmp-5.4.1.org/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c 2012-04-02 01:31:08.341048100 -0700
++++ net-snmp-5.4.1.container/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c 2012-04-02 02:05:22.940847300 -0700
+@@ -2307,9 +2307,12 @@
+ if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+ inetCidrRouteTable_container_init(&if_ctx->container, if_ctx->cache);
+- if (NULL == if_ctx->container)
++ if (NULL == if_ctx->container) {
+ if_ctx->container =
+ netsnmp_container_find("inetCidrRouteTable:table_container");
++ if (NULL != if_ctx->container)
++ if_ctx->container->container_name = strdup("inetCidrRouteTable");
++ }
+ if (NULL == if_ctx->container) {
+ snmp_log(LOG_ERR, "error creating container in "
+ "inetCidrRouteTable_container_init\n");
+diff -ur net-snmp-5.4.1.org/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c net-snmp-5.4.1.container/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
+--- net-snmp-5.4.1.org/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c 2012-04-02 01:31:08.337647600 -0700
++++ net-snmp-5.4.1.container/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c 2012-04-02 02:08:16.825508200 -0700
+@@ -2259,9 +2259,12 @@
+ if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+ ipCidrRouteTable_container_init(&if_ctx->container, if_ctx->cache);
+- if (NULL == if_ctx->container)
++ if (NULL == if_ctx->container) {
+ if_ctx->container =
+ netsnmp_container_find("ipCidrRouteTable:table_container");
++ if (NULL != if_ctx->container)
++ if_ctx->container->container_name = strdup("ipCidrRouteTable");
++ }
+ if (NULL == if_ctx->container) {
+ snmp_log(LOG_ERR, "error creating container in "
+ "ipCidrRouteTable_container_init\n");
+diff -ur net-snmp-5.4.1.org/agent/mibgroup/ip-mib/data_access/arp_common.c net-snmp-5.4.1.container/agent/mibgroup/ip-mib/data_access/arp_common.c
+--- net-snmp-5.4.1.org/agent/mibgroup/ip-mib/data_access/arp_common.c 2012-04-02 01:31:08.353034100 -0700
++++ net-snmp-5.4.1.container/agent/mibgroup/ip-mib/data_access/arp_common.c 2012-04-02 02:10:39.120984300 -0700
+@@ -62,8 +62,11 @@
+
+ DEBUGMSGTL(("access:arp:container", "load\n"));
+
+- if (NULL == container)
++ if (NULL == container) {
+ container = netsnmp_container_find("access:arp:table_container");
++ if (container)
++ container->container_name = strdup("arp");
++ }
+ if (NULL == container) {
+ snmp_log(LOG_ERR, "no container specified/found for access_arp\n");
+ return NULL;
+diff -ur net-snmp-5.4.1.org/agent/mibgroup/ip-mib/data_access/systemstats_common.c net-snmp-5.4.1.container/agent/mibgroup/ip-mib/data_access/systemstats_common.c
+--- net-snmp-5.4.1.org/agent/mibgroup/ip-mib/data_access/systemstats_common.c 2012-04-02 01:31:08.353793700 -0700
++++ net-snmp-5.4.1.container/agent/mibgroup/ip-mib/data_access/systemstats_common.c 2012-04-02 02:12:30.680237000 -0700
+@@ -96,8 +96,11 @@
+
+ DEBUGMSGTL(("access:systemstats:container", "load\n"));
+
+- if (NULL == container)
++ if (NULL == container) {
+ container = netsnmp_access_systemstats_container_init(load_flags);
++ if (NULL != container)
++ container->container_name = strdup("systemstats_autocreate");
++ }
+ if (NULL == container) {
+ snmp_log(LOG_ERR, "no container specified/found for access_systemstats\n");
+ return NULL;
+diff -ur net-snmp-5.4.1.org/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c net-snmp-5.4.1.container/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
+--- net-snmp-5.4.1.org/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c 2012-04-02 01:31:08.349583400 -0700
++++ net-snmp-5.4.1.container/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c 2012-04-02 02:13:41.237688000 -0700
+@@ -1935,9 +1935,12 @@
+ if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+ inetNetToMediaTable_container_init(&if_ctx->container, if_ctx->cache);
+- if (NULL == if_ctx->container)
++ if (NULL == if_ctx->container) {
+ if_ctx->container =
+ netsnmp_container_find("inetNetToMediaTable:table_container");
++ if (if_ctx->container)
++ if_ctx->container->container_name = strdup("inetNetToMediaTable");
++ }
+ if (NULL == if_ctx->container) {
+ snmp_log(LOG_ERR, "error creating container in "
+ "inetNetToMediaTable_container_init\n");
+diff -ur net-snmp-5.4.1.org/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c net-snmp-5.4.1.container/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c
+--- net-snmp-5.4.1.org/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c 2012-04-02 01:31:08.365565600 -0700
++++ net-snmp-5.4.1.container/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c 2012-04-02 03:44:15.669526200 -0700
+@@ -1251,15 +1251,18 @@
+ * container init
+ */
+ ipv4InterfaceTable_container_init(&if_ctx->container);
+- if (NULL == if_ctx->container)
++ if (NULL == if_ctx->container)
+ if_ctx->container =
+ netsnmp_container_find("ipv4InterfaceTable:table_container");
++
+ if (NULL == if_ctx->container) {
+ snmp_log(LOG_ERR, "error creating container in "
+ "ipv4InterfaceTable_container_init\n");
+ return;
+ }
+
++ if_ctx->container->container_name = strdup("ipv4InterfaceTable");
++
+ } /* _ipv4InterfaceTable_container_init */
+
+ /**
+diff -ur net-snmp-5.4.1.org/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c net-snmp-5.4.1.container/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c
+--- net-snmp-5.4.1.org/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c 2012-04-02 01:31:08.363180800 -0700
++++ net-snmp-5.4.1.container/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c 2012-04-02 03:45:04.295800900 -0700
+@@ -1341,6 +1341,7 @@
+ "ipv6InterfaceTable_container_init\n");
+ return;
+ }
++ if_ctx->container->container_name = strdup("ipv6InterfaceTable");
+
+ } /* _ipv6InterfaceTable_container_init */
+
+diff -ur net-snmp-5.4.1.org/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c net-snmp-5.4.1.container/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c
+--- net-snmp-5.4.1.org/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c 2012-04-02 01:31:08.199286300 -0700
++++ net-snmp-5.4.1.container/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c 2012-04-02 03:47:50.113861500 -0700
+@@ -1731,9 +1731,12 @@
+ if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+ tcpConnectionTable_container_init(&if_ctx->container, if_ctx->cache);
+- if (NULL == if_ctx->container)
++ if (NULL == if_ctx->container) {
+ if_ctx->container =
+ netsnmp_container_find("tcpConnectionTable:table_container");
++ if (if_ctx->container)
++ if_ctx->container->container_name = strdup("tcpConnectionTable");
++ }
+ if (NULL == if_ctx->container) {
+ snmp_log(LOG_ERR, "error creating container in "
+ "tcpConnectionTable_container_init\n");
+diff -ur net-snmp-5.4.1.org/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c net-snmp-5.4.1.container/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c
+--- net-snmp-5.4.1.org/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c 2012-04-02 01:31:08.201001900 -0700
++++ net-snmp-5.4.1.container/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c 2012-04-02 03:48:52.542497400 -0700
+@@ -922,9 +922,12 @@
+ if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+ tcpListenerTable_container_init(&if_ctx->container, if_ctx->cache);
+- if (NULL == if_ctx->container)
++ if (NULL == if_ctx->container) {
+ if_ctx->container =
+ netsnmp_container_find("tcpListenerTable:table_container");
++ if (if_ctx->container)
++ if_ctx->container->container_name = strdup("tcpListenerTable");
++ }
+ if (NULL == if_ctx->container) {
+ snmp_log(LOG_ERR, "error creating container in "
+ "tcpListenerTable_container_init\n");
+diff -ur net-snmp-5.4.1.org/include/net-snmp/agent/table_tdata.h net-snmp-5.4.1.container/include/net-snmp/agent/table_tdata.h
+--- net-snmp-5.4.1.org/include/net-snmp/agent/table_tdata.h 2012-04-02 01:31:08.444022500 -0700
++++ net-snmp-5.4.1.container/include/net-snmp/agent/table_tdata.h 2012-04-02 23:50:13.830827600 -0700
+@@ -21,6 +21,7 @@
+ #define TABLE_TDATA_TABLE "table_tdata_table"
+
+ #define TDATA_FLAG_NO_STORE_INDEXES 0x01
++#define TDATA_FLAG_NO_CONTAINER 0x02 /* user will provide container */
+
+ /*
+ * The (table-independent) per-row data structure
+diff -ur net-snmp-5.4.1.org/include/net-snmp/library/container.h net-snmp-5.4.1.container/include/net-snmp/library/container.h
+--- net-snmp-5.4.1.orig/include/net-snmp/library/container.h 2012-09-13 03:44:03.378177029 -0700
++++ net-snmp-5.4.1.container/include/net-snmp/library/container.h 2012-09-05 12:05:44.822831595 -0700
+@@ -373,31 +373,42 @@
+ */
+ int CONTAINER_FREE(netsnmp_container *x);
+ #else
+- /*------------------------------------------------------------------
+- * These functions should EXACTLY match the function version in
+- * container.c. If you change one, change them both.
+- */
+- NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
+- int CONTAINER_INSERT(netsnmp_container *x, const void *k)
+- {
+- int rc2, rc = 0;
+-
+- /** start at first container */
+- while(x->prev)
+- x = x->prev;
+- for(; x; x = x->next) {
+- if ((NULL != x->insert_filter) &&
+- (x->insert_filter(x,k) == 1))
+- continue;
+- rc2 = x->insert(x,k);
+- if (rc2) {
+- snmp_log(LOG_DEBUG,"error on subcontainer '%s' insert (%d)\n",
+- x->container_name ? x->container_name : "", rc2);
+- rc = rc2;
+- }
+- }
+- return rc;
+- }
++ /*------------------------------------------------------------------
++ * These functions should EXACTLY match the function version in
++ * container.c. If you change one, change them both.
++ */
++ NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
++ int CONTAINER_INSERT_HELPER(netsnmp_container* x, const void* k)
++ {
++ while(x && x->insert_filter && x->insert_filter(x,k) == 1)
++ x = x->next;
++ if(x) {
++ int rc = x->insert(x,k);
++ if(rc)
++ snmp_log(LOG_ERR,"error on subcontainer '%s' insert (%d)\n",
++ x->container_name ? x->container_name : "", rc);
++ else {
++ rc = CONTAINER_INSERT_HELPER(x->next, k);
++ if(rc)
++ x->remove(x,k);
++ }
++ return rc;
++ }
++ return 0;
++ }
++
++ /*------------------------------------------------------------------
++ * These functions should EXACTLY match the function version in
++ * container.c. If you change one, change them both.
++ */
++ NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
++ int CONTAINER_INSERT(netsnmp_container* x, const void* k)
++ {
++ /** start at first container */
++ while(x->prev)
++ x = x->prev;
++ return CONTAINER_INSERT_HELPER(x, k);
++ }
+
+ /*------------------------------------------------------------------
+ * These functions should EXACTLY match the function version in
+diff -ur net-snmp-5.4.1.org/snmplib/container.c net-snmp-5.4.1.container/snmplib/container.c
+--- net-snmp-5.4.1/snmplib/container.c 2012-09-13 03:44:03.380247622 -0700
++++ net-snmp-5.4.1.container/snmplib/container.c 2012-09-13 03:33:19.759881202 -0700
+@@ -49,7 +49,8 @@
+ */
+ containers = netsnmp_container_get_binary_array();
+ containers->compare = netsnmp_compare_cstring;
+-
++ containers->container_name = strdup("container list");
++
+ /*
+ * register containers
+ */
+@@ -265,25 +266,34 @@
+ * These functions should EXACTLY match the inline version in
+ * container.h. If you change one, change them both.
+ */
+-int CONTAINER_INSERT(netsnmp_container *x, const void *k)
+-{
+- int rc2, rc = 0;
+-
+- /** start at first container */
++int CONTAINER_INSERT_HELPER(netsnmp_container* x, const void* k)
++{
++ while(x && x->insert_filter && x->insert_filter(x,k) == 1)
++ x = x->next;
++ if(x) {
++ int rc = x->insert(x,k);
++ if(rc)
++ snmp_log(LOG_DEBUG,"error on subcontainer '%s' insert (%d)\n",
++ x->container_name ? x->container_name : "", rc);
++ else {
++ rc = CONTAINER_INSERT_HELPER(x->next, k);
++ if(rc)
++ x->remove(x,k);
++ }
++ return rc;
++ }
++ return 0;
++ }
++
++/*------------------------------------------------------------------
++ * These functions should EXACTLY match the inline version in
++ * container.h. If you change one, change them both.
++ */
++int CONTAINER_INSERT(netsnmp_container* x, const void* k)
++{
+ while(x->prev)
+- x = x->prev;
+- for(; x; x = x->next) {
+- if ((NULL != x->insert_filter) &&
+- (x->insert_filter(x,k) == 1))
+- continue;
+- rc2 = x->insert(x,k);
+- if (rc2) {
+- snmp_log(LOG_DEBUG,"error on subcontainer '%s' insert (%d)\n",
+- x->container_name ? x->container_name : "", rc2);
+- rc = rc2;
+- }
+- }
+- return rc;
++ x = x->prev;
++ return CONTAINER_INSERT_HELPER(x, k);
+ }
+
+ /*------------------------------------------------------------------
+diff -ur net-snmp-5.4.1.org/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c net-snmp-5.4.1.container/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
+--- net-snmp-5.4.1.orig/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c 2007-05-17 14:53:28.000000000 -0700
++++ net-snmp-5.4.1.container/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c 2012-09-13 03:45:25.253102053 -0700
+@@ -134,6 +134,7 @@
+ *container_ptr_ptr =
+ netsnmp_container_find("ipAddressTable:table_container");
+ if (NULL != *container_ptr_ptr) {
++ (*container_ptr_ptr)->container_name = strdup("ipAddressTable");
+ ipAddressTable_container_load(*container_ptr_ptr);
+ CONTAINER_FOR_EACH(*container_ptr_ptr,
+ (netsnmp_container_obj_func *) _clear_times,
+@@ -344,56 +345,58 @@
* what we've already got, and make any adjustments, saving
* missing addresses to be deleted.
*/
+- tmp_ptr[0] = ipaddress_container->next;
+- tmp_ptr[1] = NULL;
+- CONTAINER_FOR_EACH(container, (netsnmp_container_obj_func *)
+- _check_entry_for_updates, tmp_ptr);
+-
+- /*
+- * now add any new interfaces
+- */
+- CONTAINER_FOR_EACH(ipaddress_container,
+- (netsnmp_container_obj_func *) _add_new_entry,
+- container);
+-
+- /*
+- * free the container. we've either claimed each entry, or released it,
+- * so the access function doesn't need to clear the container.
+- */
+- netsnmp_access_ipaddress_container_free(ipaddress_container,
+- NETSNMP_ACCESS_IPADDRESS_FREE_DONT_CLEAR);
+-
+- /*
+- * remove deleted addresses from table container
+- */
+- if (NULL != tmp_ptr[1]) {
+- netsnmp_container *tmp_container =
+- (netsnmp_container *) tmp_ptr[1];
+- ipAddressTable_rowreq_ctx *tmp_ctx;
+-
+- /*
+- * this works because the tmp_container is a linked list,
+- * which can be used like a stack...
+- */
+- while (CONTAINER_SIZE(tmp_container)) {
+- /*
+- * get from delete list
+- */
+- tmp_ctx = CONTAINER_FIRST(tmp_container);
+-
+- /*
+- * release context, delete from table container
+- */
+- CONTAINER_REMOVE(container, tmp_ctx);
+- ipAddressTable_release_rowreq_ctx(tmp_ctx);
+-
+- /*
+- * pop off delete list
+- */
+- CONTAINER_REMOVE(tmp_container, NULL);
+- }
+ if(ipaddress_container != NULL)
+ {
- tmp_ptr[0] = ipaddress_container->next;
- tmp_ptr[1] = NULL;
- CONTAINER_FOR_EACH(container, (netsnmp_container_obj_func *)
-@@ -395,6 +397,7 @@
- * pop off delete list
- */
- CONTAINER_REMOVE(tmp_container, NULL);
-+ }
- }
++ tmp_ptr[0] = ipaddress_container->next;
++ tmp_ptr[1] = NULL;
++ CONTAINER_FOR_EACH(container, (netsnmp_container_obj_func *)
++ _check_entry_for_updates, tmp_ptr);
++
++ /*
++ * now add any new interfaces
++ */
++ CONTAINER_FOR_EACH(ipaddress_container,
++ (netsnmp_container_obj_func *) _add_new_entry,
++ container);
++
++ /*
++ * free the container. we've either claimed each entry, or released it,
++ * so the access function doesn't need to clear the container.
++ */
++ netsnmp_access_ipaddress_container_free(ipaddress_container,
++ NETSNMP_ACCESS_IPADDRESS_FREE_DONT_CLEAR);
++
++ /*
++ * remove deleted addresses from table container
++ */
++ if (NULL != tmp_ptr[1]) {
++ netsnmp_container *tmp_container =
++ (netsnmp_container *) tmp_ptr[1];
++ ipAddressTable_rowreq_ctx *tmp_ctx;
++
++ /*
++ * this works because the tmp_container is a linked list,
++ * which can be used like a stack...
++ */
++ while (CONTAINER_SIZE(tmp_container)) {
++ /*
++ * get from delete list
++ */
++ tmp_ctx = CONTAINER_FIRST(tmp_container);
++
++ /*
++ * release context, delete from table container
++ */
++ CONTAINER_REMOVE(container, tmp_ctx);
++ ipAddressTable_release_rowreq_ctx(tmp_ctx);
++
++ /*
++ * pop off delete list
++ */
++ CONTAINER_REMOVE(tmp_container, NULL);
++ }
++ }
}
+-
+ DEBUGMSGT(("verbose:ipAddressTable:ipAddressTable_cache_load",
+ "%d records\n", CONTAINER_SIZE(container)));
--- a/components/net-snmp/patches/031.16488880.patch Thu May 16 14:50:57 2013 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
---- net-snmp/agent/mibgroup/host/data_access/swrun_procfs_psinfo.c Tue Mar 19 22:20:09 2013
-+++ net-snmp/agent/mibgroup/host/data_access/swrun_procfs_psinfo.c Tue Mar 19 22:21:09 2013
-@@ -25,9 +25,7 @@
-
- #define HAVE_SYS_PROCFS_H /* XXX - Needs a configure check! */
- #ifdef HAVE_SYS_PROCFS_H
--#define _KERNEL /* For psinfo_t */
--#include <sys/procfs.h>
--#undef _KERNEL
-+#include <procfs.h>
- #endif
- #ifdef HAVE_SYS_PROC_H
- #include <sys/proc.h>
--- a/components/net-snmp/resolve.deps Thu May 16 14:50:57 2013 -0700
+++ b/components/net-snmp/resolve.deps Sat May 18 09:18:20 2013 -0700
@@ -5,7 +5,6 @@
shell/ksh93
system/core-os
system/library
-system/library/math
system/linker
system/management/snmp/net-snmp
system/network