Merge branch 'V5-6-patches' into V5-7-patches

* V5-6-patches:
  Updates for BFD mibs.
diff --git a/.gitignore b/.gitignore
index aa5f742..df174ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -66,6 +66,7 @@
 include/net-snmp/net-snmp-config.h
 libtool
 local/snmpcheck
+local/snmpconf
 Makefile
 man/*.[1358]
 man/default_store.3.h
diff --git a/CHANGES b/CHANGES
index d02578f..eebeb12 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,118 +3,626 @@
 a summary of the major changes, and the ChangeLog file for a comprehensive
 listing of all changes made to the code.
 
-
-*5.6.2*
-
+*5.7.3*
     snmplib:
-      - [PATCH 2835577]: Replace SNMP_ZERO of arrays with a memset.
-      - [PATCH 3510454]: Allow the use of 0.0.0.0/0 as alias for default
-      - [PATCH 3526599]: Don't hang on retried failing SNMPv3 responses
-      - [BUG 3134323]: Fix crash when comparing invalid OIDs
-      - Avoid unnecessary casts when using netsnmp_set_row_column()
-      - Eliminate assorted dead variables
+      - Fixed crash when MD5 hash is not supported by OpenSSL.
+      - Fixed parsing of sequences. Don't overwrite 'data' variable, it's
+	used when parsing bulk responses.
+      - [BUG 1267 ]: snmplib: register_mib_context() fix for read-only
+	variables   This is a slightly modified version of a patch from
+	Harsha Shivanna.
+
+    snmp:
+      - Usm-dh-objects-mib: Avoid triggering an assert statement in
+	netsnmp_ready_monotonic() The cache timeout for
+	snmp-usm-dh-objects-mib is -1. Any cache timeout value < 0 disables
+	caching. However, strictly negative values trigger the assert
+	statement in netsnmp_ready_monotonic(). Avoid triggering that
+	assert statement.
+      - Fixed monitoring based on non-delta trigger.   snmpd crashed wit
+	following snmpd.conf: monitor -s -D -r 10 -e LOGMATCH -o
+	logMatchCurrentCount "Log Match" != logMatchCurrentCount logmatch
+	LoginFailure1 /var/log/secure 10 su: .*fail.* The reason was
+	unitialized variable sysUT_var in mteTrigger_run(), it was filled
+	only if the trigger was delta-valued, while its value was used for
+	all triggers. With this patch, sysUT_var is filled for all code
+	branches where it is needed.
 
     snmpd:
-      - [PATCH 2941811]: Handle successful requests with reqID 0
-      - [PATCH 3096725]: sysORTable registation for notification log mib
-      - [PATCH 3479740]: Fix hrSWRunPerf statistics
-      - [PATCH 3487867]: Don't skip missing ifXTable entries (ifConnectorPresent FALSE)
-      - [PATCH 3487919]: Fix compilation when caching is disabled
-      - [PATCH 3495697]: Store persistent snmpTarget table changes
-      - [BUG 3526549]: CVE-2012-2141 Array index error leading to crash
-      - [BUG 3532090]: Fix high ifIndex values crashing hrDeviceDescr
-      - Added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
-      - Eliminate assorted dead variables
-      - UDP-MIB: Report proper udpLocalAddress (instead of 0.0.0.0)
+      - Add a missing function declaration
+      - Added btrfs support to hrFSTable
+      - Correct the size of of the EXAMPLEIPADDRESS value on L64 hosts
+      - Fixed crash in UCD-SNMP-MIB::extTable snmpd crashed when the
+	command to execute had no arguments, i.e. extend->args was NULL.
+      - Fixed value of UCD-SNMP-MIB::extCommand to contain full command
+	line. MIB description of UCD-SNMP-MIB::extCommand suggests it
+	should contail full command line. Also in Net-SNMP 5.3.2.2, whole
+	command line was shown.
+      - Make it possible to use NUL characters in the indices for
+	snmpTargetAddrTable
+      - PATCH 2472: from Sunil: don't use HBKT as heartbeat interval in
+	SCTP-MIB::sctpAssocTable.
+      - Remove some unused includes
+      - Show Linux kernel threads in hrSWRunTable.
+      - Use 0 for the ignored numvars argument to netsnmp_register_mib The
+	numvars argument of netsnmp_register_mib is ignored if the var
+	argument is NULL. In order to unify this use of it with all other
+	ones, change it from 1 to 0
+      - SECURITY: a denial of service attack vector was discovered on
+        the linux implementation of the ICMP-MIB.  This release fixes
+        this bug and all users are encouraged to update their SNMP
+        agent if they make use of the ICMP-MIB table objects.
+      - PATCH: 1275: from Viliam Púčik: fixed Perl trap handler when
+	processing trap with empty community string.
 
-    snmpdx:
-      - [PATCH 3445437]: Log AgentX disconnections (in line with connections)
+    snmpd, snmptrapd and apps:
+      - Make ENV_SEPARATOR_CHAR configurable
 
     snmptrapd:
-      - [BUG 3151254]: Fix crash with invalid traphandle directive
-      - Avoid crash during shutdown due to invoking perl_destruct(NULL)
-      - Don't invoke shutdown_perl() from SIGTERM handler
-      - Handle changes to libmysqlclient API (affects Fedora 15/16)
-      - Remove superfluous casts
 
     apps:
-      - [PATCH 2835577]: Replace SNMP_ZERO of arrays with a memset.
+      - Stop agentxtrap from accessing the persistent configuration This is
+	needed to prevent moaning about not beeing allowed to write those
+	files due to bad permissions.
+      - Stop using snmp_perror when logging after functions that don't set
+	snmp_errno.
 
-    build/install:
-      - [BUG 3152841]: Install util_funcs subheaders
-      - OpenBSD: Fix order of headers when checking <netinet/in_pcb.h>
-      - Add target to build agentxtrap from the toplevel
-      - Build fix for systems lacking field msg_control in struct msghdr
-      - Fix static builds using net-snmp-config and -*libs flags
+    building:
+      - Make the -without options to rpmbuild work
+      - Avoid duplicate and trailing spaces in the dependency files.
 
-    man:
-      - [BUG 3190725]: Document snmp{,_sess}synch_response and snmp_async_send
-
-    mib2c:
-      - Make the mib2c foreach ranges work as advertised in the comments.
+    documentation:
+      - From "Eric S. Raymond": Correct man page markup problem Ambiguous
+	or invalid backslash.  This doesn't cause groff a problem. but it
+	confuses doclifter and may confuse older troff implementations.
 
     perl:
-      - Fix spelling in the documentation of the SNMP module
-      - Fixed segmentation fault when handler registration fails.
-      - Don't open stderr unnecessarily (affects embedded agent)
+      - BUG: 2402: Add support for SNMPv3 traps
 
     python:
-      - [PATCH 3185085]: Fix segfault on 64-bit systems
+      - Fixed IPADDRESS size on 64bit systems.
+      - Fixed returning of empty strings. Varbind type (SNMP_NOSUCHOBJECT
+	etc.) should be used to detect errors instead of length of the
+	variable - it can be empty string.
+      - [PATCH 1239]: Fix memory leak
 
     testing:
-      - [BUG 3474590]: Don't match underscores within the source root filename
-      - Add a test for se_store_list()
-      - Fix Perl regression test failures
-      - Don't fail skipped Perl tests.
-      - Remove unused variables
+      - Make sure Test::Harness is of at least version 1.21 Test::Harness
+	1.21 is the first version that implements TAP v12 which allows
+	putting the header (1..N) after the tests and since our tests
+	utilize that we should make sure that the test runner supports it.
+
+    unspecified:
+      - Added simfs (OpenVZ filesystem) to hrStorageTable and hrFSTable.
+      - Upport new MIB structures and MFD rewrites under Darwin
+      - [BUG 2470]: Accept 65535 as a valid IPv6 port number
+      - [BUG 2476]: snmpd fails to start on AIX On an AIX system there is
+	no <kvm.h> header file nor do the /dev/dmem or /dev/drum devices
+	exist and hence DMEM_LOC is not defined. Avoid that init_kmem()
+	fails in that case.
 
     AIX:
-      - Eliminate configure warning regarding libperfstat.h (AIX 6.1ff)
+      - Make tcp-mib build
+      - Make udp-mib build
+
+    Linux:
+      - BUG: 2238: Add libnl3 support
+      - RESOURCES-MIB, hrSWRun table: Parse /proc/<pid>/stat correctly on
+	Linux This issue was reported by Vincent Bernat
+	<vincent.bernat@dailymotion.com>. See also
+	http://sourceforge.net/p/net-snmp/patches/1257/.
+
+    Win32:
+      - Perl: BUG: 2488: Avoid "Free to wrong pool" error
+      - Perl: BUG: 2488: Avoid "Free to wrong pool" error" This reverts
+	commit b2725964bde921b6285e3a59a512552cae0a0ca5.
+
+    Windows:
+      - Add multihoming support On Windows Vista / Windows Server 2008 and
+	later it is possible to add multihoming support by using the
+	IP_PKTINFO socket option. Conflicts:
+	snmplib/transports/snmpUDPBaseDomain.c
+      - Make winExtDLL work on 64-bit Windows systems
+      - Port batch build infrastructure to Visual Studio 2010 and later
+	From Visual Studio 2010 on it is no longer possible to specify
+	include or library directories globally - these have to be
+	specified per project. Hence two additional menu entries in
+	build.bat that allow to specify these directories.
+      - Ported ucd-snmp/dlmod to MinGW / MSVC
+
+*5.7.2*
+
+    snmplib:
+      - Add Doxygen-style function header for
+	netsnmp_register_default_target() and
+	netsnmp_clear_default_target().
+      - Add netsnmp_setenv().
+      - Avoid that system clock changes (e.g. by ntpd) affect code that
+	needs relative time Make sure that the range of the SNMPv3 variable
+	snmpEngineTime is 0..2147483647 on all supported systems instead of
+	0..42949672 on some systems (i.e. wraparound after 497 days) Add
+	netsnmp_get_monotonic_clock(), netsnmp_set_monotonic_marker(),
+	netsnmp_ready_monotonic(), netsnmp_get_agent_runtime()
+      - Avoid that system clock changes (e.g. by ntpd) affect code that
+	needs relative time Make sure that the range of the SNMPv3 variable
+	snmpEngineTime is 0..2147483647 on all supported systems instead of
+	0..42949672 on some systems (i.e. wraparound after 497 days) Add
+	netsnmp_get_monotonic_clock(), netsnmp_set_monotonic_marker(),
+	netsnmp_ready_monotonic(), netsnmp_get_agent_runtime() Deprecate
+	atime_diff(), atime_newMarker(), atime_ready(), atime_setMarker(),
+	marker_tticks(), netsnmp_marker_uptime(), netsnmp_timeval_uptime(),
+	timeval_tticks(), uatime_diff(), uatime_hdiff() and uatime_ready().
+      - Avoid waiting indefinitely if a session has timeout zero
+      - Declare "type" argument of se_store_list() / se_store_slist() /
+	se_store_enum_list() const
+      - Make it explicit that MAX_SUBID is an unsigned constant
+      - Make netsnmp_callback_accept() return -1 (failure) instead of 0
+	(STDIN_FILENO)
+      - Make netsnmp_large_fd_set_resize() robust against memory allocation
+	failures. Make NETSNMP_LARGE_FD_ZERO() use memset() on Unix systems
+	instead of an explicit loop.
+      - Make netsnmp_large_fd_set_resize() robust against memory allocation
+	failures. Make NETSNMP_LARGE_FD_ZERO() use memset() on Unix systems
+	instead of an explicit loop. Make sure that on Unix systems
+	netsnmp_large_fd_clr() doesn't try to read memory it isn't allowed
+	to read if the first argument equals -1 (a value that shouldn't be
+	passed by the caller).
+      - Merge together the Linux and *BSD version of src port sending.
+      - Only transform the address to printable form when needed.
+      - PATCH 3510454: Allow the use of 0.0.0.0/0 as alias for default
+      - Prevent gcc ped-warning for NETSNMP_REMOVE_CONST git-svn-id:
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@1
+	8052 06827809-a52a-0410-b366-d66718629ded
+      - Reduce overhead of config file parsing
+      - Remove obsolete snmp_get_fd_for_session() declaration
+      - Separate out the cmesg buffer size
+      - Set the rpath for libperl.so in libnetsnmpmibs.so such that the
+	dynamic linker can find libperl.so without requiring the user to
+	modify the dynamic linker settings. This change in
+	agent/Makefile.in is necessary on the 5.5 branch and later but not
+	on the 5.4 branch. That is because the 5.4 branch uses an older
+	version of libtool that propagates the rpath of dependent
+	libraries. This is called inter-library dependency tracking in the
+	libtool manual. This functionality is present in libtool version 1
+	but not in libtool version 2. For more background information about
+	dynamic libraries and rpaths, see also the document with the title
+	"RpathIssue" on the Debian wiki
+	(http://wiki.debian.org/RpathIssue).
+      - Simplify implementation of functions manipulating 64-bit numbers.
+      - Simplify the se_store_enum_list() implementation
+      - Use SNMP_ALLOC_TYPEDEF to allocate transports in order to avoid the
+	separate call to memset.
+      - [PATCH 3414773]: Encode integer value using ASN_INTEGER
+      - [PATCH 3526599]: Don't hang on retried failing SNMPv3 responses
+      - PATCH 3560473: from fenner: Handle TimeTicks when pretty-printing
+	OID   Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+      - Add the symbol NETSNMP_PRIo to help in printing oid values.
+      - Do not crash from empty values in --token=value arguments
+      - Do not crash on incomplete configuration tokens.
+      - Do not truncate single default transport domains
+      - Move the check that the pdu variable is non-NULL to before the
+	first dereference of it.
+
+    snmplib + snmpd + snmpwalk:
+      - Avoid that system clock changes (e.g. by ntpd) affect code that
+	needs relative time
+
+    snmplib, snmpd, perl:
+      - Eliminate dead variables agent/mibgroup/agentx/master_admin.c
+	agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
+	agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_acc
+	ess.c agent/mibgroup/host/data_access/swinst_pkginfo.c
+	agent/mibgroup/host/data_access/swrun_procfs_status.c
+	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+	agent/mibgroup/mibII/kernel_linux.c
+	agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
+	agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access
+	.c apps/snmptls.c apps/snmptrapd_log.c snmplib/dir_utils.c
+	snmplib/snmp_client.c snmplib/snmp_openssl.c
+	snmplib/transports/snmpTLSTCPDomain.c
+      - BUG: 3517030: Ensure large tables are walked properly
+      - BUG: 3541012: Fix handling of gettable columns
+      - [PATCH 3529541]: Don't refer to internal 'my' variables from
+	external scripts Fix provided by Lezz Giles
+
+    snmp:
+      - Bridge-mib: Fix index interpretation. This patch corrects a wrong
+	data interpretation. snmp-bridge-mib obtains the ifindex value from
+	the sysfs attribute 'ifindex' The value given by the sysfs
+	attribute is an integer, which is handled as hex and leads to
+	incorrect data displayed to the user. e.g. $ > snmpwalk localhost
+	BRIDGE-MIB::dot1dBasePortIfIndex.2
+	BRIDGE-MIB::dot1dBasePortIfIndex.2 = INTEGER: 54 according to the
+	sysfs attribute the value is 36 $ > cat
+	/sys/class/net/<device>/ifindex 36 Signed-off-by: Mijo Safradin
+	<safradin@linux.vnet.ibm.com>
+
+    snmpd:
+      - Lowered severity of 'Error expanding XXX to 64bits' messages.
+      - Removed error log messages when IPv6 is disabled.
+      - Add missing debug tag
+      - Add netsnmp_get_next_alarm_time()
+      - Avoid that system clock changes (e.g. by ntpd) affect code that
+	needs relative time Make sure that the range of the SNMPv3 variable
+	snmpEngineTime is 0..2147483647 on all supported systems instead of
+	0..42949672 on some systems (i.e. wraparound after 497 days)
+      - BUG 3542188: Correct sysORDescr for snmpUsmMIB. Thanks to Dave
+	Vucich for reporting this.
+      - BUG 3542307: Correct sysORID for snmpMPDStats. Thanks to Dave
+	Vucich for reporting this.
+      - BUG: 3439234: Correct the dependencies of ucd-snmp/pass and
+	ucd-snmp/pass_persist
+      - BUG: 3439234: Move netsnmp_pass_str_to_errno to pass_common and
+	rename it to netsnmp_internal_pass_str_to_errno
+      - BUG: 3463767: Handle parsing subidentifiers > 2^31
+      - BUG: 3532090: Fix high ifIndex values crashing hrDeviceDescr
+      - Call snmp_oidtree_compare instead of snmp_oid_min_compare
+      - DISMAN-PING-MIB: Avoid dangling pointers (based on patch 3503259)
+      - DISMAN-PING-MIB: Avoid reading freed memory when deleting a row
+	from a table
+      - DISMAN-PING-MIB: Do not send the contents of the stack over the
+	network
+      - DISMAN-PING-MIB: Don't call exit() upon memory allocation failure
+      - DISMAN-PING-MIB: Fix IPv6 socket leak in error paths
+      - DISMAN-PING-MIB: Fix a socket leak triggered by pinging a remote
+	host
+      - DISMAN-PING-MIB: Fix more memory leaks
+      - DISMAN-PING-MIB: Fix several memory leaks
+      - DISMAN-PING-MIB: Make ping implementation independent of ntpd clock
+	jumps
+      - DISMAN-PING-MIB: Make pinging local interface addresses work
+      - DISMAN-SCHEDULER-MIB: Handle 32-character schedContextName values
+	correctly. See also commit
+	b3c4982542e0ab151fb3884754cdfbcb472da52d.
+      - Disable the support for integer64 in pass scripts if compiling
+	without opaque-special-types.
+      - Factor out asc2bin and bin2asc. Add a netsnmp_internal_ prefix to
+	them
+      - Fixed UCD-SNMP-MIB::systemStats after 30 days of uptime. After 30
+	days, values from /proc/stat (on Linux) can get bigger than 32bits
+	and snmpd calculations might render counters like ssCpuUser
+	negative or zero, while the real value is higher. Therefore the
+	counters should be tracked as the largest integer available.
+      - Fixed snmpd '-d' option. Now it dumps packets again.
+      - IF-MIB::ifType: Report type "infiniband (199)" for InfiniBand
+	interfaces instead of type "other (1)".
+      - Init_agent() + init_kmem(): Return an error value instead of
+	invoking exit() if access to kernel virtual memory is denied
+      - Make the configuration of the dlmod module fail rather than
+	generate a dummy module if the dlopen function isn't available.
+      - Match each getpwnam()/getpwuid() call with an endpwent() call and
+	each getgrent() call with an endgrent() call.
+      - PATCH 3402376: from Leonardo Chiquitto: Recognise ReiserFS Also
+	move various FSType definitions to the appropriate blocks
+      - PATCH 3453868: from "Bill Fenner <fenner@gmail.com>": Factor common
+	code into pass_common Move the code for pormatting and printing
+	values from pass and pass_persist into pass_common.
+      - PATCH: 3487867: Don't skip missing ifXTable entries
+	(ifConnectorPresent FALSE)
+      - Pass_persist:  Fixes a race condition introduced in commit
+	31fa07cd9ffde46d41d2b5838c3fc4d01548bfb5. The following race
+	condition could happen: - A system call fails and errno is set
+	accordingly by the C library. - SIGCHLD handler invokes a system
+	call that fails and hence overwrites errno. - SIGCHLD handler
+	leaves. - original context checks errno and finds the value from
+	the system call invoked by the SIGCHLD handler instead of the
+	system call that failed originally. Other fixes included in this
+	patch: - Renamed deinit_pass_persist() into shutdown_pass_persist()
+	such that this function gets called during agent shutdown. - Made
+	sure that shutdown_pass_persist() is called by the Windows
+	snmpd.exe too. - Windows: avoid calling
+	CloseHandle(INVALID_HANDLE_VALUE). - Windows: avoid that closing a
+	pass_persist pipe triggers a crash. - Windows: pass_persist: close
+	handles of finished processes.
+	agent/mibgroup/ucd-snmp/pass_persist.c win32/mib_module_shutdown.h
+      - Smux: simplify smux_list_detach()
+      - UDP-MIB: Report the proper address in udpLocalAddress instead of
+	0.0.0.0. Makes test T160snmpnetstat pass again. Fixes a bug
+	introduced in commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a.
+      - [BUG 3460364]: Fix use of block factor when detecting error
+	conditions
+      - [BUG 3489631]: Fix incorrect handling of UCD monitoring flag
+      - [PATCH 3410050]: Skip already-'processed' varbinds Based on mib2c
+	patch provided by Stephen Turner
+      - [PATCH 3410059]: Fix sparsely augmenting trigger tables Patch
+	provided by Stephen Turner
+      - [PATCH 3447444]: Fix SIG_PIPE handling Patch provided by Bill
+	Fenner
+      - [PATCH 3447671]: Fix override handling of OID values Patch supplied
+	by Phillip O'Donnell
+      - [PATCH 3479740]: Fix hrSWRunPerf statistics
+      - [PATCH 3487919]: Fix compilation when caching is disabled
+      - [PATCH 3495697]: Store persistent snmpTarget table changes
+      - BUG 3542188: Correct sysORDescr for snmpUsmMIB. Thanks to Dave
+	Vucich for reporting this.
+      - BUG 3542307: Correct sysORID for snmpMPDStats. Thanks to Dave
+	Vucich for reporting this.
+      - BUG: 3543864: Remove extraneous function type (and fix a related
+	typo)
+      - Removed limit of 'exec' and 'sh' entries in snmpd.conf Use dynamic
+	(re)allocation instead.
+      - [PATCH 3543000]: Various fixes to Rmon code Supplied by Patrick
+	Ritter
+
+    snmpdx:
+      - [PATCH 3445437]: Log AgentX disconnections (in line with
+	connections) Patch provided by Bill Fenner
+
+    snmptrapd:
+      - Avoid crash during shutdown due to invoking perl_destruct(NULL)
+      - Do not invoke shutdown_perl() from inside the SIGTERM handler since
+	that fails if SIGTERM is received while a Perl handler is active.
+	Based on a patch posted by Joel Avni <javni@arubanetworks.com>
+      - Eliminate an unused variable (Now)
+      - Move the main loop code into a new function
+      - Remove superfluous casts
+
+    snmptrapd_sql:
+      - Avoid that a linker error is triggered on systems where my_progname
+	is missing in libmysqlclient (e.g. Fedora 15 and 16). This is a
+	backport of commit 9f653f7.
+
+    aix:
+      - Eliminate configure warning regarding libperfstat.h on AIX 6.1 and
+	up
+      - PATCH 3403433: from blentz: Issues with hrSWRunName and Parameters
+	on AIX	 Signed-off-by: Wes Hardaker
+	<hardaker@users.sourceforge.net>
+
+    apps, snmplib:
+      - PATCH: 2835577: identified by "Bart Van Assche": Replace SNMP_ZERO
+	of arrays with a memset. git-svn-id:
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@1
+	7797 06827809-a52a-0410-b366-d66718629ded
+      - BUG: 3529768: Be more careful when stripping off numeric suffixes
+
+    build:
+      - Do not generate an output file on failure make supposes that no
+	output is generated if the command failed. Change feature-remove to
+	follow that presumption.
+      - BUG: 3532234: Fix typo in libtool script (addressed properly in
+	libtool 2.4.2)
+
+    building:
+      - Add dependencies on @FEATURETARGS@ to make the subtarget work as
+	well.
+      - Add missing end comments to feature ifndefs.
+      - Add target to build agentxtrap from the toplevel
+      - Build fix for systems lacking field msg_flags in struct msghdr
+	(e.g. IRIX)
+      - Build fix for systems lacking fields msg_control/msg_flags in
+	struct msghdr (backport)
+      - Correct dependencies - since
+	bf74fea69f24dc6e85f908f3f41d1426b2e09688 snmpconf is located in
+	builddir, not srcdir
+      - Correct dependencies - since
+	bf74fea69f24dc6e85f908f3f41d1426b2e09688 snmpconf is located in
+	builddir, not srcdir" This reverts commit
+	9efa467a972bb6e1c7fbdaf2e27429d29f4ab89e.
+      - Make the transport configuration code work again Previously the
+	transport inheritance processing code ran with
+	NETSNMP_FEATURE_CHECKING set. In this mode the file
+	net-snmp/feature-details.h is requiered. That file is created
+	during the first make run, and that happens after configure is run.
+	Change this to undefine NETSNMP_MINIMAL_CODE, effectively turning
+	off feature support during transport configuration in order to make
+	it work at all.
+      - Run libtool --mode=finish on the right directory
+
+    libnetsnmp:
+      - PATCH 3394586: from rwa-co: file descriptor leak in read_config
+	(+fix) Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+    libsnmp:
+      - Changed the type of the fourth argument of netsnmp_set_row_column()
+	from const char* to const void* such that no cast is necessary when
+	passing another datatype then char* or const char*.
+
+    man:
+      - [BUG 3490708]: Clarify use of common command-line options
+      - BUG: 3535269: Document use of [snmp] for client-side tools.
+
+    pass:
+
+    perl:
+      - Add agent::uptime()
+      - Enable sending SNMPv2 traps with an empty varbind list
+      - Fix spelling in the documentation of the SNMP module
+      - Fixed segmentation fault when handler registration fails. When
+	netsnmp_register_handler fails, it frees its reginfo ->
+	nsahr_DESTROY (and any other function) must not dereference it.
+      - Perl: Make sure that the constant SNMP_DEFAULT_RETRIES is
+	recognized. SNMP module: Add constants
+	NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE and
+	NETSNMP_CALLBACK_OP_TIMED_OUT. When the Net-SNMP Perl modules are
+	built on Windows with MSVC or MinGW it is possible that each these
+	are linked with another version of the MSVC runtime library than
+	the Perl interpreter itself. In that case the "errno" variable used
+	inside .xs source files is another variable than the $! variable in
+	.pm files. Or: assignments to "errno" in a .xs file do not modify
+	the "$!" Perl variable This patch avoids using "errno" by modifying
+	the different constant() functions such that these return a
+	two-element array instead of returning a scalar and setting errno.
+
+    python:
+      - Avoid that an SNMP set with UseEnums enabled causes a segmentation
+	fault
+      - [PATCH 3433846]: Fix for use with python 2.4
+      - BUG: 3535967: Fix memory leak - snmp_{sess_}error allocates the
+	output buffer
+
+    testing:
+      - Add a test for se_store_list()
+      - Add testing/fulltests/default/T154dismanpingmib_simple
+      - Avoid false negative for T114agentxagentxtrap_simple caused by the
+	test result being present in the hex dump ("mostly_harmless")
+      - Convert snmplib/test_binary_array.c into two unit tests
+      - Fix Perl regression test failures All Perl regression tests pass
+	now on Linux and on Windows (MSVC).
+      - Make the asn1 test pass even if support for opaque types are
+	removed.
+      - Perl regression tests: Don't fail skipped tests.
+      - Protect the use of $OSTYPE to ensure that 'test' get enough
+	parameters.
+      - Remove an incorrect comment from simple_eval_tools.sh
+      - Remove unused variable
+      - Require a semicolon after OK(), OKF() and PLAN() Also, let OKF()
+	emit a single line of output such that all output it produces is
+	visible in the output of "make test".
+      - [BUG 3474590]: Don't match underscores within the source root
+	filename
+      - Add test cases for snmp_service
+
+    unspecified:
+      - Added CVFS (CentraVision File System) to hrStorageTable and
+	hrFSTable.
+      - Removed counter-64 error messages.   These messages do not say
+	enything useful, caller should check their return value and report
+	it.
+      - Added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
+      - [BUG 3444939]: BUG: 1796886: snmplib: Avoid that
+	sprint_realloc_octet_string() embeds unprintable control characters
+	or binary zeroes in its output. This behavior could cause truncated
+	output in snmptrapd.
+      - [BUG 3452069]: Fix snmptrap_oid declaration in mib2c generated code
+	This bug was introduced considerable time ago. It did already exist
+	at the time the 5.6 branch was created (see also commit
+	0ec088afa27cfda4e6ea78aae7cfc5507564edde).
+      - [BUG 3454168]: configure: Fix building with --enable-read-only
+      - [PATCH 3418649]: HOST-RESOURCES-MIB: Use pclose() instead of
+	fclose() to close a pipe.
+      - [BUG 3540621]: dist: Add missing Provides: to net-snmp-perlmods RPM
+	spec
+
+    BSD:
+
+    Bug 3152841:
+      - Do not install the util_funcs subheaders that were removed in 5.7
+      - Install util_funcs subheaders
+      - Install util_funcs subheaders introduced in 5.6
 
     Cygwin:
       - Make date_n_time() produce time zone information
-      - Fix get_uptime() / hrSystemUptime implementation
+
+    Cywin:
+      - Agent: Implement get_uptime() such that querying
+	HOST-RESOURCES-MIB::hrSystemUptime returns a non-zero value.
 
     FreeBSD:
-      - [PATCH 3489387]: Install FreeBSD 10 header file (plus other missing versions)
       - Restore IP_RECVDSTADDR functionality.
+      - Snmpd + apps: Sending UDP packets works again for non-root users
+      - [PATCH 3489387]: Install FreeBSD 10 header file (plus other missing
+	versions)
 
     Linux:
-      - [PATCH 3205811]: Option to skip fd/loop/ram devices in diskIOTable
-      - [PATCH 3525998]: Don't use an uninitialised value in error message
+      - PATCH: 3525998: Don't use an uninitialised value in error message
+      - [PATCH 3536420]: Ensure snd/rcv memory buffers are suitably aligned
+	Patch provided by Tyler Olmstead
 
     MinGW:
-      - Avoid "pragma comment" warnings in <net-snmp/net-snmp-config.h>
-      - Made regression test output independent of Windows registry settings
+      - Net-SNMP Perl modules build again.
+      - Support the directory structure of recent Shining Light OpenSSL
+	binary distributions
+      - Testing: Fix a race condition in the test framework
+      - Testing: Fix a race condition in the test runner
+      - Testing: Make test T130snmpv1vacmget_simple pass
+      - Testing: Make those regression tests pass for which SNMPCONFPATH
+	and/or SNMP_PERSISTENT_DIR matter
+      - Testing: Make unit-tests/T014gethostbyaddr_clib pass
+      - Testing: Make unit-tests/T102pdu_build_clib pass.
+      - Testing: Obtain the MSYS path from the environment
 
-    NetBSD:
-      - Update memory and CPU statistics handling
-
-    OpenBSD:
-      - Support updating the routing table
+    Win32:
+      - Avoid that compiling the header file <net-snmp/net-snmp-config.h>
+	with the MinGW gcc compiler triggers warnings about "pragma
+	comment".
+      - Avoid that the PACKAGE_* macros defined in
+	<net-snmp/net-snmp-config.h> cause trouble when including this
+	header in a package that uses the GNU autotools.
+      - Building: Builds now correctly with a 64-bit compiler. git-svn-id:
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@1
+	9458 06827809-a52a-0410-b366-d66718629ded
+      - Snmpd: Remove dlmod
 
     Windows:
-      - Avoid problems if Net-SNMP Perl modules are built with a different
-	version of Microsoft Visual Studio than that used for ActivePerl
-      - Avoid problems with PACKAGE_* macros when using GNU autotools.
-      - Now builds correctly with a 64-bit compiler.
-      - build.bat: Generate PDB files in release mode.
-      - build.bat: Install netsnmp.dll before running Perl regression tests
-      - Deprecated libsnmp.def - use NETSNMP_IMPORT instead
-      - Fix winExtDLL compiler warnings (following u_long oid typedef)
-      - Make linking with recent OpenSSL binaries succeed.
-      - Make netsnmp_large_fd_set_resize() robust against memalloc failures.
-      - Perl modules build now with IPv6 enabled.
-      - Snmpd: Remove dlmod
+      - Building (build.bat): Install netsnmp.dll before running the Perl
+	regression tests such that the regression tests are run with the
+	correct version of netsnmp.dll.
+      - MSVC: Avoid that the typedefs in <net-snmp/net-snmp-config.h>
+	conflict with those in <stdint.h> from the msinttypes project
+      - MSVC: Link with proper libeay32 library
+      - MSVC: When linking with OpenSSL, link with user32.lib too
+      - Make netsnmp_large_fd_set_resize() robust against memory allocation
+	failures. Make NETSNMP_LARGE_FD_ZERO() use memset() on Unix systems
+	instead of an explicit loop. Make sure that on Unix systems
+	netsnmp_large_fd_clr() doesn't try to read memory it isn't allowed
+	to read if the first argument equals -1 (a value that shouldn't be
+	passed by the caller). Make netsnmp_large_fd_is_set() return false
+	on Unix systems if the first argument equals -1 (a value that
+	shouldn't be passed by the caller). Make
+	netsnmp_large_fd_set_resize() shrink behavior correct.
+      - Perl (build.bat): When installing development files, install the
+	PDB files too.
+      - Remove superfluous link libraries from project files (*.dsp)
       - Snmptrapd: Make the IP address to hostname conversion work
+      - Testing: perl: Fix an incorrect message printed while running the
+	Perl module regression tests
 
 
-*5.6.1*
 
-    general:
-      - Upgraded DTLS support from alpha to full; mention that tsm is
-	needed for TLS too
 
+*5.7.1*
+
+    snmplib:
+      - Fix a crash that could be
+      - tweak patch 3044888 to restore
+
+    snmpd:
+      - [PATCH 3386633]: fix integer overflow in disk percent calculations
+      - Make
+      - Restore storage tables on Linux
+      - run signal handlers when select()
+
+    snmptrapd:
+      - Add missing newline
+      - Invoke shutdown_perl() when
+
+    building:
+      - [PATCH 3383951]: Fix -Wunused compile warnings with FreeBSD/NetBSD
+	Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+      - build fix
+      - build fix for systems lacking
+
+    libnetsnmp:
+      - [PATCH 3387139]: from
+
+    man:
+      - [PATCH 3312861]: Man pages
+
+    testing:
+      - Changed
+      - Check PID file existence after having read it instead of before.
+	This fixes the race condition where the PID file disappeared after
+	the existence check and before it was read.
+      - Make the SNMP_VERBOSE=1 output even more verbose.
+
+    unspecified:
+      - minor NEWS polish
+
+    Perl:
+      - Remove file perl/NetSNMP.xs
+
+    Win32:
+      - Add support for
+      - Document how to build 64-bit
+      - Documented how to use build.bat with
+      - winExtDLL: Invoke
+
+    Windows:
+      - Avoid that if
+      - Remove outdated instructions about
+
+*5.7*
     snmplib:
       - Added function netsnmp_delete_table_data_set().
       - Added function netsnmp_delete_table_data_set(). Added declaration
@@ -123,20 +631,39 @@
       - Added function netsnmp_delete_table_data_set(). Added declaration
 	for the function netsnmp_table_data_delete_table() in a public
 	agent header file. Fixed memory leak in
-	netsnmp_table_data_delete_table(). (Backported r19450 and r19454
-	from trunk.)
+	netsnmp_table_data_delete_table().
+      - Added function netsnmp_delete_table_data_set(). Added declaration
+	for the function netsnmp_table_data_delete_table() in a public
+	agent header file. Fixed memory leak in
+	netsnmp_table_data_delete_table(). Fixed memory leak triggered by
+	unregistering a table handler.
       - Added macro netsnmp_static_assert().
+      - Added netsnmp_mib_handler.data_clone, a function pointer that
+	defines how to clone netsnmp_mib_handler.myvoid. Must be defined if
+	and only if data_free is set. The function netsnmp_handler_dup()
+	does now clone MIB handler private data if data_clone() is set.
+	Previously after duplicating a MIB handler and unregistering one of
+	the two MIB handlers, the private data pointer (myvoid) of the
+	other became a dangling pointer. Note: addition of
+	netsnmp_mib_handler.data_clone is an ABI change.
       - Added snmp_sess_session_lookup().
+      - Added the function netsnmp_check_definedness(), which helps to find
+	the cause of undefined value errors as reported by Valgrind.
       - Avoid that Valgrind complains about uninitialized data for the
 	buffers returned by netsnmp_callback_recv() and
 	netsnmp_callback_hook_build().
       - Be const correct over calls to str* functions.
       - Changed the argument type of debug_register_tokens() from char *
-	into const char *. (Backported r19665 and r19666 from the trunk.)
+	into const char *.
+      - Check that the argument to netsnmp_transport_copy is non-NULL
       - Check the return value of strdup in netsnmp_create_data_list and
 	fail if strdup fails.
       - Correct the extern "C" declarations to be consistent. Remove
 	commented out code.
+      - Fenner: fix sending of UDP responses from multihomed agents. Try to
+	send the response as it was before Net-SNMP 5.6 (assuming the
+	appropriate request was unicast) and only if it fails try to set
+	if_index (the request must be broadcast).
       - Fixed bugs in asn_parse_unsigned_int64(),
 	asn_build_unsigned_int64(), asn_parse_signed_int64() and
 	asn_build_signed_int64(). Most but not all of these bugs were
@@ -161,24 +688,101 @@
 	by the (undocumented) snmpd.conf "enum" keyword handler - storing
 	pointers to strings allocated on the stack in a global list does
 	not work.
-      - Invoking se_clear_slist() does no longer create a dangling pointer.
-	Fixed leaks-at-exit triggered by using the snmp_enum code.
-	Documented behavior of se_add_pair(), se_add_pair_to_slist() and
-	clear_snmp_enum(). Made snmp_enum example consistent with the rest
-	of the code by adding strdup() calls and added a call to
-	se_clear_all_lists(). Fixed a memory corruption problem triggered
-	by the (undocumented) snmpd.conf "enum" keyword handler - storing
-	pointers to strings allocated on the stack in a global list does
-	not work. 
+      - Remove the support for CMU compatibility since there is no way to
+	enable it and nobody have missed it.
+      - [BUG 3134323]: Fix crash when comparing invalid OIDs
+      - [PATCH 3165878]: Catch buffer overrun on 64-bit systems
+      - [PATCH 3195537]: Minor binary_array container sort optimization
+      - [PATCH 3203806]: Add the function netsnmp_large_select().
+      - [PATCH 3203806]: Make netsnmp_large_fd_set_resize() clear all
+	relevant file descriptors.
+      - [PATCH 3203806]: Minor performance optimization of
+	netsnmp_large_fd_set_resize().
+      - add IPv6 support to DTLSUDP transport
+      - add IPv6 support to DTLSUDP transport use new
+	netsnmp_sockaddr_storage in netsnmp_addr_pair
+      - add IPv6 support to DTLSUDP transport use new
+	netsnmp_sockaddr_storage in netsnmp_addr_pair add base_transport
+	ptr for tunneled transports
+      - add more openssl error cases where we check for local cert
+      - add new transport config tokens localCert/peerCert, deprecate
+	our_identity, their_identity
+      - add optional support for local DNSSEC validation of hostnames	-
+	optional at configure time: --with-local-dnssec-validation -
+	requires DNSSEC-Tool validation libraries - initial support, for
+	systems with getaddrinfo. support for additional resolver
+	interfaces coming soon. - also TODO: flag for ignoring validatoin
+	errors (log & continue)
+      - dont return empty array
       - force a ; at the end of the static_assert macro.
+      - introduce new localCert/peerCert, deprecate serverCert, clientCert,
+	defX509ServerPub, defX509ClientPub
       - netsnmp_handler_dup(): freeing the duplicated handler no longer
 	causes a crash (double free) when handler->myvoid of the original
 	handler was non-NULL.
+      - realloc+init instead of calloc inspired by patch 3195532 from
+	Stephen Hemminger
+      - refine cert debugging; remove unused function
+      - remove inline versions of container funcs
+      - snmp_shutdown(): added call to netsnmp_certs_shutdown().
+      - 0 Applied the intent of patch 3044888 to allow applications to read
+	the error messages of a MIB parsing failure.
+      - Fixed a memory leak in snmp_free_session().
+      - [BUG 3184697]: Don't reference internal MD5 when it's explicitly
+	disabled
+      - [BUG 3234754]: Ensure old f_create_from_tstring hook is initialized
+	to NULL
+      - [BUG 3264852]: Recognise missing report types
+	(snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers)
+      - _mibindex_add() no longer reads past the end of the dynamically
+	allocated array _mibindexes.
+      - [BUG 3151845]: fix multiple registrations of snmp transport handler
+
+    snmp:
+      - patch: 3096725: sysORTable registation for notification log mib
+	original patch fixed several issues, other parts applied earlier
 
     snmpd:
-      - Patch 3141462: from fenner: fix agentx subagent issues with
-	multiple-object requests
-      - Patch from Niels to fix VACM persistant storage.
+      - Add missing function declaration
+      - Added functions netsnmp_handler_owns_tabreq(),
+	netsnmp_registration_owns_tabreq(), netsnmp_iterator_clone().
+	Exported netsnmp_table_registration_info_clone().
+      - Added functions netsnmp_handler_owns_tabreq(),
+	netsnmp_registration_owns_tabreq(), netsnmp_iterator_clone().
+	Exported netsnmp_table_registration_info_clone(). Modified
+	netsnmp_iterator_delete_table() such that it frees the table
+	registration information stored in a table iterator too. Modified
+	netsnmp_get_table_iterator_handler() such that the table iterator
+	passed to this function is freed when the associated handler is
+	freed. Restored the behavior of netsnmp_get_table_handler() to that
+	of r19449, that is, not setting up the data_free pointer because
+	not all callers of netsnmp_get_table_handler() expect that table
+	registration information is freed when the associated handler is
+	freed.
+      - Added netsnmp_get_table_iterator2().
+      - Added netsnmp_get_table_iterator2(). Added
+	netsnmp_register_table_iterator2().
+      - Added netsnmp_get_table_iterator2(). Added
+	netsnmp_register_table_iterator2(). Added
+	netsnmp_handler_owns_iterator_info().
+      - Added netsnmp_get_table_iterator2(). Added
+	netsnmp_register_table_iterator2(). Added
+	netsnmp_handler_owns_iterator_info(). Fixed leak-at-exit triggered
+	by snmpNotifyTable.
+      - Added netsnmp_get_table_iterator2(). Added
+	netsnmp_register_table_iterator2(). Added
+	netsnmp_handler_owns_iterator_info(). Fixed leak-at-exit triggered
+	by snmpNotifyTable. Fixed leak-at-exit triggered by
+	snmpTargetAddrTable. Also, restored backwards compatibility of
+	netsnmp_register_table_iterator().
+      - Added netsnmp_register_watched_instance2(),
+	netsnmp_register_watched_scalar2(), netsnmp_clone_watcher_info()
+	and netsnmp_owns_watcher_info(). See also the Doxygen comments for
+	more info.
+      - Added netsnmp_unregister_auto_data_table().
+      - Added reference count in the netsnmp_baby_steps_modes data
+	structure and made sure that this data structure is automatically
+	freed when the handler that owns it is unregistered.
       - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
 	shutdown_agent() during shutdown.
       - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
@@ -203,10 +807,69 @@
 	such that it never examines sessions that already have been closed.
 	It is for this change that it was necessary to introduce the new
 	function snmp_sess_session_lookup().
+      - Added the functions netsnmp_duplicate_variable() and
+	netsnmp_cache_handler_owns_cache().
+      - Added the functions netsnmp_duplicate_variable() and
+	netsnmp_cache_handler_owns_cache(). Memory allocated by
+	netsnmp_register_old_api() for storing SNMP variables is now freed
+	when the associated handler is unregistered.
+      - Added the functions netsnmp_duplicate_variable() and
+	netsnmp_cache_handler_owns_cache(). Memory allocated by
+	netsnmp_register_old_api() for storing SNMP variables is now freed
+	when the associated handler is unregistered. Callback function data
+	deallocation does no longer free the memory allocated for the
+	AgentX session - the memory that was allocated for AgentX sessions
+	is now deallocated just as that for any other session. This fixes a
+	leak-at-exit.
+      - Added the functions netsnmp_duplicate_variable() and
+	netsnmp_cache_handler_owns_cache(). Memory allocated by
+	netsnmp_register_old_api() for storing SNMP variables is now freed
+	when the associated handler is unregistered. Callback function data
+	deallocation does no longer free the memory allocated for the
+	AgentX session - the memory that was allocated for AgentX sessions
+	is now deallocated just as that for any other session. This fixes a
+	leak-at-exit. Notify filter table: Callback function data
+	deallocation does no longer free the data in *	  
+	*snmpNotifyFilterTable_if_ctx.container - this is now done by  
+	shutdown_snmpNotifyFilterTable() and
+      - Automatically free the private data structure allocated by
+	netsnmp_container_table_handler_get().
+      - Builds with most recent MinGW (having #define localtime_r).
+      - Count the number of users of a netsnmp_cache data structure instead
+	of duplicating it.
+      - Declare the OID argument type of MIB registration functions as
+	'const oid *' instead of 'oid *' since these functions do not
+	modify the OID.
+      - Do not leak the limits of scalar_group objects on shutdown.
+      - Extend the documentation for data_clone and data_free
+      - Factor out common config_add_mib statments
+      - Find out whether librpm is available before configuring the agent
+	modules because host/data/access/swinst needs symbol HAVE_LIBRPM.
+	As a result, configure has to be run only once instead of twice to
+	enable the hrSWInstalled table on systems that have librpm.
       - Fixed a double free at exit that was triggered by cleaning up the
 	data structures used for embedded Perl support.
-      - Fixed order of rpmlib detection and agent module configuration
-	(backported r19621 from trunk).
+      - Fixed a year-2038 bug in the implementation of ipRouteTable.
+      - Introduced netsnmp_pid_t.
+      - MIB-specific leak-at-exit fixes.
+      - Make it possible to copy watched data items without memory leaks.
+      - Make the setting of the argvrestart* variables optional on
+	USING_UTIL_FUNCS_RESTART_MODULE.
+      - Make the setting of the argvrestart* variables optional on
+	USING_UTIL_FUNCS_RESTART_MODULE. Remove util_funcs/restart from the
+	requirement sets of util_funcs and default_modules.
+      - Make the setting of the argvrestart* variables optional on
+	USING_UTIL_FUNCS_RESTART_MODULE. Remove util_funcs/restart from the
+	requirement sets of util_funcs and default_modules. Add
+	util_funcs/restart to the requirement set of ucd-snmp/versioninfo.
+      - Patch 3141462: from fenner: fix agentx subagent issues with
+	multiple-object requests
+      - Patch from Niels to fix VACM persistant storage.
+      - Remove unused variable cmp
+      - Remove util_funcs/Exit from the requirement sets of util_funcs and
+	default_modules.
+      - Remove util_funcs/Exit from the requirement sets of util_funcs and
+	default_modules. Never use Exit to terminate the agent.
       - Removing the last cache via netsnmp_cache_remove() does no longer
 	trigger a crash.
       - Update the length of sysObjectID as well as the data when it is set
@@ -218,26 +881,54 @@
       - [BUG 3058101]: Writeable 'long' instances work on 64-bit systems,
 	but not writable 'int's
       - [BUG 3062538]: Fix com2sec* handling of non-default contexts
+      - [BUG 3205765]: handle reconfig for certSecName token
       - [BUG ]: enforce max length on TLS secName maps
+      - [BUG ]: enforce max length on TLS secName maps add priority to
+	secname debugging
       - [PATCH 2119725]: Fix skipNFSInHostResources handling of
 	hrStorageTable
+      - [PATCH 2941811]: Handle successful requests with reqID 0
+      - [PATCH 2975254]: Avoid callback re-use of closed sessions Qn:
+	Should this also be applied when main session is NULL?
       - [PATCH 3053436]: from: takevos: fix: tcpConnectionTable_data_access
 	invalid memory access
       - [PATCH 3057090]: make ethtool support on linux use the high speed
 	struct info for 100G+.
+      - [PATCH 3057093]: allow linux to use libpci for creating useful
+	ifDescr strings
       - [PATCH 3096725]: Don't register v1Trap callback, if SNMPv1 is not
 	supported
       - [PATCH 3096725]: Include SNMPv1 trap OIDs in nlmLogNotificationID
 	column
+      - [PATCH 312596]: listen for netlink change events for the
+	arp-related tables
+      - [PATCH 3152412]: Handle (and report) problems reading /proc/vmstat
+      - [PATCH 3203806]: Avoid that the main agent processing loop - when
+	using more than FD_SETSIZE file descriptors - can cause memory
+	corruption by invoking select().
+      - [PATCH ]: optimizations for large route tables from Stephen
+	Hemminger applied parts 1-3 of 4 from him (msgs to coders on
+	2/28/11; subject ip-forward-mib performance improvements; part 4
+	needs more work
       - add debug for cert find hint as string/int
-      - add debug for ssl ciphers, clarify fingerprint match debug
+      - add newly created/destroyed interfaces to ipv6IfTable The list of
+	interfaces was never refreshed, now it is reloaded every time the
+	table is accessed. I've also fixed a memory leak and optimized the
+	loading of the list a bit.
       - com2sec6 directive: If configure has not found getaddrinfo(),
 	non-numeric IPv6 addresses do now trigger an error message.
-	(Backported r19650.)
-      - don't second-guess cache handler   (waves hand) this is not the
+      - don't second-guess cache handler (waves hand) this is not the
 	function you are looking for. netsnmp_cache_is_valid() is not meant
 	for mib modules
+      - example MIB: Added shutdown function that frees all memory owned by
+	this MIB implementation.
       - fix double free in TLS error handling
+      - fixed the agent writing 'looks like a 64bit wrap, but prev!=new' in
+	syslog when computing ipSystemStats Without the memcpy,
+	prev_vals->stats and new_vals->stats could get different, which
+	could much much later (when a counter gets bigger than 32 bits)
+	result in 'prev!=new' message in syslog. Typically this happens
+	after long time of uptime and it is very hard to reproduce.
       - host/data_access/swinst_rpm: Fixed a memory leak in
 	netsnm_swinst_arch_init().
       - host/data_access/swinst_rpm: Pass correct path to rpmdbOpen() such
@@ -249,17 +940,41 @@
 	inits to new agent cert init function, called from init_agent.
       - netsnmp_cache_free(): A more detailed message is now logged when
 	attempting to free a cache that is still in the cache list.
-	(Backported r19524.)
+      - reworked hrStorageTable to support large filesystems. The
+	hrStorageAllocationUnits does not report real allocation unit size,
+	but some calculated value so hrStorageAllocationUnits *
+	hrStorageSize gives real size of the filesystem. This calculation
+	happens only when hrStorageSize is too small (32bits) for
+	filesystem size, e.g. filesystems larger than 8TB with 4096 bytes
+	block size. This calculation can be turned off by
+	'realStorageUnits' config option.
+      - skip non-AF_INET interfaces when loading ipv4 addrs
       - snmpd is again single-threaded. [PATCH 2959811]: Safranek:
 	Reimplement Linux Netlink IPv6 prefix listener.
-      - use cache-unique id instead of handler name for shared cache reload
-	protection
-      - Patch from Claus Klein to fix engineid generation on outgoing v3
-	traps from the agent
-      - add newly created/destroyed interfaces to ipv6IfTable	The list of
-	interfaces was never refreshed, now it is reloaded every time the
-	table is accessed. I've also fixed a memory leak and optimized the
-	loading of the list a bit.
+      - Fixed memory leak in TCP-MIB tables introduced by patch #3053436.
+      - Fixed memory leak in TCP-MIB tables introduced by patch #3053436."
+	[PATCH 3053436]: from: takevos: fix: tcpConnectionTable_data_access
+	invalid memory access" the bug 3053436 is fixing was introduced in
+	r17719, and fixed in r17861.
+      - Use proper format specifier in debug statements for printing values
+	of type 'oid'.
+      - [PATCH 3066862]: fix the agent for comparing unsigned large indexes
+	of the disk and extend tables.
+      - fixed hrSWRunPath of swapped-out processes on Linux.   fgets()
+	returns NULL both when /proc/PID/cmdline is empty (= swapped out)
+	and when the process exited after fopen(), so check
+	/proc/PID/status in both cases.
+      - fixed race condition in hrSWRunTable Treat the reads from
+	/proc/<pid>/* carefuly, processes can exit in the middle of
+	processing. (already fixed in V5-5-patches and V5-4-patches in SVN
+	rev. 20115, dunno why I did not patch trunk)
+      - patch 3131397: from takevos: huge speedups of the TCP/UDP Tables
+      - patch 3299384: fix INFORMs so they retry probing for an engineID.
+      - patch 3306476: from tinypyramids: fix memory leak in the swrun
+	container loading
+      - ucd_snmp builds again on MinGW and Cygwin.
+      - patch 3310250: from fenner: misc fixes for debugging output of
+	agentx
 
     snmptrapd:
       - Fixed a double free at exit that was triggered by cleaning up the
@@ -276,22 +991,93 @@
 	__select_nocancel (in /lib64/libc-2.11.2.so) by 0x404E20: main
 	(snmptrapd.c:1258)
 
-    snmpinform:
-      - fix contextEngineIDs for outgoing informs from snmpinform to
-        be the local engineID
+    apps:
+      - [PATCH 3054817]: Adds per-variable timed output support to snmpwalk
+	using -CT
+      - add snmp.conf tokens for timeouts and retries
 
     build:
       - [BUG 3088360]: Ensure python modules are built against the correct
 	libraries
 
     building:
+      - Fix --with-security-modules handling Allow repeated modules
+	(tsm,tsm) as well as defailt modules (usm) Move the generation of
+	the files after the checking
+      - Make it possible to regenerate using autoconf 2.68.
       - Some systems do not support the -E flag to grep, use autoconf to
 	find the right egrep at all times.
+      - check for /dev/kmem instead of assuming it exists and hardcoding
+	when it is not there
+
+    libnetsnmp:
+      - made the SSH transport configurable as it should be.
+
+    libnetsnmpmibs:
+      - Make all functions in the dlmod module that don't have to be public
+	static
+
+    mib2c:
+      - [PATCH 3175323]: Fix handling of 'while (false)' blocks
+      - [PATCH 3204883]: Fix handling of non-table objects named fooTable
+      - [PATCH 3211484]: Support enumerations in notification varbinds
+      - make the mib2c foreach ranges work as advertised in the comments.
+
+    packaging:
+      - Enable micro-and-macro-feature management within Net-SNMP; this
+	adds a number of new flags to configure (--enable-minimalist and
+	--enable-read-only). These changes are designed to remove much of
+	the inline code that isn't always necessary or desired. Scripts
+	exist (and will be improved) to stip out unused components from the
+	code entirely to enable a shorter review process for upgrading to
+	new releases. This work was done by Wes Hardaker and Michael Baer
+	from SPARTA, Inc. but is being checked in as a large patch since
+	converting the micro patches from git to svn turend out to be
+	impossible
+
+    patch 3140833:
+      - fix proxy GETNEXT requests When OIDs requested are below the proxy
+	request remap, we need to not include any OIDs that might be in the
+	space between the original OID and the remapped OID. This patch
+	fudges the request so that it fixes the request OID so it's just
+	before the remapped proxy range.
+
+    patch 3184026:
+      - Avoid constant refresh of interface statistics
 
     perl:
-      - 0 patch 3049029: from fennec: fix a memory leak with snmp bulkwalks
+      - patch 3049029: from fennec: fix a memory leak with snmp bulkwalks
+      - patch from Martin Buck: don't always open stderr as the calls to
+	snmp_log already do this and it messes up the agent when embedded
+
+    python:
+      - [PATCH 3185085]: Fix segfault on 64-bit systems
+      - [BUG 3295407]: Fix handling of void pointer
 
     testing:
+      - Add missing preconditions
+      - Added function netsnmp_delete_table_data_set(). Added declaration
+	for the function netsnmp_table_data_delete_table() in a public
+	agent header file. Fixed memory leak in
+	netsnmp_table_data_delete_table(). Fixed memory leak triggered by
+	unregistering a table handler. Unit tests can now invoke functions
+	from libagent.
+      - Added function netsnmp_delete_table_data_set(). Added declaration
+	for the function netsnmp_table_data_delete_table() in a public
+	agent header file. Fixed memory leak in
+	netsnmp_table_data_delete_table(). Fixed memory leak triggered by
+	unregistering a table handler. Unit tests can now invoke functions
+	from libagent. Added unit test for table_dataset.
+      - Added inet_ntop() and inet_pton() unit test.
+      - Added netsnmp_mib_handler.data_clone, a function pointer that
+	defines how to clone netsnmp_mib_handler.myvoid. Must be defined if
+	and only if data_free is set. The function netsnmp_handler_dup()
+	does now clone MIB handler private data if data_clone() is set.
+	Previously after duplicating a MIB handler and unregistering one of
+	the two MIB handlers, the private data pointer (myvoid) of the
+	other became a dangling pointer. Note: addition of
+	netsnmp_mib_handler.data_clone is an ABI change. added more test
+	cases to the handler registration test.
       - Generate a normal #line directive as per C99 instead of the
 	compiler-specific #<n>-directive.
       - Introduced new test type next to capp and clib: cagentlib.
@@ -303,23 +1089,32 @@
 	DYNAMIC_ANALYZER="valgrind --trace-children=yes --leak-check=full";
 	cd testing && ./RUNFULLTESTS -g unit-tests)
       - Test 71 (com2sec6_simple) does now succeed even if IPv6 DNS
-	resolution is not available. (Backported r19648.)
+	resolution is not available.
       - Test T030 does now pass on MinGW.
-      - Unit tests can now invoke functions from libagent.
-      - Unit tests can now invoke functions from libagent. Added unit test
-	for table_dataset. (Backported from r19450 from the trunk.)
+      - auto-create user specified SNMP_TMPDIR and SNMP_TMP_PERSISTENTDIR
+	too; default SNMP_TMP_PERSISTENDIR based on SNMP_TMPDIR for user
+	specified SNMP_TMPDIR
 
-    unspecified:
+    man:
+      - [BUG 3190725]: Document snmp{,_sess}synch_response and
+	snmp_async_send
+
+    Generic:
+      - Make it possible to build static applications using net-snmp-config
+	and the -*libs flags once more.
       - [BUG 3102904]: All Net-SNMP C source files are now compiled with
 	-fno-st rict-aliasing, at least if the configured compiler supports
 	this flag.
       - [PATCH 3074918]: from weizheng: check for CONTAINER_INSERT failures
 	and react appropriately to avoid memory leaks
+      - [PATCH 3167325]: from krisztoforo: UCD-SNMP/SystemStats: add
+	variables to report cpusteal, cpuguest, cpuguestnice
 
     Cygwin:
 
     Linux:
       - [PATCH 3083027]: Fix RPM spec file to support CentOS
+      - [PATCH 3205811]: Option to skip fd/loop/ram devices in diskIOTable
       - agent: ipNetToPhysicalTable: Do not log an error message if one or
 	more interfaces are present that do not have such information
 	(NUD_NOARP), e.g. tunnels. Reported by Stephen Hemminger. See also
@@ -327,30 +1122,54 @@
       - snmpd is again single-threaded.
 
     MinGW:
+      - Made regression test output independent of the Net-SNMP variables
+	defined in the Windows registry. Some tests that failed previously
+	after the Net-SNMP binaries (MSVC build) had been installed do now
+	pass.
       - configure: Detection of the functions gai_strerror(),
-	getaddrinfo(), gethostname() and gethostname() does now succeed.
-	(Backported r19646 from the trunk.)
+	getaddrinfo(), gethostbyname() and gethostname() does now succeed.
       - testing: If the agent has been asked to stop, wait until the snmpd
 	process disappeared before proceeding.
+      - Tests 025 and 026 pass on MinGW even if winExtDLL has been enabled.
+
+    NetBSD:
+      - DragonFly support [From NetBSD patch archive]
+
+    OpenBSD:
+      - Update SWRun code to use kvm_getproc2 [From OpenBSD patch archive]
 
     Win32:
       - Avoid that MSVC reports a warning message about redefinition of the
 	malloc() macro during building the Net-SNMP source code.
+      - Deprecated libsnmp.def - add NETSNMP_IMPORT to function
+	declarations instead to export a function from netsnmp.dll.
+      - Guard netsnmp_udp_recvfrom() etc. declarations consistently. Builds
+	with Visual Studio 2010.
+      - Introduced netsnmp_pid_t. Eliminated casts between int and HANDLE
+	in agent/mibgroup/util_funcs.c and
+	agent/mibgroup/ucd-snmp/pass_persist.c.
       - When snmpd.exe is started in a command prompt window, the snmpd
 	process now stops upon the first key press. This makes it easier to
 	debug snmpd.exe for memory leaks.
       - [PATCH 3085187]: Building via the Microsoft Visual Studio project
 	file (.dsw/.dsp) works again.
+      - [PATCH 3293842]: Eliminate registry argument limit of 127
+	characters (this limitation was reported by Sylvain Dery).
       - building: Avoid that MSVC 2010 prints a warning message about
 	redefining EADDRINUSE.
       - building: Builds now correctly with a 64-bit compiler.
       - building: batch build with OpenSSL enabled and with recent OpenSSL
 	development files works again.
-      - shutdown_snmpNotifyFilterTable() and shutdown_winExtDLL() are now
-	invoked when the Net-SNMP service is stopped. (Partially backported
-	r19515 from the trunk.)
+      - header file <net-snmp/net-snmp-config.h> can now be used in the
+	MinGW environment.
       - testing: Avoid that T200 fails on known Microsoft SNMP extension
 	DLL bugs.
+      - Build snmplib/transports/snmpIPv6BaseDomain.c only if
+	NETSNMP_ENABLE_IPV6 has been defined.
+      - Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation
+	of the MIB-II ipNetToMediaTable.
+      - Microsoft Visual Studio: Link with gdi32.lib if OpenSSL has been
+	enabled because gdi32.lib is a dependency of OpenSSL.
 
 *5.6*
 
@@ -1623,6 +2442,7 @@
       - [PATCH 1600453]: OS X compile-time endian determination
       - [PATCH 1600522]: CPU HAL implementation for mach/darwin
       - Improve memory reporting (patch from Apple)
+      - Patch: 3514049 from twobits-github: fix compilation on darwin11
 
     Solaris:
       - [BUG 1626153]: No hrSWRun informations on Solaris zones
diff --git a/ChangeLog b/ChangeLog
index 79f948b..4651c14 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,3843 @@
+# -*- text -*-
+
 ----------------------------------------------------------------------
 
-Changes: V5.6.1 -> V5.6.2
+Changes: V5.7.3.pre4 -> V5.7.3.pre5
+
+commit f3f371b276d265b455fc490fce1947dadf89e9c2
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 8 19:49:06 2014 -0700
+
+    make depend for 5.7.3.pre5
+
+commit 418132f43cc43231966a8b9672c626f60b991039
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 8 14:24:52 2014 -0700
+
+    fix the run-autoconf program
+
+commit 7db795949075efb489373f51f706636fe54a9835
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 8 14:24:52 2014 -0700
+
+    fix the run-autoconf program
+
+commit 78f1ef816ddad08e7d7c9e1b11e4b4ab26f6e4b0
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 8 13:28:47 2014 -0700
+
+    used the right autoconf
+
+commit 1eaeac801a3625b72b09c7da58038409cd8dc681
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 8 13:26:11 2014 -0700
+
+    Version number update: 5.7.3.pre5
+
+commit 7ecfd3ede19e9c2218c9bf5959c095ce9fa6c8ab
+Author: Brian Sipos <bsiposrkf@users.sourceforge.net>
+Date:   Wed Aug 6 10:30:54 2014 -0700
+
+    Fix detection of sha224 and sha384, patch from Brian Sipos
+    
+    https://sourceforge.net/p/net-snmp/bugs/2564/
+    
+    Luckily nobody's needed to build using an OpenSSL version
+    that doesn't support sha224 or sha384, since the inversion
+    of the test here would try to use sha224/sha384 support only
+    on OpenSSL versions that don't support them!
+
+commit a93991eaf53b199b19c582b630da25158300a9d1
+Author: Robert Story <rstory@localhost>
+Date:   Fri Aug 1 10:07:45 2014 -0400
+
+    fix #2482 snmp response: Too long
+
+commit 9f41d30b09e7c85b8268103ca320ac6cc32d5b04
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Jul 26 08:28:43 2014 +0200
+
+    Fix bug 2546: netsnmp_tdomain_transport_full uses wrong port for snmptrap + udp6
+
+commit db1f217541e00b53813d94f6befb9a42d4838e95
+Author: Jeff Gehlbach <jeffg@opennms.org>
+Date:   Fri Jul 25 16:11:23 2014 -0400
+
+    Fix bug 2562: Windows x64 build broken on 5.7.3.pre4
+
+commit 9741f08e75b4162bb3c8b449279f182d949da373
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Thu Jul 24 08:10:40 2014 -0400
+
+    Use the standard expr ":" syntax
+
+----------------------------------------------------------------------
+
+Changes: V5.7.3.pre3 -> V5.7.3.pre4
+
+commit 864abb5ba1eb324e423157db5fb1723f855973b2
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 23 15:07:41 2014 -0700
+
+    make depend for 5.7.3.pre4
+
+commit 5fc8f99c9f77ddadeeacedae7f06fea1767d4a9f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 23 15:02:19 2014 -0700
+
+    fix C++ style comment
+
+commit 54a4a90a5529ea58add9e6af6a7e8ad065440828
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 23 14:49:41 2014 -0700
+
+    Version number update: 5.7.3.pre4
+
+commit c0d66826b71f05403f36c7f8234ff8f7ecbd1590
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Tue Jul 22 06:49:28 2014 -0700
+
+    When enlarging a large_fd_set, use FD_ZERO if possible
+    
+    The most common case of creating a large_fd_set on UNIX
+    is to create it with size zero, and then immediately enlarge
+    it to size FD_SETSIZE.  Instead of looping and calling
+    FD_CLR(), we can optimize this common case with the OS's
+    FD_ZERO.
+
+commit dcad31aeb442369a6fb52f4dc7d4f781bc56006c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 17 23:40:13 2014 +0200
+
+    Solaris does not like "grep -E" or "if !".
+    Propagate configures EGREP to man/Makefile.in and also used configured SED.
+
+commit a51cbedf7d1d424342ab5ca3a4b67217a364409a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jul 15 21:45:54 2014 +0200
+
+    snmpnetstat/if.c: properly detect snmp exceptions
+
+commit eee92519f38e937f227bea7701ddb1157c8bcccc
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Tue Jul 15 07:27:18 2014 -0700
+
+    Close pipes when freeing config and kill child process on error
+    
+    When freeing the config, close the pipes corresponding to that
+    config, so they don't get leaked.  Also, if we have an error,
+    send a SIGKILL to the child process in case it is blocked and
+    won't die just because we closed the pipes to it.
+
+commit 8431f913554e0cccc48bedce1fd4a8a288b6c27d
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Tue Jul 15 07:19:33 2014 -0700
+
+    If the asp lookup returns NULL, don't try to use it
+    
+    If there is no corresponding asp, we set the result properly
+    but still fall through and attempt to use it.  Instead, just
+    continue.
+
+commit 146fa384d8b05e1e5a2c67f88d0eca0a304fa1f0
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Mon Jul 14 15:26:14 2014 -0700
+
+    Fix dependencies for auto-generated man pages
+    
+    Also make sure that the auto-generated .so files are listed
+    in the right Makefile variables, and update the variables
+    to include the ones that had been left out already.
+
+commit 4431728cf7a0950aed293d48c02e69000f5b83e8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jul 13 03:07:21 2014 -0700
+
+    AIX: Fix more compiler warnings
+    
+    Avoid that the compiler complains about casting away const, about
+    unused variables or functions, about missing function prototypes
+    and also avoid that the compiler complains that the type of the
+    third argument of mntctl() is wrong.
+
+commit 42a65f11e3ed56963f78a5c1561edd67658ccd00
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jul 13 09:47:26 2014 +0200
+
+    Remove C99 length specifier 'z' and use a cast instead
+    
+    See also commit b4eab11139eb122c9ad3c13ab8b9453e04e46842.
+
+commit 35d0f59cdd8894b8fbbad65370b5e301e377a37f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jul 11 21:26:33 2014 +0200
+
+    Updated DOCS-IF-MIB reference
+
+commit 7a4d2ea2b3e163fdd98f067ae440faa3152c80c6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jul 11 21:25:27 2014 +0200
+
+    Updated IANA mibs
+
+commit 01b3b6646413c14a050742726b97cf308b8fe09b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jul 9 23:51:27 2014 +0200
+
+    Add RFC 7257 vpls mibs
+
+commit b0be1d8ad2ccbcaa29ffc7cf884d02438c4c1665
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jul 9 23:50:21 2014 +0200
+
+    adjust debug token for netsnmp_sockaddr_in6_2
+
+commit 9920e9e767b10f029ab4b020e8259676d1a32b2f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jul 8 10:25:22 2014 +0200
+
+    AIX: Suppress a configure warning
+    
+    Avoid that the 'sort' command complains during the configure process
+    that its input is not terminated by a newline. See also commit
+    a63e381d9c1c9c87210bf2b022e3d6ac71d27a7e.
+
+commit b4eab11139eb122c9ad3c13ab8b9453e04e46842
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jul 7 14:04:45 2014 -0700
+
+    AIX: Fix a few compiler warnings
+    
+    Avoid that the following compiler warnings are reported:
+    - Assignment discards const.
+    - Unused local variable.
+    - Mismatch between format string and argument list.
+    
+    Also correct the indentation of two Solaris-specific code statements.
+
+commit 0dd2783b747fb96d74978e11c82a504c0df1d555
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jul 6 11:12:30 2014 +0200
+
+    HP UX, CPU statistics: Fix an invalid pointer dereference
+    
+    See also commit 0034581deb3e676d328824c87637aaca31850c6a.
+
+commit dbd593132f719cc3d9bb5017ec8bc5c8cbb063b7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 3 23:23:29 2014 +0200
+
+    T071com2sec6_simple: use private host to check ipv6 address resolution to make sure we get the expected result
+
+commit 0034581deb3e676d328824c87637aaca31850c6a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jun 30 22:08:34 2014 +0200
+
+    BUG #a2551: fix non-sequential cpu numbers on HP-UX.
+    Thanks to Dave Olker.
+
+commit b0f49ba21fb810efcb0992f01c4fc5fd30cf69af
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jun 26 21:42:48 2014 +0200
+
+    cpu_pstat.c: fix missing break(s) in switch statement
+
+commit a63e381d9c1c9c87210bf2b022e3d6ac71d27a7e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jun 20 10:57:39 2014 +0200
+
+    Recent patch from Bart (Display module names sorted) make configure lose all module names on Solaris 8 and 10.
+    This changes the way the sorting is done.
+
+commit 60cf6a06ff73ae7d4f2454f2ef40c56fcd394bfa
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jun 18 22:19:32 2014 +0200
+
+    make test: bail out if netstat not found.
+
+commit c10f2acbfcc3834cd938641dc1a2c72aca7f7845
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jun 10 16:06:59 2014 +0200
+
+    Fix stupid bug in pkg-ng patch
+
+commit e2da5489c3bb829762604c9d41f08cb3aedfd8a6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jun 2 15:41:56 2014 +0200
+
+    PATCH #a1283: Recognize Oracle ACFS file system (Thanks John Haxby)
+
+commit 54c2cc2655c1b6c5485d99441aed2ac169eee5f9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jun 2 15:26:00 2014 +0200
+
+    Install SNMP-TSM-MIB and SNMP-TLS-TM-MIB
+
+commit ce3091cbc48bc405c6eb1af7ddaeb370ed786471
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jun 2 15:23:24 2014 +0200
+
+    BUG #a2537: Support *BSD pkg-ng
+
+commit 49e4e49b12aae0d8f7572839365d46cf932bfec9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jun 2 15:18:46 2014 +0200
+
+    Fix FreeBSD system define chain
+
+commit 3c5e7124b35fd6aca4284eac365d74b69810785a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jun 1 11:27:25 2014 +0200
+
+    CHANGES: BUG: 1267 snmplib: register_mib_context() fix for read-only variables
+    
+    This is a slightly modified version of a patch from Harsha Shivanna.
+
+commit 56ecc433b09e985f1fdd786aae60b061ffac0382
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jun 1 11:12:47 2014 +0200
+
+    agent/mibgroup/ucd-snmp/lmsensorsMib.c: Fix compiler warnings
+
+commit c9cf8fd869f3791a58a71b8a63f5d61d67291fae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jun 1 10:09:28 2014 +0200
+
+    configure: Display modules names sorted
+
+commit 27a16054d656eb10abd032dbac68ebbc26c76007
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jun 1 09:22:52 2014 +0200
+
+    agent/mibgroup/ip-mib/data_access/defaultrouter_linux: Rework netlink buffer alignment
+    
+    Based on a patch from Joshua Hoke. See also
+    https://sourceforge.net/p/net-snmp/bugs/2547/.
+
+commit bd13f004f6dc16dbe56ea5381662495745d937e1
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat May 31 20:16:20 2014 +0200
+
+    Windows: 64-bit fix for build-binary.pl
+
+commit 1fa4da1c6cf967606333f7e77e408b7f51ef6256
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri May 30 17:42:07 2014 +0200
+
+    Windows: Suppress Visual Studio 2013 warnings about strtoull()
+
+commit b31aede9c8b63461b5092e16d626a676b172f8aa
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 22 23:05:19 2014 +0200
+
+    PATCH #1277: Fix ifspeed for Solaris zones. Thanks to lijo
+
+commit 869f785541a1ea3b4278145867b152bec50d3eb0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Apr 30 14:52:31 2014 +0200
+
+    winExtDLL: Translate SnmpExtensionQuery() PDU type correctly
+
+commit e0107c26b3a0e30ae83235bb225feb78a1a15638
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Apr 30 15:38:55 2014 +0200
+
+    Windows: Silence a compiler warning
+
+commit 3a9f875423ccaa8baee7e164bb8a75dd8e0b7343
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue May 6 06:27:10 2014 +0200
+
+    PATCH #1279: Modified patch from Mohan for coredump after calling
+    free with a bad regex.
+
+commit 51302ba57285d4d47992ed15a460580112a3e924
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue May 6 06:21:24 2014 +0200
+
+    BUG #2521: AIX: dont die when CPU is dynamically added to system.
+
+commit 131c93ba92e46dddec4eb3a8208ab5a3c1026508
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue May 6 06:20:28 2014 +0200
+
+    Complain about -D option if debugging is disabled.
+
+commit 96a7a6a86895fdbf891799e3769b27a7e54af084
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue May 6 06:19:42 2014 +0200
+
+    snmptrapd.8: add some missing format tokens to man page.
+
+commit 80be907be9f4f1df6a1470feafaa916b9c9c4991
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Apr 27 15:25:30 2014 +0200
+
+    Fix bug 2313 for cross compilation.
+
+commit 9ae5981530fd2bdd9f2a5c86b7d6994b873033d7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 26 22:36:26 2014 +0200
+
+    Prepare for FreeBSD 11 and 12
+
+commit e32f70b12f57d26d69d491f1c742b0132aca7660
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 26 21:42:21 2014 +0200
+
+    Fix a couple of struct sizes to better match declaration.
+
+commit 7cc2deb5d915d2572328317d3701d35d861d3d92
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 26 21:34:26 2014 +0200
+
+    Use inet_pton onplace of inet_aton to help portability.
+
+commit a087fc9f164023de414b09bfd3747c72f1bca07f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 26 21:30:54 2014 +0200
+
+    Update to current IANA-ADDRESS-FAMILY-NUMBERS-MIB and current RFCs.
+
+commit 857037a8d2457ac9aa2a52510957647971a46634
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 26 21:28:00 2014 +0200
+
+    Prepare for FreeBSD 11 and 12.
+
+commit b99308417d4be7e139f6103d44f11b55433a6bf1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Mar 16 08:04:15 2014 +0100
+
+    Better documentation for trap logging formats.
+
+commit a6e4eb26f5c04d15761ceaf924580e0c40f72dfe
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Mar 9 08:46:57 2014 +0100
+
+    swrun_*: Simplify commit da00ba1
+
+commit 37af7923b832f2ec80837fa28edcac8eb0c7e8ea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Mar 9 08:34:12 2014 +0100
+
+    swrun_*: Restore buffer overflow prevention code that was removed in da00ba1
+
+commit f436ce28fda3edc7010cd86ecf3c386c5af52196
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 8 14:07:57 2014 +0100
+
+    util_func: fix skipping of digits which would run one too far
+
+commit da00ba142d6b504255889f09eb9f7d222ef40ada
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 8 14:04:19 2014 +0100
+
+    swrun_*: snprint may have set a too long string length. Fix it if needed.
+
+commit 3b202eb05ec4e5f6f8f54bc8acb437373e6b5d03
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 8 14:02:18 2014 +0100
+
+    swinst_apt: ensure room for string terminator
+
+commit 8a66814edad5a28fdbc8645fb0e14459bf915da0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 8 14:00:28 2014 +0100
+
+    mta_sendmail: isspace cannot take a char argument
+
+commit 3e734fb3bddf11b99b6ba7ddcb30ae932d8ba3b1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 8 13:58:07 2014 +0100
+
+    expExpressionConf, expValue: isspace cannot take a char argument.
+
+commit 76e8d6d100320629d8a23be4b0128619600c919d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Mar 6 09:21:51 2014 +0100
+
+    CHANGES: snmpd: PATCH: 1275: from Viliam Púčik: fixed Perl trap handler when processing trap with empty community string.
+
+commit 5d06a5fbb5ed3ca2b5820e8ef2d5b5b88b9d7df8
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Mon Feb 3 11:58:03 2014 -0800
+
+    Allow the nodemap to contain multiple nodes for mibs like IF-MIB
+    
+    In the IF-MIB, "interfaces" and "ifMIBObjects" both contain
+    significant subtrees.  Allow nodemap to contain a comma-separated
+    list of nodes, to handle MIBs like this.
+
+----------------------------------------------------------------------
+
+Changes: V5.7.3.pre2 -> V5.7.3.pre3
+
+commit 54166cf6c7a98bf8e5d0dbabf9b5e5a255c4c421
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 25 12:45:14 2014 -0800
+
+    make depend for 5.7.3.pre3
+
+commit 3d4e3a66bd097e3720fe5de2f2e05741b3306305
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 25 11:42:15 2014 -0800
+
+    Version number update: 5.7.3.pre3
+
+commit a1fd64716f6794c55c34d77e618210238a73bfa1
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Feb 19 15:21:57 2014 -0800
+
+    bug fix from fenner: fix ICMP mib table handling on linux
+
+
+----------------------------------------------------------------------
+
+Changes: V5.7.3.pre1 -> V5.7.3.pre2
+
+commit bf0a1c37d8b8c644e837041d090aabe8fd8131e8
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 25 07:49:04 2014 -0800
+
+    make depend for 5.7.3.pre2
+
+commit decfd8d79b54d298ded97439efb710e8f6ba524c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 25 07:33:52 2014 -0800
+
+    Version number update: 5.7.3.pre2
+
+commit 8aeccef39bbaeb8b8025a68ec4761bc82ec9aeaa
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 25 07:27:47 2014 -0800
+
+    NEWS: snmpd: patch 2525: from Ryan Steinmetz: Fix argument length parsing of the host resources mib
+
+commit b222e7a3eef59cbb68a453476cb364342c74e640
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 19 22:26:08 2014 +0100
+
+    Fix speling error
+
+commit f8fcb3bc38188ccbe9bacee58d6fd2b983d09927
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 19 22:24:26 2014 +0100
+
+    Fix speling error
+
+commit d214d70c4524e62fccaf1083abc5ba1a439a463e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 19 22:21:55 2014 +0100
+
+    snmpstatus: detect SNMP exception responses.
+
+commit bf75ec66965d157cb0442f7dff5656f99cd70635
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 19 22:20:05 2014 +0100
+
+    Fix test for com2sec6 access.
+
+commit 6567a37fa301b8fa1b68009d5a0b3a3cbfb9e8f1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 17 21:49:13 2014 +0100
+
+    testing/Makefile.in: make sure '$' survives for perl test.
+
+commit 05b551bc331185eda1c081d3138d0ac625b07d6a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 17 21:36:48 2014 +0100
+
+    Fix some man page spellings.
+
+commit 8b0555d95cbc238cbe9836439b88070c80a9ca5e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 17 21:35:28 2014 +0100
+
+    snmpnetstat: fix call of memcpy with overlapping areas.
+
+commit 3c6a7a6c947424824e724e294483a7ecd70d9d41
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 17 21:33:47 2014 +0100
+
+    route_ioctl.c: set proper mask before SIOCDELRT.
+
+commit f99ef5cef203ea378553a2ab4925fcd869e7f5a3
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Tue Feb 11 08:47:51 2014 -0800
+
+    David Jarvie's patch for bug 2507
+
+commit d70f2e91e2c7258e768e32b683d814a941564ac1
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Mon Feb 3 11:58:03 2014 -0800
+
+    Allow the nodemap to contain multiple nodes for mibs like IF-MIB
+    
+    In the IF-MIB, "interfaces" and "ifMIBObjects" both contain
+    significant subtrees.  Allow nodemap to contain a comma-separated
+    list of nodes, to handle MIBs like this.
+
+commit 98781ae3da43b7b1583ecde3e21bb6525a2c0b80
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jan 27 22:24:18 2014 +0100
+
+    route_ioctl.c: Fix setting the netmask when creating route through
+    inetCidrRouteTable and ipCidrRouteTable.
+
+commit 2e94777693f1853479ded670be307ece7138feb5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jan 27 22:13:05 2014 +0100
+
+    Fix compile for Solaris without IPv6.
+
+commit 8f6991a2114fd21ba5519ee9576beb082f603dec
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jan 23 16:30:46 2014 +0100
+
+    snmpnetstat: search ifName and ifAlias when looking for interface
+    name from -CI option.
+
+commit 4a360104659c169ce232256e138d938d94e435f9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jan 23 16:28:32 2014 +0100
+
+    logmatch: fix out-of-bounds access. Thanks to gcc or clang
+    with -fsanitize=address (recommended!)
+
+commit eef2f64b46357b353c79504bc593535ebe7421e7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jan 23 16:27:07 2014 +0100
+
+    cpu_linux: support systems with more than 100 cpus.
+
+commit 3bd683c96d6a8864fbd8078574aee8cd431ce302
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jan 15 18:36:01 2014 +0100
+
+    Update options lists in manual pages and commands help.
+
+commit a5efe8df17ddc4f6693c7da9a52c401f4db2be63
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jan 15 18:28:24 2014 +0100
+
+    test T027: make sure it works also when configured with --with-default-snmp-version != 3.
+
+commit 57d1082900f9ac931444316a6f95f19eda069074
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jan 15 18:26:24 2014 +0100
+
+    cpu_linux: remove redundant casts.
+
+commit 9f4c572614091404decba0d4ef1a4cbaf9fc5bd2
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 9 13:35:27 2014 +0100
+
+    CHANGES: snmpd: Fixed monitoring based on non-delta trigger.
+    
+    snmpd crashed wit following snmpd.conf:
+        monitor -s -D -r 10 -e LOGMATCH -o logMatchCurrentCount "Log Match" != logMatchCurrentCount
+        logmatch LoginFailure1 /var/log/secure 10 su: .*fail.*
+    
+    The reason was unitialized variable sysUT_var in mteTrigger_run(), it was
+    filled only if the trigger was delta-valued, while its value was used for all
+    triggers.
+    
+    With this patch, sysUT_var is filled for all code branches where it is needed.
+
+commit c7512afe5643ecaae9745ac199b839c3aad8457b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 17:34:51 2013 +0100
+
+    Regenerate dependencies
+
+commit c91f840d83981f660b75274dbcc387cb5c5f99af
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 17:29:26 2013 +0100
+
+    Regenerate dependencies
+
+commit 2dd7dba76d1d0b4f866834e0fd60148c281a153c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 17:25:05 2013 +0100
+
+    Regenerate dependencies
+
+commit 591431f7991f83d2385adbc5a22c4a89576bc313
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 17:21:56 2013 +0100
+
+    Regenerate configure using the right autoconf version
+
+commit 85bb4b5c9f4896876715cb1f14f4f1b582d223bd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 17:12:03 2013 +0100
+
+    Regenerate dependencies
+
+commit d255ca426d1e3d4bc48b8f3db937435788934c42
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 12:35:30 2013 +0100
+
+    CHANGES: building: Avoid duplicate and trailing spaces in the dependency files.
+
+commit d15cd2b9743cccb502deafd143ade0aa90cf31e4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 09:05:13 2013 +0200
+
+    MinGW: Build fix
+    
+    Apparently with recent MinGW header files <winsock2.h> should be
+    included instead of <winsock.h>. Modify <net-snmp/types.h> accordingly.
+
+commit 7ba23e57076499ef8eeb23885383473ccf447365
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 15 10:58:25 2013 +0100
+
+    Win32: batch build: Check whether Perl architecture matches target architecture
+    
+    Building the Perl modules fails in a subtle way if e.g. a 32-bit Perl
+    interpreter is present in %PATH% and a 64-bit C compiler or vice versa.
+    Hence check whether Perl interpreter and C compiler target architecture
+    match before starting a build.
+
+commit 6b706c53d4cf751e495aab66fe39fd51c32ce930
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 15 10:06:21 2013 +0100
+
+    Win32: Visual Studio 2013 build fix
+    
+    Apparently Visual Studio 2013 does not support goto <typedef name>.
+    Hence rename the UINT label. For consistency reasons, also rename
+    the OCT label.
+
+commit 13c8590e38269a9265ead5c85f05c8894e86d84c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 15 09:31:44 2013 +0100
+
+    Remove the NETSNMP_DONTWAIT / NETSNMP_NOSIGNAL aliases for sendto/sendmsg flags
+    
+    Note: this patch is a more elaborate version of the V5-7-patches commit
+    89a504fe331e09a54f6b01c2877cf022900705a8 (2011-12-19).
+
+commit e0ead2d54ebf43533e562c3402e12188cfdc079e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Dec 14 18:54:01 2013 +0100
+
+    win32/build.pl: Add support for the Visual Studio 2013 command-line environment
+
+commit 8886095a99090293b06a0719e7b868f1edc14933
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Dec 14 18:29:01 2013 +0100
+
+    libagent: Win32 build fix (see also commit 01723c6)
+
+commit 5f32b4aaa8bcd22eba9c649223fe080d5479bc8e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Dec 14 17:17:30 2013 +0100
+
+    include/net-snmp/library/snmpUDPBaseDomain.h: Add a missing declaration
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2 -> V5.7.3.pre1
+
+commit d0117adee84efcb58a5e4183f7d7cc6e700f0264
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Dec 5 23:33:51 2013 -0800
+
+    make depend for 5.7.3.pre1
+
+commit b1dbda8bbcca82377664dca9cb6bb06f9ce637a2
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Dec 5 23:33:37 2013 -0800
+
+    Replace // comments with /* comments
+
+commit 9ee396cec1811512fbcb24490b3be0b970f69ffb
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Dec 5 23:06:13 2013 -0800
+
+    Version number update: 5.7.3.pre1
+
+commit 6c392fed6cd5d7a32ed10c8170aed851cee77985
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Dec 5 23:04:25 2013 -0800
+
+    increment the revision
+
+commit f5403e7567eb071bed8dadba38a2cda60332b8fc
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Sun Dec 1 18:24:12 2013 -0800
+
+    Don't set the ifindex when sending a normal reply.
+    
+    Setting the ifindex in the IP_PKTINFO results in setting
+    the source address too (ignoring the source address that
+    we also supply).  The sequence here is that we send with
+    no interface specified but the request's destination
+    specified as our source.  If we get EINVAL, it's because
+    the request's destination was a broadcast address which
+    is an invalid source address, so we try again with the
+    incoming interface's if_index and specify the source
+    as INADDR_ANY.
+    
+    If we supply the ifindex in the first call, a reply from
+    a multi-homed agent may come from a different source address
+    than the request was sent to, potentially confusing a manager.
+    This bug was first introduced in SVN r17855 and was fixed
+    in SVN r19767; also see the mailing list thread
+    http://sourceforge.net/mailarchive/forum.php?thread_name=AANLkTim37H7M7Ba010Lmdk1YGYKwPTkDyRKoDr76uqDT%40mail.gmail.com&forum_name=net-snmp-coders
+
+commit 144a13208b4fa6f0a1cd971f41a7279716b27eee
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 29 08:07:28 2013 +0100
+
+    snmpnetstat: fixing the stats output broke the conn output :-(. Fixed.
+
+commit f4e5ee6f39630b73f8ad9946c990e9690580d7cf
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Nov 27 01:12:00 2013 +0100
+
+    CHANGES: testing: Add tests for asn_realloc_rbuild_*int* and tests for opaque unsigned 64-bit types.
+
+commit 20e4b37932a9e9cc56b360a236e9d8180793a297
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Nov 27 00:54:58 2013 +0100
+
+    CHANGES: snmplib: Correct the type check for opaque variables when decoding counter64 values.
+    
+    Thanks to rkj@softhome.net for reporting this issue.
+
+commit 6e76cbbb2a0783f22f58fb7d323e9f7217cc604a
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Nov 27 01:01:04 2013 +0100
+
+    CHANGES: snmplib: Avoid failure to trigger sign extension due to overlong types
+    
+    In asn_realloc_rbuild_signed_int64 the algorithm assumes that shifting
+    values greater than 0x7fffffff right is an arithmetic shift that will
+    shift in 1's. On hosts where long is more than 32 bits the use of long
+    for 'low' and 'high' makes this assumption false.
+    
+    Thanks to rkj@softhome.net for reporting this issue.
+
+commit 4a4b78e63dd688892b7399b584e26e047d367501
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 27 22:16:44 2013 +0100
+
+    Additional fix for darwin13
+
+commit 91bd5d4c5f41b54c46242883db92aa4e49455294
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 27 22:13:03 2013 +0100
+
+    snmpnetstat: fix truncated statistics when using -v1
+
+commit 0cb14d4e5c39a07c78474881e6c73fa617507bdb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 27 22:06:58 2013 +0100
+
+    snmpnetstat: fix statistics for ipv6
+
+commit 2d4defe77bdebbbc1a773eb8d48498b6f2558f23
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Nov 5 06:49:35 2013 +0100
+
+    CHANGES: snmpd: Use 0 for the ignored numvars argument to netsnmp_register_mib
+    
+    The numvars argument of netsnmp_register_mib is ignored if the var
+    argument is NULL. In order to unify this use of it with all other ones,
+    change it from 1 to 0
+
+commit b9933e6183b1715c90d7cf6dfac1891000796bce
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Nov 22 23:04:08 2013 +0100
+
+    CHANGES: snmpd: Remove some unused includes
+
+commit a78307038bf0b4859e11bd86ca3049c339abe126
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 23 09:49:01 2013 +0100
+
+    CHANGES: snmpd: Add a missing function declaration
+
+commit d8d6078b3e65b5ba131df842d92c7743737ff955
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Nov 19 08:06:34 2013 +0100
+
+    CHANGES: snmplib: Mark register_signal and unregister_signal as unused.
+
+commit bf083f5b69ccb95ff70e2a28a7c64fec7d7e422e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 18 22:41:28 2013 +0100
+
+    Patch a1270: man page fixups (thnks Aleksandrs Saveljevs)
+
+commit 62a634ce671c38ade97917077039e34ae3d92734
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Nov 3 16:02:39 2013 -0800
+
+    Win32: Unbreak the build (see also commit 253f90743)
+
+commit a813b5111255f75fef6944cedd648dbf8c34a9ad
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 11 17:54:44 2013 +0100
+
+    Win32: perl: Avoid transport initialization failure in Perl SNMP agents
+    
+    Avoid that the followingn message is printed during startup of a Perl SNMP
+    agent:
+    
+    netsnmp_assert s != (-1) failed ..\..\snmplib\transports\snmpUDPBaseDomain.c:484
+    
+    See also commit 36a7de7230fbbbb52cc37cbbed281eb559404be9.
+
+commit a2a3a1aa67ff38daa8f139518abb3548475ed591
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 8 22:32:29 2013 +0100
+
+    snmpnetstat: fix usage message to be closer to reality. Fix handling of -Cp and -Cf options with new tables.
+
+commit 7277400102dfca921eac0bd9cef86b32f598003d
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 8 22:30:14 2013 +0100
+
+    Clean up snmpnetstat man page, removing some left over cruft man
+    original bsd netstat page.
+
+commit eb0379db3853fad138f92f4792a8034177d9629a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 4 22:09:55 2013 +0100
+
+    Fix length of default router adddress using sysctl.
+
+commit 8fa46f29613c1792c4a14432944273b6d74e3f3c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 4 22:07:56 2013 +0100
+
+    Fix handling of command names with blanks on Linux.
+
+commit 6fcb381dcd460b79556339eb36fbe579bf49dc03
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 4 22:05:56 2013 +0100
+
+    Add LISP-MIB to rfclist.
+
+commit 1c5104741070219f13800d76afd57a0d636c243b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 4 21:54:36 2013 +0100
+
+    Fix paging statistics for OpenBSD 5.4
+
+commit 2f57b804e83b8f89b8969637f83d8886010838ff
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Oct 30 21:35:33 2013 +0100
+
+    Add darwin13 support file
+
+commit 823d51f79b84e13593e5b1ac9b407634c54346f4
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 21 20:49:53 2013 +0200
+
+    Fix make install in man directory for Solaris caused by VPATH oddity.
+
+commit c575204a02059199428ce135bc12ecb385e36763
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 21 20:47:31 2013 +0200
+
+    Change an occurrenceof sprintf to snprintf.
+
+commit a2bda994019280278beded7917c877fcb448873d
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 21 20:46:30 2013 +0200
+
+    Better wording for statistic entry.
+
+commit 6644b05d3cf34123ceda74b7b84f16944359e7ca
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 21 20:45:15 2013 +0200
+
+    Fix warnings for libnl1.
+
+commit 940816e019171a0414ee00a46cda4ce60bc01f71
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Oct 5 11:05:12 2013 +0200
+
+    CHANGES: snmplib: PATCH: 1265: Fix a buffer overflow in dump_realloc_oid_to_inetaddress()
+
+commit 0992ecf8fc5d87837006d4bc3a8681e5736e3573
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Oct 17 07:16:23 2013 +0200
+
+    pass_persist: zap possible CR at end of line.
+
+commit eb88e024b4c267994de40401e8b7d77e32dec6cf
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 15 21:33:56 2013 +0200
+
+    Maintain byte order for IPv6 port numbers in transport data (problem surfaced in snmpTargetAddrEntry)
+
+commit f2e57b8e638a1fcdc85fd0fd2f6552a33fcab3f8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 15 21:17:21 2013 +0200
+
+    snmpnetstat: better handling of snmp exceptions.
+
+commit e0280294e7e6bebd62fbab9928b1b5f01b735e72
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 15 21:15:39 2013 +0200
+
+    Fix DISPLAY-HINT for negative values and hint "d-n".
+
+commit 1abb5a094d27514b8147b1128db2cddcb1703bb8
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Nov 2 14:45:42 2012 +0100
+
+    Use NETSNMP_PRIz to print size_t values in _sess_read
+
+commit acb72589acb3018e443f5e3f654dd03f7c26316a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 1 18:41:51 2013 +0200
+
+    Add forgotten icmpOutEchos to icmpMsgTable.
+
+commit 253f907439151023a92a3ac43a9f317e3a4e17fa
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 30 22:13:43 2013 +0200
+
+    Solaris: support icmpMsgStatsTable
+
+commit 6ee91f06b5bd0e0cbd2b69f3dae0bf6141cc9556
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 30 06:59:10 2013 +0200
+
+    Solaris support for IP-FORWARD-MIB
+
+commit 4ebdf3fb0445f9067ecb38394c2df2bd3b738182
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 30 06:54:28 2013 +0200
+
+    Properly handle the 'b' display hint.
+
+commit 7f2edbf68348cabeaf995aaba1b2a7893d18c5e7
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Aug 30 08:50:09 2013 +0200
+
+    Remove some commented out defines
+
+commit 435ee1f4023cb002245c3a56dbeaba37a3d3edbe
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Sep 28 14:26:10 2013 +0200
+
+    Patch a1259 (bug a2456): problems with ipCidrRouteTable on 64-bit bigendian machines. Thanks to Christopher Wu.
+
+commit 9a6f566392a3cf12dab488a76d69fc873dbec2ac
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Aug 25 10:18:53 2013 +0200
+
+    CHANGES: snmplib: Rename memdup() into netsnmp_memdup()
+    
+    Rename the function memdup() defined in libnetsnmp.so into
+    netsnmp_memdup(). This avoids conflicts with memdup() functions
+    defined in other libraries that define a function with the same
+    name. As an example, if WINS name resolution has been enabled via
+    /etc/nsswitch.conf then performing a host name lookup can trigger
+    a crash in the SAMBA WINS name lookup library because calls to
+    memdup() from that library get redirected to the incompatible
+    Net-SNMP memdup() function. See also
+    https://bugzilla.redhat.com/show_bug.cgi?id=1000780 for the details.
+    This patch intentionally changes the Net-SNMP ABI.
+
+commit 3dde41998625fe0e24119a2e1f4509ba3ba2fd9a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 5 20:27:22 2013 +0200
+
+    CHANGES: Linux: BUG: 2238: Add libnl3 support
+
+commit a37957bee9f79db19bba93f11faa037921d6e584
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 23 22:24:15 2013 +0200
+
+    route_sysctl.c: Fix for linklocal routes on FreeBSD 10
+
+commit d9a7f9fc679455b0fa328fbae67ec2ee2906b94b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 19:42:51 2013 +0200
+
+    win32/dist/build-binary.pl: Automate building the installer
+
+commit eb1a1641500d6bcf39f9b847a2c06c9eda0c88c4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 19:32:31 2013 +0200
+
+    win32/dist/installer/net-snmp.nsi: Make it possible to build an installer without administrative privileges
+
+commit a9777ec9afb37ca6442166079bd5b2e0349be3e3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 18:35:55 2013 +0200
+
+    win32/dist/installer/net-snmp.nsi: Fix OpenSSL version check
+
+commit 5cb2cc7ab20b290a6c74585f985f9c912cdec8ce
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 10:25:00 2013 +0200
+
+    win32/dist/installer/net-snmp.nsi: Remove MSVC redistributable files from the installer
+
+commit 178120061ece48ccd97a3ae36b880da6b1095207
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 09:50:18 2013 +0200
+
+    win32/dist/build-binary.bat: Generalize
+
+commit 85a1c5026f10ff143f437f003894a6c4aa187a96
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 18:43:05 2013 +0200
+
+    win32/dist/build-binary.pl: Fix x64 detection
+
+commit a0c2a7ab42997433e707c10f8acf61f912442f70
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 17:28:54 2013 +0200
+
+    win32/dist/build-binary.pl: Examine two locations for MinGW bin dir
+
+commit cf1006e67f9c77fbda94d4521e78f0098c8a0e19
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 10:11:13 2013 +0200
+
+    win32/dist/build-binary.pl: Fix SSL build
+
+commit b47f136bea8ef5468a20d9452b12318db6c349eb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 17:05:37 2013 +0200
+
+    win32/dist/build-binary.pl: Add WSDK support
+
+commit 0e18a206aaa490fdeb2c70a0e6e52c91eb5f3ed9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 09:48:06 2013 +0200
+
+    win32/dist/build-binary.pl: Reduce code duplication
+
+commit 85df02b836320cc45e5d2db45483bc508631446c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 10:02:21 2013 +0200
+
+    win32/Configure: Fix build without OpenSSL
+
+commit 3f9adb987b5bf5d2d095cfd6ea2da9cd81d1bec4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 09:15:41 2013 +0200
+
+    snmplib/transports/snmpUDPBaseDomain.c: Win32 build fix
+
+commit a6e1851fbe747cf15ed075807781ce89a34e96c2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 19:55:02 2013 +0200
+
+    Restore "CHANGES: Win32: perl: BUG: 2488: Avoid "Free to wrong pool" error"
+    
+    This reverts commit b2725964bde921b6285e3a59a512552cae0a0ca5.
+
+commit b2725964bde921b6285e3a59a512552cae0a0ca5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 19:49:58 2013 +0200
+
+    Revert "CHANGES: Win32: perl: BUG: 2488: Avoid "Free to wrong pool" error"
+    
+    This patch is not appropriate for the v5.4 branch.
+
+commit 6453717f6ac665bf532744a86cdb898aaf83d6bf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 19:34:25 2013 +0200
+
+    Add reproducer for bug 2488
+
+commit 0d0a4629702eb9f9fe9956c1bac4b445610ff3c7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 31 17:21:22 2013 +0200
+
+    Simplify snmpTargetAddr_rowStatusCheck()
+
+commit 4b87e3cb4d3679ab60c353ba4ff301f6842b84bc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 16:37:09 2013 +0200
+
+    testing/fulltests/default/T068execfix_simple: Simplify
+
+commit 65c88e2ecf5de9365c83c46ef3bb4cd89cdc44e8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 15 11:11:43 2013 +0200
+
+    CHANGES: Win32: perl: BUG: 2488: Avoid "Free to wrong pool" error
+
+commit 1a4855da4b1dd693a2b0377b91e9c33e3c7f2a4d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 17:11:45 2013 +0200
+
+    CHANGES: perl: BUG: 2402: Add support for SNMPv3 traps
+
+commit 3d0515693f6a0d29d39dd0c868d378c74bc4f87c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 09:16:33 2013 +0200
+
+    testing/fulltests/default/T068execfix_simple: Port to MinGW and FreeBSD
+
+commit 5b6e431d9f663a3c327d71dac95392cfd86b3291
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 09:03:59 2013 +0200
+
+    agent/mibgroup/ucd-snmp/extensible.c: Fix compiler warnings
+
+commit 9f2e8fc8d9a26f57ab089aba3d1ae26b3e8f2d54
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Sep 17 22:30:38 2013 +0200
+
+    Fix dependency for FreeBSD10
+
+commit a506efdd1db824a9eeee03d0021c90faf3b62924
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Sep 17 22:29:34 2013 +0200
+
+    snmpdf man page: fix formatting of -Ch/-CH options
+
+commit a2e97bebfc52170f9ec1036d24aa84f59cf2e508
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Sep 17 22:27:49 2013 +0200
+
+    Update the BSD multi-cpu counters code to work without configure help.
+
+commit c85d64d54b06879a3a691dadffc03bfb1f59096d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Sep 17 06:37:18 2013 +0200
+
+    Only test the execfix configuration directive if it is enabled
+
+commit ed8b697cea0679de7be5b3f5d469134e1cdaed56
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 7 10:27:02 2013 +0200
+
+    m4/ac_add_search_path.m4: Fix a comment
+
+commit f779c5e9467885852f16c5541a380111f9ead061
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 7 20:28:29 2013 +0200
+
+    agent/mibgroup/host/data_access/swinst_apt.c: Fix compiler warnings
+    
+    Remove the unused variable 'rc' and fix a format string.
+
+commit c6439627d09f503fdc8cfa32d884e83473831754
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Mar 8 00:13:05 2011 +0000
+
+    allow for v2c SET support testing
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20084 06827809-a52a-0410-b366-d66718629ded
+
+commit 5cbd54341a2a79bf8537377d11372483f08647ad
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 14 14:28:21 2013 +0200
+
+    regression tests: Add a test for the execfix configuration directive
+
+commit 1c756349e4d31d39ec2fc53c6440ae53b3b03df0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 7 20:28:56 2013 +0200
+
+    snmpd: ucd-snmp: Fix a potential crash in fixExecError()
+    
+    Do not interpret a command specified via the execfix configuration
+    directive as a printf() format string.
+
+commit 8b140d0965e11f5921768bf05d0c2b1941c0d335
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 31 17:10:55 2013 +0200
+
+    SNMP-TARGET-MIB: Declare local variables at file scope static
+    
+    Also, declare those variables const that are not modified.
+
+commit 7b82c61e753e157c4b8698219006f2f83df52801
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 31 16:51:15 2013 +0200
+
+    SNMP-TARGET-MIB: Eliminate two superfluous casts
+
+commit dbcf47dd4fe5262ad0fad7c97745209589540c40
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Sep 11 10:21:32 2013 +0200
+
+    Reword the includeFile search process to fit the implementation.
+
+commit 85073085d67ed66ab74611c8e5f810192491ba68
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 9 22:26:23 2013 +0200
+
+    Patch a1263: Make database name configurable for trapd sql logging.
+    Thanks to Robin Sonefors.
+
+commit 7e7258ef8b32f974048f3fd098a9da526da2e613
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 9 22:17:15 2013 +0200
+
+    Patch a1262: Fix memory error caused by confusing size of pointer
+    with siuze of pointed area. Thanks to Robin Sonefors.
+
+commit 586e07b8de51b05400d582facd91d4410dd37703
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 31 17:09:59 2013 +0200
+
+    snmpd: Constify a few arguments of MIB registration functions
+    
+    Note: this patch does not change the ABI.
+
+commit 44c3671dd93fe0f08299e61d0a422fd072b490e6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 8 07:35:46 2013 +0200
+
+    Run autoreconf
+
+commit 62dadefa1b2688c02792e9fd2d3fc31c79ed11c3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Sep 6 11:54:13 2013 +0200
+
+    swrun_darwin: Fix buffer overrun when collecting hrSWRunParameters
+
+commit 1e0526f85ed61567ca6ea53b566c772992111c9e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Sep 4 22:30:40 2013 +0200
+
+    Add a couple of contributors to README
+
+commit edc608ebd5d0219863bc5f656d177b1d561048c2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Sep 4 21:59:18 2013 +0200
+
+    Fix a printf format warning.
+
+commit fb24f733cb316c35ccfdc59f487b65e0cd974c68
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Sep 4 21:54:27 2013 +0200
+
+    snmpnetstat: Indent ICMP histogram for readability.
+
+commit f7943a5d58a6f953c79fb55ab897c849228edb8a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Sep 4 21:45:19 2013 +0200
+
+    Recognize zfs file systems
+
+commit ab4370baf5ccc146f8d1c839bb0f419ee37e71c2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 2 21:21:25 2013 +0200
+
+    Patch a1261 (Bill Fenner): Fix crash when mib-indexes are not all readable
+
+commit c6caa3007f60f6cdeaa134152758645a73a7fe64
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 2 19:39:14 2013 +0200
+
+    snmpnetstat: Proper tests for v2/v3 exception results (Bug a2477)
+
+commit 39420bd40b7a1ba720a9cbb92264d3f9cc0a7e2f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 21 22:08:41 2013 +0200
+
+    PATCH a1260: Support multi-cpu usage for Free/Net/Open-BSD.
+    Thanks to Pablo Carboni for first stab at this.
+
+commit 62305cd028d8abf430121e9008acc8f0d1871e1c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 21 22:08:41 2013 +0200
+
+    PATCH a1260: Support multi-cpu usage for Free/Net/Open-BSD.
+    Thanks to Pablo Carboni for first stab at this.
+
+commit cc2fe6bde6a3c28b3c1ad165c9ba3fc1d583c253
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Aug 25 08:23:43 2013 +0200
+
+    IP-MIB: Fix Doxygen header of netsnmp_ipaddress_ipv4_prefix_len()
+
+commit 96302af7fc3108c208227432f0f0b75f3e7b906d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Aug 28 10:59:05 2013 +0200
+
+    Correct conversion factor from microseconds to centiseconds.
+
+commit e8cf766e083834af7fdfed877dbe8810bf00a4ea
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Aug 19 22:17:11 2013 +0200
+
+    Fix netsnmp_ipaddress_ipv4_prefix_len to take an argument in network byte order as dokumentet
+
+commit a0c59a3b458e8a8dfb059a62792d25a4c5c9fc9e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Aug 19 22:14:15 2013 +0200
+
+    Fix netsnmp_ipaddress_ipv4_prefix_len to take an argument in network byte order as dokumentet
+
+commit 66b9bfba4eae84944abf4e6d074894acd0513c6b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Aug 19 22:12:57 2013 +0200
+
+    Fix netsnmp_ipaddress_ipv4_prefix_len to take an argument in network byte order as dokumentet
+
+commit ec96b35d5060c09b9f53d4dec73fb7965c2ac145
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Aug 19 22:11:36 2013 +0200
+
+    Fix netsnmp_ipaddress_ipv4_prefix_len to take an argument in network byte order as dokumentet
+
+commit b27b47b5798469e9ab5bd4b51ac39d43fcd95608
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Aug 17 10:12:14 2013 +0200
+
+    CHANGES: testing: Make sure Test::Harness is of at least version 1.21
+    
+    Test::Harness 1.21 is the first version that implements TAP v12 which allows
+    putting the header (1..N) after the tests and since our tests utilize that
+    we should make sure that the test runner supports it.
+
+commit 14f8d4ad6f06d09d87096dd68137a125a039c562
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 29 17:42:54 2013 +0200
+
+    CHANGES: AIX: Make udp-mib build
+
+commit 38d77c7c20a3e7979c09c5144f86934ed46540dc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 29 17:39:38 2013 +0200
+
+    CHANGES: AIX: Make tcp-mib build
+
+commit 58fd23b7110c93ee496ffafe868539c2af8543bd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 16 10:39:03 2013 +0200
+
+    Win32: Build fix: Export skip_white_const(), skip_not_white_const() and read_config_read_octet_string_const()
+
+commit 0ab9cd1655d46f968dc12bd6714ac17b9bce5e71
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 16 08:28:08 2013 +0200
+
+    CHANGES: snmp-usm-dh-objects-mib: Avoid triggering an assert statement in netsnmp_ready_monotonic()
+    
+    The cache timeout for snmp-usm-dh-objects-mib is -1. Any cache timeout
+    value < 0 disables caching. However, strictly negative values trigger
+    the assert statement in netsnmp_ready_monotonic(). Avoid triggering that
+    assert statement.
+
+commit 1fa584b222c56724378f5c85993eeee6515260ab
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 16 10:02:47 2013 +0200
+
+    CHANGES: snmplib: Fix NETSNMP_FD_SET_BYTES()
+    
+    This patch avoids that unit test T009large_fd_set_clib crashes on AIX.
+
+commit 95ac190b526dba5205637411a892b52b9ed6b94c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jul 21 17:16:42 2013 +0200
+
+    CHANGES: BUG: 2476: snmpd fails to start on AIX
+    
+    On an AIX system there is no <kvm.h> header file nor do the /dev/dmem
+    or /dev/drum devices exist and hence DMEM_LOC is not defined. Avoid
+    that init_kmem() fails in that case.
+
+commit 50481b769e29fc5ce6b1e40ce568185bb0898458
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 16 07:22:02 2013 +0200
+
+    snmpd: Refactor init_kmem()
+    
+    This patch does not change any functionality.
+
+commit cd7ef7be391035d9df05edc6ac9e6f3519b46f8b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Aug 14 23:38:21 2013 +0200
+
+    CHANGES: snmplib: Be more robust if clock_gettime fails.
+    
+    On RHEL3 it seems clock_gettime(CLOCK_MONOTONIC, ) always returns EINVAL but
+    it works for the other clocks.
+    
+    Further, the old code which returned a constant { 0, 0 } caused the test suite
+    to get stuck in a loop if no response arrived - thus this code have the
+    advantage of working less bad.
+
+commit 9d71feea271f91cc9b7adee6613af19eba7ec6cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Aug 14 15:56:56 2013 +0200
+
+    Fixed return value on error.
+
+commit 9621f4cdc5a19cee4e11bf27094abf3339ddc30e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Aug 14 15:48:39 2013 +0200
+
+    Removing useless check, entry->d_name is array and can't be NULL.
+
+commit e41c2f574c25d8dd273f2406eeeac19bc2ae16db
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Aug 12 14:30:51 2013 +0200
+
+    CHANGES: snmplib: Fixed parsing of sequences.
+    
+    Don't overwrite 'data' variable, it's used when parsing bulk responses.
+
+commit 390303059fbd98b1ee7621ddd4ad4c11d100fff9
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jul 28 21:28:14 2013 +0200
+
+    Revert 78dac6e37943d1ad99841898806ea60b0eede636 and resolve a2478 in a way that avoids truncating snmpTargetAddrTimeout.
+
+commit e59d5db6d6e72d134591bbaaa6faa59b29338191
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jul 28 21:17:58 2013 +0200
+
+    Check that the timeout value is in range.
+
+commit 4ecb36a7aba3ab0efa89351650ce053ebcf48b6a
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Jul 29 21:54:25 2013 +0200
+
+    Check that snmpTargetAddrTimeout handles setting properly
+
+commit 1ae85b672eb07d0c01a54e06d3ddd4f4dc58ff2e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jul 28 10:43:17 2013 +0200
+
+    Add some more tests for snmpTargetAddr
+    (cherry picked from commit 6e13ebb85e44049846eae7f60e050375f9acf58e)
+    Sanitized
+
+commit 6a5a047cbc11d62df04a9666908f7652b217c1aa
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Aug 1 23:19:34 2013 +0200
+
+    Reinstate the check for creation of entries with embedded NUL's in the name
+
+commit 533bb80a5a4305b35dbb797444bd596d7d59951c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Aug 1 22:55:45 2013 +0200
+
+    Sanitize.
+    
+    Change to use SNMPv3 since that is writeable in V5-6-patches.
+    Change to check values on index 'A'
+    Remove the check for embedded NUL in indices.
+
+commit b24bf46220aaaf5794e940f5d4673db71339f9c0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Jul 20 12:39:59 2013 +0200
+
+    Add tests for snmpTargetAddr
+    (cherry picked from commit 71f319cd23445c6e22a60a1a85f31c2b6904b3fb)
+
+commit 6e13ebb85e44049846eae7f60e050375f9acf58e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jul 28 10:43:17 2013 +0200
+
+    Add some more tests for snmpTargetAddr
+
+commit 0769f420d8f427993b1340fdb7ecb3bc049d3f6c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 25 08:15:32 2013 +0200
+
+    First shot on handling certificates with embedded nul characters
+
+commit d833b0c8be509bfa3b8001ae6f552289ce9567d0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Jul 20 12:41:40 2013 +0200
+
+    CHANGES: snmpd: Make it possible to use NUL characters in the indices for snmpTargetAddrTable
+
+commit 71f319cd23445c6e22a60a1a85f31c2b6904b3fb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Jul 20 12:39:59 2013 +0200
+
+    Add tests for snmpTargetAddr
+
+commit ea39e3676665b7e8cc5dfeb5bbbcd0ad434ad912
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 18 01:36:26 2013 +0200
+
+    CHANGES: snmplib: Make the data argument to read_config_save_octet_string accept constant values
+
+commit 78dac6e37943d1ad99841898806ea60b0eede636
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 22 12:39:00 2013 -0700
+
+    fix bug number #a2478: fix mib representation of timeout values
+
+commit a7e3bc8ddbe387ebf6f3f6b050e2992956bd2e61
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:14:47 2013 +0200
+
+    Fixes for memory statistics from *BSD
+
+commit 9dbe12403ceaafe617f7d49993316a249fcbb99a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:13:36 2013 +0200
+
+    Fix a missing newfile in a debug message
+
+commit 041deedf81537bc6169298753f9dca3f6cd61a35
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:12:12 2013 +0200
+
+    Make sure we don't make IPv6 mask longer then 128
+
+commit c67c78940339faeab42b1b1a0a6be6cd6dfe2e22
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:06:31 2013 +0200
+
+    Implament ipAddressTable for *BSD
+
+commit b181e43a6d1f567bfd10717a77df1848e3bb0f43
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:05:08 2013 +0200
+
+    Mark OS threads as such.
+
+commit e36a5cc5f20272afff4228e7e4391dd5e6c063b3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:03:36 2013 +0200
+
+    Fic some man page cross references
+
+commit ecf8682d864d2f08525078543858d361b3adca5c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jul 10 10:47:33 2013 +0200
+
+    Lower importance of debugging messages, they spam syslog.
+
+commit ef963063de49485bd91c129e053f06d0744483e1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 4 11:34:25 2013 +0200
+
+    Fixed size of netlink message.
+    
+    Preventing kernel to log 'netlink: 12 bytes leftover after parsing attributes.' message.
+
+commit 2e0d1087313b0fa083e2b1ca4895fbf248d63ca9
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 4 22:04:12 2013 +0200
+
+    Run autoreconf
+
+commit c7fba78e1225254a0f65605f381aedd7d8a212ca
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 4 21:47:09 2013 +0200
+
+    Run autoreconf
+
+commit 571bd407f8be9c94cc552d4d3b7f5b6b0984d237
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 4 21:39:59 2013 +0200
+
+    Run autoreconf
+
+commit 8aa50edba7a2d966d8dfc7ff4d7c78efdde8c5bd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 4 08:53:56 2013 +0200
+
+    Use AC_LINK_IFELSE instead of AC_TRY_LINK as the latter is deprecated
+
+commit 59c6ae34625ee04ace3824ec404613e0b51dc1b0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Jul 2 17:40:54 2013 +0200
+
+    Use the cpp and linker flags from mysql_config when checking for mysql headers.
+
+commit f89cfcafdae21fab50a70bddf158ffd9e4e001d2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Jul 2 17:39:25 2013 +0200
+
+    Use the output of mysql_config --include instread of the output of mysql_config --cflags ito find include files.
+    
+    According to the mysql_config man page, --include is recommended for greater
+    portability since --cflags might contain compiler flags for the compiler that
+    was used to build libmysqlclient which might clash with the ones used to
+    build the application.
+
+commit 68a6a1ca6dc4ca8901bacab598326af73b444654
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Jul 2 17:30:29 2013 +0200
+
+    Only check for mysql/mysql.h once. Remove HAVE_MYSQL_MYSQL_H since nothing uses it.
+
+commit ad87bb608b305567a3c5eaf046b7c98ea3e4bdd5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 4 11:30:04 2013 +0200
+
+    CHANGES: snmpd: PATCH 2472: from Sunil: don't use HBKT as heartbeat interval in SCTP-MIB::sctpAssocTable.
+
+commit 4c4a4281fd5b2c6156c5120f9a2e8b708f466ccd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 4 11:08:48 2013 +0200
+
+    includeDir is not predictable with relative paths
+
+commit 79e8dd2a372a20ee97de1c7107b59ad4aaf89a36
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 4 10:47:29 2013 +0200
+
+    Update configuration documentation with includeFile and includeDir.
+
+commit e0e804482bec70f4c416a35fcb323a4169965c5f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jul 3 15:08:14 2013 +0200
+
+    CHANGES: BUG: 2470: Accept 65535 as a valid IPv6 port number
+
+commit dd332a035e853c72a832748469bab7b882e27b7c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jul 2 07:00:51 2013 +0200
+
+    BUG a#2463: Fix configure to respect data from mysql_config.
+
+commit 408cc9732c346111fc1fda23e136d60883cdb7e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Jul 1 14:25:41 2013 +0200
+
+    CHANGES: python: correctly report error when parsing malformed OID.
+
+commit 9a2bfc8f95d6e926dcbf16ff44b53b27e38c8437
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Jul 1 13:54:38 2013 +0200
+
+    CHANGES: python: Fixed returning of empty strings.
+    
+    Varbind type (SNMP_NOSUCHOBJECT etc.) should be used to detect errors instead of length of the variable - it can be empty string.
+
+commit 1a0f07574a80d1d6a6788caeb391a1d2fef95710
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jun 28 10:37:46 2013 +0200
+
+    CHANGES: snmpd: show Linux kernel threads in hrSWRunTable.
+
+commit 2659c0f6bd86f0171869d34ff8a7d48194ea4b31
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue May 21 09:13:41 2013 +0200
+
+    CHANGES: snmpd: Added btrfs support to hrFSTable
+
+commit a84039d0a1d6f550b473d295921010d80e18d83f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jun 25 14:55:26 2013 +0200
+
+    snmp_strcat: dont test *buf before we have tried realloc
+
+commit 5553ef4362d524a088b519e13556158e5d625ec4
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jun 3 02:48:06 2012 +0200
+
+    CHANGES: snmplib: Do not printf("%s", NULL) as that is undefined behaviour.
+
+commit 89416e79f5c50568e99c07fab06a9ae9f976bbef
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Jun 24 22:22:03 2013 +0200
+
+    BUG: A2441: Correct comment
+
+commit 1a3ae6477b8163a1b43b834abb30b1f03145ab62
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 20:27:34 2013 +0200
+
+    CHANGES: HOST-RESOURCES-MIB, hrSWRun table: Parse /proc/<pid>/stat correctly on Linux
+    
+    This issue was reported by Vincent Bernat <vincent.bernat@dailymotion.com>.
+    See also http://sourceforge.net/p/net-snmp/patches/1257/.
+
+commit f92ffe917a300c41ebe07e24c6418855e759f938
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 19:37:03 2013 +0200
+
+    snmptrapd: Fix a double free in an error path
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit c5f3a1d8bb5804799b602d2769b031d6faf5f0ed
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 17:51:43 2013 +0200
+
+    snmplib: hex_to_binary2(): Return -1 if memory allocation fails
+
+commit f8f08e1d6d3ec8194fabd6ab002ab917afba91a3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 17:13:01 2013 +0200
+
+    snmplib: Simplify the code for deleting a request from the request list
+    
+    The goal is (hopefully) that the new implementation does not confuse
+    Coverity anymore. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit ef6d5c7a0313247a6c9473261777e963f7a49529
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:48:22 2013 +0200
+
+    CHANGES: snmplib: snmp_strcat(): Check *buf before using it
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit 2566b83ebeb0e34eea907928c54c2b4e74ff37f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:23:33 2013 +0200
+
+    hrSWInstalled table: Check stat() return value (2/2)
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit 49cfe4d840c58e1202fa271fbe760bd7526a83a8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:23:03 2013 +0200
+
+    hrSWInstalled table: Check stat() return value (1/2)
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit 5df5462639f243d5929fa9ba14d20b3711f7cace
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:21:18 2013 +0200
+
+    ucd-snmp: find_device(): Remove an unused variable
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/
+
+commit 13ce1996a82e0b458b26ae39abf2012db59c8a55
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:20:15 2013 +0200
+
+    CHANGES: snmplib: _insert_nsfile(): Check stat() return value
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit 81a0d859163f8d54908525b52243295d7b414550
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:07:37 2013 +0200
+
+    CHANGES: snmplib: Fix a bad free()
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit d34c83e9342419aeecff5ffd7deab83987dbebca
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:00:39 2013 +0200
+
+    etherlike-mib, rmon-mib: Fix malloc(...) < 0 tests
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit 43c440176b3e4f9ce995e482ec6975ba0c859bf3
+Author: Michael Shcwarcz <Michael.Shcwarcz@compass-eos.com>
+Date:   Sat Jun 22 12:46:04 2013 +0200
+
+    CHANGES: snmptrapd: Fix a double free at exit
+    
+    A quote from a message from Michael Shcwarcz:
+    
+    I am running net-snmp 5.7.2 and it looks like there is a double
+    free problem in snmptrapd, in free_trapd_address() and
+    parse_trapd_address(). I get a SIGABORT on the second SIGHUP
+    (looks like it does a double free on the first SIGHUP and on
+    the second it crashes).
+    
+    I have this snmptrapd.conf configuration:
+      snmpTrapdAddr udp:162,udp6:162
+      authCommunity log,execute,net public
+    
+    And this is the back-trace from gdb:
+    *** glibc detected *** /opt/compass/bin/snmptrapd: free(): invalid next size (fast): 0x080c17a8 ***
+    ======= Backtrace: =========
+    /lib/libc.so.6[0xf7204845]
+    /lib/libc.so.6(cfree+0x9c)[0xf72066ec]
+    /opt/compass/bin/snmptrapd(free_trapd_address+0x2a)[0x804a6ba]
+    /usr/lib/libnetsnmp.so.30(free_config+0x32)[0xf74ae4c2]
+    /opt/compass/bin/snmptrapd[0x804a557]
+    /opt/compass/bin/snmptrapd[0x804bfa9]
+    /lib/libc.so.6(__libc_start_main+0xe5)[0xf71b0455]
+    
+    I have a patch that fixes this issue, here is the diff:
+    @@ -446,6 +446,7 @@ free_trapd_address(void)
+    {
+         if (default_port != ddefault_port) {
+            free(default_port);
+    +       default_port = ddefault_port;
+         }
+    }
+
+commit 2db5485fc1ccce39efa69a377bb8d6f6231eb0b2
+Author: Eric S. Raymond <esr@thyrsus.com>
+Date:   Fri Jun 21 10:47:32 2013 +0200
+
+    CHANGES: documentation: from "Eric S. Raymond": Correct man page markup problem
+    Ambiguous or invalid backslash.  This doesn't cause groff a problem.
+    but it confuses doclifter and may confuse older troff implementations.
+
+commit d6771464f16dc6fe64dd24c08af4be725885adad
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Jun 18 23:45:28 2013 +0200
+
+    CHANGES: apps: Stop agentxtrap from accessing the persistent configuration
+    This is needed to prevent moaning about not beeing allowed to write those
+    files due to bad permissions.
+
+commit 14ac5d5d2c4d9f3a799d401cc1e403a8a292d425
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jun 12 22:37:23 2013 +0200
+
+    Darwin fixes: UDP and TCP tables, memory data, and some error checking.
+
+commit babd31d1049e233c454f1cbd88bba75f2f40781e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jun 12 22:25:19 2013 +0200
+
+    Fix some man pages references to other pages
+
+commit bdefce06a1ea1c1430802714fc837b558e1a675a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jun 12 22:23:57 2013 +0200
+
+    Updated ENTITY-MIB in rfc 6933
+
+commit df863a5348aabf71bbca7bfefcf8beb8bb9e7762
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jun 12 22:17:46 2013 +0200
+
+    Fix Bug #2427: Cannot resolve IPv6 only hostnames, by accepting a list
+    of transport domains.
+
+commit da1fef382591ff45dc92eb3b95a6bfeff9ecfa4f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue May 21 09:13:41 2013 +0200
+
+    CHANGES: snmpd: Added btrfs support to hrFSTable
+
+commit 931c87a05f5f66289613fed77ac78844b61cb79f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 15 20:18:14 2013 +0200
+
+    BUG 2458: Fix missing initialization of auto_nlist structure (Thanks Ryan Steinmetz)
+
+commit 9104e2a3f195506a47733983d8cba38ed592a988
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 15 20:13:05 2013 +0200
+
+    PATCH 1253: Fix parsing of DEFVAL BITS (Thanks Mike)
+
+commit 855e54e345c55ea22b7e7ac12a249d7409fbb309
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 15 20:11:29 2013 +0200
+
+    rfclist: add RFC 6945
+
+commit 36527cd8cca650713c85e0328c0c2a1cd095c358
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun May 12 10:04:08 2013 +0200
+
+    Windows, Visual Studio: Unbreak compilation with the Windows XP Platform SDK
+    
+    This was reported by Wim Devos
+
+commit 517a5512102d339489c9a70ea8d087a0e10035a9
+Author: Wim Devos <Wim.Devos@meucci-solutions.com>
+Date:   Sun May 12 09:40:53 2013 +0200
+
+    Windows: Unbreak the Visual Studio build
+    
+    "static NETSNMP_INLINE" triggers the error message "error C2159: more
+    than one storage class specified", so use NETSNMP_STATIC_INLINE instead.
+
+commit 4df02f967d0b9d16ca12b58215e9835bc9f391ca
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat May 4 14:54:48 2013 +0200
+
+    Remove compiler warning about missing prototype
+
+commit 18dafa58d8121961b058d6d416707df1d6a042ac
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat May 4 14:53:10 2013 +0200
+
+    Remove one copy of the linux_states array. Make the whole thing const.
+
+commit 02ad81ea2de2d4687794057e2e8104a65239254d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri May 3 08:08:01 2013 +0200
+
+    Revert the functional changes from 'Fix mixing of code and declarations'[1]
+    in order to not use variables before they are set and not increase the
+    probability for memory leaks.
+    
+    1) rev eefc25ca6705a2d1a8f5216076f439e0d3e3ef76
+
+commit 4fd0525d6a65acfea3d7b431c97893dc47927da8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 2 22:45:51 2013 +0200
+
+    autoconf
+
+commit 55ddd8295ae65e47f220f4807794fbac9b69f0fa
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 2 22:20:46 2013 +0200
+
+    testing: Document why we skip tests
+
+commit eefc25ca6705a2d1a8f5216076f439e0d3e3ef76
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 2 22:13:42 2013 +0200
+
+    Fix mixing of code and declarations.
+
+commit b94b734dd353bcf793c8b65a273a1387bfd256ea
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 2 22:12:11 2013 +0200
+
+    Darwin: support 64-bit counters for diskio table
+
+commit 8d841c1d9b1b4eec264d682ac126032aa08f2e82
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 2 22:09:17 2013 +0200
+
+    CHANGES: Support new MIB structures and MFD rewrites under Darwin
+
+commit 27640fcfb20526bef2f6eb40c2a54566dfc6c4c6
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 27 10:58:29 2013 +0200
+
+    CHANGES: snmpd: Correct the size of of the EXAMPLEIPADDRESS value on L64 hosts
+
+commit ebbe2a3990ef6dcbdcb99a39add465398354c34c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Apr 23 07:25:21 2013 +0200
+
+    building: Make --enable-minimalist compilation work again
+
+commit 4bd7d73b1fe60bb536bf39eb4a38596e8965c3f3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 22 22:25:38 2013 +0200
+
+    typecast to silence warning for format
+
+commit db071d0a6f487421769b69f22ccf09cc242d9454
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 22 22:23:52 2013 +0200
+
+    Only declare HRP_maxnames when needed
+
+commit faf00ce3b0feb4d37fabef6d4135e36803b00379
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 22 22:22:24 2013 +0200
+
+    ip.c: fix inconsistens declarations of ip_module_oid_len
+
+commit 7f6b59533cdfa06450aee41570223b1cdd2ca6b8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 22 22:19:44 2013 +0200
+
+    Recover from failures in libpci
+
+commit 40938a62619590b4ea071ae85baa2f42a0b7fcb2
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Apr 22 15:00:00 2013 +0200
+
+    Check if 'asn_parse_* ' actually succeeded.
+    
+    If not, discard the packet instead of using wrong data.
+
+commit aa4fb949012d7c022a436992ac203c065fd7420a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Apr 22 14:58:41 2013 +0200
+
+    Integer values encoded in BER must have at least one character.
+    
+    If asn_length == 0, we would read the first byte of the next varbind on next line:
+        if (*bufp & 0x80)
+    -> reading past the buffer if there is no such variable -> sigsegv.
+
+commit f6eed6e2384cbf857768f0ee8c6602eb7cd2f03a
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Apr 22 08:18:54 2013 +0200
+
+    Regenerate configure
+
+commit a587d11fb67fad3af24517a408abc3700565edf5
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Apr 22 08:18:35 2013 +0200
+
+    Regenerate configure
+
+commit ce3c9214128b1cdbebd2975da0f36a55e2584fa0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Apr 22 08:16:02 2013 +0200
+
+    Report the result of the POSIX shell test, not a constant yes
+
+commit 0c870f74b2e4337b4bf3b7f11f55b12e80df49ff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Apr 22 08:00:32 2013 +0200
+
+    Change the check of perl shell detection to work with AIX sh as well
+
+commit 5f0819f102d1cde3899d08708c9c126268899318
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Apr 1 07:38:09 2013 +0200
+
+    CHANGES: snmpd: Make update-controlled changes trigger periodic saves. Thanks to Claus Klein for noticing that this was missing.
+
+commit a8ff26883d63861d876985dde89f3891577d6026
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 31 13:33:02 2013 +0200
+
+    snmpd: Make the update handler call any child handlers
+
+commit 2bc62b972a2bd0b91ddd4f7c11d47dbe5bf6ff03
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 31 13:32:29 2013 +0200
+
+    snmpd: Do not leak memory if handler registration fails.
+
+commit ae9148b51b9b02270fddbb74111ba2c02a8ea67c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 16 22:03:00 2013 +0200
+
+    extend.c: fix missing semicolon and warning
+
+commit 46422d17dfdb416eb24ad7db7453ec473db20820
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Apr 16 13:48:26 2013 +0200
+
+    CHANGES: snmpd: Fixed crash in UCD-SNMP-MIB::extTable
+    
+    snmpd crashed when the command to execute had no arguments, i.e. extend->args was NULL.
+
+commit 8b57bdb0a09472a16d3af69fd2b1374c09e6a3ad
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 8 20:36:35 2013 +0200
+
+    rerun autoheader/autoconf
+
+commit 9a9ea257e6eb47800d34f1a86ec0a2a6e9085f31
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 8 20:35:24 2013 +0200
+
+    rerun autoheader/autoconf
+
+commit 59a3214398bceb22c48d58c0fe9c552b2e1ecb8c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 8 20:31:49 2013 +0200
+
+    rerun autoheader/autoconf
+
+commit e4d72db11d3fb7a44425097b5ec26b9f917a9c82
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 8 19:14:04 2013 +0200
+
+    snmpksm: handle deprecated krb5_auth_con_get{local,remote}subkey
+
+commit 99ff953673f73614463ace1210c4ac073a1f2a81
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 8 19:05:47 2013 +0200
+
+    snmpksm: fix some const cast warnings
+
+commit cf0d4ef224bad000995370483a5c98dc17839a41
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Apr 5 22:05:33 2013 +0200
+
+    Initialize a couple of variables to please clang
+
+commit 71f59e9e6c98e8dbfab1ffb0d1e468c12e3d92ce
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Apr 5 21:38:44 2013 +0200
+
+    Make sure snmpksm includes com_err.h (wherever it is) to declare error_message
+
+commit 8c01f64728a43656dc3ac5fbefdf8ecec8da1506
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Apr 5 21:13:30 2013 +0200
+
+    Minor fix to inline to allow compilation with clang
+
+commit 2db12f688e1f2eeebb589ec73da82eb897f34bd1
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Mar 18 08:54:49 2013 +0100
+
+    CHANGES: snmpd: Make the local truthvalue handler call any subhandlers it might have. Thanks to Claus Klein for noticing this problem.
+
+commit 90512a32bd1c2be5d17b23f10956278395de3754
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Mar 19 22:28:34 2013 +0100
+
+    Patch 1250 from sthen: include <sys/proc.h> in swrun_kinfo.c for OpenBSD 5.3
+
+commit 39193600ec38deb51379a109648d69e7e9001702
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:44:59 2013 +0100
+
+    snmpnetstat: prototype route6pr
+
+commit acce8296dc5b68d212f7404edc2afdb8b02817c0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:39:16 2013 +0100
+
+    clean tabs tp spaces
+
+commit 402bdae96a6d79b3b63b67261b37a847ab4817e3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:37:43 2013 +0100
+
+    snmpnetstat: fall back to ipv4RouteTable (Thanks to fenner)
+
+commit e6917e372a06ddd7761b3103b329bcf696e93a1f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:29:44 2013 +0100
+
+    snmpnetstat: show AS in routing table if available (Thanks to fenner)
+
+commit 9eb8d0f907ed8d78de90dcf6623c33060993f2a0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:28:26 2013 +0100
+
+    snmpnetstat: early detect if we want ipv4 route table (Thanks to fenner)
+
+commit 4083734ef7f4beaf1b9a1325738ba185eb7cc716
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:25:53 2013 +0100
+
+    Fix misplaced newlines in error messages
+
+commit 5b0ed3b76f6e4669f238b5c82cd3cc6cb6caa5cd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 5 17:16:26 2013 +0100
+
+    Unit test T014: Fix a Cygwin build warning
+
+commit 106ad2450f2b78848f292ad03445a97c7f87e6f4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 5 17:17:05 2013 +0100
+
+    Unit test T014: Initialize variables properly
+
+commit a7dea573485931561051a2019027d7ed09d15565
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 4 22:35:06 2013 +0100
+
+    rfclist: add G998x mibs
+
+commit 4604cf61e7cf6ea64e782f4a3d72d4fb024c1f9b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 4 22:23:23 2013 +0100
+
+    snmpnetstat -Cs: consistent field widths for statistics. Document
+    snmpnetstat -Css variant.
+
+commit 4aa92157ce55d1e528d7de52491d3eb7020869e7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 4 22:17:19 2013 +0100
+
+    snmpnetstat.1: remove invalid references to routing statistics output.
+
+commit 751f4a6c7fc89a5cf2b2879f6f915b31466a04b7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 4 22:14:29 2013 +0100
+
+    snmpnetstat: fall back first to ipCidrRouteTable. Thanks to
+    Bill Fenner for initial patch for this.
+
+commit 93c86e6e1cf301bd269fdffb5e9aaace8aa193f4
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Jan 3 07:21:03 2012 +0100
+
+    Do not leak memory on error
+    
+    If allocation of iinfo fails then table_info is leaked.
+    Deallocate table_info in this case.
+
+commit 36a7de7230fbbbb52cc37cbbed281eb559404be9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 25 20:40:09 2013 +0100
+
+    CHANGES: Windows: Add multihoming support
+    
+    On Windows Vista / Windows Server 2008 and later it is possible to add
+    multihoming support by using the IP_PKTINFO socket option.
+    
+    Conflicts:
+    	snmplib/transports/snmpUDPBaseDomain.c
+
+commit 7bbabab2362daa6d76ad73033b3f32b2cba7253f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 22 18:55:47 2013 +0100
+
+    Rework IP_PKTINFO / IP_RECVDSTADDR detection
+    
+    Detect IP_PKTINFO / IP_RECVDSTADDR support during the configure
+    phase instead of repeating the following test in eight different
+    places:
+    
+     #if (defined(linux) && defined(IP_PKTINFO)) \
+         || defined(IP_RECVDSTADDR) && HAVE_STRUCT_MSGHDR_MSG_CONTROL \
+                                    && HAVE_STRUCT_MSGHDR_MSG_FLAGS
+     ...
+     #endif
+    
+    Two side-effects of this patch are:
+    * IP_PKTINFO support is enabled on Cygwin.
+    * setsockopt(IP_RECVDSTADDR) is no longer invoked on Windows when
+      built with Visual Studio or MinGW-gcc.
+
+commit 1a196ad9f1517868b93a6bec93a0cfe1d29e283b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Feb 23 14:03:29 2013 +0100
+
+    Testing: Make unit test T014 more robust
+
+commit 9be22aaaf8393713fbc39025f702111f50f1e4ea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Feb 23 11:03:20 2013 +0100
+
+    Windows: Avoid collisions with the Windows Vista or later SDK
+
+commit 0b6bfef2ca9ae9e1c2beafe700100fae5f6f4c1a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Feb 23 11:20:23 2013 +0100
+
+    inet_ntop() / inet_pton(): Convert prototypes from K&R to ANSI C
+
+commit 2bb51d71eec4e789982c2a741186dce6df238542
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 20:59:25 2013 +0100
+
+    Reduce the time needed to run the regression tests (was enlarged by commit b3d5ed87)
+
+commit cf640ccd68e9636805b75079928c7277fa26083b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 11:55:03 2013 +0000
+
+    Unit test T014: Accept "localhost.localdomain" too
+
+commit bda4357375ad299cf1847579e1a1bc3c611895c3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 16:07:41 2013 +0100
+
+    Regression test T060: Escape backslashes passed to CONFIGTRAPD
+
+commit 6b5d784f4d6d000390014d120f15b937362f8c07
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 20:33:02 2013 +0100
+
+    Python bindings: Fix a recently introduced compiler warning
+
+commit 6d258efa2accadfccc50d86bd46379745449ca4a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 15:27:19 2013 +0100
+
+    python/netsnmp/client_intf.c: Remove superfluous casts
+
+commit 2c2e1f416393d485f9ac90c87f72065c668b7321
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 15:48:34 2013 +0100
+
+    python/netsnmp/client_intf.c: Fix a compiler warning
+
+commit 1bc799de6cab010b25c0c4d3f5155b5fbaf527f0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 20:05:14 2013 +0100
+
+    Python bindings: Fix the out-of-bounds write
+    
+    See also commit 234158b8e84cc204cbac96e6e9be6959635404b8
+
+commit 4f4eaeb920ad15c929c66782cc0a642912cabd06
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 17 12:24:26 2013 +0100
+
+    CHANGES: python: fixed IPADDRESS size on 64bit systems.
+
+commit 486f11ddee9f1c2dd8056449e9031e24b8646872
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Feb 21 10:06:12 2013 +0100
+
+    Added IETF BSD license for MIB files.
+    
+    MIBs included in Net-SNMP taken from IETF Documents are considered
+    Code Components in accordance with the IETF Trust License Policy, as found
+    here:
+    
+    http://trustee.ietf.org/license-info/
+
+commit d24efb04778d870efa2739493949db65f3fdd4f3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 12 20:44:46 2013 +0100
+
+    Solaris: Fix fetching of large chunks of data (larger than one buffer)
+    This fixes problem with many interfaces, but could also fix other large tables.
+
+commit 45001fd98c729df9ff053627c416ab5f2e4c60f3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 12 20:39:50 2013 +0100
+
+    Fix bug 2286,2439: Bound buffersize for swrun data on FreeBSD
+
+commit 9bd0413bfbdcd845413c135bbff8771fa7130809
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Feb 11 11:57:01 2013 +0100
+
+    Explicitly enumerate configuration files.
+    
+    The generic conf and local.conf extensions were interpreted as my.snmp.conf and my.other.snmp.local.conf by some customers.
+
+commit 0bdd09889d0811f864df131b844f20b00392062b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Feb 7 00:05:03 2013 +0100
+
+    snmp_client.c::netsnmp_query_walk: handle SNMPv2 exception results
+
+commit 864b4aca8dfa480a78b745fae2091edc5373a0c6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 6 16:00:54 2013 +0100
+
+    snmptrapd: Add -X option to disable AgentX
+
+commit 112f3d4fa536b2c531d0780676198915a1f58179
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 6 15:59:53 2013 +0100
+
+    rfclist: Add RBRIDGE-MIB
+
+commit c0a6549597947f29c36efadb04927ff690189eba
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jan 30 15:53:15 2013 +0100
+
+    RUNTESTS: don't trap on SIGCHLD. It confuses dash, mksh and maybe other shells.
+    (dash is /bin/sh on Ubuntu)
+
+commit b95ac386e6c2356a1ec29f1c409b2ec3e90159c3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jan 29 08:59:01 2013 +0100
+
+    rfclist: add TED-MIB
+
+commit 23bdf6d26f4337d07ea6e9901a7738d1186d16d4
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jan 29 08:58:07 2013 +0100
+
+    snmpdf: add -CH as alternative to -Ch
+
+commit 40258e9c060aecac6555aedff3e70bde7d2ab846
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jan 28 17:05:08 2013 +0100
+
+    T072com2secunix_simple: awk string indices start at 1!
+    Fix test to work with mawk (default for Debian/Ubuntu)
+
+commit e37f2b6bdffa7afaa1dc0b8aee565a4da82d6fe4
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jan 25 16:24:10 2013 +0100
+
+    snmpdf: Add -Ch (human units) option
+
+commit 7a407ad34505ed4dbaa2e84e06a1dbf48c3c77e5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jan 25 15:28:43 2013 +0100
+
+    snmpdf: Handle SNMP (v2c/v3) exceptions
+
+commit c739cb3875fb5d4cad4138661cc0a4171384c341
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jan 25 10:14:02 2013 +0100
+
+    Apply patch#1246: Fix passing a SET of a string to not cut it at
+    four characters to a pass/pass_persist helper.
+
+commit 234158b8e84cc204cbac96e6e9be6959635404b8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 17 12:24:26 2013 +0100
+
+    CHANGES: python: fixed IPADDRESS size on 64bit systems.
+
+commit 9e0a0e35d8d1b36fa47cec938d6c874de0071bb6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jan 9 22:37:47 2013 +0000
+
+    CHANGES: python: PATCHES: 1239: Fix memory leak
+
+commit 55605ee3452aef5aabe4ed15a83374a97728e64a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 9 09:26:56 2013 +0100
+
+    Fixed memory leak on failed realloc.
+
+commit a32ca93a9b91674a8c1e89e1a383a76136b8ac38
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Jan 8 16:42:54 2013 +0000
+
+    CHANGES: snmpd: PATCHES: 1240: Fix deallocation of integer indexes
+
+commit 87681f0fb285a021636e06a6f2351d76409eebc8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jan 5 15:06:12 2013 +0100
+
+    Avoid using "local" since Solaris' /bin/sh does not understand it
+
+commit 59b4d40f3970ba82f3df2a399971254b04827443
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 4 18:00:53 2013 +0100
+
+    CHANGES: Windows: Make winExtDLL work on 64-bit Windows systems
+
+commit 39597106038f6e1c5ed49b3fce0021a6c59ec1fe
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 4 18:05:38 2013 +0100
+
+    winExtDLL: Add more debugging
+
+commit 85ce9062911d31b42e0c1e135abd3bda813e3003
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 4 18:02:30 2013 +0100
+
+    winExtDLL: Invoke SnmpExtensionClose() before unloading an extension agent
+
+commit 7e031229543579d37b006296e2f445482d0512cb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jan 5 13:04:02 2013 +0100
+
+    winExtDLL: Remove source file win32/MgmtApi-winExtDLL.h
+
+commit 2e89624e55e73557862594f1f525f9dffc827986
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jan 4 22:26:47 2013 +0100
+
+    Solaris /bin/sh does not understand 'local' builtin.
+
+commit 6257dea4827e85c7af845ae9cded48d44aa7bb3d
+Author: Jan Pokornテス <jpokorny@redhat.com>
+Date:   Thu Dec 20 14:45:45 2012 +0100
+
+    Fix comment typos in example.c
+    
+    Patch from Pokornテス <jpokorny at redhat.com>
+
+commit 9dfc44c91d7a29a4c43f779085dde34c5fe6d5ab
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 3 10:30:27 2013 +0100
+
+    MinGW, test harness: Fix a log message
+
+commit 1d099c7b919ef25efa03c14aa77ccbec8e5bb009
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 3 10:24:48 2013 +0100
+
+    apps/agentxtrap.c, Windows: Fix usage text
+
+commit f021e6fd4bc2acb6ffac339d3f38e4c15bb5bd7d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 1 17:53:16 2013 +0100
+
+    MinGW: Update test harness. Installation of pslist.exe is now required.
+
+commit 4bc3c0547e0b33eea71f3c1a09efdd5969d7e278
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Dec 31 17:24:33 2012 +0100
+
+    ucd-snmp/dlmod: Enable in MSVC batch build
+
+commit e9efb20095468e64157b84f18b6ccd991e1082e3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 1 15:04:37 2013 +0100
+
+    Windows: Link with snmpapi.lib and mgmtapi.lib even if not using the platform SDK
+
+commit 900aae8ea693fb840d57526fb671d215f865bedb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 1 01:33:01 2013 -0800
+
+    ucd-snmp/dlmod: Fix an MSVC compiler warning
+
+commit 363e3fa1a43ca6223fe3b0808e66295b3d9386b8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 1 01:27:42 2013 -0800
+
+    ucd-snmp/dlmod: Add dlmod.c to MSVC project
+
+commit e3542c04a84617857688ab8e8718cdc4c6a68cf5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 1 09:14:33 2013 +0100
+
+    ucd-snmp/dlmod: Remove more superfluous casts
+
+commit 1e3b0ae2b02cf1faccad4896bc3bdbea1db4a68f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Dec 31 13:19:36 2012 +0100
+
+    CHANGES: Windows: Ported ucd-snmp/dlmod to MinGW / MSVC
+
+commit 986fb9b85e1383b81eaea40d2cb7c14492ddbdac
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Dec 31 12:32:56 2012 +0100
+
+    MinGW: Avoid confusion between MinGW's kill.exe and the SysInternals pskill.exe (backport commit 9b427b353f1ceb8fe87e6fc8ed3b6cfab3ce7f20)
+
+commit 798b73cf59e3687f65bd54a7a8ac29fe2498c69f
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu Dec 17 13:05:53 2009 +0000
+
+    Unbreak the MinGW build for the 5.4 branch - timeradd() is not ANSI C
+    
+    Remove DIFFTIMEVAL() because it's buggy: in "diff.tv_usec > 1000000L" the ">"
+    should have been ">=" instead.
+    
+    This is a partial backport of commit 858509c9e1998f6d26e90cb622e4b17eb2488a4f.
+
+commit 1e556cc7740c06367ff3361aa96bf45339c2e8a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 30 17:59:44 2012 +0100
+
+    ucd-snmp/dlmod: Remove superfluous casts
+
+commit 51dfa6e67fd8487b8882c1632e811195d9496e41
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 30 10:42:16 2012 +0100
+
+    ucd-snmp/dlmod: Mention library path in error messages
+
+commit 02a357d6b9538a48896368900bbb593dbb4dc374
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 30 10:40:55 2012 +0100
+
+    ucd-snmp/dlmod: Remove a superfluous initializer
+
+commit ef748845b14c095049ed54803ea74cf457efd189
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 30 09:57:38 2012 +0100
+
+    CHANGES: Windows: Fix environment separator in snmpd/snmptrapd/snmptranslate help text. Reported by Jason McCollum <jmccollum@comtechefdata.com>.
+
+commit bc0abae55dd867dbbf4e42e67a36234088c93771
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jan 2 09:25:33 2013 -0800
+
+    copyright update
+
+commit 4086af95b298f1cf130d08deb7e090058b321af9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Dec 20 07:37:14 2012 +0100
+
+    Fix the MIB names to actually work
+
+commit 795274fc21e1ba03efbe9b6042c6a3513d89debf
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Dec 20 07:24:47 2012 +0100
+
+    Clean up and value checking for ipDefaultTTL, ipv6IpDefaultHopLimit
+
+commit 439d50c679e9f09b106bfdf64f8cc766419e1344
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Dec 20 07:24:16 2012 +0100
+
+    Fix icmpMsgStatsTable for Solaris
+
+commit 007a7d24bc5f279392fd0ec4361477cd8f14e5af
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Dec 19 22:14:06 2012 +0100
+
+    git ignore tilde files
+
+commit aff02f24e198a29231273d494820dd6e354155ca
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Dec 17 22:44:18 2012 +0100
+
+    Running autoheader/autoconf
+
+commit 9cfd680f2f2f45cf76cd4216693b862faa27cbc1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Dec 17 22:42:00 2012 +0100
+
+    Config check for BSD udpstat.udps_ipackets
+
+commit 53c2fdd5b66021144ad26539b53be9c1593b4884
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Dec 17 22:27:03 2012 +0100
+
+    Add SD support for ip-forward-mib
+
+commit ca7b17a41d4d16bd27aacf92116bea3562eeea36
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Dec 17 12:40:32 2012 +0100
+
+    CHANGES: snmpd: use cache for dskTable to speed it up.
+    
+    UCD-SNMP::dskTable was slow on NFS mounts. Now it uses fsys cache
+    to reload mounts every 5 seconds.
+
+commit 0b718184e070d2574c09b18f568950a8c9ff7659
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 16 20:57:29 2012 +0100
+
+    CHANGES: apps: Stop using snmp_perror when logging after functions that don't set snmp_errno.
+
+commit 7edce0c311a7dd5428e0edb701dabe9dc79d0967
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 15 12:40:10 2012 +0100
+
+    CHANGES: building: Make the -without options to rpmbuild work
+
+commit c6037548fb4b47996330fe1bc1e8265acea5dd54
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Dec 10 00:41:42 2012 +0100
+
+    The proper router files for BSD
+
+commit 2b359e450986bb8744bbff21e0cab493acacea98
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 23:02:02 2012 +0100
+
+    Support for ipSystemStatsTable for *BSD. Most of the code by Garrett
+    Cooper. Partially funded by Cisco Ironport.
+
+commit 9a044128e8b331796221166358769eb0535dfc1f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 22:36:21 2012 +0100
+
+    Support for ipNetToMediaTable for *BSD. Most of the code by Garrett Cooper.
+    Partially funded by Cisco Ironport.
+
+commit f9cb298dd20ef6d4bc683ce067f2330737be4e09
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 22:17:22 2012 +0100
+
+    Support for ipDefaultRouterTable for *BSD. Most of the code by Garrett
+    Cooper. Partially funded by Cisco Ironport.
+
+commit 1dee41562c54e0b54b301a37838b3ba6509dcc38
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 21:54:14 2012 +0100
+
+    Support for ipSystemStatsTable for *BSD. Most of the code by Garrett Cooper.
+    Partially funded by Cisco Ironport.
+
+commit 3dbabc97068b6c690b3fdf97b5ab3ae0d9eab28c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 21:47:45 2012 +0100
+
+    Change some debug output into error logging. Failure to expand 32 to 64
+    IS an error.
+
+commit 907360e09fff3390d6269f8cb4740bdbcd958166
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 21:45:44 2012 +0100
+
+    Fix some labels for netstat icmp output.
+
+commit 9f2f05405c7bb499ebe0839b0d79ba25c61c0f55
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:49:51 2012 +0100
+
+    Running autoconf
+
+commit d27f36452583d291f255ef090e2aeaeaf39a9e0e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:49:02 2012 +0100
+
+    Running autoconf
+
+commit 56352c2ebe9541f6abf9d2b9ebc4705d818d89b8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:48:21 2012 +0100
+
+    Running autoconf
+
+commit 397923e0aae1385a0af3a803e60ebe8124f961d2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:26:21 2012 +0100
+
+    Fixes for configure of ksm module. Previously ksm had to be the
+    first security module in list to be included.
+
+commit 430d10d296b8d8c98a3aafd27a8c6ff4f6408114
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:24:39 2012 +0100
+
+    Fix speling which has prevented ksm module from compiling for many years :-(
+    Also some fixes to support Heimdal Kerberos. This supports Free/NetBSD.
+
+commit bff832ab248e08628be46ebf76111911e7f39e52
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:17:22 2012 +0100
+
+    Adapt for longer lines from /proc/net/tcp6. And issue an error if
+    it happens to fail again. Patch from bug #2425 (Thanks Zhixu Liu)
+
+commit 9687e4d50781ba0168416f15c4f2d9fc8371050a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:15:48 2012 +0100
+
+    icmp support files for *BSD (exceptNetBSD)
+
+commit f215ba1e37a8c3e076958efd83c0f5d393a14c22
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:13:24 2012 +0100
+
+    Support for icmpStatsTable/icmpMsgStatsTable for *BSD and Solaris
+
+commit a7b7c3c0c3be3f6cf2d09f6470d3fa086153d036
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 30 15:35:33 2012 +0100
+
+    Shuffle in preparation for broader support for icmpStats/icmpMsgStats
+
+commit bd296ac18423503eda8effeb86afb19e00143889
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 30 15:34:52 2012 +0100
+
+    Shuffle in preparation for broader support for icmpStats/icmpMsgStats
+
+commit 2e23ea0f293bb8e9ceaf5636db7b7d07f6d62c7a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Nov 20 23:33:58 2012 +0100
+
+    Add missing ssIORawSent/received for Solaris.
+
+commit 59eebc41a9435811073fec50d76dd6aef9dd58a7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Nov 20 23:32:53 2012 +0100
+
+    Add some error checking to gittools
+
+commit 80b18375826653626c2d70451c2b54a1c50a3ce6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Nov 13 13:55:47 2012 +0100
+
+    Remember to init the systemstats provider
+
+commit 743cb66718904979f55895472501584c30c66f10
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Nov 12 15:49:15 2012 +0100
+
+    Fixed crash when MD5 and/or SHA-1 hash is not supported by OpenSSL.
+
+commit 1898cfc71bdb3f4a1685c6d21b54dd1a3482591c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 12 15:48:15 2012 +0100
+
+    OpenBSD 5.2 support.
+
+commit dd53ffbafeb31cde616a89949e70e3d5fe0cc1b3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Nov 12 15:46:43 2012 +0100
+
+    Fall back to SHA-1 if MD5 is not available.
+    
+    On paranoid systems where MD5 is disabled use SHA-1 instead of MD5 and don't crash.
+
+commit ea8f74c81f82c105b9fc01965adce14b0d8186da
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 12 15:46:34 2012 +0100
+
+    Fix NetBSD memory data typing
+
+commit dde3a35baaeb683cf1441a16a15441f8b456c520
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Nov 12 15:45:27 2012 +0100
+
+    CHANGES: snmplib: Fixed crash when MD5 hash is not supported by OpenSSL.
+
+commit b77b67d8d629f785639e402fa4fbee6ccfe18fa5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 12 15:44:49 2012 +0100
+
+    Kernel processes in DragonFly, and fixed cpu usage data
+
+commit d6c62012c8082fc886f747e0e2c9bb8a6c66c663
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 12 15:41:55 2012 +0100
+
+    Diskio for OpenBSD, and some clean-up for FreeBSD/DragonFly
+
+commit 4a5e0f4c95fb6cd123a4901787376e447d332c02
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Oct 9 14:23:48 2012 +0200
+
+    CHANGES: added simfs (OpenVZ filesystem) to hrStorageTable and hrFSTable.
+
+commit 2a0cd35acf3325a6fdc0a10423f54cb8b5ce522b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Sep 13 15:25:52 2012 +0200
+
+    CHANGES: snmpd: fixed infinite loop when SIGTEM arrives in middle of internal query processing.
+    
+    When snmpd starts internal query, e.g. for 'monitor' config options, it calls
+    netsnmp_query_walk(). This function loops until either error occurs or the
+    internal request is processed. And if SIGTERM comes to this loop, the request
+    is not marked as failed.
+    
+    Patch originally from Masahiro Matsuya, mmatsuya [at] redhat.com
+
+commit bc449c0f85ae9fa08ac4fce67282f48eb7ab1984
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Sep 10 13:25:38 2012 +0200
+
+    CHANGES: snmpd: fixed value of UCD-SNMP-MIB::extCommand to contain full command line.
+    
+    MIB description of UCD-SNMP-MIB::extCommand suggests it should contail full command line.
+    Also in Net-SNMP 5.3.2.2, whole command line was shown.
+
+commit a3978f2cc2056c97a4c3f338f709a20291aed472
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 12 06:48:37 2012 +0100
+
+    Proper handling of configure-generated snmpconf
+
+commit 0f46992924de5a4ab0763a8d44a1cece4a991d80
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 5 21:16:37 2012 +0100
+
+    Patch for OpenBSD 5.2 (Patch 3559420)
+
+commit 9ed0b2e0ac0c8e549b8f9a5845e9d1faacab73c5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 5 20:08:41 2012 +0100
+
+    rfc6779
+
+commit aef76ca0cba2ca56f6aa1db5c5b58a54939f389b
+Author: qqshka <qqshka@users.sourceforge.net>
+Date:   Wed Oct 31 20:00:04 2012 +0100
+
+    AgentX, IPX: Restore default port (bug #3582283).
+    
+    This reverts commit 7b9e03441c3dc3a07670ed01f5d04791a82c750c.
+
+commit d7d98e5aa9ee8ca7918b7675043d479cf77b83c4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 1 10:33:06 2011 +0200
+
+    .gitignore: Add local/snmpconf
+
+commit 71d83ba4117a2cfb7874e91832e45973da42ee98
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 1 10:34:30 2011 +0200
+
+    Win32, MSVC: Make build.bat work again now that ENV_SEPARATOR is configurable
+
+commit 5e500082728f453595f5024d241208c51f08d22c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 29 18:12:41 2012 +0100
+
+    README.win32: Remove reference to the no longer supported Cygwin compiler option --mno-cygwin
+
+commit 1a36dee165b8bd7df3ef694b7c3f2621a5449daa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Aug 30 20:54:00 2011 +0200
+
+    CHANGES: snmpd, snmptrapd and apps: Make ENV_SEPARATOR_CHAR configurable
+
+commit 0e1ca45a6f8d8acf44aa21a009a9e51192e84783
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Oct 28 10:11:22 2012 -0700
+
+    snmpnetstat: Fix MSVC compiler warnings
+
+commit 4a6d0378a3916571ce7604c4a3d54a8c96a8f807
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Oct 28 09:54:12 2012 -0700
+
+    Windows: Visual Studio 6 build fix for strlcat()
+
+commit 41b48a6370952bf4b12d34fb05ec55fb0702e8cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Oct 28 14:37:52 2012 +0100
+
+    Windows: Make snmpnetstat build again
+
+commit 2451f826479881a4926fcf88855f582585eb813b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Oct 28 10:23:17 2012 +0100
+
+    win32/build.pl: Reduce code redundancy
+
+commit 6e99388683a6c854035f042a9d07c0723117e8a6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Oct 28 09:41:20 2012 +0100
+
+    Windows, batch build: Remove the obsolete variable "SSL"
+
+commit 7544adc5a1c76889e4a9ed51e96d22d02fd5695e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 22 15:35:04 2012 +0000
+
+    NEWS: Windows: Port batch build infrastructure to Visual Studio 2010 and later
+    
+    From Visual Studio 2010 on it is no longer possible to specify
+    include or library directories globally - these have to be specified
+    per project. Hence two additional menu entries in build.bat that
+    allow to specify these directories.
+
+commit 1b8a79c1c2eb13f8b207c12aa6e71a29ff00396f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 22 19:10:07 2012 +0000
+
+    win32/Configure: Factor out common code
+
+commit 2af7a73b0ca8cdbd36a7f19dd8e55764c8498552
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Oct 27 18:27:42 2012 +0200
+
+    Windows: Make snmpnetstat build again (see also commit aa5912b8986cde74090ba15be196426309a1e1f0)
+
+commit fa98b4cbd6dc15aa926166eef04d5bc8dfbaaad6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Oct 26 07:56:06 2012 +0200
+
+    Cope with additional statistics in /proc/net/sctp/snmp in RH6
+
+commit 54290bede338164ca65a3eed224fa5040d7dd857
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Oct 26 07:50:11 2012 +0200
+
+    Better cleanup of "exec" config to avoid crash during reload of config
+
+commit 82aa246671194f04be52c621e9f83d0fabd24fa5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Oct 24 15:30:11 2012 +0200
+
+    Don't mix code and declarations!
+
+commit 4e9ea845592fff8b2aae5d318dcabf41f9570632
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Oct 24 15:25:35 2012 +0200
+
+    Don't mix code and declarations!
+
+commit 21d5c6785e916b5101440ed1a4f71b41ba2eb809
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Oct 24 09:27:23 2012 +0200
+
+    Remember to free the description (if saved) during unload_all_mibs
+    (patch 3565922)
+
+commit 2b9940ca56fc8d3d610efd2eba9ae4ebb741e671
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Oct 24 06:41:46 2012 +0200
+
+    Clean up diskio config before reloading.
+
+commit f7768fb643be282d635289b57f88a07d070487b0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Oct 23 11:48:31 2012 +0200
+
+    apps/snmpnetstat/inetx.c: Eliminate dead code (see also commit aa5912b8)
+
+commit 64c56f27c5ed432ce8de44e2579ca0c806a517ea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 22 17:45:19 2012 +0000
+
+    build.pl: Eliminate a temporary variable
+
+commit 30a5d013a80e9fd50b8fd0f70ffd96ff26b6e454
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 20:29:09 2012 +0200
+
+    Update to current IANA version
+
+commit f40d440689067ef6c4da7ddadfb373a452197fbd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 22 19:47:06 2012 +0200
+
+    win32/Configure: Strip trailing whitespace
+
+commit d34e057779cb32e94324089dc4625638309cfe89
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 22 18:36:59 2012 +0200
+
+    win32/build.pl: Strip trailing whitespace
+
+commit 30daef1860397f045c4055cd61d663d290dd47f2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 18:32:38 2012 +0200
+
+    Fix MSYS kill/pskill confusion
+
+commit 14be9132b91158b05120710b1ff6a4b2accc531d
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 18:10:44 2012 +0200
+
+    Fix net0/netx confusion
+
+commit 8107a6352df2478660994ef103d52801a6607cc9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 17:03:47 2012 +0200
+
+    Fix speling errors
+
+commit aa5912b8986cde74090ba15be196426309a1e1f0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 16:58:50 2012 +0200
+
+    Implement the modern IP version agnostic table in snmpnetstat.
+    If the modern table is not available (or the -CL option is used)
+    fall back to the legacy tables.
+
+commit 1a34d2249ef0d2215e5886f9b3c97ecfa7eb5190
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 16:39:41 2012 +0200
+
+    Pick up ifDescr from ifXTable when available, and use that as the name.
+    Very useful if pci-utils were avalable when compiling the agent as the
+    name otherwise will be the very obscure chip name
+
+commit b4caf543cff7dba8f9acca2b9ea88c9b79dc39ee
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 16:32:12 2012 +0200
+
+    Pick up HC octets and McastOctets from /proc/net/netstat of current RHEL6
+    and Fedora kernels.
+
+commit c655fce784532a523f7db582d0cd07dee4ad7ac5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 16:25:59 2012 +0200
+
+    Try to better classify Linux kernel threads as hrSWRunType=Os
+
+commit e1a8c95ca55f569585c88e174a43f6d4129c439d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 20 09:59:41 2012 +0200
+
+    Correct the nesting order of the doxygen end section comment and the feature removal endif.
+
+commit f67adf2a37a8c182eacbcfe52d5b789191a65929
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Oct 9 16:32:47 2012 -0700
+
+    remove release requirements
+
+commit 3e54330393ccc86525ed6fb9a0fc19c068306610
+Author: Jan Safranek <jsafrane@redhat.com>
+Date:   Tue Oct 9 06:34:10 2012 -0700
+
+    fix double-negative typo
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.rc3 -> V5.7.2
+
+commit 5054b570619df0a81958a045bef135b20205f036
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Oct 9 15:26:05 2012 -0700
+
+    make depend for 5.7.2
+
+commit 56a797ff3e71dc886467d17ce025b0237c8c1cc3
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Oct 9 14:42:23 2012 -0700
+
+    Version number update: 5.7.2
+
+commit 0813f8b62df0e8440ffef161ce134ff9455e7de9
+Author: Jan Safranek <jsafrane@redhat.com>
+Date:   Tue Oct 9 06:33:58 2012 -0700
+
+    fix double-negative typo
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit a6a88927534684e275ccf0e780513094a73fc6bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 9 06:31:21 2012 -0700
+
+    AIX net-snmp5.7.1 hrSWRunPath not complete
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 58a4d8839021f772c35a732bd096d1e290dc0a62
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 9 06:30:57 2012 -0700
+
+    AIX net-snmp5.7.1 hrSWRunPath not complete
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 626eabec4ea98e5359089790858479a59a26cdcb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Sep 30 23:30:28 2012 +0200
+
+    CHANGES: snmplib: Move the check that the pdu variable is non-NULL to before the first dereference of it.
+
+commit 68aab572c2d2746b51a95eba110568c38b050808
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 25 19:07:42 2012 -0700
+
+    Release Candidate for V5-7-patches
+
+commit 0a41533b1b49f00d7357a3d2bea5dfa75e8edcd7
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Sep 24 00:07:19 2012 +0200
+
+    CHANGES: testing: Add test cases for snmp_service
+
+commit a61b48d78e11d945def46fde0f7d55f7919c335a
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Sep 23 07:53:09 2012 +0200
+
+    Prefer copy_nword_const over copy_nword(NETSNMP_REMOVE_CONST
+
+commit 9bffc5413d0d882398b06f4109ac807af2f78347
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Sep 23 00:29:44 2012 +0200
+
+    Simplify logging through the use of netsnmp_config_error
+
+commit d09d53a0fa6df63b21e6f12731bee51a3624e85e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Sep 22 21:30:08 2012 +0200
+
+    CHANGES: snmplib: Do not crash on incomplete configuration tokens.
+
+commit 02dce6f43b99f85941627928c1a5022d6725d124
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Sep 22 21:28:51 2012 +0200
+
+    CHANGES: snmplib: Do not truncate single default transport domains
+
+commit 211e3c70625965441b2a029a6113802974673c43
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Sep 22 11:23:19 2012 +0200
+
+    CHANGES: snmplib: Do not crash from empty values in --token=value arguments
+
+commit af3d2d973b1e8e29d205d8a07acd82b1f854819e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Sep 22 10:30:16 2012 +0200
+
+    CHANGES: snmplib: Add the symbol NETSNMP_PRIo to help in printing oid values.
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.rc2 -> V5.7.2.rc3
+
+commit 8b45292301f0349ffb69d4fd8595f2d5b199e6b6
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 25 19:35:39 2012 -0700
+
+    make depend for 5.7.2.rc3
+
+commit 0cbffb565e62aef937fc700d8d3c3b8c65ddfa65
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 25 19:07:40 2012 -0700
+
+    Version number update: 5.7.2.rc3
+
+commit 40505971add6a3b6f5954cfbde532749bfbcb16a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:34:37 2012 -0700
+
+    fix for hidden CMSG_xxx macros on AIX
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 60f0a9e983ab827c824e397d62aeff48a60f0133
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:31:12 2012 -0700
+
+    Fix pstat memory leak on hpux 11i
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 13bd4d56baa9886018a00477e3214ebe02705ffe
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:31:04 2012 -0700
+
+    Fix pstat memory leak on hpux 11i
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 0805420813de156c7fc5142534fb420a0fcc3572
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:28:59 2012 -0700
+
+    fixes AT code on hpux 11i
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit bdb3b146380db1316cabd58b704436e7eecdd9f5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:28:50 2012 -0700
+
+    fixes AT code on hpux 11i
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit e936cf810a47379156d913a714e3816181a0d3db
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:25:20 2012 -0700
+
+    fixes disAvail on FreeBSD ufs
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 608ab57887e5566e63509a3f7e5d0a3e2892f4a7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:25:02 2012 -0700
+
+    fixes disAvail on FreeBSD ufs
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.rc1 -> V5.7.2.rc2
+
+commit 07f914564e097224d677515c2f5fd1f3c0c9eb42
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Sep 1 09:54:42 2012 -0700
+
+    Release Candidate for V5-7-patches
+
+commit aee217c07ea9f34a32268e966c7ecef036ec4a96
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Sep 1 09:54:38 2012 -0700
+
+    Version number update: 5.7.2.rc2
+
+commit 119b0d3cf12c97ca3c74d6d1e72319670a8378aa
+Author: Bill Fenner <fenner@users.sourceforge.net>
+Date:   Sat Sep 1 09:51:08 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3560473: from fenner: Handle TimeTicks when pretty-printing OID
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit c94c62ea0edcebbfbb73fab6ecddc679f7694dab
+Author: Bill Fenner <fenner@users.sourceforge.net>
+Date:   Sat Sep 1 09:51:08 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3560473: from fenner: Handle TimeTicks when pretty-printing OID
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 6d7f9eb0decdb9682836ffd03f19742197ad87db
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 29 21:14:46 2012 +0200
+
+    Fix possible memory overrun in fsys_getfsstats.c (patch 3559417)
+
+commit f235ee8b32eed1de3f1e4202ef45b6377fbce163
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 29 21:07:14 2012 +0200
+
+    Fix for hrStorageTable on AIX (bug 3557159)
+
+commit 78cc9d5ccd86b170622aac543c345c020755c78a
+Author: sthen <sthen23934@users.sourceforge.net>
+Date:   Tue Aug 28 17:18:09 2012 -0700
+
+    add missing process status values under net/open-bsd
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 4ef9dcd80b0bda1e18b7e349a08bc0f22a7e755e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Aug 28 17:16:37 2012 -0700
+
+    CHANGES: OpenBSD: PATCH 3559414: from nba: support OpenBSD for hr_swinst
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 0b569fccea9414c50cfd6b0e83e1831ba1291ce2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Aug 28 17:14:45 2012 -0700
+
+    add missing process status values under net/open-bsd
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 1d3c7be7fa7a38fd3fc39720bb5cb70f8bd71160
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Aug 28 17:14:22 2012 -0700
+
+    add missing process status values under net/open-bsd
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit ff438433aca096bbbea29dd30dfd5c5523761a72
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Aug 28 16:50:46 2012 -0700
+
+    Fix real memory reporting on BSD systems
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit c429a4f3984dae791e307df702251f96ef047d88
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Aug 28 16:49:10 2012 -0700
+
+    Fix real memory reporting on BSD systems
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 41d980c015564db7f22f763190f61ac0d56ba3b2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 24 14:35:53 2012 +0000
+
+    Windows: Unbreak DLL build
+
+commit 2793923bfe2b026fcaeaf538ae503f105cb315bc
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 3 22:26:20 2011 +0000
+
+    added missing TLSTCP mention in the help output
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.pre3 -> V5.7.2.rc1
+
+commit 9ec5c599780251dcd3155f9ac9806ece7ed6ba22
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Aug 11 12:00:37 2012 -0700
+
+    make depend for 5.7.2.rc1
+
+commit 3358b65b11e2c0ee712f609f02071260f75f9bb3
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Aug 11 11:39:38 2012 -0700
+
+    Release Candidate for V5-7-patches
+
+commit 4849a430daafb91c7a61bfbbc17f9299e58fcf64
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Aug 11 11:39:35 2012 -0700
+
+    Version number update: 5.7.2.rc1
+
+commit 1bc268428e829852c9ef0a79552ca4045add28a3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Aug 9 22:42:52 2012 +0200
+
+    Make sure we have an initialized kvm structure when querying proc table on BSD.
+
+commit 7e67c5038b6aabfda1939ea81d940b24000cfb51
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 14:27:08 2012 +0200
+
+    Removed error message when file cannot be opened.
+    
+    This should be handled by caller, not in the function. There is only one caller now, udp_endpoint_linux.c.
+
+commit 59b0de0b8fa73eb403006cee75ff8651e1585e28
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 14:23:14 2012 +0200
+
+    Fix compilation errors introduced by commit f95df6341b1d06249443e516b59a43cdfa3d4777.
+    
+    This is embarassing, I compiled the sources without --enable-ipv6. Sorry for inconvenience.
+
+commit 5d7edadd4761680b66d1df3bfde7ca5b16ca5a16
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 12:46:35 2012 +0200
+
+    Fix compilation error introduced by commit f95df6341b1d06249443e516b59a43cdfa3d4777.
+
+commit 43c97bbaaf211f4c7f7c704cfcb901dfbf834874
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 12:30:09 2012 +0200
+
+    CHANGES: snmpd: Lowered severity of 'Error expanding XXX to 64bits' messages.
+
+commit 8e5cf2a72a46cd483d22e6290a6c8c4c26af6ad2
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 12:25:48 2012 +0200
+
+    CHANGES: removed counter-64 error messages.
+    
+    These messages do not say enything useful, caller should check their return value and report it.
+
+commit f95df6341b1d06249443e516b59a43cdfa3d4777
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 12:01:25 2012 +0200
+
+    CHANGES: snmpd: removed error log messages when IPv6 is disabled.
+
+commit 18dace8e4a36b083d6ef717735c63e7f40224db8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 10:41:45 2012 +0200
+
+    CHANGES: added CVFS (CentraVision File System) to hrStorageTable and hrFSTable.
+
+commit 90f431b45d21506427bc0bd1d4ee69e0b8ea30bc
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 8 23:10:50 2012 +0200
+
+    Update to current MIB versions
+
+commit 9e7a0b9e580d3b1ea6198a7414c816c23b123b10
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 8 22:27:16 2012 +0200
+
+    Use a wrking awk for Solaris
+
+commit 0e3922ae21e4b7ec538867afd22ce74d741e0f1c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 8 22:17:34 2012 +0200
+
+    fix prototype for klookup
+
+commit a22109711a6d1ec14b6a3f1cac221d70263f104a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 8 22:08:13 2012 +0200
+
+    fix prototypes for klookup
+
+commit ac062972c585174f95d7ba87aa5ec54c42fdec55
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 8 22:00:26 2012 +0200
+
+    fix prototypes for klookup
+
+commit 7cdd8ebef9507fe766107ca9fee054c44cc0bac5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Aug 5 08:13:59 2012 +0000
+
+    Make snmp_alarm_reset() use the monotonic clock. Fixes a bug introduced in commit 37ba7e2.
+
+commit 023f61ea783bfcc53fe90aa66545c5aea2db8061
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 8 16:26:54 2012 +0000
+
+    Fix build breakage caused by commit 028614ecf2d67398699dc3bd784029f3360f2e13
+
+commit cd820949a1491af103a8555f6bdae04851f3d285
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 8 16:16:43 2012 +0000
+
+    Undo build breakage caused by commit 37ba7e20a521fbf0458a0c77eea2e5e36bd7ec0a
+
+commit f143008ccc57ea10cbb88ab3554822b17b6270aa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Aug 5 08:45:42 2012 +0000
+
+    Make get_exec_output() work on big endian systems.
+    
+    Undo API breakage introduced by commit 7374b84fe4c2ef8497fde3dae80a69aa89eba19c.
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.pre2 -> V5.7.2.pre3
+
+commit 84322e0dc2a8974646542d9881bc01b43dc3a12d
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 31 16:24:07 2012 -0700
+
+    make depend for 5.7.2.pre3
+
+commit 8fec7a81d6133a5f05ed34a5af9806af5d128223
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 31 15:57:56 2012 -0700
+
+    fix the assert check to allow for some known asserts
+
+commit dfde6d2ddd519c8c2ae1788774fdf90d8bea02b1
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 30 10:08:24 2012 -0700
+
+    include errno.h and don't use continue outside a loop
+
+commit 7cffe0222cd98a21e30f44c3df9f0d90bf096fe9
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 31 14:13:50 2012 -0700
+
+    Version number update: 5.7.2.pre3
+
+commit 22af7fd46776a8db2362e88acb1b69b165c034b6
+Author: blentz <blentz@users.sourceforge.net>
+Date:   Tue Jul 31 13:52:40 2012 -0700
+
+    CHANGES: aix: PATCH 3403433: from blentz: Issues with hrSWRunName and Parameters on AIX
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 516b9f8275b8db03cdc41078e65c2170309a3f8b
+Author: Julien Pinon <jpinon@users.sourceforge.net>
+Date:   Tue Jul 31 13:25:31 2012 -0700
+
+    CHANGES: perl: PATCH 3412939: from jpinon: Repair tkmib
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 8f230f401c64d822883ac444624a2c2fd7128d8e
+Author: Harsha Shivanna <naanuhs@users.sourceforge.net>
+Date:   Tue Jul 31 13:22:11 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3552745: from naanuhs: fix to support 32 chars for VACM names as per RFC-2575
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 34008d32aef43d8bbe1000fb9bf94642c0514f6f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 31 13:20:31 2012 -0700
+
+    fix the agentx ping patch so it works with the newer alarm structure names
+
+commit 962676394d3fe557ead91057b4d780226dc0d6b3
+Author: Mijo Safradin <mijos@users.sourceforge.net>
+Date:   Tue Jul 31 12:48:01 2012 -0700
+
+    CHANGES: agent: PATCH 3414051: from mijos: snmp-bridge-mib: fix for dot1dBaseTable
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 37ba7e20a521fbf0458a0c77eea2e5e36bd7ec0a
+Author: Vincent Bernat <vbernat@users.sourceforge.net>
+Date:   Tue Jul 31 12:27:28 2012 -0700
+
+    CHANGES: agent: PATCH 3481686: from vbernat: Dont ping master agent unless there is no incoming traffic
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 2be5feadb0540846e0e3ada27efb97894a4cbd52
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 31 07:29:17 2012 -0700
+
+    added a darwin 12 version
+
+commit 1f9bcd21e7c2d5effb62aa01b7b87e43dc86214c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jul 31 14:43:27 2012 +0200
+
+    Fixed SCTP-MIB::sctpAssocPrimProcess, the list of processes was not initialized.
+
+commit 48be5e89aa04adb0df7e094b2fe463015429fc98
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jul 31 13:48:31 2012 +0200
+
+    Added log message when ipTable misses some interfaces.
+
+commit 7523f0f01ba4db65ac1647a23228cf06c0b72a03
+Author: Mariusz Ceier <mceier@users.sourceforge.net>
+Date:   Mon Jul 30 10:19:33 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3536692: from mceier: create a unit test for read_config APIs
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit c07b8d9b3770b615c8e162dbdf7643805f372d75
+Author: Mariusz Ceier <mceier@users.sourceforge.net>
+Date:   Mon Jul 30 10:18:42 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3536692: from mceier: Fix for callback calling when unregistering config handler
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 5c2424f07d85c0c4f79d6c5faf64d7f3ee861726
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 30 10:08:42 2012 -0700
+
+    don't duplicate send_enterprise_trap_vars def
+
+commit 7374b84fe4c2ef8497fde3dae80a69aa89eba19c
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Mon Jul 30 09:41:17 2012 -0700
+
+    CHANGES: freebsd: PATCH 3383970: from yaberauneya: Fix compile error on FreeBSD 9.x/POSIXify auto_nlist, etc
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 670d96e786590fdd30a16a3300c0ed5bd6e53214
+Author: Mark Rusk <user_id=349895@users.sourceforge.net>
+Date:   Sun Jul 29 23:39:22 2012 -0700
+
+    CHANGES: agent: PATCH 3424933: from user_id=349895: Use NETSNMP_DS_AGENT_AGENTX_TIMEOUT for the default timeout
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit f1eaec15ef603b8ce542932ffdbd8788c3d1acc5
+Author: Daniel Hobi <hobid@users.sourceforge.net>
+Date:   Sun Jul 29 23:28:01 2012 -0700
+
+    CHANGES: agent: PATCH 3530794: from hobid: pass/pass_persist: unregister MIB with correct priority
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit d783ad990e914c0ee1c98d0a93a429eb2b2f4997
+Author: Doug Manley <tekkamanendless@users.sourceforge.net>
+Date:   Sun Jul 29 23:25:40 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3526599: from tekkamanendless: A buggy SNMPv3 agent can cause a net-snmp client to hang
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit e9851520c18d7ed172404a37dc0dc7a136bfaedd
+Author: Daniel Evers <daniel-evers@users.sourceforge.net>
+Date:   Sun Jul 29 23:14:19 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3548257: from daniel-evers: fix for recursive pthread mutexes
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit e7a37678c2b7359afd44a307e824c1f7d7a0c87d
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sun Jul 29 21:35:35 2012 -0700
+
+    NEWS: osx: patch: 3514049 from twobits-github: fix compilation on darwin11
+
+commit 1221426abad15b9b2fcee8f1e32ab52ef2692952
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 14:18:24 2012 +0100
+
+    CHANGES: perl: PATCHES: 3529541: Don't refer to internal 'my' variables from external scripts
+    
+    Fix provided by Lezz Giles
+
+commit 9c06c2202dc056703c80959a0eca9a71684c28de
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 13:29:30 2012 +0100
+
+    CHANGES: Linux: PATCHES: 3536420: Ensure snd/rcv memory buffers are suitably aligned
+    
+    Patch provided by Tyler Olmstead
+
+commit 89b82c55f9efd2e8ab8c6d65fa567c5b1fac1843
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 13:14:07 2012 +0100
+
+    "Idle" processes (i.e. in the process of being created) are probably
+    best regarded as "waiting for an event" to become runnable - i.e. 'notRunnable(3)'
+    That event being the completion of the creation process.
+       It's arguable whether or not they are strictly "loaded", but
+    this feels less misleading than reporting them as 'invalid(4)'
+
+commit 6e780a5bf0d64bf47dfbf479ae7f56c10ff8166e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 12:57:54 2012 +0100
+
+    Clarify meaning of hrSWRunStatus 'invalid(4)'
+    Ensure architecture-specific alternatives don't confuse code syntax
+
+commit 99b353f7253a5bb38b86f31c2708e16b34a46ce7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 12:50:51 2012 +0100
+
+    Additional patch from Patch ID #3543000
+
+commit d0e03fe4a236945daf42af7a47094e686f9bdb9e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 12:41:02 2012 +0100
+
+    CHANGES: snmpd: PATCHES: 3543000: Various fixes to Rmon code
+    Supplied by Patrick Ritter
+
+commit 6632a2b9b9fad1a0b0d6baedf2a2b391f5d4e914
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 14:39:42 2012 +0100
+
+    CHANGES: perl: BUG: 3517030: Ensure large tables are walked properly
+
+commit b8d16604dbb2f80ebe2852322aa83361a0323796
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 14:19:07 2012 +0100
+
+    CHANGES: apps: BUG: 3529768: Be more careful when stripping off numeric suffixes
+
+commit 0b3ad44ec4c1b9f41dc3ef70e6a38a53ef268ade
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 13:34:10 2012 +0100
+
+    Fix comments describing FreeBSD relationships
+
+commit 8cf7a89187a996faff040414986ffa5d78d5683e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 13:21:56 2012 +0100
+
+    CHANGES: build: BUG: 3532234: Fix typo in libtool script
+    (addressed properly in libtool 2.4.2)
+
+commit 4258d852ca7b6aeae93ad73064d43aa807eb6104
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 13:16:20 2012 +0100
+
+    CHANGES: doc: BUG: 3535269: Document use of [snmp] for client-side tools.
+
+commit 26ed40cbd07cf271a9cfc4517d964774712ad77c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 12:57:56 2012 +0100
+
+    Support local rollup of patches without first synchronising with extenal repo.
+
+commit 904c442d60c5b99aacd7f60307c28684efae854c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 12:53:37 2012 +0100
+
+    CHANGES: python: BUG: 3535967: Fix memory leak - snmp_{sess_}error allocates the output buffer
+
+commit 597ecda68ee2b580b666288977b04aa133207517
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 12:17:14 2012 +0100
+
+    CHANGES: BUG: 3540621: dist: Add missing Provides: to net-snmp-perlmods RPM spec
+
+commit 43d5ba224c3f29fd8e7fd1d060a17045aad7eff0
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 11:25:43 2012 +0100
+
+    CHANGES: perl: BUG: 3541012: Fix handling of gettable columns
+
+commit bc293acad8d3487cddef3c70cea74368f34d9354
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 11:20:20 2012 +0100
+
+    CHANGES: snmpd: BUG: 3543864: Remove extraneous function type
+    (and fix a related typo)
+
+commit 028614ecf2d67398699dc3bd784029f3360f2e13
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jul 24 15:37:16 2012 +0200
+
+    CHANGES: snmpd: fixed snmpd exiting shortly after start due to incoming signal.
+
+commit 4d38895f459a1df24f68c4a60e4caf6a778d8c1f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jun 27 09:35:44 2012 -0400
+
+    CHANGES: snmpd: removed limit of 'exec' and 'sh' entries in snmpd.conf
+    
+    Use dynamic (re)allocation instead.
+
+commit dceeacc998fe2322882e7eedec0a71a79dc494ab
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Jul 24 09:00:23 2012 +0100
+
+    Don't be surprised if there are no changes to various files
+
+commit 56c3c078336cbf1bf09fd1b01078a9030717613e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jul 11 08:47:13 2012 +0200
+
+    CHANGES: snmpd: BUG 3542307: Correct sysORID for snmpMPDStats. Thanks to Dave Vucich for reporting this.
+
+commit 61ecedc083f881db8a9a50d50bdeed36624ed307
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jul 11 00:21:27 2012 +0200
+
+    CHANGES: snmpd: BUG 3542188: Correct sysORDescr for snmpUsmMIB. Thanks to Dave Vucich for reporting this.
+
+commit 2f9ede419f40e848a2425389288cac0e2331b992
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 19 17:10:52 2012 +0100
+
+    Fix example 'rsync' command for full releases
+
+commit 6dd7884d99e756e2f22b688823ce1b1d526ad166
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 15:59:59 2012 +0100
+
+    version update for 5.6.2
 
 commit 976696a128e57b512bf7ad400d002368b4a9a871
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
@@ -50,12 +3887,54 @@
 
     don't use --rebase
 
+commit d4c1549593ce2c2caeb98e5f8abfd7a5ae5a0273
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jun 27 09:35:44 2012 -0400
+
+    CHANGES: snmpd: removed limit of 'exec' and 'sh' entries in snmpd.conf
+    
+    Use dynamic (re)allocation instead.
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.pre1 -> V5.7.2.pre2
+
+commit ffce49fb1ab4a78d4f2947be06d620f1424528fd
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 11 17:12:31 2012 -0700
+
+    Version number update: 5.7.2.pre2
+
+commit bd7c7297187818e5eef7327667e4a81f6c9fc89b
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 11 14:55:38 2012 -0700
+
+    don't use --rebase
+
+commit a715312e2ce49d4da93fc140cc39fc100b0b7978
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 11 15:47:22 2012 -0700
+
+    updated for the previous 5.7.2.pre1 release
+
 commit 17277689b629f4586d5d714d87ce6bc11f887668
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
 Date:   Wed Jul 11 14:55:38 2012 -0700
 
     don't use --rebase
 
+commit 6786ffc76facf746afb6af25158f7940656ab39c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jul 11 08:47:13 2012 +0200
+
+    CHANGES: snmpd: BUG 3542307: Correct sysORID for snmpMPDStats. Thanks to Dave Vucich for reporting this.
+
+commit f0e35d61f9258dc608da9bf718af1457a859fa19
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jul 11 00:21:27 2012 +0200
+
+    CHANGES: snmpd: BUG 3542188: Correct sysORDescr for snmpUsmMIB. Thanks to Dave Vucich for reporting this.
+
 commit 5206d25d4cb94d4b0dd331a5a4113d4d87782c42
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
 Date:   Mon Jul 2 12:14:39 2012 -0700
@@ -74,6 +3953,14 @@
 
     after pulling all the branches, switch back to the initial one
 
+commit 82596a69f5ce53d5a6f0af4215c98d6184dab4d4
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 14:04:50 2012 +0100
+
+    Unpick merge conflict.
+    (Not sure why this wasn't flagged up earlier - or maybe I just missed it!)
+    (cherry picked from commit b05bd78f9f234bb57a00b54c5bfb1de32a09f4a4)
+
 commit 6a075ae494c76b82eea96327cf5242df048743db
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Fri Jun 22 14:21:08 2012 +0100
@@ -86,26 +3973,37 @@
 
     version update for 5.6.2.rc3
 
-
-commit 5953cfd855b7a565672cef9429497141c7d9be12
+commit b05bd78f9f234bb57a00b54c5bfb1de32a09f4a4
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Fri Jun 22 14:04:50 2012 +0100
 
     Unpick merge conflict.
     (Not sure why this wasn't flagged up earlier - or maybe I just missed it!)
 
-commit e72e205fdcef787ef840c8c928ed27351a69544b
+commit 4d15742c750a96a4dbb3da874741ae152489f8d5
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Fri Jun 22 13:58:07 2012 +0100
 
     Release Candidate for V5-6-patches
 
-commit feabef3e6ca35bc0f14341e4cd6dc9afd1955ba7
+commit f6b5e3376ed3a8e9eaf74b7d6822b3a765772ee8
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Fri Jun 22 13:57:56 2012 +0100
 
     Version number update: 5.6.2.rc3
 
+commit 5cfb0811127a653dff0f4e53ad6029e2298a6c62
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:28:37 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit e72e205fdcef787ef840c8c928ed27351a69544b
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:58:07 2012 +0100
+
+    Release Candidate for V5-6-patches
+
 commit f79a54f2472508b167d977f367c3864b5621e89d
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Fri Jun 22 13:42:53 2012 +0100
@@ -171,6 +4069,30 @@
 
     More precisely describe -c option.
 
+commit 48cc39f1aa0fa6ce955ef76b25db8f9dca06b80d
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 09:27:10 2012 -0700
+
+    version update for 5.7.2.pre1
+
+commit 810185ae0b0cd2ad4d424a1ba775ef5ceaf50f03
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 09:24:19 2012 -0700
+
+    make depend for 5.7.2.pre1
+
+commit 6271471e01282f3675724eaf1358ceb0e95ddd4e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:40 2012 -0700
+
+    Version number update: 5.7.2.pre1
+
+commit fcb782aa8893134c7414a926d9268594f725b915
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:18 2012 -0700
+
+    version update for 5.7.2.pre1
+
 commit e3bcd87c72fcea7706e868b5ace75296093f7497
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Thu May 31 14:09:42 2012 +0100
@@ -195,25 +4117,30 @@
 
     version update for 5.6.2.rc2
 
-
-commit 5109ae77b6c1d549d91e32827f4a2cac05383d58
+commit d9a15445aa74f5316bfc711c1558467872c2958c
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Thu May 31 13:50:12 2012 +0100
 
     make depend for 5.6.2.rc2
 
+commit bcabd2c9542dbebd1d319b4494413bdcca06614e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:38 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit b473898c0c5ac9eb47c7c05a3f745e4ff2a76aaa
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:28 2012 +0100
+
+    Version number update: 5.6.2.rc2
+
 commit 131429e7062fbaa65b82affed1fb92df2c0cc813
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Thu May 31 13:38:38 2012 +0100
 
     Release Candidate for V5-6-patches
 
-commit 1fbfe5ee3c4287345c51462775f39e1bd2735e2b
-Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
-Date:   Thu May 31 13:38:28 2012 +0100
-
-    Version number update: 5.6.2.rc2
-
 commit 1c8110b33b8105ca6190945a35fe7ae903252d68
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Thu May 31 13:21:38 2012 +0100
@@ -292,6 +4219,18 @@
 
     Fix missing include. Fixes SIGSEGV on FreeBSD9 x64
 
+commit 5805878749c08062debf0a9d798d08fb916caa2d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun May 27 06:23:19 2012 +0200
+
+    CHANGES: snmpd: Add missing debug tag
+
+commit d1a42bbcc7b14730c9a6d99c4f047097843a549b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri May 25 09:02:27 2012 +0200
+
+    CHANGES: building: Run libtool --mode=finish on the right directory
+
 commit 1fbf33711a19eac9739ad23f6f6251eacc41f1c4
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Tue May 22 14:54:45 2012 +0100
@@ -406,12 +4345,91 @@
 
     Check need for -lm to use round/exp
 
+commit a0609cf1f3a6917d263725732248cd937a45ad94
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 08:40:44 2012 +0200
+
+    Remove limitation on configuration line length.
+
+commit 305973338a63ae54c5e02a8626fbe9a8064dcb7e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:32:19 2012 +0200
+
+    Reduce variable scopes.
+
+commit ccab4e9d3ed424c39d0dc27be63fa76c7461ea81
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:15:22 2012 +0200
+
+    Internalize the name and line number of the curret configuration file
+
+commit cf874ad7b9daf4fcc0d46cdd034474b478005341
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Apr 6 21:47:28 2012 +0200
+
+    Replace #if (A) B #else B #endif with B.
+
+commit ef9ea641bc290eec50685b60519b31bee8b14a69
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:04:06 2012 +0100
+
+    version update for 5.6.2.pre2
+
+commit 35aba1959de119f1fb89203c37109aa6f0e21c57
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:00:40 2012 +0100
+
+    version update for 5.6.2.pre2
+
 commit e41fbaff18ac9095cf4a739a06ec39a1a6ccfdc1
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Mon Apr 9 20:35:35 2012 +0100
 
     Version number update: 5.6.2.pre2
 
+commit 137fe582d6cc5611430dab46ef144efd84cfc803
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Apr 6 20:46:56 2012 +0100
+
+    Revert commit 1f4a829b18275e4956ca91e5ec370df015f06133
+    (snmp_store_needed() API is not available in 5.[45].x)
+
+commit 2b7e64288c01a8a062026c521ca31a5e885f30cc
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:12:12 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 7e95d80b698051259645c074a53ffd264a6fa916
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:06:56 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 1a9b7b7c02e2deefe994d595a7cc1dd2ffbeee1d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 15:51:20 2012 +0100
+
+    Fix compilation on FreeBSD 9.x with 'recent' header shuffling
+    Backport of c53d8c3525f590f2213d35b0da94123862f3e366 from V5-5-patches
+    (Patch #3363308 - omitting tweaks to configure)
+
+commit 3d9ddb41e263bc1a78f9f9440b8d4ad4f86c82e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:36:18 2012 +0100
+
+    Fix typo
+    Backport of 5b702b024b60176d7f5699b92e55da50a8deae71 from V5-6-patches
+
+commit 0d35c609564b66a1ffe81556d37adf0503c389ce
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:15:08 2012 +0100
+
+    Provide missing definition of NETSNMP_PRIo
+    (used in agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c)
+
 commit a79141a419953d010a6989e8b88f4df127394d38
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Mon Apr 2 09:19:26 2012 +0100
@@ -419,6 +4437,26 @@
     Header fiddling for FreeBSD,OpenBSD,Dragonfly
     Backport of f7b0de1518002c6e8f9b94ef3deb8882e1e9338e from V5-7-patches
 
+commit adf74bf753d3970357afd633803256241d9c7b87
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 08:20:46 2012 +0100
+
+    Fix IPv6 TCP & UDP tables, *BSD support (including OpenBSD)
+    Backport of commits 5cd1573625471c0583e9087aec6802b77157d5a2
+      and 50d73f0d56fe22c590530b3e305d41dcdac3ce00 from V5-6-patches
+
+commit d9555acb9f47c3aa8fde4bc20a44d7ca6181a8a9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Mar 25 18:48:12 2012 +0000
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid dangling pointers (based on patch 3503259)
+
+commit 82a8b47ee96e5d29a2b7ac3ca00722d737d5b479
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:31:56 2012 +0200
+
+    Running autoheader / autoconf
+
 commit 9ca8d939ab393306a1d0f146c9cb70ea0cb19d49
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Thu Mar 29 22:30:38 2012 +0200
@@ -461,6 +4499,42 @@
 
     CHANGES: snmpd: PATCH: 3487867: Don't skip missing ifXTable entries (ifConnectorPresent FALSE)
 
+commit 12906578ab30cf776d080c0ef3025b30334d7655
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 16:17:45 2012 +0200
+
+    DISMAN-PING-MIB: Fix even more memory leaks
+
+commit ccfd5ca6fe10313d6181d24bbb1797825a97da10
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:51:16 2012 +0200
+
+    DISMAN-PING-MIB: Eliminate duplicate code
+
+commit 9fda2668722f08ddbfdd67a2239d8b021db64a83
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:48:46 2012 +0200
+
+    DISMAN-PING-MIB: Write a loop as a loop
+
+commit cbc18eb763ba6df69ef70668a54d75bf35e79503
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:24:08 2012 +0200
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix more memory leaks
+
+commit c7725192478aec018fb4aefa60946e04a406c00c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 13:43:24 2012 +0200
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid reading freed memory when deleting a row from a table
+
+commit a6be739566f310d7441fd7f54989e39446f7a143
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 13:42:28 2012 +0200
+
+    Extend DISMAN-PING-MIB test
+
 commit 8a9b57291453cb8aec28e766c594701ed19c4fc6
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Mon Mar 26 21:03:41 2012 +0200
@@ -503,6 +4577,84 @@
 
     Properly find pass helpers for testing.
 
+commit fe26a3c4f29f046bf65ed52e9d94054b675fbc4b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:04:42 2012 +0100
+
+    DISMAN-PING-MIB: Limit source code lines to 80 columns
+
+commit 745bafcdcc9c8e84616d4e274db2a384bf234da2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 08:55:05 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make ping implementation independent of ntpd clock jumps
+
+commit da6925e6763cadbe02f4a8bbfe68a362e535ad5e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 10:38:36 2012 +0100
+
+    CHANGES: testing: Add testing/fulltests/default/T154dismanpingmib_simple
+
+commit fa606dd7ca6aff9308d4e8b01bbcde148f441271
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:49:21 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make pinging local interface addresses work
+
+commit 617a83ba799575c84c66f6b1c480ef633161a64c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:28:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix a socket leak triggered by pinging a remote host
+
+commit 625f55c272ec6281e38d8e30eb53fd51516b00ae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:54:55 2012 +0100
+
+    DISMAN-PING-MIB: Convert a dynamically allocated variable into a stack variable
+
+commit b48f19ad4b4aa68c3e16e2a72df37b9c0cd36c4a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:24:07 2012 +0100
+
+    DISMAN-PING-MIB: Add more debugging statements
+
+commit d74cb3966175892562f5e3a9b1683acba2c22e07
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:45:18 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix several memory leaks
+
+commit 0b1a77674678cc9a15be3e7700d3cef650ed02c7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 12:00:30 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Do not send the contents of the stack over the network
+
+commit 139023cd3ab51631cc10e2866d71abcf99ae4c1b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:56:07 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Don't call exit() upon memory allocation failure
+
+commit 169b6aaa7b61827cc1ad0b3aeeae3a7229dd25d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:53:26 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix IPv6 socket leak in error paths
+
+commit a0be32ad053a71fa96134d55e542bb07d4f0297d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:43:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid that host name resolution failure causes a crash
+
+commit bf9bff64556787d766ee2ef2d578afb920719f3a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:51:55 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Convert printf() statements into snmp_log() and DEBUGMSG()-statements.
+
 commit 5d74c01245523a9d8db1eda27d1efae2ebc104fb
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Wed Mar 21 18:40:02 2012 +0100
@@ -559,6 +4711,18 @@
 
     Allow distribution as part of normal Net-SNMP packages.
 
+commit 5999f60c57723f23f3c254af57fdb10af301a8eb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 18 19:03:08 2012 +0100
+
+    Regenerate
+
+commit 275d204036a607e3df50e8447d4bc755e9db02fd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Aug 28 21:29:03 2011 +0200
+
+    CHANGES: building: Make it possible to use --disable-applications/--disable-agent together with --enable-minimalist
+
 commit bdccc875710295aacf50f71eb1c1d2ee97f336fe
 Author: Magnus Fromreide <magfr@lysator.liu.se>
 Date:   Fri Mar 16 20:10:58 2012 +0100
@@ -571,12 +4735,37 @@
 
     Check that the data exist before trying to read it
 
+commit efae86bba5962491d42b77b935191a3eb25dd939
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Mar 14 01:05:33 2012 +0100
+
+    Partially revert "Merge remote branch 'origin/V5-7-patches' into V5-7-patches"
+    
+    Commit d35a1860217e723e4f866dd98ef6621665934c4a accidentally reverted
+    
+    4a2e5bcd56cd2afb36eb15d754e2fee888dd50c0 (hrh_storage is a proper replacement for hr_storage)
+    0dd1e54557d1ba498b55d017b0a93e8ccf9bd522 (CHANGES: snmpd: UDP-MIB: Report the proper address in udpLocalAddress)
+    5116d48378ecf03e722f3010ad47bf22a3fbcb8c (Reduce scope of prefix_val such that the compiler doesn't warn about an unsed variable)
+    10f566f4d4cbb3e205023c23669289e4bfd089cb (perl/SNMP/SNMP.xs: Fix a compiler warning)
+    
+    and part of
+    
+    6e74d64f85a59d50e461db4c34ac76f9de468bfb (Avoid using grep options -q and -w because grep in Solaris)
+    
+    This reverts those reverts.
+
 commit aaedd59cc2da701527dc2d261d4e9f85f16e7504
 Author: Magnus Fromreide <magfr@lysator.liu.se>
 Date:   Sun Mar 11 20:57:38 2012 +0100
 
     Allow make test where the source path contains the string Net-SNMP to succeed.
 
+commit 4b94d796918a4eeae68ab21aa53d444a8b5c2921
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Mar 9 08:04:59 2012 +0100
+
+    Unbreak compilation on FreeBSD 4
+
 commit 10fe6b83324ad37d18b937cc8c6de94de534d035
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Thu Mar 8 13:04:07 2012 +0000
@@ -595,6 +4784,14 @@
 
     make depend for 5.6.2.pre1
 
+commit 0ef34e6519dfcb82c97df8427547c08dcf81e69a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Mar 8 10:11:30 2012 +0100
+
+    CHANGES: snmpd: Fixed snmpd '-d' option.
+    
+    Now it dumps packets again.
+
 commit 8e69742f143e4fc11196e5b2ed66c8f7f53fd02f
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Tue Mar 6 09:24:21 2012 +0000
@@ -647,6 +4844,12 @@
     
     git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19653 06827809-a52a-0410-b366-d66718629ded
 
+commit e41f115e40304c941ba17d67e24710722d90741b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 13:39:17 2012 +0100
+
+    testing/fulltests/support/simple_eval_tools.sh: Avoid using grep options -w and -q because grep in Solaris' default path doesn't understand these.
+
 commit 5116d48378ecf03e722f3010ad47bf22a3fbcb8c
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Mon Mar 5 10:47:20 2012 +0100
@@ -665,6 +4868,30 @@
 
     perl/SNMP/SNMP.xs: Fix a compiler warning
 
+commit 44aa265891cd563f7f4114ef25dcf7aaf3b14e9a
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit dae4e16be86117861f63d1a2f981ad361418f5c6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 28f6226f2e228b8ca248489735f86502b2cce0a1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
 commit 40022a697958259ccfbb3fed44eb3c472f5e837e
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Sun Mar 4 10:37:41 2012 +0100
@@ -695,6 +4922,12 @@
 
     passpersist test needs /usr/bin/perl
 
+commit 8726995c7a8aef674c4f164b1871c37bbdcdad50
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:36:58 2012 +0100
+
+    grep -w fails with OpenBSD and Solaris 10-64
+
 commit 1eb4745b23cc3a839864e7f6ea28355b0566eb67
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Fri Mar 2 21:35:49 2012 +0100
@@ -707,6 +4940,18 @@
 
     Make sure we have the proper srcdir for out-of-source builds
 
+commit 78369002be2711f0aa876b64a4e10b090cc241cd
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:33:31 2012 +0100
+
+    Not all make versions define $(RM)
+
+commit 94245b29a3cda89475c6eab5d9493c6657ff38e3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:24:24 2012 +0100
+
+    Make autoconf 2.68 happy
+
 commit 44acd6c285fb5614b4c9611b1abdeca9dd28e4bb
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Fri Mar 2 21:12:47 2012 +0100
@@ -749,6 +4994,12 @@
 
     version update for 5.5.2.pre1
 
+commit 2e74acb6f19e4729cede0ab43e931961cb23aaea
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Mar 1 09:18:39 2012 +0100
+
+    CHANGES: Bug 3152841: Do not install the util_funcs subheaders that were removed in 5.7
+
 commit b7109646b95a70713d1ad991d41bccd57c0bb3eb
 Author: Magnus Fromreide <magfr@lysator.liu.se>
 Date:   Thu Mar 1 08:48:48 2012 +0100
@@ -803,6 +5054,18 @@
 
     CHANGES: snmpd: BUGS: 3460364: Fix use of block factor when detecting error conditions
 
+commit 034f1c572f683ea428583074471e5d5d13b51837
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:22:20 2012 +0000
+
+    Skip SET-based tests when configured using --enable-read-only
+
+commit 36423e210bfb65ef121c6a66aec438c7c237d3df
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:03:25 2012 +0000
+
+    CHANGES: BUG: 3454168: configure: Fix building with --enable-read-only
+
 commit eed0bcbc43fea18259f0f63b2081b6d10535a052
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Tue Feb 28 09:27:11 2012 +0000
@@ -810,6 +5073,18 @@
     Skip SET-based baby-steps when compiled with --disable-set-support.
     Inspired by bug #3454168
 
+commit ec6a23030e5a2072c19c18c1d9c124387da56b7b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 27 18:42:58 2012 +0000
+
+    Add -lrt to NETSNMPLIBS such that clock_gettime() can be found
+
+commit f13320500294bb240f63c6dd7d2e9a2208eb740d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 16:52:51 2012 +0000
+
+    Skip SET-based tests when compiled using --disable-set-support
+
 commit c4276b6232c29145c039884e6b5a6b6da4b93837
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Mon Feb 27 15:54:45 2012 +0000
@@ -823,6 +5098,12 @@
     Omit SET-related code when compiling with --disable-set-support
     (inspired by patch #3424930)
 
+commit 9484d83203c4e2d820416be665fa833aa70444d2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 24 14:00:32 2012 +0100
+
+    Rework commit b4a19505a05816e94e01de97bf99ac37fcdc6d23.
+
 commit 2b7f13495228635d816e58b2174dc124dd0cf39f
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
 Date:   Fri Feb 24 07:43:22 2012 -0800
@@ -841,6 +5122,24 @@
 
     Remove obsolete symbol NETSNMP_EXIT_ON_BAD_KLREAD
 
+commit c36ab71a4e096f16cc5a55533f080c9a94009914
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 08:53:56 2012 +0100
+
+    CHANGES: FreeBSD: snmpd + apps: Sending UDP packets works again for non-root users
+
+commit edebddba930f8b1472fa0bd20fc413ef8cf464a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Feb 21 11:31:46 2012 +0100
+
+    testing/RUNTESTS: Fix a bashism
+
+commit b4a19505a05816e94e01de97bf99ac37fcdc6d23
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 20 16:58:47 2012 +0100
+
+    Fix compiler warnings about %ld versus time_t on systems where time_t is a synonym for long long instead of long.
+
 commit d8978ecc8211be7c1e7905f1e215bb06ded266b6
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Tue Feb 21 12:32:25 2012 +0100
@@ -859,6 +5158,22 @@
 
     Fix a compiler warning on systems where mode_t is unsigned
 
+commit f8a3ef0d3d4e530279900101049b8de98a44a6fb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:48:52 2012 +0100
+
+    CHANGES: snmplib + snmpd + snmpwalk: Avoid that system clock changes (e.g. by ntpd) affect code that needs relative time
+    CHANGES: snmpd: Make sure that the range of the SNMPv3 variable snmpEngineTime is 0..2147483647 on all supported systems instead of 0..42949672 on some systems (i.e. wraparound after 497 days)
+    CHANGES: snmplib: Add netsnmp_get_monotonic_clock(), netsnmp_set_monotonic_marker(), netsnmp_ready_monotonic(), netsnmp_get_agent_runtime()
+    CHANGES: snmplib: Deprecate atime_diff(), atime_newMarker(), atime_ready(), atime_setMarker(), marker_tticks(), netsnmp_marker_uptime(), netsnmp_timeval_uptime(), timeval_tticks(), uatime_diff(), uatime_hdiff() and uatime_ready().
+    CHANGES: snmplib: Change the names of the struct timeval members of data structures that were used to store a wall clock time but that do now contain a monotonic clock value
+
+commit c19760f3333c92fac5d50e9768cdf939218bc487
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Feb 15 09:45:03 2012 +0100
+
+    snmplib/snmpv3.c: Fix source code indentation
+
 commit a6db239945e195de5a90fa183700b27a6ecb28d3
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Tue Feb 7 00:11:14 2012 +0100
@@ -889,6 +5204,18 @@
 
     CHANGES: added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
 
+commit fafc99cd89e73ec7e00bf7360d0b4fa61944a4f4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:18:34 2012 +0100
+
+    Simplify calculate_time_diff() and calculate_sectime_diff()
+
+commit 7af2013de8bf1b379c076db4e104508e17874d3e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:55:58 2012 +0100
+
+    Fix order of feature #ifndef and Doxygen comment block
+
 commit bbd67f63530f5ef0bfc948fc58dfe6a93f8f8679
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Mon Feb 6 15:25:30 2012 +0100
@@ -1061,6 +5388,30 @@
 
     Fixed error handling in init_icmp().
 
+commit c303549a59fa8c2f20a9d8bf1e985fbc8abde6a8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:46:29 2012 +0100
+
+    Reworked _register_extend() error handling.
+
+commit 9c20e27a7026fc030da3b328b9a2e1b4f36670cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:21:28 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 22fd0bfc2df0e1f6020dc3c50a753ddf28a4599c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:20:22 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 5d61e57baf580c78252c0abb0098c07bb05af17c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:17:05 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
 commit 3c3eeae80d796f27597c901e7ff2046c769ef4b8
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
 Date:   Fri Jan 20 15:08:09 2012 +0100
@@ -1281,6 +5632,12 @@
 
     Free previously allocated memory on errors.
 
+commit 59884bb4d35ad13747ffa6723436dca587a9ab77
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 17:09:12 2012 +0100
+
+    In above code, olength is checked, so let's check it also here.
+
 commit ba5d5292b04393b0c7d7d7ed961241929418c6e4
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
 Date:   Tue Jan 17 17:05:14 2012 +0100
@@ -1798,6 +6155,12 @@
 
     CHANGES: BUG: 3440752: IF-MIB: Report interface speed correctly for Ethernet interfaces if other than 10 Mbps, 100 Mbps, 1 Gbps, 2.5 Gbps or 10 Gbps. Add support for NICs faster than 65 Gbps.
 
+commit c09903a42e9d97331fd9e48ee831a85afdf9c70a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jan 9 13:26:17 2012 +0100
+
+    Doxygen-style documentation fixes
+
 commit e325ecbfce77f00ac5cf6fbd957f95495f61c59b
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Mon Jan 9 13:25:10 2012 +0100
@@ -1822,6 +6185,12 @@
 
     CHANGES: snmpd: IF-MIB::ifType: Report type "infiniband (199)" for InfiniBand interfaces instead of type "other (1)".
 
+commit 269932fa32c7cd47957489698e09bee31f63b7af
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:34:42 2012 +0100
+
+    Fix an MSVC compiler warning
+
 commit 0d1c21f9991d1309d057e3e4056d547df7d40ecf
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Fri Jan 6 16:06:31 2012 +0100
@@ -2027,6 +6396,12 @@
 
     Fixed a typo
 
+commit bee4d79cf4eb7e0a45397f59b5298da633a8e1ba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 13:14:57 2012 +0100
+
+    Fixed reading past end of buffer.
+
 commit 3dc0e00a2fd8e34fe1ae33ecabf36e146460a31f
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
 Date:   Wed Jan 4 12:40:07 2012 +0100
@@ -2077,6 +6452,12 @@
     
     git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17578 06827809-a52a-0410-b366-d66718629ded
 
+commit b1eaaf302369fd4552e8fee7b6a805091ec0a9b4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:38:51 2012 +0100
+
+    Added check of find_sec_mod() return value.
+
 commit aee4e895fe3bd5f4a61e34275bfca0368b560555
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
 Date:   Wed Jan 4 11:31:22 2012 +0100
@@ -2150,6 +6531,12 @@
 
     Check open() result.
 
+commit 6665d5fe2fc569d6fa854d1d78e347bbac69e070
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:22:22 2012 +0100
+
+    Fixed missing break.
+
 commit a6648c5453e1ef8dac57a38efcc00cce53bf9e4f
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
 Date:   Tue Jan 3 14:20:27 2012 +0100
@@ -2349,6 +6736,12 @@
     CHANGES: snmpd: PATCHES: 3447671: Fix override handling of OID values
     Patch supplied by Phillip O'Donnell
 
+commit ba4a9ce51c9600f9fda168f1e6eff32a1db63cb9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 13:24:26 2011 +0000
+
+    Tweak --disable-snmp-set changes
+
 commit 827c8b28830171faa9c61d53efca9eb6600561c2
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Tue Dec 27 11:25:43 2011 +0000
@@ -2361,6 +6754,12 @@
 
     Skip SET-based tests when configured with --disable-set-support
 
+commit 230df14f94c3736ff34379a4e281eea353b47f80
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Dec 26 23:34:23 2011 +0100
+
+    Do not assign tmStateRef twice
+
 commit c96b3b4d8530ad5e0efb03f24dab5e5f1a460031
 Author: Magnus Fromreide <magfr@lysator.liu.se>
 Date:   Sun Dec 25 11:18:21 2011 +0100
@@ -2491,6 +6890,12 @@
 
     Fixed returning uninitialized variable 'status' when ss == NULL
 
+commit 7304c53cf8adee8eccef1a8f26756fc07f098721
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 18 23:31:53 2011 +0100
+
+    On solaris 10 test in /bin/sh doesn't support the -e test. Replace it with -f
+
 commit 8cd3be60d693c9c36ffb97d3d9bcb49c1b4abe35
 Author: Magnus Fromreide <magfr@lysator.liu.se>
 Date:   Sat Dec 17 08:52:24 2011 +0100
@@ -2588,6 +6993,12 @@
 
     Fix recently introduced compiler warnings
 
+commit b7e50d5f9a6755982d2af3191473cb34643bc03f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 08:37:22 2011 +0100
+
+    CHANGES: snmplib: Reduce overhead of config file parsing
+
 commit 73c9ee42d28afe2e107a7d6616b6d011890c36ea
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Thu Dec 8 09:09:59 2011 +0100
@@ -2613,6 +7024,24 @@
     time the 5.6 branch was created (see also commit
     0ec088afa27cfda4e6ea78aae7cfc5507564edde).
 
+commit d494db64c208b4dc62813132f8863bd5c1a39d77
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:38:17 2011 +0100
+
+    CHANGES: snmptrapd: Eliminate an unused variable (Now)
+
+commit 28f2561bc2935d8e1cbf46d2820158173e7a4cf4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:37:11 2011 +0100
+
+    CHANGES: snmptrapd: Move the main loop code into a new function
+
+commit 396e122ddc42a916f06a02884c0e8a258edbe238
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 09:32:16 2011 +0100
+
+    CHANGES: snmpd: Match each getpwnam()/getpwuid() call with an endpwent() call and each getgrent() call with an endgrent() call.
+
 commit 3efefbc0024399786f8b68b1e93b0a8fddddc7da
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Thu Dec 1 10:41:01 2011 +0100
@@ -2720,6 +7149,24 @@
 
     CHANGES: FreeBSD: Restore IP_RECVDSTADDR functionality.
 
+commit 7f47f52e481baa9aafb5784244b0dd2653e7dcff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Nov 28 08:51:39 2011 +0100
+
+    CHANGES: snmplib: Use SNMP_ALLOC_TYPEDEF to allocate transports in order to avoid the separate call to memset.
+
+commit cf86039e3086225c3085bb9adf088b8ba5ba6979
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 15:02:58 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T102pdu_build_clib pass.
+
+commit 1a87e76e00ee3d5cd37a07bfc3d84490d3c2a4ec
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 14:55:42 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T014gethostbyaddr_clib pass
+
 commit 8867fd1dcfe72b59d07322ff38a699b66ec4f326
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Tue Nov 22 09:44:38 2011 +0100
@@ -2731,6 +7178,12 @@
     CHANGES: snmplib: Make netsnmp_large_fd_is_set() return false on Unix systems if the first argument equals -1 (a value that shouldn't be passed by the caller).
     CHANGES: Windows: Make netsnmp_large_fd_set_resize() shrink behavior correct.
 
+commit 23db0cf09b8b0eab37b749ef0c3c3f306900245c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 21 23:02:57 2011 +0100
+
+    Fix casting tv_usec to int which may be too short
+
 commit 80ee4022e534e64aad5a5f27192843b42acb85e0
 Author: Magnus Fromreide <magfr@lysator.liu.se>
 Date:   Sat Nov 19 09:14:02 2011 +0100
@@ -2782,6 +7235,12 @@
 
     Remove unused variables
 
+commit cd32c2dff06b9b452cc18d552d2f2234092c829c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:17:09 2011 +0100
+
+    Fix format warning
+
 commit 883136c2b2fa0739f437a8cfb6614accc76e268e
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Wed Nov 16 23:15:58 2011 +0100
@@ -2794,6 +7253,12 @@
 
     Fix using char as array index (ctype.h)
 
+commit 84529e6320a89d97f1314aebad806255d2a1b18c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:00:57 2011 +0100
+
+    Fix missing format for FreeBSD 4
+
 commit 4bd0352955a2551bfe02308dd134b9128c98b9e9
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Wed Nov 16 22:59:36 2011 +0100
@@ -2806,6 +7271,12 @@
 
     Fix size_t/int mismatches
 
+commit a4db9f9fc13d21ecff488eb410376edda6c28232
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 13:43:34 2011 +0100
+
+    Remove unused variables
+
 commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Wed Nov 16 13:37:49 2011 +0100
@@ -2848,6 +7319,18 @@
 
     Don't try to install an empty list of man pages (MAN3)
 
+commit ba619804e5978a8df754844efcca52b69b5015fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 13:34:20 2011 +0100
+
+    MinGW: Make sure that the backslashes in the pskill message are displayed.
+
+commit 923eecc507f75043b60c5e68053a4f396ab0b0d2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 12:36:38 2011 +0100
+
+    Compiler warning fix for systems where uint64_t = unsigned long (e.g. RHEL 6.1/x86_64)
+
 commit 434bfc1f7457550b6f87d5bcd511276b270b5964
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
 Date:   Mon Nov 14 11:22:53 2011 +0100
@@ -2868,6 +7351,12 @@
 
     NetBSD-6: One more instance of timespec replacing timeval
 
+commit 8ad6c53fdec5adeae4e52f1751ecec4a345bab05
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 18:59:01 2011 +0100
+
+    Fix buig #3436527: arp_netlink: fix dying reload of cache
+
 commit 378ffed03ba79a8346d6c62781e2ddf5ce92a478
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Fri Nov 11 18:55:43 2011 +0100
@@ -2906,6 +7395,14 @@
 
     CHANGES: testing: Remove unused variable
 
+commit e221e65fdc1c68f1968651717dcc9ccfb6414783
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 3 15:05:00 2011 +0100
+
+    Fix warnings about converting sockaddr_in * into sockaddr *.
+    
+    This is a follow-up for commit a0af385.
+
 commit 2e7e9eda0b0d62a7645a9a8f70ef3fb6f3dd6941
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Thu Nov 3 11:17:48 2011 +0100
@@ -2932,6 +7429,12 @@
 
     dskIndex was off by one
 
+commit a5b28829e64d5f3b87e4b9b1ef8cc204f33a61b7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 2 21:25:07 2011 +0100
+
+    Solaris needs $AWK to get a usable nawk
+
 commit 2801a2139f27021e1ab15e362e2d3d624ffaa494
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Mon Oct 31 22:55:53 2011 +0100
@@ -2971,6 +7474,20 @@
     
     This is a backport of commit 9f653f7.
 
+commit 2cc9504b9bb8625b94be6cda7e60993d059cd928
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:01:23 2011 +0200
+
+    CHANGES: snmplib: BUG: 3428506: Fix netsnmp_gethostbyaddr()
+    
+    This patch should fix the regressions introduced by commit 85d96c4 (May 13, 2011).
+
+commit 9b427b353f1ceb8fe87e6fc8ed3b6cfab3ce7f20
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 27 08:20:00 2011 +0200
+
+    MinGW: Avoid confusion between MinGW's kill.exe and the SysInternals pskill.exe
+
 commit 2c45f92cfcb5b05e049226a5a7883a0b106011ae
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Wed Oct 26 10:42:29 2011 +0200
@@ -3023,6 +7540,39 @@
     
     The message is shows up when snmpd is started and there is different set of network interfaces than it was when snmpd wast last stopped. This is common on ppp-servers or virtual hosts.
 
+commit 250f698e59eab9f1ffd332ff59fdb72ea0df06ff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 23 08:51:23 2011 +0200
+
+    CHANGES: building: Make the transport configuration code work again
+    
+    Previously the transport inheritance processing code ran with
+    NETSNMP_FEATURE_CHECKING set. In this mode the file net-snmp/feature-details.h
+    is requiered. That file is created during the first make run, and that happens
+    after configure is run.
+    Change this to undefine NETSNMP_MINIMAL_CODE, effectively turning off feature
+    support during transport configuration in order to make it work at all.
+
+commit 6ef6907642247c663b9b8964b9fd44a211dbcaa7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 20 20:30:54 2011 +0200
+
+    CHANGES: snmpd: BUG: 3408398: Fix a memory leak in agent/mibgroup/hardware/fsys.
+    
+    This memory leak was introduced via commit
+    9bf3d96d96a8ecd4a5fc35c326dc937467002b6c: Initial HAL
+    implementation of FileSystem information (March 7, 2008).
+
+commit cf82b894b2217c26edc6f1356351c932415604e2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Oct 15 14:45:08 2011 +0200
+
+    CHANGES: snmplib: BUG: 3423915: Change default number of retries back from 0 to 5
+    
+    This patch fixes a bug introduced via commit 6cac050 (May 5, 2011,
+    added support for specifying the default number of retries in
+    snmpd.conf).
+
 commit c11adaa12915abfee629bb6c026c21f2185b216e
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Mon Oct 17 10:24:46 2011 +0200
@@ -3035,12 +7585,26 @@
 
     CHANGES: Win32: Avoid that the PACKAGE_* macros defined in <net-snmp/net-snmp-config.h> cause trouble when including this header in a package that uses the GNU autotools.
 
+commit 664d3ae107d754051b8c42279d459aa57a1be1c3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 16:47:16 2011 +0200
+
+    MinGW, hw_fsys: Use proper format specifiers in a debug statement.
+    
+    This patch fixes an issue introduced in commit 76ff25d.
+
 commit 211dcb49306561e35ba3c213be7cfa257b40a8e5
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Mon Oct 10 15:52:43 2011 +0200
 
     Avoid that gcc 4.6 complains about set but not used variables
 
+commit 9f653f73e5aa70f0bef1174632e95594f87f669f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 13:02:25 2011 +0200
+
+    CHANGES: snmptrapd_sql: Avoid that a linker error is triggered on systems where my_progname is missing in libmysqlclient (e.g. Fedora 15 and 16).
+
 commit 4c83b9229a7454f34f6ff75f69e67e4030c419b5
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Fri Oct 7 15:58:45 2011 +0200
@@ -3056,12 +7620,47 @@
     dynamic libraries and rpaths, see also the document with the title
     "RpathIssue" on the Debian wiki (http://wiki.debian.org/RpathIssue).
 
+commit 8925c912d2639752a84bcffeef1b70a81026449b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:21:28 2011 +0200
+
+    CHANGES: agent: HOST-RESOURCES-MIB: Add missing brace in a debug statement
+
+commit 76ff25d9bf97579e7213102065fd5096f049a4c5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:13:18 2011 +0200
+
+    CHANGES: snmpd: HOST-RESOURCES-MIB::hrStorageTable: fix bug in handling large filesystems, where large means above 8 TB (= 2**31 * 4096 bytes).
+    
+    This patch fixes a bug introduced in commit
+    71d8293f387a6cd66bb0dbb13c0f50174d2e678b.
+    For the original bug report, see also
+    https://sourceforge.net/tracker/?func=detail&atid=112694&aid=3419825&group_id=12694.
+
 commit 866033db9904ffb1203f283f838092e4cf68de6b
 Author: Magnus Fromreide <magfr@lysator.liu.se>
 Date:   Thu Oct 6 07:33:27 2011 +0200
 
     CHANGES: snmpd: Remove spurious #endif that seems to be the result of a mismerge.
 
+commit 20f4f3267ee20d55705b7a43789879c103f96620
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Oct 6 00:08:59 2011 +0200
+
+    CHANGES: building: Add missing end comments to feature ifndefs.
+
+commit e5de2cc57bf304f3320cad0034d2ea2d8aedc436
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 09:15:10 2011 +0200
+
+    CHANGES: agent: Log a more detailed error message if embedded perl initialization fails
+
+commit 5eef9990de28f63111e6c093be0f3c7ae2d513a1
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 08:45:49 2011 +0200
+
+    CHANGES: perl: Add agent::uptime()
+
 commit 6810ed42f9bc560750d6dbfb7e50b6e2ac11899c
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Fri Sep 30 11:01:23 2011 +0200
@@ -3074,6 +7673,12 @@
 
     CHANGES: PATCH: 3418649: HOST-RESOURCES-MIB: Use pclose() instead of fclose() to close a pipe.
 
+commit 6591937adb85000c27069c4be84cf4688838ebcd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 16:18:03 2011 +0200
+
+    CHANGES: building: Add dependencies on @FEATURETARGS@ to make the subtarget work as well.
+
 commit b9c8012ec035bc084f175876fecc375195f9be81
 Author: Magnus Fromreide <magfr@lysator.liu.se>
 Date:   Sun Oct 2 14:02:58 2011 +0200
@@ -3126,24 +7731,226 @@
     error and then figures out that there is no usable nlist.h and ignores it
     for the future.
 
+commit ac38cb531bee50edc8d4c834f3005f5992c771d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 19:03:02 2011 +0200
+
+    CHANGES: perl: Enable sending SNMPv2 traps with an empty varbind list
+
+commit a75de2971527ac2d2e812024298602bb2412f337
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 10:41:44 2011 +0200
+
+    perl/SNMP/SNMP.xs: Update emacs modeline
+
 commit 848f6300efe38492fb454451a030f0b7e6ff8c9d
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Fri Sep 30 10:41:44 2011 +0200
 
     perl/SNMP/SNMP.xs: Update emacs modeline
 
+commit c1374473ecd8ec9e0310013861ee18c83e5d6c5b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Sep 30 03:29:36 2011 +0200
+
+    CHANGES: testing: Protect the use of $OSTYPE to ensure that 'test' get enough parameters.
+
+commit 7e97a20633a57eae39d015b23339463c32f5f848
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:22:08 2011 +0200
+
+    CHANGES: testing: Convert snmplib/test_binary_array.c into two unit tests
+
+commit 9c0dd98176457342fffaa5e74d802e3145ed70e7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 08:56:17 2011 +0200
+
+    CHANGES: testing: Add unit test for netsnmp_register_old_api()
+
+commit 5fd26e4fa3e000ea9c81c38ab975b7946efe2157
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 28 17:49:55 2011 +0200
+
+    CHANGES: agent: Avoid that netsnmp_register_old_api() failure triggers a double free.
+    
+    Fixes a regression introduced via commit
+    aa4d47c2609e52818c9cdf1a8e2205de9a335a0a (svn r19515).
+
+commit d2252d016693807326f72b66123649dea00af916
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:20:08 2011 +0200
+
+    CHANGES: testing: Require a semicolon after OK(), OKF() and PLAN()
+    
+    Also, let OKF() emit a single line of output such that all output it
+    produces is visible in the output of "make test".
+
+commit 1421924b4852142192c5bb9e93ddbfed69e908fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 21 22:20:08 2011 +0200
+
+    CHANGES: snmplib: Avoid waiting indefinitely if a session has timeout zero
+
+commit 5f27f4f74ae2bd5baf503cf306b4f9a2841a57cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:32:03 2011 +0200
+
+    CHANGES: MinGW: testing: Fix a race condition in the test runner
+
+commit 09703958cc5ea845929ae19ef9e0804aecaa512e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 12:42:41 2011 +0200
+
+    CHANGES: testing: Avoid false negative for T114agentxagentxtrap_simple caused by the test result being present in the hex dump ("mostly_harmless")
+
+commit 439300279f6f31438638d2f222c24c3c841fa6ab
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 11:16:32 2011 +0200
+
+    CHANGES: building: Micro-optimize agent module dependency analysis
+    
+    This makes the agent module dependency analysis carried out by the
+    configure script slightly faster, especially on those systems where
+    fork() is expensive (Cygwin).
+
+commit bbc680004a1376038dfdc4172dbe7b9e311fba68
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Sep 26 10:14:45 2011 +0200
+
+    CHANGES: MinGW: testing: Make test T130snmpv1vacmget_simple pass
+
+commit 70b06cf789208eaa890bfbcd638bdb775f817054
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:50:57 2011 +0000
+
+    CHANGES: Windows: testing: perl: Fix an incorrect message printed while running the Perl module regression tests
+
+commit 70bcc8de2d0fc92bbb8481823630fab9bc87af75
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 16 16:14:24 2011 +0200
+
+    CHANGES: MinGW: testing: Obtain the MSYS path from the environment
+
+commit 626275e2d1acafae7144a33ed301a40f596b37b0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 14 13:14:17 2011 +0200
+
+    CHANGES: Windows: Remove superfluous link libraries from project files (*.dsp)
+
+commit 38fc3caa9eeb3800254b4f6ad6f8f4764c0f83db
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:34:08 2011 +0200
+
+    CHANGES: snmplib: Make netsnmp_callback_accept() return -1 (failure) instead of 0 (STDIN_FILENO)
+
+commit 6c8c7e8aca8fc2eeb52010ae3e9fee6dd83ef780
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 13 09:58:26 2011 +0200
+
+    CHANGES: snmplib: Remove obsolete snmp_get_fd_for_session() declaration
+
+commit 0860d11fd8fc5dbdaaae2261fae2c07fb9c2c82d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:54:55 2011 +0200
+
+    CHANGES: Windows: MSVC: Avoid that the typedefs in <net-snmp/net-snmp-config.h> conflict with those in <stdint.h> from the msinttypes project
+
+commit f8a036f63ff68f083436120e0abd478b692a2f61
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:21:06 2011 +0200
+
+    CHANGES: Windows: MSVC: When linking with OpenSSL, link with user32.lib too
+
+commit 836a23e10ca810c3899902d32587616a9d1203df
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jul 14 18:38:13 2011 +0200
+
+    CHANGES: Windows: MSVC: Link with proper libeay32 library
+
+commit 7b07fd6cdef49ec7bb04b166e2a4fbb37b582840
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 11:10:38 2011 +0200
+
+    CHANGES: testing: Remove an incorrect comment from simple_eval_tools.sh
+
+commit 98f6d29d981ff8e607600c63dadb240535629807
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:49:03 2011 +0200
+
+    CHANGES: testing: Make ISDEFINED() check for an exact match instead of a prefix match
+
+commit 52cd0031a31f692f13263a94c335d06be1454803
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
+
+    CHANGES: MinGW: testing: Make those regression tests pass for which SNMPCONFPATH and/or SNMP_PERSISTENT_DIR matter
+
+commit f5cd89bd3356dd74e1556c0b50966a643f192085
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
+
+    CHANGES: MinGW: testing: Fix a race condition in the test framework
+
+commit deedd52c834a6448852a06785536e13865969694
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:58 2011 +0200
+
+    CHANGES: MinGW: Support the directory structure of recent Shining Light OpenSSL binary distributions
+
 commit d55bd4e0549f03b6fd32562c2aa7fe39272a9ef7
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
 Date:   Wed Sep 28 06:55:19 2011 -0700
 
     remove the v5.7 from the frozen list
 
+commit ac2aed3c94bb2ebb473af0a1e20f0561ad629956
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 28 06:55:11 2011 -0700
+
+    remove the v5.7 from the frozen list
+
+commit 40079205967b8e5aeedb19fa3cb2e7b2f7988577
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 27 21:53:47 2011 -0700
+
+    make depend
+
+commit cf14a228583aff3c5ab2f0d44c2f4c0fa5bd66af
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 27 21:53:18 2011 -0700
+
+    version update for 5.7.1
+
+commit 1014dd8dfb48a5bd053f04541eb9728f0be07f47
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 27 21:45:04 2011 -0700
+
+    version update for 5.7.1
+
+commit 18d116ba388c1dc949528884bb00698f1bacaa94
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 27 21:11:52 2011 -0700
+
+    Version number update: 5.7.1
+
 commit 46eac02e9a27bf4f3068e795cab891f05a848870
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Mon Sep 26 21:49:27 2011 +0200
 
     CHANGES: snmpd: Avoid that snmpd crashes if started on a system with another OpenSSL library version than the one it has been built with.
 
+commit a5f064dd82996e2be3f1e9616703ad0395fb5aba
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Sep 22 07:33:01 2011 -0700
+
+    version update for 5.7.1.rc3
+
+commit 569794fceb99eed7be817c64f85cd945caf99592
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Sep 22 07:20:07 2011 -0700
+
+    Version number update: 5.7.1.rc3
+
 commit c55f608f16f160f5e79dc057f8878def462973e1
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Thu Sep 22 10:35:24 2011 +0100
@@ -3151,6 +7958,14 @@
     Fix the code for populating the table_tdata cache,
     and clarify areas needing MIB-specific additions.
 
+commit 13763cf2c71bf93fec096eee004857c15b2cffff
+Author: Steve Friedl <steve@unixwiz.net>
+Date:   Thu Sep 22 10:06:45 2011 +0100
+
+    CHANGES: snmpd: 3409692: Calculate disk percentage usage via floating-point arithmetic
+    to avoid integer arithmetic errors.
+    (Code based on patch, rather than applied verbatim)
+
 commit ee0d3adb078291b743c9ecb76d20b591b7b15972
 Author: Steve Friedl <steve@unixwiz.net>
 Date:   Thu Sep 22 09:58:39 2011 +0100
@@ -3159,6 +7974,24 @@
     to avoid integer overflow errors.
     (Code based on the submitted patch, rather than applied verbatim)
 
+commit 367da14fcdb146592de67c1d6997a09774259673
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 22 08:09:17 2011 +0200
+
+    The only change between V5.7.rc1 and V5.7.1.rc2 is the version number. Make this clear in the ChangeLog file.
+
+commit c276eeb8f0455a0870c4b478dde648e86529add3
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 21 13:51:58 2011 -0700
+
+    changelog update
+
+commit 63050838666f645fc306dc2ee4f73f5efce63fed
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 21 13:38:18 2011 -0700
+
+    Version number update: 5.7.1.rc2
+
 commit bbe2c19a01ecec024f741e2e54701ae6212f4c3e
 Author: Magnus Fromreide <magfr@lysator.liu.se>
 Date:   Sun Sep 4 14:44:38 2011 +0200
@@ -3175,6 +8008,30 @@
 
     CHANGES: building: Correct dependencies - since bf74fea69f24dc6e85f908f3f41d1426b2e09688 snmpconf is located in builddir, not srcdir
 
+commit 7835964d3593e5c6a1ae7de0b4114b7df1ae0fe1
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 19:21:51 2011 -0700
+
+    version update for 5.7.1.rc1
+
+commit cb6a0c0bd6f8c2c7cd5fd86080dc6324e7f73858
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 19:20:35 2011 -0700
+
+    make depend for 5.7.1.rc1
+
+commit e5ff2eb83bbbed92dac751c5a6643d78f837cf9c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 19:19:46 2011 -0700
+
+    fix C++ comment
+
+commit cb1f5cffc6fb52c2a6c0f7b408afeb47fcfe55e4
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 19:09:56 2011 -0700
+
+    Version number update: 5.7.1.rc1
+
 commit 422b082a9593ca9c65aac449e6d128a9e97e94fb
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
 Date:   Tue Aug 30 19:06:56 2011 -0700
@@ -3225,12 +8082,72 @@
 
     Apparently IRIX has a different API for statfs
 
+commit f7e21f2633390b7a27c50227bee6d8696ae3fbcf
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 29 16:01:31 2011 -0700
+
+    don't provide a feature when your a child of another feature
+
+commit cac23c0b2574e7280bd128c6226875ad0f6b4bfc
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Aug 28 09:38:14 2011 +0200
+
+    Make sure that feature-details.h exists before trying to include it
+
+commit 781f4ce2acb371560797d8b29a89ed0674e935f8
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Aug 28 09:36:36 2011 +0200
+
+    Use the feature target instead of the target when building the feature set
+
+commit 11bff472ca7b1fcff0c16187a1b8a13093bc91c4
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Mon Aug 29 00:33:55 2011 +0200
+
+    the irix6 build only defines irix6, not irix
+
+commit 3c73a1407a081d42ebdd91dfbcb1e4f152b7df4a
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Mon Aug 29 00:05:13 2011 +0200
+
+    re-add sockaddr_un.sun_path configure check (lost in previous commit)
+
+commit 2e3f02e03aed125384ba4fe3d83494d43f3a29e9
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Sun Aug 28 23:53:30 2011 +0200
+
+    agent/mibgroup/hardware/fsys/fsys_mntent.c doesn't build on IRIX yet
+
 commit f95aa31377d572b049b0b316dbb163bf7aca93d5
 Author: Thomas Anders <tanders@users.sourceforge.net>
 Date:   Sun Aug 28 23:25:40 2011 +0200
 
     CHANGES: building: build fix for systems lacking fields msg_control/msg_flags in struct msghdr (backport)
 
+commit 7f47d93765aa35a58687eb9b4f9f700e4343e13c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 26 11:11:35 2011 -0700
+
+    added required features for mfd handling
+
+commit 9b2e42a6e0550fb789c607c3520880d4dbc0cf24
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 26 11:08:09 2011 -0700
+
+    added .ft and .ft.1 for feature files
+
+commit 33dcbf56fc0626a3e4f1359095bd217d1a567794
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 26 11:07:58 2011 -0700
+
+    no_write_support supported
+
+commit 97d42efd76937ce7e4bc48a72ed5a110e423102d
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 26 10:08:51 2011 -0700
+
+    handle no-write-support with ifdefs
+
 commit ea8bed79e81c42e33cbf37ca6f3c03c549987b22
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
 Date:   Thu Aug 25 06:56:22 2011 -0700
@@ -3243,6 +8160,21 @@
 
     use >> to print to stderr
 
+commit cee0359c6fae2b85d7b931859e517d89ce0722bb
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Tue Aug 23 23:43:19 2011 +0200
+
+    CHANGES: build: Do not generate an output file on failure
+    
+    make supposes that no output is generated if the command failed. Change
+    feature-remove to follow that presumption.
+
+commit fe39e7288ca930d2c9aaa8301cc9d95f0c38f36b
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Sun Aug 21 21:48:17 2011 +0200
+
+    Correct typo
+
 commit 1f082a31cd138f1f5e27be6d90a1d5790dc0ffe4
 Author: Thomas Anders <tanders@users.sourceforge.net>
 Date:   Tue Aug 23 23:35:42 2011 +0200
@@ -3267,6 +8199,12 @@
 
     autoreconf
 
+commit 1a2648eaf71cb018951596689c51588dca8063c5
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Sun Aug 21 01:48:57 2011 +0200
+
+    autoreconf
+
 commit 3f2f61b0e613d6105ecf2ceb395de0bde37f3ce3
 Author: Thomas Anders <tanders@users.sourceforge.net>
 Date:   Sun Aug 21 01:47:13 2011 +0200
@@ -3285,6 +8223,24 @@
 
     fix broken line wrap
 
+commit 5b5900a4f7dfee6e1ec869e32310b80ca6fb23fe
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 18 12:28:07 2011 -0700
+
+    version update for 5.7.1.pre2
+
+commit 3b7e2e39949f88d9c56ed5f994028b94816ab75c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 18 12:23:28 2011 -0700
+
+    make depend for 5.7.1.pre2
+
+commit ece63bfe499c630bdaae6200648d29180ce3a179
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 18 12:03:17 2011 -0700
+
+    Version number update: 5.7.1.pre2
+
 commit 28b54070514753e8d8abb718b224d657ab7a8ab8
 Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
 Date:   Thu Aug 18 11:49:56 2011 -0700
@@ -3313,6 +8269,18 @@
 
     changed clientaddr so it registers as pre-mib to be picked up before the transports get created
 
+commit c02131e5b35d296755baec99bd363205a86307dd
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Aug 17 09:34:00 2011 -0700
+
+    detect really old versions of Long.pm
+
+commit 500d6de06aa4ff330aee4d749a4cc377bec89e09
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 17 18:11:47 2011 +0200
+
+    Fix the log message that reports that gethostbyaddr() is missing
+
 commit 6580556cc7bd833af731b62ce1ed2017564fe7eb
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Wed Aug 17 18:08:01 2011 +0200
@@ -3327,6 +8295,12 @@
     
     This reverts commit c1b5a030d8f04876cd5b9af008c879cc468b212f.
 
+commit daff49d9b3369efcc87f05dc8591362e81a45fdf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 18:43:48 2011 +0200
+
+    Windows: Make the Perl agent module work again with the original SNMP_FREE() definition.
+
 commit 3c73b4838e605b150bc317313f14eb33444729f8
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Sat Aug 13 17:38:27 2011 +0200
@@ -3486,13 +8460,6 @@
 
     fix C++ comments
 
-commit d538bcbcce63e1893572d8f1583fdc02f351f84f
-Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
-Date:   Mon Aug 8 22:07:43 2011 +0100
-
-    Define _BIND_TO_CURRENT_VCLIBS_VERSION token
-    (as per Alex' build instructions)
-
 commit 447ddc66d90dd9e5c3105b268b6a63bfc580b924
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Mon Aug 8 22:03:58 2011 +0100
@@ -3507,5883 +8474,25862 @@
     Define _BIND_TO_CURRENT_VCLIBS_VERSION token
     (as per Alex' build instructions)
 
-commit ffa05b051ac3e2b197195a9989cc7a91fe8d9282
+----------------------------------------------------------------------
+
+Changes: V5.7.1 -> V5.7.2.pre1
+
+commit 810185ae0b0cd2ad4d424a1ba775ef5ceaf50f03
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Aug 8 13:55:38 2011 -0700
+Date:   Sat Jun 2 09:24:19 2012 -0700
 
-    a new macro nsautoconf to run the right version
+    make depend for 5.7.2.pre1
 
-commit b451607dca015c111e96fdfeb2ddb0661fb4f724
+commit 6271471e01282f3675724eaf1358ceb0e95ddd4e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:40 2012 -0700
+
+    Version number update: 5.7.2.pre1
+
+commit fcb782aa8893134c7414a926d9268594f725b915
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:18 2012 -0700
+
+    version update for 5.7.2.pre1
+
+commit e3bcd87c72fcea7706e868b5ace75296093f7497
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
-Date:   Mon Aug 8 21:20:32 2011 +0100
+Date:   Thu May 31 14:09:42 2012 +0100
 
-    Fix capitalisation of Net-SNMP
+    Fix dist/release format
 
-commit c94813044a4c4a608e98e80223075c6faf04ee11
+commit d813ce2eeefc68229cfcaf20603244cdd6d09d3c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 14:07:52 2012 +0100
+
+    Fix dist/release format
+
+commit fa7bd581e3783685db39c9b4eaf847be5ac86fd3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:53:10 2012 +0100
+
+    version update for 5.6.2.rc2
+
+commit 0739e2382d31146aca3205244cf70788b40a428d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:51:45 2012 +0100
+
+    version update for 5.6.2.rc2
+
+commit d9a15445aa74f5316bfc711c1558467872c2958c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:50:12 2012 +0100
+
+    make depend for 5.6.2.rc2
+
+commit bcabd2c9542dbebd1d319b4494413bdcca06614e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:38 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit b473898c0c5ac9eb47c7c05a3f745e4ff2a76aaa
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:28 2012 +0100
+
+    Version number update: 5.6.2.rc2
+
+commit 131429e7062fbaa65b82affed1fb92df2c0cc813
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:38 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit 1c8110b33b8105ca6190945a35fe7ae903252d68
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:21:38 2012 +0100
+
+    Avoid perl versioning problems when setting up the build environment
+
+commit 508ece16e6f6f49562da204792ae0644269994d1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:20:58 2012 +0100
+
+    Fix handling of dist/release merge
+
+commit 5b8a8547b1a47d2f5b207f48f2496e4241d902c6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:10:48 2012 +0100
+
+    version update for 5.5.2.rc2
+
+commit 6c32914bf28d695df349dca269e488b501700316
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:07:22 2012 +0100
+
+    version update for 5.5.2.rc2
+
+commit 9f5a82a5afdbb3daeb2fd437a309f0b8d357cf4b
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:05:39 2012 +0100
+
+    make depend for 5.5.2.rc2
+
+commit 39203f29477a3bedf012d41135d8abd6bcad08b1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:54:27 2012 +0100
+
+    documentation update for 5.5.2.rc2
+
+commit 17e79ef0fad79609c5ba2feb4e8b9eb5d7db6886
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:46:11 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit 5821be5bbb4018ded282fbbbd4830cf2eeadd9e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:45:59 2012 +0100
+
+    Version number update: 5.5.2.rc2
+
+commit 3f2111de6733a04e12d910d306a34d671e008762
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:46:11 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit ccf8ff2c4db60122d41302e4aeb700e0b868105f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 28 10:18:43 2012 +0100
+
+    CHANGES: snmplib: PATCHES: 3526599: Don't hang on retried failing SNMPv3 responses
+
+commit c81c8483990911f47435d3005255d91c37ab92b2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 14:09:26 2012 +0200
+
+    Fix BSD that downnot always like IP_SENDSRCADDR - so retry without
+
+commit ffce1f2dc2f8b31abd01f93b26da78f4726a1e64
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 14:03:58 2012 +0200
+
+    Fix OS missing MSG_DONTWAIT (AIX). Backport from 5.7
+
+commit c575216850185b56454dad0253e3164979e13513
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 13:56:01 2012 +0200
+
+    Fix missing include. Fixes SIGSEGV on FreeBSD9 x64
+
+commit 5805878749c08062debf0a9d798d08fb916caa2d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun May 27 06:23:19 2012 +0200
+
+    CHANGES: snmpd: Add missing debug tag
+
+commit d1a42bbcc7b14730c9a6d99c4f047097843a549b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri May 25 09:02:27 2012 +0200
+
+    CHANGES: building: Run libtool --mode=finish on the right directory
+
+commit 1fbf33711a19eac9739ad23f6f6251eacc41f1c4
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue May 22 14:54:45 2012 +0100
+
+    CHANGES: Linux: PATCH: 3525998: Don't use an uninitialised value in error message
+
+commit 32c1686b67dc85c4a189576363065609dfed5e61
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue May 22 14:52:56 2012 +0100
+
+    Attempt to mark release-candidate branches as such.
+    Omit final-release-only steps when preparing preN/rcN releases
+    (Relies on a tweak to the Makerelease perl modules)
+
+commit 4c5633f1603e4bd03ed05c37d782ec8911759c47
+Author: Robert Story <rstory@freesnmp.com>
+Date:   Mon May 14 11:40:06 2012 -0400
+
+    NEWS: snmp: BUG: 3526549: CVE-2012-2141 Array index error leading to crash
+
+commit 65dd83c2255ee58edbf0e25863e55b58a4113679
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:30:42 2012 +0100
+
+    version update for 5.6.2.rc1
+
+commit ac4bc65e2909f3bd85f32f04b504fa65d2f64553
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:28:06 2012 +0100
+
+    make depend for 5.6.2.rc1
+
+commit b74994864195119edb6e19c85147fac00bcb93e3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:13:46 2012 +0100
+
+    Version number update: 5.6.2.rc1
+
+commit 91350092c46e66d06d74143f4816473db4d25160
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 19:56:33 2012 +0100
+
+    Mark version-specific changes _before_ pushing to central repository
+
+commit 7241accd70b82d0fcd44d5a5238b2ee9445900db
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:53:17 2012 +0100
+
+    version update for 5.5.2.rc1
+
+commit 7c796a15a1d1bb85feea940bd4e3516877920919
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:50:49 2012 +0100
+
+    version update for 5.5.2.rc1
+
+commit 07e268bfb64b0ec645b3f7e87266984f9217cf12
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:44:37 2012 +0100
+
+    make depend for 5.5.2.rc1
+
+commit 16eaaf6c3ba14596ca9efaf4b114f1b709f42b68
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:29:03 2012 +0100
+
+    documentation update for 5.5.2.rc1
+
+commit c729469ef12154930cf9d15967e16186fb445f30
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:27:20 2012 +0100
+
+    Version number update: 5.5.2.rc1
+
+commit 142571d3cea08f0c072d24c1d39a43c7446f8ce7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:01:03 2012 +0100
+
+    When building a new release, the installed version of the perl
+    modules may well be different to the version being built.
+    That should not break the build.
+
+commit eba86b6f7aff261ee0e61334df70de7156e5c3cb
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:01:03 2012 +0100
+
+    When building a new release, the installed version of the perl
+    modules may well be different to the version being built.
+    That should not break the build.
+
+commit 5c0f64d6db2b593f7cc0ed2d4f55b7c592b774a8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:25:15 2012 +0200
+
+    Only output cpu warnings once.
+
+commit ee58e4827b9fa16e6635ca003e8a4f11dcb5fb7a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:17:42 2012 +0200
+
+    Fix speling in errormessage.
+
+commit 03f485df22f20e149cfae94c57cb82feecb5d74b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:12:11 2012 +0200
+
+    Not all Linuxes use rpm (debian/ubuntu comes to mind)
+
+commit 930838224f781696bd35225f22569347416f1b16
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:10:15 2012 +0200
+
+    Check need for -lm to use round/exp
+
+commit a0609cf1f3a6917d263725732248cd937a45ad94
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 08:40:44 2012 +0200
+
+    Remove limitation on configuration line length.
+
+commit 305973338a63ae54c5e02a8626fbe9a8064dcb7e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:32:19 2012 +0200
+
+    Reduce variable scopes.
+
+commit ccab4e9d3ed424c39d0dc27be63fa76c7461ea81
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:15:22 2012 +0200
+
+    Internalize the name and line number of the curret configuration file
+
+commit cf874ad7b9daf4fcc0d46cdd034474b478005341
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Apr 6 21:47:28 2012 +0200
+
+    Replace #if (A) B #else B #endif with B.
+
+commit ef9ea641bc290eec50685b60519b31bee8b14a69
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:04:06 2012 +0100
+
+    version update for 5.6.2.pre2
+
+commit 35aba1959de119f1fb89203c37109aa6f0e21c57
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:00:40 2012 +0100
+
+    version update for 5.6.2.pre2
+
+commit e41fbaff18ac9095cf4a739a06ec39a1a6ccfdc1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 20:35:35 2012 +0100
+
+    Version number update: 5.6.2.pre2
+
+commit 137fe582d6cc5611430dab46ef144efd84cfc803
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Apr 6 20:46:56 2012 +0100
+
+    Revert commit 1f4a829b18275e4956ca91e5ec370df015f06133
+    (snmp_store_needed() API is not available in 5.[45].x)
+
+commit 2b7e64288c01a8a062026c521ca31a5e885f30cc
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:12:12 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 7e95d80b698051259645c074a53ffd264a6fa916
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:06:56 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 1a9b7b7c02e2deefe994d595a7cc1dd2ffbeee1d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 15:51:20 2012 +0100
+
+    Fix compilation on FreeBSD 9.x with 'recent' header shuffling
+    Backport of c53d8c3525f590f2213d35b0da94123862f3e366 from V5-5-patches
+    (Patch #3363308 - omitting tweaks to configure)
+
+commit 3d9ddb41e263bc1a78f9f9440b8d4ad4f86c82e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:36:18 2012 +0100
+
+    Fix typo
+    Backport of 5b702b024b60176d7f5699b92e55da50a8deae71 from V5-6-patches
+
+commit 0d35c609564b66a1ffe81556d37adf0503c389ce
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:15:08 2012 +0100
+
+    Provide missing definition of NETSNMP_PRIo
+    (used in agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c)
+
+commit a79141a419953d010a6989e8b88f4df127394d38
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 09:19:26 2012 +0100
+
+    Header fiddling for FreeBSD,OpenBSD,Dragonfly
+    Backport of f7b0de1518002c6e8f9b94ef3deb8882e1e9338e from V5-7-patches
+
+commit adf74bf753d3970357afd633803256241d9c7b87
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 08:20:46 2012 +0100
+
+    Fix IPv6 TCP & UDP tables, *BSD support (including OpenBSD)
+    Backport of commits 5cd1573625471c0583e9087aec6802b77157d5a2
+      and 50d73f0d56fe22c590530b3e305d41dcdac3ce00 from V5-6-patches
+
+commit d9555acb9f47c3aa8fde4bc20a44d7ca6181a8a9
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Mon Aug 8 21:56:15 2011 +0200
+Date:   Sun Mar 25 18:48:12 2012 +0000
 
-    Revert "CHANGES: Windows: Avoid that if the Net-SNMP Perl modules have been built with another version of Microsoft Visual Studio than ActivePerl that using one of these Perl modules triggers a "Free to wrong pool" crash. This regression was caused by commit 3b14c59cf8278d410207ff42debda2636426a468 (the netsnmp_free() into SNMP_FREE() changes in the *.xs files)."
-    
-    This reverts commit 7f42d0d93320484152271427cc9808cbda49bbd0 because that commit is not suitable for the 5.4 branch.
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid dangling pointers (based on patch 3503259)
 
-commit 58ca73d03589b0974d926bdfdc3927099fba2115
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Aug 8 11:24:09 2011 -0700
+commit 82a8b47ee96e5d29a2b7ac3ca00722d737d5b479
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:31:56 2012 +0200
 
-    display the branch we'll commit to
+    Running autoheader / autoconf
 
-commit d43729befe12bdefc870889bdfe182e7693f1f3b
-Author: Vladimir Kondratiev <wulf2001@users.sourceforge.net>
-Date:   Mon Aug 8 11:20:30 2011 -0700
+commit 9ca8d939ab393306a1d0f146c9cb70ea0cb19d49
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:30:38 2012 +0200
 
-    CHANGES: snmpd: PATCH 3386633: from wulf2001: fix integer overflow in disk percent calculations
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    Running autoheader / autoconf
 
-commit 3bc5683334e5663c58924196edd66496ff8170c2
-Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
-Date:   Mon Aug 8 11:12:27 2011 -0700
+commit cecd4869deb68f3d4c71e768d5b40dd576446925
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:29:31 2012 +0200
 
-    CHANGES: libnetsnmp: PATCH 3387139: from yaberauneya: Avoid segfault if trapsess transport element cant be parsed
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    Running autoheader / autoconf
 
-commit 1d1bfd5f451c2bc420b710c98c79d04bdef4391b
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Aug 8 11:10:52 2011 -0700
+commit a1a4513bd3e4e614200f6db5a02f61d6c8eefb32
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 28 09:47:45 2012 +0100
 
-    nssfpatchapply: split the displayed git commit command into multiple segments
+    Doxygen-style documentation fixes (backport of git commit c09903a42e9d97331fd9e48ee831a85afdf9c70a)
 
-commit d373c4fd8c391afe0b9e02a60b5cd661bc9039dc
+commit 9bdbcca122c37da304fc6aa6939729475f90f5fd
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 28 09:30:49 2012 +0100
+
+    Doxygen-style documentation fixes (back-port of GIT commit c09903a42e9d97331fd9e48ee831a85afdf9c70a)
+
+commit 1f4a829b18275e4956ca91e5ec370df015f06133
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:41:24 2012 +0100
+
+    CHANGES: snmpd: PATCHES: 3495697: Store persistent snmpTarget table changes
+
+commit 1f75f377d0db01754c0c161dc44373081beef520
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:14:06 2012 +0100
+
+    CHANGES: FreeBSD: PATCHES: 3489387: Install FreeBSD 10 header file (plus other missing versions)
+
+commit 3d72c9e78f2ad817c9d1d82977327bbb20d63ab9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:06:31 2012 +0100
+
+    CHANGES: snmpd: PATCH: 3487867: Don't skip missing ifXTable entries (ifConnectorPresent FALSE)
+
+commit 12906578ab30cf776d080c0ef3025b30334d7655
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Mon Aug 8 17:23:43 2011 +0200
+Date:   Mon Mar 26 16:17:45 2012 +0200
 
-    CHANGES: snmplib: Fix a crash that could be triggered by calling _mibindex_add() with the second argument not equal to -1.
+    DISMAN-PING-MIB: Fix even more memory leaks
 
-commit 8ca7ff1e692caec4186b788c9ae2d27be213290f
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Aug 8 10:33:56 2011 -0700
-
-    fix another function typo
-
-commit 556e938e82a7ee2c10fa8c0b7c7a34e9e65a6d5a
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Aug 8 10:05:20 2011 -0700
-
-    fix function name typo
-
-commit 969e866af983d986a26bebca85fef0f6c623ce26
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Aug 8 09:56:43 2011 -0700
-
-    make nspull/nspush check for a clean repo
-
-commit 7e6fdc8b2a3d86a79543673435371621a2858737
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Aug 8 09:56:13 2011 -0700
-
-    new function "nsmakeall" to test building on every branch
-
-commit e25be7c82d5545d88abea10e4e255c92bed3de6e
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Aug 8 09:53:03 2011 -0700
-
-    default to merge
-
-commit bcb81b796dd6a92195d6db13177ad30f05fc63f7
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Aug 8 09:51:26 2011 -0700
-
-    separate nssync into nspull and nspush
-
-commit e46b170117fe78a2faabef1adcc3d6d4d5696036
+commit ccfd5ca6fe10313d6181d24bbb1797825a97da10
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Mon Aug 8 17:23:43 2011 +0200
+Date:   Mon Mar 26 15:51:16 2012 +0200
 
-    CHANGES: snmplib: Fix a crash that could be triggered by calling _mibindex_add() with the second argument not equal to -1.
+    DISMAN-PING-MIB: Eliminate duplicate code
 
-commit 7f42d0d93320484152271427cc9808cbda49bbd0
+commit 9fda2668722f08ddbfdd67a2239d8b021db64a83
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Mon Aug 8 09:50:51 2011 +0200
+Date:   Mon Mar 26 15:48:46 2012 +0200
 
-    CHANGES: Windows: Avoid that if the Net-SNMP Perl modules have been built with another version of Microsoft Visual Studio than ActivePerl that using one of these Perl modules triggers a "Free to wrong pool" crash. This regression was caused by commit 3b14c59cf8278d410207ff42debda2636426a468 (the netsnmp_free() into SNMP_FREE() changes in the *.xs files).
+    DISMAN-PING-MIB: Write a loop as a loop
 
-commit a3b8654a232c563bc97cc9925cd98590a30c5bc5
+commit cbc18eb763ba6df69ef70668a54d75bf35e79503
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Mon Aug 8 17:24:18 2011 +0200
+Date:   Mon Mar 26 15:24:08 2012 +0200
 
-    Fix a recently introduced MinGW compiler warning
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix more memory leaks
 
-commit a0dd3caf25926e43465718bf417a464c2fb36366
+commit c7725192478aec018fb4aefa60946e04a406c00c
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Sun Aug 7 10:17:01 2011 +0200
+Date:   Mon Mar 26 13:43:24 2012 +0200
 
-    find \( -name '*.[ch]' -o -name '*.in' -o -name '*.dsp' \) -perm -u+x | xargs -r chmod a-x
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid reading freed memory when deleting a row from a table
 
-commit a9a252522fbe7dc1ed70ff2721a4f81583c0d92a
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Fri Aug 5 10:20:51 2011 -0700
-
-    make rollup and sync support --rebase and change the default back to merge
-
-commit 96f5f47ad427972d8d9a6ce06c5e16147362083b
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Fri Aug 5 09:25:25 2011 -0700
-
-    try a multiple branch push
-
-commit 0dbc869fec07d8e90dbd1c95493ee7cbc623c95c
+commit a6be739566f310d7441fd7f54989e39446f7a143
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Aug 5 12:40:31 2011 +0200
+Date:   Mon Mar 26 13:42:28 2012 +0200
 
-    CHANGES: Windows: build.bat: Generate PDB files in release mode.
+    Extend DISMAN-PING-MIB test
+
+commit 8a9b57291453cb8aec28e766c594701ed19c4fc6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 26 21:03:41 2012 +0200
+
+    Fix for DragonFly 3
+
+commit e5c9a32f79eac2e85527c9cf05087cdae9b35a6c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 26 20:59:53 2012 +0200
+
+    DragonFly needs _KERNEL_STRUCTURES to compile ipv6 code
+
+commit cd43bc09a39bd97ff5e719a2ce232ce424600a65
+Author: David Imhoff <dimhoff@users.sourceforge.net>
+Date:   Sat Mar 24 15:47:17 2012 +0100
+
+    CHANGES: snmplib: PATCH 3510454: Allow the use of 0.0.0.0/0 as alias for default
+
+commit e2fc15f9e5a6e3e36be5f489601cbf6bf731917f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 24 15:21:38 2012 +0100
+
+    Fix TCP state values for DragonFly
+
+commit 432fe3ddf54f2c98f936959469cb9b014d599f06
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 24 15:10:52 2012 +0100
+
+    Require perl to do pass_persist test
+
+commit 37d2770cf50c98023eeba90e25d372bff7316ada
+Author: Niels Baggesen <nba@user.sourceforge.net>
+Date:   Sat Mar 24 15:06:40 2012 +0100
+
+    Fix TCP state values for DragonFly
+
+commit 86a948d8691e881d55591dcabddc2739ce72b30e
+Author: Niels Baggesen <nba@nba-linux.sb.statsbiblioteket.dk>
+Date:   Sat Mar 24 15:01:37 2012 +0100
+
+    Properly find pass helpers for testing.
+
+commit fe26a3c4f29f046bf65ed52e9d94054b675fbc4b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:04:42 2012 +0100
+
+    DISMAN-PING-MIB: Limit source code lines to 80 columns
+
+commit 745bafcdcc9c8e84616d4e274db2a384bf234da2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 08:55:05 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make ping implementation independent of ntpd clock jumps
+
+commit da6925e6763cadbe02f4a8bbfe68a362e535ad5e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 10:38:36 2012 +0100
+
+    CHANGES: testing: Add testing/fulltests/default/T154dismanpingmib_simple
+
+commit fa606dd7ca6aff9308d4e8b01bbcde148f441271
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:49:21 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make pinging local interface addresses work
+
+commit 617a83ba799575c84c66f6b1c480ef633161a64c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:28:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix a socket leak triggered by pinging a remote host
+
+commit 625f55c272ec6281e38d8e30eb53fd51516b00ae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:54:55 2012 +0100
+
+    DISMAN-PING-MIB: Convert a dynamically allocated variable into a stack variable
+
+commit b48f19ad4b4aa68c3e16e2a72df37b9c0cd36c4a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:24:07 2012 +0100
+
+    DISMAN-PING-MIB: Add more debugging statements
+
+commit d74cb3966175892562f5e3a9b1683acba2c22e07
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:45:18 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix several memory leaks
+
+commit 0b1a77674678cc9a15be3e7700d3cef650ed02c7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 12:00:30 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Do not send the contents of the stack over the network
+
+commit 139023cd3ab51631cc10e2866d71abcf99ae4c1b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:56:07 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Don't call exit() upon memory allocation failure
+
+commit 169b6aaa7b61827cc1ad0b3aeeae3a7229dd25d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:53:26 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix IPv6 socket leak in error paths
+
+commit a0be32ad053a71fa96134d55e542bb07d4f0297d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:43:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid that host name resolution failure causes a crash
+
+commit bf9bff64556787d766ee2ef2d578afb920719f3a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:51:55 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Convert printf() statements into snmp_log() and DEBUGMSG()-statements.
+
+commit 5d74c01245523a9d8db1eda27d1efae2ebc104fb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:40:02 2012 +0100
+
+    New MIB: VRRPV3-MIB
+
+commit 5b38f062b99b6ef36708e2c7de4965a3192612e9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:34:48 2012 +0100
+
+    For safety, sizeof the right variable in memcpy
+
+commit e5f82782da05efa7c0e6dc2bf5a41ee11868f469
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:33:21 2012 +0100
+
+    Fix for hrSWRun data for FreeBSD
+
+commit 8327565e823270d10a4504568edbe5b5ae323a55
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:31:54 2012 +0100
+
+    Clean up variables for OpenBSD/NetBSD
+
+commit 170f6f027bf4f9174b7073530da4d07f400bba58
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:28:58 2012 +0100
+
+    Move declarations in front of statements
+
+commit dbb4573b69fae85cdc931b2892b5ce4e5b16b321
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:23:36 2012 +0100
+
+    Require kernel_netbsd for NetBSD6
+
+commit f11681f15aad7d9a52fa29812ecbb507f1b7fe24
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 21 12:36:38 2012 +0000
+
+    Check for old tarballs (and unpacked distributions) before starting.
+    These can confuse steps such as "make dependcheck", that do a 'find'
+    on the current tree, and would descend into such unpacked source trees.
+
+commit 470dcd4b6c3ff11ff0a3532a7340a56cffd69098
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 21 12:32:13 2012 +0000
+
+    Don't run "make docs; make mancp" if there's no Makefile present
+
+commit c9ac420343e16df2b7065f5bf2790df44e247fba
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 20 10:26:10 2012 +0000
+
+    Allow distribution as part of normal Net-SNMP packages.
+
+commit 5999f60c57723f23f3c254af57fdb10af301a8eb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 18 19:03:08 2012 +0100
+
+    Regenerate
+
+commit 275d204036a607e3df50e8447d4bc755e9db02fd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Aug 28 21:29:03 2011 +0200
+
+    CHANGES: building: Make it possible to use --disable-applications/--disable-agent together with --enable-minimalist
+
+commit bdccc875710295aacf50f71eb1c1d2ee97f336fe
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 16 20:10:58 2012 +0100
+
+    Do not declare the local variables for opaque_special_types unless that option is set.
+
+commit b80a67da052adca1b5a644db83a782e15c2237c3
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 16 19:50:03 2012 +0100
+
+    Check that the data exist before trying to read it
+
+commit efae86bba5962491d42b77b935191a3eb25dd939
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Mar 14 01:05:33 2012 +0100
+
+    Partially revert "Merge remote branch 'origin/V5-7-patches' into V5-7-patches"
     
-    CHANGES: Windows: build.bat: Write PDB files to the output directory instead of the intermediate directory.
+    Commit d35a1860217e723e4f866dd98ef6621665934c4a accidentally reverted
+    
+    4a2e5bcd56cd2afb36eb15d754e2fee888dd50c0 (hrh_storage is a proper replacement for hr_storage)
+    0dd1e54557d1ba498b55d017b0a93e8ccf9bd522 (CHANGES: snmpd: UDP-MIB: Report the proper address in udpLocalAddress)
+    5116d48378ecf03e722f3010ad47bf22a3fbcb8c (Reduce scope of prefix_val such that the compiler doesn't warn about an unsed variable)
+    10f566f4d4cbb3e205023c23669289e4bfd089cb (perl/SNMP/SNMP.xs: Fix a compiler warning)
+    
+    and part of
+    
+    6e74d64f85a59d50e461db4c34ac76f9de468bfb (Avoid using grep options -q and -w because grep in Solaris)
+    
+    This reverts those reverts.
 
-commit 5b0291f91ed94835f8ae7d9436b15f40afb19473
+commit aaedd59cc2da701527dc2d261d4e9f85f16e7504
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 11 20:57:38 2012 +0100
+
+    Allow make test where the source path contains the string Net-SNMP to succeed.
+
+commit 4b94d796918a4eeae68ab21aa53d444a8b5c2921
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Aug 5 13:17:19 2011 +0200
+Date:   Fri Mar 9 08:04:59 2012 +0100
 
-    .gitignore: Add perl/agent/default_store/default_store.def and perl/SNMP/t
+    Unbreak compilation on FreeBSD 4
 
-commit 2f8d4f5796cbc1c7e967acdaa8019b24f1520a36
+commit 10fe6b83324ad37d18b937cc8c6de94de534d035
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 13:04:07 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit e1122edc1a5fe7976b065044134d39e7db5985ea
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 12:43:19 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit a613d3a834912206d1ba5971e441a3ea6b36af23
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 12:33:03 2012 +0000
+
+    make depend for 5.6.2.pre1
+
+commit 0ef34e6519dfcb82c97df8427547c08dcf81e69a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Mar 8 10:11:30 2012 +0100
+
+    CHANGES: snmpd: Fixed snmpd '-d' option.
+    
+    Now it dumps packets again.
+
+commit 8e69742f143e4fc11196e5b2ed66c8f7f53fd02f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 6 09:24:21 2012 +0000
+
+    Version number update: 5.6.2.pre1
+
+commit c4e00b8c3e1010cdcab5e6c02d60d75df9c6dcf2
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 6 09:24:05 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit 39490104a3ab58235aace2f9d871c266dc4485ee
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 4a2e5bcd56cd2afb36eb15d754e2fee888dd50c0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 5 20:59:38 2012 +0100
+
+    hrh_storage is a proper replacement for hr_storage
+
+commit ce85832932ccd916c42319114c40885a466a9d0e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 5 20:56:40 2012 +0100
+
+    More fixes for Solaris sh
+
+commit 0dd1e54557d1ba498b55d017b0a93e8ccf9bd522
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Aug 5 12:02:51 2011 +0200
+Date:   Mon Mar 5 15:08:26 2012 +0100
 
-    CHANGES: Windows: Avoid that running the Perl regression tests makes snmpd crash
+    CHANGES: snmpd: UDP-MIB: Report the proper address in udpLocalAddress instead of 0.0.0.0. Makes test T160snmpnetstat pass again. Fixes a bug introduced in commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a.
 
-commit 0c7507a1e0101f4b135a3ed8a961635b87093f1a
+commit 518917e9f39f7a9d3c3bf3a865e8ac0e3026d600
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Aug 5 10:57:33 2011 +0200
+Date:   Mon Mar 5 14:04:54 2012 +0100
 
-    Unbreak the V5-4-patches - revert commit d2c4768bd2efb48664434a831425c2dda85d7133 (CHANGES: libnetsnmp: PATCH 3362233: from yaberauneya: Mute unnecessary cannot find module noise).
+    snmplib/snmpUDPDomain.c: Fix source code indentation
 
-commit 9b7ff4abfc9529bb9e18a3b874201520bc0e7141
+commit 2651909ccceabfcfadaf942c02450e28fe837dc9
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Tue Nov 9 12:04:04 2010 +0000
+
+    Passes now on MinGW too.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19653 06827809-a52a-0410-b366-d66718629ded
+
+commit e41f115e40304c941ba17d67e24710722d90741b
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Aug 5 11:07:55 2011 +0200
+Date:   Mon Mar 5 13:39:17 2012 +0100
 
-    Unbreak the V5-4-patches branch - was broken by commit bf7178b0b22587d43d1a80c269cd216bd5930214 (agent: change type of snmp_enableauthentraps to long)
+    testing/fulltests/support/simple_eval_tools.sh: Avoid using grep options -w and -q because grep in Solaris' default path doesn't understand these.
 
-commit 03049e1036c2c06cbd6e5ed5fe084999d5468a5f
+commit 5116d48378ecf03e722f3010ad47bf22a3fbcb8c
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Aug 5 10:56:48 2011 +0200
+Date:   Mon Mar 5 10:47:20 2012 +0100
 
-    Unbreak the V5-4-patches branch - was broken by commit 0e6842fe080cec853b08cd2323015ababc381ce1 (CHANGES: snmptrapd: PATCH 3383441: from sachinsurendran: Fix crash on 5.4.4 due to access of freed memory).
+    agent/mibgroup/ip-mib/data_access/ipaddress_linux.c: Reduce scope of prefix_val such that the compiler doesn't warn about an unsed variable if it isn't needed.
 
-commit 3aa949fbdfc1a94a8340ad8baf8b314756a0bb9d
+commit 6e74d64f85a59d50e461db4c34ac76f9de468bfb
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Aug 5 10:26:15 2011 +0200
+Date:   Mon Mar 5 09:22:31 2012 +0100
 
-    Win32 makefile whitespace cleanup
+    testing/eval_tools.sh: Avoid using grep options -q and -w because grep in Solaris' default path doesn't understand these options.
 
-commit 943930e1e124385fd94738b6dcda37d29dc7ac7f
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 10:41:41 2011 -0700
-
-    CHANGES: agent: PATCH 3324769: from hardaker: Fix -Wunused warning
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
-
-commit 90c0e75f3e0de73d6aaab3e3d7146f18a8f9e187
+commit 10f566f4d4cbb3e205023c23669289e4bfd089cb
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Thu Aug 4 19:12:24 2011 +0200
+Date:   Mon Mar 5 10:47:39 2012 +0100
 
-    snmpusm: Fix recently introduced compiler warnings
+    perl/SNMP/SNMP.xs: Fix a compiler warning
 
-commit 2dd9ed0858daa982b4160b4d2a7d5a2b80944171
-Author: Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
-Date:   Thu Aug 4 10:06:57 2011 -0700
+commit 44aa265891cd563f7f4114ef25dcf7aaf3b14e9a
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
 
-    CHANGES: openbsd: PATCH 3357932: from t0jw2fu0kmg: Cleaning in memory_netbsd.c
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
 
-commit f8f6f7071644b7e771df8e62a93227cf960a04e7
-Author: Vladimir Kondratiev <wulf2001@users.sourceforge.net>
-Date:   Thu Aug 4 09:56:29 2011 -0700
+commit dae4e16be86117861f63d1a2f981ad361418f5c6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
 
-    CHANGES: agent: PATCH 3386147: from wulf2001: fix UCD-SNMP-MIB::dskUsed
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
 
-commit 2101bb2d7ad6db038c755aa9193c8ace0dbd4f58
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 09:28:06 2011 -0700
+commit 28f6226f2e228b8ca248489735f86502b2cce0a1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
 
-    added the missing freebsd9.h file from the freebsd9 patch
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
 
-commit b6a481fa3062893e589bf6163c9d06d0f2053240
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 09:27:05 2011 -0700
+commit 40022a697958259ccfbb3fed44eb3c472f5e837e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Mar 4 10:37:41 2012 +0100
 
-    ignore *.orig and *.rej
+    Solaris sh does not understand "test -e"
 
-commit cc5134e53d1c233dc41e31fbb78faab098f09361
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 09:26:44 2011 -0700
+commit 773af0c42e077bebdaecf1c0caf393285a7688f1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 3 17:19:30 2012 +0100
 
-    help output describes rebase vs merge better
+    Clean up nsrollup complications
 
-commit b372e5ab30aa155741e94df22e0752535c59e4bb
-Author: Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
-Date:   Thu Aug 4 09:22:28 2011 -0700
+commit ee71049c3e21c1d0e3424297136652bbe0e39d85
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 3 16:49:41 2012 +0100
 
-    CHANGES: openbsd: PATCH 3357927: from t0jw2fu0kmg: Recognise openbsd5
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    mibgroup/icmp.c: adjust ifdefs to make it compile on BSD's
 
-commit 0548a4e97b2a1f0399e58c4efc004c9497398cd6
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 09:22:15 2011 -0700
+commit ce9600361e665dde17af9d8ab16d7ce85dc05643
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:39:55 2012 +0100
 
-    fix where arguments are set
+    dot3StatsTable has bugs :-(
 
-commit 3b3780bca9adeebf4ef7508aee6b8ebcb94f656c
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 09:20:40 2011 -0700
+commit dffacf6fa0755e1700cbac25b844185abd807a0a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:38:10 2012 +0100
 
-    split nssfpatchapply into two parts: apply and commiting
+    passpersist test needs /usr/bin/perl
 
-commit 0422514a62bcaae6005017d7e9ed485075fe701c
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 09:15:25 2011 -0700
+commit 8726995c7a8aef674c4f164b1871c37bbdcdad50
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:36:58 2012 +0100
 
-    patch using -N
+    grep -w fails with OpenBSD and Solaris 10-64
 
-commit dc755a6aeb9b9c889727d9fc842fc89f729e6ec0
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 08:33:25 2011 -0700
+commit 1eb4745b23cc3a839864e7f6ea28355b0566eb67
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:35:49 2012 +0100
 
-    added spacing to match the later branches
+    Solaris needs /usr/xpg4/bin/grep to understand -q
 
-commit 7b726e103c1960f4c8603859c9a8d8aa8c404520
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 08:32:23 2011 -0700
+commit 9954b4b741fd8c63d6128bd0527298c8e4e989fc
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:34:45 2012 +0100
 
-    removed accidentially duplicated code
+    Make sure we have the proper srcdir for out-of-source builds
 
-commit ecbab0a98a02fde6bbca7dd370bcd9c3ca76affe
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 08:27:41 2011 -0700
+commit 78369002be2711f0aa876b64a4e10b090cc241cd
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:33:31 2012 +0100
 
-    nssync supports --merge now
+    Not all make versions define $(RM)
 
-commit 0078e22470eb0fdd6dc02e20813351acdc158964
-Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
-Date:   Thu Aug 4 08:23:22 2011 -0700
+commit 94245b29a3cda89475c6eab5d9493c6657ff38e3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:24:24 2012 +0100
 
-    CHANGES: libnetsnmp: PATCH 3362233: from yaberauneya: Mute unnecessary cannot find module noise
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    Make autoconf 2.68 happy
 
-commit eb78db2b6e2774a4497d8768c138b4f14c5f5a7f
-Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
-Date:   Thu Aug 4 08:19:16 2011 -0700
+commit 44acd6c285fb5614b4c9611b1abdeca9dd28e4bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:12:47 2012 +0100
 
-    CHANGES: freebsd: PATCH 3363308: from yaberauneya: Fix compilation on FreeBSD 9.x with recent header shuffling
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    Fix spelling of mib module fsys_getfsstats
 
-commit 8204a64f0ff2f6945c324ee9fc1be3af6e1b850f
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 08:15:17 2011 -0700
+commit 1fa1fee3693f67b820223806b3d73afd4c50ec18
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 2 01:37:20 2012 +0100
 
-    allow nsrollup to take a --merge flag for merging instead of rebasing
+    Silence a clang warning.
 
-commit 99f6360296d4459af99affffac89708a581c3ce0
-Author: Sachin Surendran <sachinsurendran@users.sourceforge.net>
-Date:   Thu Aug 4 08:12:09 2011 -0700
+commit 93263b98a5db344cf2c4d489c43971e7b29cdb03
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 13:37:20 2012 +0000
 
-    CHANGES: snmptrapd: PATCH 3383441: from sachinsurendran: Fix crash on 5.4.4 due to access of freed memory
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    version update for 5.5.2.pre1
 
-commit f7a88bc6f738f77cb9c43081e1f62f27e3b6ef98
-Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
-Date:   Thu Aug 4 08:09:18 2011 -0700
+commit 5a175428b973d2ea8553e29fecf94cf1566aa858
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 11:48:18 2012 +0000
 
-    CHANGES: freebsd: PATCH 3363328: from yaberauneya: Add FreeBSD 9.x to supported OSes list
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    version update for 5.5.2.pre1
 
-commit e7dd1c437afe6e26a55aa772d468012655741d31
-Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
-Date:   Thu Aug 4 08:23:22 2011 -0700
+commit 364276a1c5aa66caa23eb5b7f111fdeb5af71fa7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 11:45:10 2012 +0000
 
-    CHANGES: libnetsnmp: PATCH 3362233: from yaberauneya: Mute unnecessary cannot find module noise
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    make depend for 5.5.2.pre1
 
-commit c53d8c3525f590f2213d35b0da94123862f3e366
-Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
-Date:   Thu Aug 4 08:19:16 2011 -0700
+commit 73598340172eff75729a6d57192b8171d5bbf00e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 10:42:56 2012 +0000
 
-    CHANGES: freebsd: PATCH 3363308: from yaberauneya: Fix compilation on FreeBSD 9.x with recent header shuffling
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    Version number update: 5.5.2.pre1
 
-commit 3b8c8b85085aae2d1a1c7ca35e7d066d3d74fa9f
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 08:15:17 2011 -0700
+commit f3214402672ca199fd531e66122bf96c4d9a4eb7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 10:42:39 2012 +0000
 
-    allow nsrollup to take a --merge flag for merging instead of rebasing
+    version update for 5.5.2.pre1
 
-commit 7100aedffd98cda4b05164bccf17876020196e79
-Author: Sachin Surendran <sachinsurendran@users.sourceforge.net>
-Date:   Thu Aug 4 08:12:09 2011 -0700
+commit 2e74acb6f19e4729cede0ab43e931961cb23aaea
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Mar 1 09:18:39 2012 +0100
 
-    CHANGES: snmptrapd: PATCH 3383441: from sachinsurendran: Fix crash on 5.4.4 due to access of freed memory
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    CHANGES: Bug 3152841: Do not install the util_funcs subheaders that were removed in 5.7
 
-commit d2c4768bd2efb48664434a831425c2dda85d7133
-Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
-Date:   Thu Aug 4 08:23:22 2011 -0700
+commit b7109646b95a70713d1ad991d41bccd57c0bb3eb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Mar 1 08:48:48 2012 +0100
 
-    CHANGES: libnetsnmp: PATCH 3362233: from yaberauneya: Mute unnecessary cannot find module noise
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    CHANGES: Bug 3152841: Install util_funcs subheaders introduced in 5.6
 
-commit d19b8fca2384077f732a30f2946ab0c03bc0e738
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 08:15:17 2011 -0700
+commit 432cbb7a5501ab90d66d0a83e731e7343bc04b37
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Feb 25 10:13:15 2012 +0100
 
-    allow nsrollup to take a --merge flag for merging instead of rebasing
+    Correct typos
 
-commit 0e6842fe080cec853b08cd2323015ababc381ce1
-Author: Sachin Surendran <sachinsurendran@users.sourceforge.net>
-Date:   Thu Aug 4 08:12:09 2011 -0700
+commit 6a6c9bbc7584f196a1185cc1935204f1206811ed
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Feb 29 08:55:35 2012 +0100
 
-    CHANGES: snmptrapd: PATCH 3383441: from sachinsurendran: Fix crash on 5.4.4 due to access of freed memory
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    CHANGES: Bug 3152841: Install util_funcs subheaders
 
-commit efa3135a250ae1fff308496d22e7782abc0c391e
-Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
-Date:   Thu Aug 4 08:04:27 2011 -0700
+commit d515e2a6e4c2a1c4d84734cc7b2d0b2fc5a894ad
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 15:56:21 2012 +0000
 
-    CHANGES: building: PATCH 3383951: from yaberauneya: Fix -Wunused compile warnings with FreeBSD/NetBSD
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    CHANGES: snmpd: PATCHES: 3487919: Fix compilation when caching is disabled
 
-commit 25988be836924a33020113c94aa02614d1dbf1be
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 07:36:36 2011 -0700
+commit af8368ed8898a78d0868b47af46bc9db07d1c764
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 15:50:56 2012 +0000
 
-    autoconf
+    CHANGES: snmplib: PATCHES: 3414773: Encode integer value using ASN_INTEGER
 
-commit 4db6b64509dc350839d596e32504b2d80ca0c7b0
-Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
-Date:   Thu Aug 4 07:36:10 2011 -0700
+commit 19e2715807fe06fd0baedf88165011aee933e755
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 14:05:34 2012 +0000
 
-    CHANGES: building: PATCH 3383949: from yaberauneya: Fix autoconf tests for sys/mbuf.h
-    
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    CHANGES: man: BUGS: 3490708: Clarify use of common command-line options
 
-commit f3bc55184d96c58dcfd58953796c10f7354dd4a7
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 06:54:22 2011 -0700
+commit 65f7962f932c9b75c5bbbb047d1e26ae60978e53
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 12:23:34 2012 +0000
 
-    prompt for patch and an area, and use the proper CHANGES line format
+    CHANGES: snmpd: BUGS: 3489631: Fix incorrect handling of UCD monitoring flag
 
-commit ad696ba1249d3c4bc12c0eb38481ff0fc433f8a1
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Aug 4 06:42:42 2011 -0700
+commit ac166051b6a092dd4a594326ec85e2f699b62547
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 11:57:41 2012 +0000
 
-    Use fetch --all and rebase as suggested by Bart for speed improvements
+    CHANGES: testing: BUGS: 3474590: Don't match underscores within the source root filename
 
-commit 44969b4e57c27194e5bd357bc45275feb8695d22
+commit 879bf7079d34fa46f6fcf54a01c8500beaece59a
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:44:41 2012 +0000
+
+    CHANGES: snmpd: BUGS: 3460364: Fix use of block factor when detecting error conditions
+
+commit 034f1c572f683ea428583074471e5d5d13b51837
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:22:20 2012 +0000
+
+    Skip SET-based tests when configured using --enable-read-only
+
+commit 36423e210bfb65ef121c6a66aec438c7c237d3df
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:03:25 2012 +0000
+
+    CHANGES: BUG: 3454168: configure: Fix building with --enable-read-only
+
+commit eed0bcbc43fea18259f0f63b2081b6d10535a052
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 09:27:11 2012 +0000
+
+    Skip SET-based baby-steps when compiled with --disable-set-support.
+    Inspired by bug #3454168
+
+commit ec6a23030e5a2072c19c18c1d9c124387da56b7b
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Jul 8 20:52:25 2011 +0200
+Date:   Mon Feb 27 18:42:58 2012 +0000
 
-    CHANGES: Win32: Fix the compiler warnings triggered by the winExtDLL source code and that are triggered by the change of the "oid" typedef from uint32_t to u_long.
+    Add -lrt to NETSNMPLIBS such that clock_gettime() can be found
 
-commit ea58b67b4f318acf1f9e852582bccad47b4d8e67
+commit f13320500294bb240f63c6dd7d2e9a2208eb740d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 16:52:51 2012 +0000
+
+    Skip SET-based tests when compiled using --disable-set-support
+
+commit c4276b6232c29145c039884e6b5a6b6da4b93837
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 15:54:45 2012 +0000
+
+    Omit SET-related code when compiling with --disable-set-support (inspired by patch #3424930)
+
+commit 01c930edcc25700d6b5fb0376f55a26425e13fb0
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 15:17:22 2012 +0000
+
+    Omit SET-related code when compiling with --disable-set-support
+    (inspired by patch #3424930)
+
+commit 9484d83203c4e2d820416be665fa833aa70444d2
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Jul 8 20:52:25 2011 +0200
+Date:   Fri Feb 24 14:00:32 2012 +0100
 
-    CHANGES: Win32: winExtDLL: Invoke SnmpUtilOidFree() before SnmpUtilOidCpy(). It's not clear yet why the original code did not make snmpwalk trigger a memory leak.
+    Rework commit b4a19505a05816e94e01de97bf99ac37fcdc6d23.
 
-commit 8a01ec6423d400c4a13ccac68a3791d0218a0885
+commit 2b7f13495228635d816e58b2174dc124dd0cf39f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Feb 24 07:43:22 2012 -0800
+
+    set MERGE_AUTOEDIT before merging to avoid the future git 1.7.10 forced msg
+
+commit e1b910b0be9343586ae9edba6f46040af315fcdd
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Thu Aug 4 11:19:17 2011 +0200
+Date:   Thu Feb 23 10:27:54 2012 +0100
 
-    CHANGES: Windows: Make linking with recent OpenSSL binaries succeed.
+    CHANGES: snmpd: init_agent() + init_kmem(): Return an error value instead of invoking exit() if access to kernel virtual memory is denied
 
-commit e21eef2fc5cfdc1200479118a2c5b29a70b0df60
+commit 463eed2120f9d191bc22673496a49e8174664e4b
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Thu Aug 4 08:52:43 2011 +0200
+Date:   Thu Feb 23 10:03:31 2012 +0100
 
-    CHANGES: agent: Avoid that a MIB walk on the host resources MIB triggers a crash on Fedora 15
+    Remove obsolete symbol NETSNMP_EXIT_ON_BAD_KLREAD
 
-commit b056ee6eb53909ad04f16ec26d2690d7a083192a
+commit c36ab71a4e096f16cc5a55533f080c9a94009914
 Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Thu Aug 4 07:59:04 2011 +0200
+Date:   Thu Feb 23 08:53:56 2012 +0100
 
-    Fix a compiler warning in agent/mibgroup/host/data_access/swinst_pkginfo.c
+    CHANGES: FreeBSD: snmpd + apps: Sending UDP packets works again for non-root users
 
-commit 171f9580fffa6041afc862ef9440d949f0aa79bf
+commit edebddba930f8b1472fa0bd20fc413ef8cf464a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Feb 21 11:31:46 2012 +0100
+
+    testing/RUNTESTS: Fix a bashism
+
+commit b4a19505a05816e94e01de97bf99ac37fcdc6d23
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 20 16:58:47 2012 +0100
+
+    Fix compiler warnings about %ld versus time_t on systems where time_t is a synonym for long long instead of long.
+
+commit d8978ecc8211be7c1e7905f1e215bb06ded266b6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Feb 21 12:32:25 2012 +0100
+
+    Fix snmplib/transports/snmpSocketBaseDomain.c file header
+
+commit aa766d196e5287f6ca79b58a345b024260aba354
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 20 17:07:13 2012 +0100
+
+    IF-MIB: do not trigger undefined behavior (>> 32 of a 32-bit variable) when updating a counter and ifi_ipackets is a 32-bit variable
+
+commit c3fb6dd9e6b99e9542493188987871fc5017cb3c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 09:45:45 2012 +0100
+
+    Fix a compiler warning on systems where mode_t is unsigned
+
+commit f8a3ef0d3d4e530279900101049b8de98a44a6fb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:48:52 2012 +0100
+
+    CHANGES: snmplib + snmpd + snmpwalk: Avoid that system clock changes (e.g. by ntpd) affect code that needs relative time
+    CHANGES: snmpd: Make sure that the range of the SNMPv3 variable snmpEngineTime is 0..2147483647 on all supported systems instead of 0..42949672 on some systems (i.e. wraparound after 497 days)
+    CHANGES: snmplib: Add netsnmp_get_monotonic_clock(), netsnmp_set_monotonic_marker(), netsnmp_ready_monotonic(), netsnmp_get_agent_runtime()
+    CHANGES: snmplib: Deprecate atime_diff(), atime_newMarker(), atime_ready(), atime_setMarker(), marker_tticks(), netsnmp_marker_uptime(), netsnmp_timeval_uptime(), timeval_tticks(), uatime_diff(), uatime_hdiff() and uatime_ready().
+    CHANGES: snmplib: Change the names of the struct timeval members of data structures that were used to store a wall clock time but that do now contain a monotonic clock value
+
+commit c19760f3333c92fac5d50e9768cdf939218bc487
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Feb 15 09:45:03 2012 +0100
+
+    snmplib/snmpv3.c: Fix source code indentation
+
+commit a6db239945e195de5a90fa183700b27a6ecb28d3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 7 00:11:14 2012 +0100
+
+    Fix possible memory leak from recent declarations patch
+
+commit 0fbbb9a9e2906a7af956957061d485874462aea9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 6 20:43:04 2012 +0100
+
+    Do not mix declarations and statements
+
+commit f308d5bafb05d78ed4030c4ecff324b6cbda680f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 15:25:30 2012 +0100
+
+    Fix two compiler warnings in agent/mibgroup/disman/ping/pingCtlTable.c
+
+commit 46f0fc1b7fc26a225763bc65cca520a1c59f0251
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 6 20:54:32 2012 +0100
+
+    sendmsg does not like IP_SENDSRCADDR if addr is INADDR_ANY
+
+commit debac498fe8410110107a2fe64f8afb748edaa07
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Feb 6 16:48:09 2012 +0100
+
+    CHANGES: added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
+
+commit fafc99cd89e73ec7e00bf7360d0b4fa61944a4f4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:18:34 2012 +0100
+
+    Simplify calculate_time_diff() and calculate_sectime_diff()
+
+commit 7af2013de8bf1b379c076db4e104508e17874d3e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:55:58 2012 +0100
+
+    Fix order of feature #ifndef and Doxygen comment block
+
+commit bbd67f63530f5ef0bfc948fc58dfe6a93f8f8679
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 15:25:30 2012 +0100
+
+    Fix two compiler warnings in agent/mibgroup/disman/ping/pingCtlTable.c
+
+commit 42a66aeff25b9e9ef635a404ad2f5212f9e8cf0d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:47:54 2012 +0100
+
+    Rename two function arguments
+
+commit 3fe72b3b99b7e4b2b982363dfc4f2d8d13f40592
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 13:49:22 2012 +0100
+
+    Convert snmp_select_info() documentation to Doxygen format
+
+commit e9db266ae48d05a7a6cb5d71b4bdea7ad808ef5e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:17:57 2012 +0100
+
+    CHANGES: snmpd: Add netsnmp_get_next_alarm_time()
+
+commit d08044cb9e5702fbf549e14425f42794259d8a21
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 09:38:07 2012 +0100
+
+    CHANGES: snmpd: Add netsnmp_get_agent_runtime()
+
+commit a05c27c2711cb41582a3b4c31e38b0e93530b62d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:51:33 2012 +0100
+
+    Fix spelling in a source code comment
+
+commit 910d7b0d99183609b9529b04c3f29330eb661021
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:38:12 2012 +0100
+
+    Replace netsnmp_timeval_uptime() by netsnmp_get_agent_uptime()
+
+commit 43a83f6c6a96cc2316b70eecacf127eb6913c7a7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:19:15 2012 +0100
+
+    Use the assignment operator instead of memcpy() for copying struct timeval
+
+commit 2fe579efb1cb3a74f82803ca323928f6b8e4b5c0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 3 14:04:02 2012 +0100
+
+    Make agent/mibgroup/mibII/icmp.c build again on non-Linux systems.
+    
+    See also commit 345a1e4254812cb9edc1d274491b76681a9dba1e.
+
+commit 881de6ab7355277a5c116a008fbe513293b05039
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 3 10:08:21 2012 +0100
+
+    Fix compiler warnings triggered by the Rmon MIB implementation
+
+commit 4629933c0d3b3f9f4ba583534f79a37fb9633817
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 20:05:31 2012 +0000
+
+    More compiler warning fixes
+
+commit e9b5a3dee6f9afab8b90a29392040632b075ad7a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 16:56:55 2012 +0100
+
+    Use SNMP_MIN() instead of min()
+
+commit ae452c77b411139d6b5800ffcf88d48e9b4792a8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 15:23:38 2012 +0100
+
+    Restore commit dbb8795a7df595f0603f2ec61704799f4c482667.
+
+commit c7d11fa00f9995ddb9fe3d4994a3e9790da2e189
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 15:18:40 2012 +0100
+
+    Restore commit dbb8795a7df595f0603f2ec61704799f4c482667 partially.
+
+commit 00fd62720ec454f5a690de4feba08223cfb2c3f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 14:48:44 2012 +0100
+
+    CHANGES: snmptrapd: Avoid crash during shutdown due to invoking perl_destruct(NULL)
+
+commit d9e229d81abeaf191ef2ccb077842885c230d622
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 14:47:41 2012 +0100
+
+    Remove a superfluous declaration
+
+commit 1e2e2af6cae830f381e87a244d029eb86bf3fcce
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 13:20:37 2012 +0100
+
+    perl/SNMP/examples/pingmib.pl: Add error checking
+
+commit 241a141e31f1684fc6cf70cc4a00cce636fd3526
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 11:28:37 2012 +0100
+
+    Make configure-time EVP_MD_CTX_create() detection work on the 5.4 branch.
+    
+    See also commit 46eac02e9a27bf4f3068e795cab891f05a848870.
+
+commit 6d9d14feaaa2d0fec68b4d158944d32cb04ff1bc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 11:12:00 2012 +0100
+
+    Revert the changes that break the build on the 5.4 branch from commit dbb8795a7df595f0603f2ec61704799f4c482667.
+
+commit 8abe49e30c97c8983e83b45a35c716fe91f66bea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Feb 1 11:56:58 2012 +0100
+
+    Fix several compiler warnings in the DISMAN MIB implementations.
+
+commit f9fb0a533375e14dc370025a0b2fbc761bf27be6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 09:56:02 2012 +0100
+
+    Revert "HOST-RESOURCES_MIB: fix a compiler warning" because it's wrong.
+    
+    This reverts commit aa6b79bc124a7b7a885d7e5035ab06aa3ecef613.
+
+commit ca4a4fe25efd2714f8f1961b97856616563f42c9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 10:21:49 2012 +0100
+
+    .gitignore: Add python/build
+
+commit 13ada56558b44e28d1355c0dce1d921f3746d548
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:53:49 2012 +0100
+
+    Revert "Revert "Fix format specifiers to avoid warnings"" - there *is* NETSNMP_PRIo in V5-6+ branches
+    
+    This reverts commit aa528bd22c7493ca8d67e678fbf615ca0f63ea6d.
+
+commit aa528bd22c7493ca8d67e678fbf615ca0f63ea6d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:13:18 2012 +0100
+
+    Revert "Fix format specifiers to avoid warnings" - there is no NETSNMP_PRIo in V5-4 or V5-5 branches
+    
+    This reverts commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b.
+
+commit 2fb99be9aa86a6ca349b86d4ef8bc726ed9f2a82
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:58:35 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit e5c35589e0bf416bfd036bd468f42aaeab25e788
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:55:56 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 345a1e4254812cb9edc1d274491b76681a9dba1e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:51:26 2012 +0100
+
+    Fixed error handling in init_icmp().
+
+commit c303549a59fa8c2f20a9d8bf1e985fbc8abde6a8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:46:29 2012 +0100
+
+    Reworked _register_extend() error handling.
+
+commit 9c20e27a7026fc030da3b328b9a2e1b4f36670cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:21:28 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 22fd0bfc2df0e1f6020dc3c50a753ddf28a4599c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:20:22 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 5d61e57baf580c78252c0abb0098c07bb05af17c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:17:05 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 3c3eeae80d796f27597c901e7ff2046c769ef4b8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:08:09 2012 +0100
+
+    Mark rowreq_ctx as freed so next iteration allocates new one instead of reusing the freed one.
+
+commit af9abd53c2337c90a691a7b044ff3f97c1003161
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:05:10 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit cf9465f54181e62e21a9b10219131107a3d2ebf6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:04:06 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 7871f2b09b8b52f34a9e57784266459053165bcb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:02:50 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 7a37f33d310c9598607bc323d9bdbf91aaf72c95
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:00:51 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 3e45f7026249e45350edaac85337423aa0e95d8b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:13:18 2012 +0100
+
+    Revert "Fix format specifiers to avoid warnings" - there is no NETSNMP_PRIo in V5-4 or V5-5 branches
+    
+    This reverts commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b.
+
+commit 61936762e641c18db75aa5125a33e776c677adc5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 11:13:39 2012 +0100
+
+    Fixed freeing reginfo twice on error in a template and all its instances.
+
+commit 496437430415fbafeb1ccd4774f1ca00d627ea1f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 11:04:13 2012 +0100
+
+    python/netsnmp/client_intf.c: Fix compiler warnings introduced on V5.6 branch
+
+commit 5b4a24cdcee1bc3d82633ccafeb96fce95349c59
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:22:27 2012 +0100
+
+    unit tests: fix a 64-bit compiler warning
+
+commit cbf1c91baf7191be5fa27d81bcf8714331a2c12f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:20:42 2012 +0100
+
+    Use snmpTargetParamTable_dispose() to free a struct targetParamTable_struct.
+    
+    Fixes a bug introduced in commit dbf26a05a04ef24c47346e5adda48e338498e71f.
+
+commit aa6b79bc124a7b7a885d7e5035ab06aa3ecef613
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:20:31 2012 +0100
+
+    HOST-RESOURCES_MIB: fix a compiler warning
+
+commit 3a76b43e11fffada632fccb848ab500e876ad48b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 18 16:21:05 2012 +0100
+
+    CHANGES: python: Avoid that an SNMP set with UseEnums enabled causes a segmentation fault
+
+commit 84dec9fa92b0aa2d58eb7020330f4f98e5154321
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 18 14:38:21 2012 +0100
+
+    python/netsnmp/client_intf.c: Fix most compiler warnings
+
+commit 38cf218c3f1a727786e227a5d3fb186fd0f1a15f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:50:13 2012 +0100
+
+    Fix a typo
+
+commit 454122244122bfdb6f67cab31256d7b46372e9e1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:30:18 2012 +0100
+
+    Free tmStateRef on errors.
+
+commit 0119022daa59c73bfec0da2386d0628f14e6dab7
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:09:12 2012 +0100
+
+    Free fingerprint when it's not needed.
+
+commit 0e84cd303a08267dec78f6d81c9bb07e3d83a11f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:48:26 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 63dc846a7949ce697b3e28c543dc1105e63a2250
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:08:28 2012 +0100
+
+    Free certificate fingerprint.
+
+commit ce1f284a63eb81644b3e32606cbe39b67e1dff2a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:37:09 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 7e21413ca6f2efd7a3afb62c62b644881b8bd1e7
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:46:30 2012 +0100
+
+    Properly allocate and free engineID.
+
+commit 34c962882607c3638a2fa25a2ac531492d71c787
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:37:25 2012 +0100
+
+    Free locally allocated tmStateRef.
+
+commit f57ae531dc5658abcd65b1627615525238d16d2d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:20:24 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 536bc57556c3141561ea4a194810b16290a691ee
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:15:47 2012 +0100
+
+    Added check if the function actually does something.
+
+commit a0777d307dbcaf219ee0184a0fbab9d4e5d6aa0b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:01:45 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 8b97a71c8e7959428eb4d4e8d90e9096d43ff09f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:57:26 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 2c1507c22030549ae660c0e211fbdc5c75ec5c57
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:53:47 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 65f2b7bcd4fe03906aa1a115ab60a89b8ae933d5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:51:36 2012 +0100
+
+    Close open files on error.
+
+commit 0e52e4f66d44766bea37473556c78e5219b95461
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:45:33 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit dbf26a05a04ef24c47346e5adda48e338498e71f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:42:17 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 748da84b1fd654e338bc701e8f9e5da229187f1c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:32:04 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit eb217146fd54036ea4202bfef78bbf774d7e382d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:23:10 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 9ba38eec66138ec1f613ea8d04e158130c7121bc
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:18:55 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit d9d938d3018c27f53277bc5e59578500490c1d09
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:16:38 2012 +0100
+
+    Close open file on error.
+
+commit d5e817d5bd518d9ac6a0d60e0e141dd64f27ad19
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:14:12 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 2ae68f059df9d74b074d12f59c1847466ed576cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:03:17 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit a00f3d461121b545aed72ac12b2438791dcfc4ba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 14:58:39 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 59884bb4d35ad13747ffa6723436dca587a9ab77
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 17:09:12 2012 +0100
+
+    In above code, olength is checked, so let's check it also here.
+
+commit ba5d5292b04393b0c7d7d7ed961241929418c6e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 17:05:14 2012 +0100
+
+    Fixed dereferencing NULL.
+
+commit da2d6a7028a13b9edf3a5c84314d0f1feef76714
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:44:56 2012 +0100
+
+    Prevent dereferencing NULL.
+
+commit f88054a9b69b6de274f7a14a59b47323e5e4e4c6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:37:35 2012 +0100
+
+    Don't dereference context if it's NULL.
+
+commit 7c4d459e8f1f652cc2098c3d4c81de90a84ed710
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:30:09 2012 +0100
+
+    Don't deference NULL.
+
+commit fc19b7f33b587927d2a01e72d23d21b9b1696ab3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:25:26 2012 +0100
+
+    Don't close NULL file.
+
+commit 5e95ca6790076b788072a801ee7c82969d995bcb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:17:09 2012 +0100
+
+    Prevent dereferencing NULL when a transport does not have f_fmtaddr.
+
+commit eed6f5f9b9ae54d2ceab67ad85adde1f6a8a21d5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:13:13 2012 +0100
+
+    Prevent dereferencing NULL.
+
+commit 41cde68b5fa4b38d81450cf91e082cdfa825e7cf
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:10:10 2012 +0100
+
+    Check if a registration was really found.
+
+commit 5b72a40853876a186efcc0090a4e32c235b9c05f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:03:58 2012 +0100
+
+    Don't dereference NULL when difflen is SMUX_MAX_PRIORITY (which is highly unlikely, but...)
+
+commit fa6a912e41c5d0fd2a636894e86b6426c07375ab
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:37:44 2012 +0100
+
+    Check for missing value in setEvent.
+
+commit 410b71da425389fecc25d14f49f23753581576ad
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:28:41 2012 +0100
+
+    Dereference ereg only if it is not NULL.
+
+commit 185272d1a0b913774186f1b9135aeaf637ebed52
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:17:21 2012 +0100
+
+    As per above code, template_v2pdu can be NULL, so check it before dereferencing.
+
+commit 48e5ead3fd2c2b385df6972c67526ff6bdc30768
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:42:22 2012 +0100
+
+    Updated last fix to new error reporting style.
+
+commit f33d33615d6d85d0073726473c4146cbcdf11ced
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:30:07 2012 +0100
+
+    Fixed sigsegv when empty config line is parsed.
+
+commit b5df1eeb47ed3559b6f4d9ecccdb242126e6c992
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:11:58 2012 +0100
+
+    Fixed (highly theoretical) sigsegv when sp->securityEngineID is NULL.
+
+commit 6feed629a71899c113096959d8549dc1201e8f9a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 13:43:37 2012 +0100
+
+    Added NULL and len check just in case someone provides value = NULL and nozero len (-> NULL is then dereferenced).
+
+commit 355c5ab264af2a6020a1d8a923f80f11b942295e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 13:36:41 2012 +0100
+
+    Extend the NULL check, i.e. return if there is nothing to remove.
+
+commit ddd7948acad938cd42974505ddca4f0372116709
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 11:11:29 2012 -0800
+
+    update sparta's copyright
+
+commit 41256086a7a5041453419cfd6e562c7b55c56b0a
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 10:32:04 2012 -0800
+
+    pulled full copy of extractnews from master
+
+commit 625a70dbdfd9902da79efa293fe6d2ac8ccf2b2e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 10:24:19 2012 -0800
+
+    update to change to the newer log generating/parsing
+
+commit 62e32b13089b29edcf276f615da67e4508fe7bb5
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 09:29:42 2012 -0800
+
+    conflicting merge from master for extractnews
+
+commit 70084da61d2bcbd2cf1ed81bdc3bf6794c2affb6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 13 11:49:16 2012 +0100
+
+    CHANGES: snmpd: DISMAN-SCHEDULER-MIB: Handle 32-character schedContextName values correctly.
+    
+    See also commit b3c4982542e0ab151fb3884754cdfbcb472da52d.
+
+commit 04bf3e288158ee880edf237e4007fee37d2044dd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:39:37 2012 +0100
+
+    Fixed endless loop when SSL_read returns error.
+
+commit c1526fccc0474c1db18caa9dbb833853cddde3cc
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:13:21 2012 +0100
+
+    Fixed a typo.
+
+commit a27aa19df283156c032c81eaee5e115859d38c17
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:11:32 2012 +0100
+
+    Don't replace 'rc' variable, it's value is needed outside the loop.
+
+commit 985dff2b0876d9483c414fccea3ef6bc63e14561
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:01:32 2012 +0100
+
+    Removed duplicate code.
+
+commit 2fd7818318e7a5dfe98f52ccf750c2a63e825ded
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:00:22 2012 +0100
+
+    Removed duplicate code.
+
+commit 15f21130ba33dc9afd164e52dfd74c9cec0e9232
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:58:14 2012 +0100
+
+    Removed duplicate code.
+
+commit 2a8a8f2ab7cd75826c5d41ec3cfd5ce3e9634cf3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:39:28 2012 +0100
+
+    remove dead code, 'cp' is always != NULL here.
+
+commit 38fd6378cc3275180f63b8d9b9a4072b3dabf8e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:25:06 2012 +0100
+
+    Fixed a typo.
+
+commit ebd92e19b10c0a38e17cde407864b45c26e17327
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:07:43 2012 +0100
+
+    Removed unnecessary if (value) check - value is checked few lines before.
+
+commit c5cacf5caf979d018ea6cae1c03b8fdf0b118dfd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:44:43 2012 +0100
+
+    Prevent double free(), 'dirname' is already freed inside se_add_pair_to_list() if it fails.
+
+commit acdceb50ea66d6b323c74ee021fb77e810e4e7af
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:43:19 2012 +0100
+
+    Prevent memory leak when malloc fails.
+
+commit 17053e34cfe9a8ab395fb50f5c3f1dafc7247aeb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:32:57 2012 +0100
+
+    Fixed double fclose().
+    Linux man page for fclose(3) says: In either case any further access (including another call to fclose()) to the stream results in undefined behavior.
+
+commit a6641edb9cb74fc2236b42ce5554fc3329956552
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 15:22:34 2012 +0100
+
+    MinGW: Skip test T065 if not started from inside an MSYS shell
+
+commit a883ef1982f301b1485d227301674927330f5b67
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 11 15:14:53 2012 +0100
+
+    Moved debug oputput before return.
+
+commit 45751967287d97640efdcdf8e77e8d490939d8eb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 14:17:18 2012 +0100
+
+    Convert strtoull() unit test into a Net-SNMP unit test
+
+commit 2c2fa48336a4f1f177c2991d6515d29f39533c44
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 13:50:44 2012 +0100
+
+    Convert read_config_read_octet_string_const() unit test into a Net-SNMP unit test
+
+commit 07c666f6cea27f2b2ab9bc08aed0cb6133fe3758
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 11 13:17:45 2012 +0100
+
+    Fixed commit 73a523e468277f6df2e984891313b8be8bce1921:
+    Fidex dereferencing key->info when key is known to be NULL.
+
+commit 3b686566296dd87bc42b7f1169daacdb3c45cc58
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Mon Oct 18 06:25:56 2010 +0000
+
+    Win32: builds again without warnings with MSVC 6.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19489 06827809-a52a-0410-b366-d66718629ded
+
+commit f3a7d1b09609dad649f58bbdb5b7e10d39b398c1
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sun Oct 17 11:04:06 2010 +0000
+
+    Follow-up for r19476: fixed a typo.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19478 06827809-a52a-0410-b366-d66718629ded
+
+commit 2de73bd365a381b9c353ca5230769eefb1ac71ed
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 11:42:42 2012 +0100
+
+    local/passtest: Remove an incorrect PATH= statement
+
+commit 699513f1238e0adce1f1cec98e0d147293fc5047
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sun Oct 17 09:25:51 2010 +0000
+
+    NETSNMP_REMOVE_CONST()-related cleanup.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19476 06827809-a52a-0410-b366-d66718629ded
+
+commit 6358dee72fb347e2600a0a7bd21f23270d3a00f6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:58:15 2012 +0100
+
+    agent/mibgroup/ucd-snmp/versioninfo.c: Add a comment
+
+commit 5396bfe032c8cbc73c8ff5d4b085ebada9f59846
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:30:16 2012 +0100
+
+    Replace strncpy()/strncat() by strlcpy()/strlcat()
+
+commit feb3af28dcae22015ae865a2e5dd8c416e9991d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:02:08 2012 +0100
+
+    Replace strncpy()/strncat() by strlcpy()/strlcat()
+
+commit b7e1aa255bae4a3453f9eca644a876634351f11d
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat Mar 20 19:36:28 2010 +0000
+
+    CHANGES: libsnmp: changed the type of the fourth argument of netsnmp_set_row_column() from const char* to const void* such that no cast is necessary when passing another datatype then char* or const char*.
+    CHANGES: Win32: changed in_addr_t from u_int to u_long such that it matches the datatype of sockaddr_in::sin_addr.
+    Also, fixed several compiler warnings (mostly char * <> u_char * mismatches) and removed some casts.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@18345 06827809-a52a-0410-b366-d66718629ded
+    
+    Conflicts:
+    	agent/agent_registry.c
+    	agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+    	agent/mibgroup/mibII/interfaces.c
+    	agent/mibgroup/ucd-snmp/disk.c
+    	apps/snmptrapd.c
+    	snmplib/snmpIPv6BaseDomain.c
+    	snmplib/snmpUDPIPv6Domain.c
+    	snmplib/system.c
+
+commit f47a3752849db075e6f2053b8595b7b792fb6462
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri Oct 15 10:56:09 2010 +0000
+
+    CHANGES: Win32: building: Builds now correctly with a 64-bit compiler.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19458 06827809-a52a-0410-b366-d66718629ded
+
+commit 02b6056df95da8b673034e39c2c7c386ed0f369c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 11:44:53 2012 +0100
+
+    Fix a compiler warning about casting away const
+
+commit a19865832fc77f4c048144d91a431b1e94d329f2
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Wed Oct 14 23:12:05 2009 +0000
+
+    CHANGES: apps, snmplib: PATCH: 2835577: identified by "Bart Van Assche": Replace SNMP_ZERO of arrays with a memset.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17797 06827809-a52a-0410-b366-d66718629ded
+
+commit 67a3e2eccb95f9c9d0809efcbddcd866ee3062d5
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 14:27:15 2010 +0000
+
+    Fixed a compiler warning about discarding the const qualifier.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17970 06827809-a52a-0410-b366-d66718629ded
+
+commit 3dcde2e8a595a527f06142c3b852de8433a1cf28
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Sun Jan 24 14:27:55 2010 +0000
+
+    CHANGES: snmplib: Prevent gcc ped-warning for NETSNMP_REMOVE_CONST
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@18052 06827809-a52a-0410-b366-d66718629ded
+
+commit c2e1525a85bda5299a3b9f241614f7e6509aeeba
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 13:35:11 2010 +0000
+
+    Backport commit 295f473c83546221b2a71d815c61e33a67f98ae3: refine NETSNMP_REMOVE_CONST() implementation.
+
+commit cb423b0ae9ed0059aa100dc4e2fd93ad1b97faf8
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 11:57:51 2010 +0000
+
+    Backport commit e2fb09e0093e2f648fe2638da2f3af18fdb32bf0 - introduce NETSNMP_REMOVE_CONST().
+    
+    Conflicts:
+    	agent/snmp_perl.c
+    	snmplib/snmp_service.c
+
+commit afc396ab1618a8595a2519fbc25f7a498e174411
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 08:49:34 2012 +0100
+
+    Unbreak netsnmp_mktemp() and make_temp().
+    
+    These were broken by commit bb8fcbb874998000f945f058d1aa6fe14e925899.
+    Also replace a strncpy() call by a call to strlcpy() and replace the
+    make_tempfile() implementation by a call to netsnmp_mktemp().
+
+commit 210185c15d0d65f0ea98b5e3c2e0776f6222d170
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 08:27:43 2012 +0100
+
+    Fix a crash during startup of snmpd introduced by commit 885061687d9caa38470979667d7d8ad6563cedad.
+    
+    Also, make sure there is only a single copy of the cleanup code in function
+    mkdirhier().
+
+commit 8bb4e86abcf98ff28748af0af89c98e64d5cd961
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jan 11 07:47:12 2012 +0100
+
+    Reduce the scope of the oldmask variable.
+
+commit 6680147b138ec114f81c5d128ac9350c8450d081
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 18:44:31 2012 +0000
+
+    Make test T015int64_clib pass on 64-bit systems
+
+commit 3aad15ae560ac857e73c90764e903e7ca02b3295
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:40:59 2012 +0100
+
+    Fixed buffer overflow for large OID names
+
+commit fba188ee82010b2f2d8ca2e426ba654499ab3d0a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:31:33 2012 +0100
+
+    fixed buffer overflow in __concat_oid_str
+
+commit 21d25d86b8e4904d798dc8c96dade9e5048457a8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:26:07 2012 +0100
+
+    Fixed buffer overflow when parsing port numbers.
+
+commit d36931841b2fc2cebc6364b2949129a0ad42ad1d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:05:51 2012 +0100
+
+    Fixed a buffer overflow when large SumFile is used.
+
+commit 0efdd022da09af1b5e16171fa7a2b523c5d6ec59
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:01:53 2012 +0100
+
+    Fixed buffer overflow when too big temp file pattern is used.
+
+commit 560bc6c09b751556efd6b4c4495751b109a93f92
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:59:24 2012 +0100
+
+    Fixed buffer overflow, just to be sure.
+
+commit 8291d7c5b92a31dd4f582b497d4b2a0853367a56
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:55:16 2012 +0100
+
+    Fixed buffer overflow.
+
+commit 88e1f34de7300575fa6dab857ecddb242a87de80
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:48:55 2012 +0100
+
+    Fixed buffer overflow when too long interface names are used.
+
+commit be1375a9926ebe0cd5b78a4045c3bd11c83664b1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:46:49 2012 +0100
+
+    Fixed buffer overflow when a sensor name is too long.
+
+commit 1cb24625372062b14c71d7dd51e20fef773e2743
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:41:00 2012 +0100
+
+    Fixed buffer overflow when a CPU has too long name.
+
+commit 84c807ee03251e54856e83d62d06ea08b8df527a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:36:50 2012 +0100
+
+    Fixed buffer overflow when too long interface names are used.
+
+commit c310e390b5dd05f24be7eb1904c74e41259c93db
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:24:54 2012 +0100
+
+    Fixed buffer overflow when too big temp file pattern is used.
+
+commit 4600d11434e83b8653cf9f813a3d8b630455b42d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:17:08 2012 +0100
+
+    Fixed plausible string overflow before parsing command line options.
+
+commit 885061687d9caa38470979667d7d8ad6563cedad
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:11:02 2012 +0100
+
+    Get rid of (insecure) SNMP_MAXPATH in mkdirhier()
+
+commit 8016890a445f6a7e2a873a04873d4e27b6ee64e3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:48:34 2012 +0100
+
+    Fixed wrong integer size on 64 bit platform.
+
+commit bb8fcbb874998000f945f058d1aa6fe14e925899
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:31:36 2012 +0100
+
+    Secure mkstemp() with umask() - on some implementations it does not set 0600 permissions automatically.
+
+commit 202523ca704bd722dc1ac0e1e6b0e4b4e5424495
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:11:57 2012 +0100
+
+    Fixed dereferencing 'c' before NULL check.
+
+commit 73a523e468277f6df2e984891313b8be8bce1921
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:08:24 2012 +0100
+
+    Fixed dereferencing key->info when key is known to be NULL.
+
+commit 2f4e6acd714183f015b763657f8f084593357e26
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 10:38:16 2012 +0100
+
+    .gitignore: Ignore perl/*.yml files
+
+commit c365d80c16c2d17b160011e8c1f9cb958954e9db
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 08:34:16 2012 +0100
+
+    CHANGES: snmptrapd: Do not invoke shutdown_perl() from inside the SIGTERM handler since that fails if SIGTERM is received while a Perl handler is active. Based on a patch posted by Joel Avni <javni@arubanetworks.com>
+
+commit d059fb878b1436599953cea5a077499ddcdcbcb5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 17:03:55 2012 +0000
+
+    CHANGES: BUG: 3440752: IF-MIB: Report interface speed correctly for Ethernet interfaces if other than 10 Mbps, 100 Mbps, 1 Gbps, 2.5 Gbps or 10 Gbps. Add support for NICs faster than 65 Gbps.
+
+commit c09903a42e9d97331fd9e48ee831a85afdf9c70a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jan 9 13:26:17 2012 +0100
+
+    Doxygen-style documentation fixes
+
+commit e325ecbfce77f00ac5cf6fbd957f95495f61c59b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jan 9 13:25:10 2012 +0100
+
+    Suppress uninteresting Doxygen warnings
+
+commit be9161d3a5898e863767f926613486126c2cbf67
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 12:35:39 2012 +0100
+
+    CHANGES: snmplib: Simplify implementation of functions manipulating 64-bit numbers.
+
+commit 86e4c2be0852a0a13b0603075720b3264ec70dde
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 12:29:11 2012 +0100
+
+    CHANGES: snmplib: Make it explicit that MAX_SUBID is an unsigned constant
+
+commit 37e272d8f7b7180ba140fa386a5ff058968a08a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 18:21:48 2012 +0000
+
+    CHANGES: snmpd: IF-MIB::ifType: Report type "infiniband (199)" for InfiniBand interfaces instead of type "other (1)".
+
+commit 269932fa32c7cd47957489698e09bee31f63b7af
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:34:42 2012 +0100
+
+    Fix an MSVC compiler warning
+
+commit 0d1c21f9991d1309d057e3e4056d547df7d40ecf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 16:06:31 2012 +0100
+
+    Make declaration and definition of strlcat() consistent.
+
+commit 0c3d4dbb0a9cf5b359f70b2f19915495554f840f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 15:23:16 2012 +0100
+
+    CHANGES: Win32: snmpd: Remove dlmod
+
+commit 893ecc97b587661045becbe09a320c1bcbc71c7c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:36:59 2012 +0100
+
+    Add strlcat() to the MSVC build infrastructure.
+
+commit 3d126422e625702b9d3fa0676a97ec5cb20d9d10
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 15:01:06 2012 +0100
+
+    Make win32/net-snmp/net-snmp-config.h consistent with its .in file
+
+commit af53b76c2ffa751e3958d0fc5d8279f78c2c1c26
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:43:55 2012 +0100
+
+    Skip T066pass_simple and T067passpersist_simple on MinGW
+
+commit 35a92e693d133a5b11e9e9b599dbf47edef4933b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 08:16:36 2012 +0100
+
+    Remove snmplib/snmpDTLSUDPDomain.c again, which was added accidentally while resolving merge conflicts (commit 1d78f7d5b58aed2b52c4d386a7ba80a44711baca)
+
+commit a9b073ea3b6cedf713e305e7b15f28ae57bfdf1b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 17:47:11 2012 +0000
+
+    Fix 64-bit compiler warnings
+
+commit 7e890dad95f566069ee280215a4fea3f0e2e3980
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 16:38:50 2012 +0100
+
+    Avoid a SIGSEGV if cp == NULL. This is a follow-up for commit 089bcb360aa26790ad2a8ceddf583b7ba5ddfd48.
+
+commit 1f6200cfe1b0b27ebb093a1606b592f9e9684be8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 15:53:34 2012 +0100
+
+    Convert strncpy() calls introduced in v5.6
+
+commit c3126b143921fabeac442166eca5b5b742fd42c0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 15:02:39 2012 +0100
+
+    Replace most strncpy() calls introduced in v5.5
+
+commit b24ee7c909657db43bd8c5d8c01055ca0883c9cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 08:40:39 2012 +0100
+
+    Eliminate most strncpy() and strncat() calls
+    
+    Using strncpy() and strncat() is error prone -- see also
+    http://www.gratisoft.us/todd/papers/strlcpy.html. Hence replace
+    all invocations of strncpy() and strncat(). Replace
+    strncpy(dst, src, n) calls by:
+    * strlcpy(dst, src, n) if the goal was to avoid output buffer overflow.
+    * sprintf(dst, "%.*s", n, src) to copy a prefix of src to dst or if src is
+        not '\0'-terminated.
+    * memcpy(dst, src, n) if strlen(src) >= n and n < size of dst.
+    * strcpy(dst, src) if n > strlen(src) and n < size of dst.
+
+commit 6d95bc4149472931005475c30a541fed5534da39
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 11:19:16 2012 +0100
+
+    Fix warnings triggered during compilation of the Perl xs source files
+
+commit bad0600f6ec944ef8455e327ce784b9b07d247c9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 10:00:13 2012 +0100
+
+    Add configure test for sockaddr_un.sun_path such that the com2sec test is run
+
+commit 92a32ac4866a5edc7f347d37942bf028de02762f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 10:00:29 2012 +0100
+
+    Get rid of a compiler warning
+
+commit 83e4c0e304f617ccac6610edd74d1706797bbf52
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:15:37 2012 +0100
+
+    CHANGES: testing: Add a test for se_store_list()
+
+commit 4fae5852103ec3893ad488bc0d905ca6914595ef
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:17:15 2012 +0100
+
+    CHANGES: snmplib: Simplify the se_store_enum_list() implementation
+
+commit b3222bb275f2f2346e0fd0478afa2efb600773e5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:16:45 2012 +0100
+
+    CHANGES: snmplib: Declare "type" argument of se_store_list() / se_store_slist() / se_store_enum_list() const
+
+commit 022f840fbfcb0e26b08f0e55728231f611495803
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 19:55:56 2012 +0000
+
+    Avoid that Valgrind complains about sending UDP data
+
+commit 672a809c228e9550b99b8910be75d0b161985402
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 17:33:09 2012 +0000
+
+    Fix a 64-bit compiler warning
+
+commit 24ff260ad89ce2aa361a55c7c72e916031defe35
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 17:11:24 2012 +0100
+
+    Change the type of the second argument of snmp_set_var_value() and snmp_set_var_typed_value() from u_char* to void*, like on more recent branches
+
+commit c6ca737fb46f90a4bda5d43734aac34e837a05f4
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat Mar 13 19:07:37 2010 +0000
+
+    Backport commit f504ce2d74a4bc88f68cc9515fa7053373cb15b5.
+    (Fixed most compiler warnings triggered by the source code in the perl subdirectory. Note: these changes may contain some real bug fixes.)
+    
+    Conflicts:
+    
+    	perl/ASN/ASN.xs
+    	perl/OID/OID.xs
+    	perl/SNMP/SNMP.xs
+    	perl/agent/agent.xs
+
+commit d212dc984ec34e4d230625e46e58b0c628a50df5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 16:46:49 2012 +0100
+
+    SNMP.xs compiler warning fixes
+
+commit baceebb10d8caf5db63cc36935fed65ee931029d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 16:22:44 2012 +0100
+
+    Add declaration for shutdown_snmpNotifyTable()
+
+commit f7f966abd6d2849b1331252afe5c473e5c40b32d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 14:24:33 2012 +0100
+
+    Fix format specification mismatches.
+
+commit 303c015bcfe9af0b154e9881c7b4f449e08f30bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 6 22:06:23 2009 +0000
+
+    Backport commit d3eb2b5ced22a8480053ce43acf9739729055404
+    (Sprinkle some const-ness where relevant / fix format string mismatches,
+    Niels Baggesen, May 2009)
+    
+    Conflicts:
+    
+    	agent/agent_sysORTable.c
+    	agent/helpers/instance.c
+    	agent/mibgroup/disman/event/mteTriggerConf.c
+    	include/net-snmp/agent/instance.h
+    	include/net-snmp/agent/sysORTable.h
+
+commit d95b40406916bda5b48b5a6131bec27b866b0a79
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 6 21:59:20 2009 +0000
+
+    Backport a2a7316c310f0fcc3728673fa047051c23b71960
+    (Trivial warning fixes, Niels Baggesen, May 2009).
+    
+    Conflicts:
+    
+    	agent/mibgroup/hardware/cpu/cpu_linux.c
+    	agent/mibgroup/host/hr_swrun.c
+    	agent/mibgroup/if-mib/data_access/interface_linux.c
+    	agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+    	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+    	agent/mibgroup/mibII/sysORTable.c
+    	agent/mibgroup/mibII/system_mib.c
+    	agent/mibgroup/ucd-snmp/logmatch.c
+    	agent/mibgroup/util_funcs/get_pid_from_inode.c
+    	agent/snmpd.c
+    	snmplib/container_list_ssll.c
+
+commit d86c47f003fdc192bce7b46ac4f06b09e387c12b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 13:29:08 2012 +0100
+
+    Fixed a typo
+
+commit bee4d79cf4eb7e0a45397f59b5298da633a8e1ba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 13:14:57 2012 +0100
+
+    Fixed reading past end of buffer.
+
+commit 3dc0e00a2fd8e34fe1ae33ecabf36e146460a31f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 12:40:07 2012 +0100
+
+    Fixed buffer overflow when large 'token' is used.
+
+commit b3c4982542e0ab151fb3884754cdfbcb472da52d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 12:28:52 2012 +0100
+
+    Fixed off-by-one memset.
+
+commit 0f53695044dd3f0c3507753e3f8c29d97e96872d
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Wed Aug 3 21:38:26 2011 +0200
 
     CHANGES: snmplib, snmpd, perl: Eliminate dead variables
-
-commit 794f9a69d7eb642268200b0a4b199151def66ed0
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 14:36:25 2011 -0700
-
-    manual pre-merge
-
-commit 73187ce8341ee30b95204d22b69bce515012c0c5
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 11:06:23 2011 -0700
-
-    added a comment
-
-commit 438c210876dbf7d1f77cb14d22f8ec8ea4f0e78d
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 11:00:31 2011 -0700
-
-    at end of nsrollup mention that now would be a good time to run nssync
-
-commit 39c2e253a2aa1de128c78505c909cc8ae54d0e16
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 10:56:14 2011 -0700
-
-    a new nssync() function for push/pulling active branches
-
-commit d8b2052a0359ad9d1a68d8d587bc6be156158d20
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 11:00:31 2011 -0700
-
-    at end of nsrollup mention that now would be a good time to run nssync
-
-commit 4eea9ee38f06e000a95dc209d0a71ce60da494b9
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 10:56:14 2011 -0700
-
-    a new nssync() function for push/pulling active branches
-
-commit 284f5fb79e056a272f73b90937d7bf057c2af021
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 11:06:23 2011 -0700
-
-    added a comment
-
-commit 8c0432a74fedf8a1385c8ad0ff1fb429a28eab99
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 11:00:31 2011 -0700
-
-    at end of nsrollup mention that now would be a good time to run nssync
-
-commit ca3ad3a28f81f59dffa3dbb809a770147241e3e5
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 10:56:14 2011 -0700
-
-    a new nssync() function for push/pulling active branches
-
-commit 49f5f7af6657e161d9712fc1f62be187abd6a194
-Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
-Date:   Wed Aug 3 10:28:15 2011 -0700
-
-    Reenable IP-MIB::ipDefaultRouterTable
     
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
-
-commit b61aa0906ad6d0ced5ef3868c26db536a2769879
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 10:23:00 2011 -0700
-
-    A new function: nssfpatchapply that auto-pulls git command line info from SF
-
-commit 868cdfcb6ec4220bcdd9a0ded4b84eb4fceeb53a
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Aug 2 14:43:52 2011 -0700
-
-    added variables names to the generated error messages.
-
-commit afa9732521f1ae6d4e0c9a91745dadb63ace540f
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Aug 2 13:22:38 2011 -0700
-
-    Wording changes to help describe contexts better
-
-commit 8e72fbe840b8932578dc92f9113598f600cb0590
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Aug 2 13:22:21 2011 -0700
-
-    Added the missing U64 m2i file
-
-commit 2fa7d87d3979ec0fbb835bcfff898e6bec2abbd9
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 10:23:00 2011 -0700
-
-    A new function: nssfpatchapply that auto-pulls git command line info from SF
-
-commit 73e76574ae728a4a4a30623597ec0b95fa2797c5
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Aug 2 14:43:52 2011 -0700
-
-    added variables names to the generated error messages.
-
-commit b24a4f0c9565335220ee217d0c0b51321cc1a44f
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Aug 2 13:22:38 2011 -0700
-
-    Wording changes to help describe contexts better
-
-commit e837c7cb62c676a0059d2846e02e32f5bb63c1b1
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Aug 2 13:22:21 2011 -0700
-
-    Added the missing U64 m2i file
-
-commit 9736234b3798ba5462a0a74943ede80e90a6485b
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Aug 3 10:23:00 2011 -0700
-
-    A new function: nssfpatchapply that auto-pulls git command line info from SF
-
-commit bf7178b0b22587d43d1a80c269cd216bd5930214
-Author: Ilya Yanok <yanok@emcraft.com>
-Date:   Mon Jul 18 04:31:08 2011 +0400
-
-    agent: change type of snmp_enableauthentraps to long
+    Conflicts:
     
-    Type of snmp_enableauthentraps variable is changed from int to long.
-    This fixes the bug with writing to snmpEnableAuthenTraps if server is
-    compiled for 64bit (snmpset reports wrong length). This bug was
-    introduced a long time ago (by faeecd0 commit).
+    	agent/mibgroup/agentx/master_admin.c
+    	agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
+    	agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
+    	agent/mibgroup/host/data_access/swinst_pkginfo.c
+    	agent/mibgroup/host/data_access/swrun_procfs_status.c
+    	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+    	agent/mibgroup/mibII/kernel_linux.c
+    	agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
+    	agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
+    	apps/snmptls.c
+    	apps/snmptrapd_log.c
+    	snmplib/dir_utils.c
+    	snmplib/snmp_client.c
+    	snmplib/snmp_openssl.c
+    	snmplib/transports/snmpTLSTCPDomain.c
+
+commit 0153805c99b9197365935c5d11ae9c3d4bfaa0f3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 09:48:41 2012 +0100
+
+    Fix a set-but-not-used warning
+
+commit 3f8885fbee9407748fc2f0573728a11ba2bc023a
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Tue Apr 28 05:51:13 2009 +0000
+
+    Return a value from sprint_realloc_value even if no subtree is located.
     
-    Actually this is a 'less effort' type of fix but I wonder why we need a
-    long to store an INTEGER in the first place?
-    
-    Signed-off-by: Ilya Yanok <yanok@emcraft.com>
-    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17578 06827809-a52a-0410-b366-d66718629ded
 
-commit 16c02d69cc9ce4fd4e7710a0bf9430f52175ed50
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Aug 2 14:43:52 2011 -0700
-
-    added variables names to the generated error messages.
-
-commit 7fed61bf0af1477eb740a0588f6a11a12b723595
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Aug 2 13:22:38 2011 -0700
-
-    Wording changes to help describe contexts better
-
-commit 9380612fdcb4f9bb081c4a46746692124abede50
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Aug 2 13:22:21 2011 -0700
-
-    Added the missing U64 m2i file
-
-commit 61b178f1ee8952aa03aa3b1ba51f4a6655e47f01
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Wed Aug 3 18:09:47 2011 +0200
-
-    CHANGES: Windows: Perl modules build now with IPv6 enabled.
-
-commit f2832e3407877e71a7ea6dea659e3e20a0c5fa78
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Wed Aug 3 17:43:01 2011 +0200
-
-    Whitespace-only change: fix indentation of an #include directive
-
-commit 7fcc0b8032f8da5b7bc30059af0ba656eae71091
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Mon Aug 1 14:11:28 2011 +0200
-
-    smux: Fix recently reintroduced compiler warnings about size_t <> ssize_t mismatches
-
-commit b484b88d6e57b425a8467f5a39333312fed2acf2
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Tue Aug 2 09:31:50 2011 +0200
-
-    Fix a compiler warning in agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
-
-commit 944612ef56ad2564aafe14df6d08e048b7228b86
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Mon Aug 1 14:49:41 2011 +0200
-
-    .gitignore: Add file names and patterns for output files generated during the Windows build
-
-commit 26009012785f828bbfc8759afbbbfc58700ff1f6
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Jul 29 09:59:31 2011 +0200
-
-    .gitignore: Sort alphabetically
-
-commit 5e3ff5596648e0907d571d7a4d3a3a8c2402d8ee
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Jul 29 08:43:19 2011 +0200
-
-    .gitignore: Add apps/sshtosnmp
-
-commit 31a3a2a0624046511ca07ec1f521a22d7966db80
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Mon Aug 1 13:38:01 2011 +0200
-
-    Remove two generated Perl files.
-
-commit adadcb99e57b93be670a7c517fc989dffe7396e9
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Tue Aug 2 00:56:49 2011 +0200
-
-    suppress "ok" test output in nsb
-
-commit 40125d8539cd89f952fbc24588c5e81e9cd821fe
+commit b1eaaf302369fd4552e8fee7b6a805091ec0a9b4
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Mon Aug 1 13:58:33 2011 +0200
+Date:   Wed Jan 4 11:38:51 2012 +0100
 
-    Detect SMUX recvfrom() errors properly.
+    Added check of find_sec_mod() return value.
 
-commit 5acf0d2ceb3977964ed39f003073ba64138c2ebd
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Sun Jul 31 23:57:41 2011 +0200
-
-    Follow-up for: build fix for systems lacking field msg_control in struct msghdr
-
-commit ae9ac6c9812824bf5b848dc1f3ccf7227c436d0d
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Sun Jul 31 09:11:28 2011 +0200
-
-    Fix an incorrect source code comment: there is no requirement in the ANSI C standard that stack variables should be initialized to zero.
-
-commit 242e1797b2694a0689856ae36d05d3413aaf8d77
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Sun Jul 31 01:44:09 2011 +0200
-
-    Follow-up for: build fix for systems lacking field msg_control in struct msghdr
-
-commit 82d73fb11be3ae31f39c9d618d5388dc9b1006d7
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Jul 29 20:51:27 2011 +0200
-
-    Unbreak the Windows build
-
-commit 54a44cb7dd71de6616a5ccbfed34a8b796346d51
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Sat Jul 30 14:28:29 2011 +0200
-
-    autoreconf
-
-commit 109f6694d788f48ebd9fc0a1e90c45abc37bea20
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Sat Jul 30 14:22:19 2011 +0200
-
-    CHANGES: building: build fix for systems lacking field msg_control in struct msghdr
-
-commit 9e47ac439333d2bb7c80686241db7331a88770fb
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Sat Jul 30 00:18:14 2011 +0200
-
-    minor nsb fixes/enhancements from my old svn tree
-
-commit c48173c06a9eaadbf81e6b4962d55ef0a54db251
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Jul 29 10:27:39 2011 +0200
-
-    Fix a bug in a debug statement
-
-commit eca1b9a25450cd875b2012c51c090ba2b97e0628
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Jul 29 10:04:02 2011 +0200
-
-    Rerun autoreconf
-
-commit 69aa9e032caf5eb713bb00745134640fe9fd0235
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Jul 29 09:59:31 2011 +0200
-
-    .gitignore: Sort alphabetically
-
-commit c38597dfa0b1d367d52bbdc0aeaadff0155850ad
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Jul 29 08:43:19 2011 +0200
-
-    .gitignore: Add apps/sshtosnmp
-
-commit 774d0b66ee0acafeafa21fc8d993864779e50e63
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Fri Jul 29 07:43:54 2011 +0200
-
-    Fix two filenames in host mib source code comments.
-
-commit 3458128b4a3c5971998894f9d9d8ccc6c76d3c9b
+commit aee4e895fe3bd5f4a61e34275bfca0368b560555
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Thu Jul 28 16:16:15 2011 +0200
+Date:   Wed Jan 4 11:31:22 2012 +0100
 
-    Fix potential sigsegv when an ifTable entry is removed as result of both interface_replace_old and interface_fadeout at the same time.
+    Added check of snmp_sess_transport() return value.
 
-commit a2f9ece06cf00ee47ce7e85672210c1b5786f311
+commit 5d1d0a744ab30c8e645c3b8506cbbd2cceb3d275
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:04:48 2012 +0100
+
+    Added check of netsnmp_extract_iterator_context() return value.
+
+commit 299ea9a89c3f1758a7748bb9b3411f62f2c70f88
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 10:54:55 2012 +0100
+
+    Added check of fopen() return value, just in case of some race.
+
+commit 90f1ae6757917481636eef77100caeeb53edfe01
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 3 10:06:56 2012 +0100
+
+    Add strlcat.c. Source: http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/string/strlcat.c.
+
+commit 089bcb360aa26790ad2a8ceddf583b7ba5ddfd48
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 10:50:56 2012 +0100
+
+    Added strrchr return value check, just to be sure.
+
+commit 199a0511f6eb0ef3ff1d9f922b790ab67dfde01e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 10:31:26 2012 +0100
+
+    CHANGES: snmpd: smux: simplify smux_list_detach()
+
+commit d883573aa73e0f5fc188acedee6451f95dae900c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 10:23:06 2012 +0100
+
+    Fix a compiler warning introduced by commit a809fe5075c9f374715f7d1a682949a0730172c1.
+
+commit 7b7a3eb2500527eaa1699287a6ca6fcc4cc2e08a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 09:40:02 2012 +0100
+
+    Fix a build error caused by commit a809fe5075c9f374715f7d1a682949a0730172c1.
+
+commit 2b6c119fed4848da6663c11f0c2cbdc29921b5c6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:51:10 2012 +0100
+
+    Check for netsnmp_ds_get_int() errors.
+
+commit 6ce5360caa4c9de51ade57879e83f96bd04b4c5a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:42:23 2012 +0100
+
+    Check for missing view.
+
+commit b3bc54bed31690a85df2acfbf3296da93a9e89b4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:23:17 2012 +0100
+
+    Check socket() result.
+    Also close the socket on error.
+
+commit 92075f51cd45a38ca38760b3ffe82e16559e9c2e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:18:26 2012 +0100
+
+    Check open() result.
+
+commit 6665d5fe2fc569d6fa854d1d78e347bbac69e070
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:22:22 2012 +0100
+
+    Fixed missing break.
+
+commit a6648c5453e1ef8dac57a38efcc00cce53bf9e4f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:20:27 2012 +0100
+
+    Fixed missing break.
+
+commit d68dcae0f18d554571aef321944a5290548dde86
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:16:11 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit fb6f80c0fe3ba36e56f5b911a47e3f6f32ba266e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:14:07 2012 +0100
+
+    Fixed exit code of encode_keychange with wrong arguments.
+    Also added a comment for Coverity.
+
+commit 3130e24fdc232464dd7bb216f46cafa2e0e775a6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:09:54 2012 +0100
+
+    Added missing break
+
+commit 18c126a9565cb4d69d7513b944a2105588045d35
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:07:29 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit 6d31c82070a2c68fe3c519e9d56fa2779554d01f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:01:53 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit dc6f0e2e549b4cd061ebc190084b1fc77a55f40f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:32:59 2012 +0100
+
+    Fixed wrong operator
+
+commit dab32867ed0b99301efd7b8d852ad1288a184be0
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:30:33 2012 +0100
+
+    Fixed QUITFUN usage.
+
+commit b1a2bcf64615eb66bc24d5be4950e45012962045
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:18:03 2012 +0100
+
+    Fixed wrong operator
+
+commit b2b1c851b94fed37c386eaa1bfead5c77696e3ef
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:14:52 2012 +0100
+
+    Fixed wrong operator
+
+commit a809fe5075c9f374715f7d1a682949a0730172c1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 10:58:46 2012 +0100
+
+    Added check for failed register_mib.
+
+commit 5949f055c16ae650615aae7a1fee3f2d7b16d940
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 10:29:59 2012 +0100
+
+    Make MIB file parsing and detection more strict - LABEL is required at the beginning of MIB files.
+
+commit e4b673683c68ba8b3abc040b9125ec304643cc7c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jan 1 23:00:24 2012 +0100
+
+    Assume that libdl might be in AGENTLIBS or SNMPLIBS so preadd them.
+
+commit b13c1e57bedba79b806103c74f1921d53a706b38
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jan 1 22:55:06 2012 +0100
+
+    Do not require ucd-snmp/dlmod unless it will work.
+
+commit 27dcea0d5f801df494ab2cb5c5c0ebe54eb0dcd3
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 14:48:29 2011 +0100
+
+    Adjust paths for test restructure
+
+commit 14b60e85a1b5700e93d126e2f291d5c485f34e36
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 14:14:29 2011 +0100
+
+    CHANGES: snmpd: Make the configuration of the dlmod module fail rather than generate a dummy module if the dlopen function isn't available.
+
+commit 98a97538fc1e9ff46b60d5d969347444578378c0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 13:35:13 2011 +0100
+
+    Adjust the paths to support testing even if builddir != srcdir
+
+commit 88f0af3cfb916ae5863cc2986071d435f20c3064
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 11:37:52 2011 +0100
+
+    Reduce the scope of the variables 'p' and 'len'.
+
+commit 0815a7536c76f7e4842638683f674894a1a8ce14
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 14:42:54 2011 +0000
+
+    Report problems with SetUndo processing
+    Missed when applying patch #3445440
+
+commit eb2ab23742ca86c0b89ccfe91eb6ea374bf3acc1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 14:37:31 2011 +0000
+
+    Check for the expected error (EPIPE) on closure.
+    Missed when applying patch #3447444
+
+commit aac10bc4f053c014f382d6593fc32ab95e0b1a57
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 12:59:52 2011 +0000
+
+    CHANGES: snmpd: BUG: 3463767: Handle parsing subidentifiers > 2^31
+
+commit bbc02e36e90c1aab7898562f963f5cadb26e10bd
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Dec 28 17:15:16 2011 +0000
+
+    Move pass/pass_persist tests to the new location
+
+commit 3898c04fd6f89867062fdfebf36857ab619c0450
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Dec 28 16:53:24 2011 +0000
+
+    Add tests for pass/pass_persist, supplied by Bill Fenner
+
+commit d5ee3f0a1a63bb1752c74cbca55aa3d40bf9bf13
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 21:58:51 2011 +0000
+
+    CHANGES: snmpd: PATCHES: 3447444: Fix SIG_PIPE handling
+    Patch provided by Bill Fenner
+
+commit 2a17b37430c1852998c3588e547d7eb61c06da71
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 21:45:38 2011 +0000
+
+    CHANGES: agentx: PATCHES: 3445440: More robust handling of AgentX errors
+    Patch provided by Bill Fenner
+
+commit fe58a0e5f4d4e2e2ecbcb47382b08cb1e4df352c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 18:16:23 2011 +0000
+
+    CHANGES: snmplib: PATCHES: 3456770: Handle (obsolete) UInteger type properly
+    Patch provided by Bill Fenner
+
+commit 1be8cf08a67a91855fee1ec4a2d8e087c7812456
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 18:04:10 2011 +0000
+
+    CHANGES: agentx: PATCHES: 3445437: Log AgentX disconnections
+    (in line with connections) Patch provided by Bill Fenner
+
+commit 068037289107faa2ba3f5cd2fb00c19494bb9a04
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 17:27:46 2011 +0000
+
+    Handle any GETNEXT request OID, not just a simple walk.
+
+commit a74fa528983123d355a8cdcaa77dd4eb4b8c6959
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 17:00:18 2011 +0000
+
+    CHANGES: pass: PATCHES: 349394: Bring pass_persisttest script into line with passtest*
+    (i.e. using the legitimate structure of NET-SNMP-PASS-MIB)
+    Patch provided by Bill Fenner
+
+commit bbe649ebfa61ea22399170b36b99db30a1de8012
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 16:54:38 2011 +0000
+
+    Rework "passtest" example to fully validate GETNEXT requests
+    and use a legitimate structure for output.  Backport of SVN
+    revision 17632 (which updated 'passtest.pl' but missed 'passtest')
+    Correct in branches 5.5 and above
+
+commit 82d06c7247b22c8b01d45bf55041d2f1e6427d49
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 13:45:18 2011 +0000
+
+    CHANGES: snmpd: PATCHES: 3447671: Fix override handling of OID values
+    Patch supplied by Phillip O'Donnell
+
+commit ba4a9ce51c9600f9fda168f1e6eff32a1db63cb9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 13:24:26 2011 +0000
+
+    Tweak --disable-snmp-set changes
+
+commit 827c8b28830171faa9c61d53efca9eb6600561c2
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 11:25:43 2011 +0000
+
+    CHANGES: python: PATCHES: 3433846: Fix for use with python 2.4
+
+commit f98a54a99caf7b46b100a920db942cbca9c43926
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 10:10:36 2011 +0000
+
+    Skip SET-based tests when configured with --disable-set-support
+
+commit 230df14f94c3736ff34379a4e281eea353b47f80
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Dec 26 23:34:23 2011 +0100
+
+    Do not assign tmStateRef twice
+
+commit c96b3b4d8530ad5e0efb03f24dab5e5f1a460031
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 25 11:18:21 2011 +0100
+
+    Correct use-after-free.
+
+commit c5978c89cde2440f4d20dadbc9d1dd8db562d56e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 25 11:15:44 2011 +0100
+
+    Correct double-free.
+    
+    netsnmp_tlstmAddr_add takes ownership of it's argument so calling free on the
+    argument on failure is incorrect.
+
+commit c139ca123b44bb3b9b6bf921e1609cc45f63a660
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:55:30 2011 +0000
+
+    CHANGES: snmpd: PATCHES 3410059: Fix sparsely augmenting trigger tables
+    Patch provided by Stephen Turner
+
+commit c4ae021b2e6384437081c5623f360c8896390188
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:29:54 2011 +0000
+
+    CHANGES: snmpd: PATCHES 3410050: Skip already-'processed' varbinds
+    Based on mib2c patch provided by Stephen Turner
+
+commit c6accf8c66254fa8c48767ed7dec795ddafc522e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:27:11 2011 +0000
+
+    CHANGES: mib2c: PATCHES 3410050: Skip already-'processed' varbinds
+    Patch provided by Stephen Turner
+
+commit a61826ad8ca54661d1d909712503bd3a8b32eed0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Dec 22 18:35:46 2011 +0100
+
+    Remove unused variable.
+    
+    myMatch is unused as nmatch is zero and also since regexBuffer is created
+    with REG_NOSUB set.
+
+commit ba4fc80fe2cfd5a5d89230d8f3703e4fe01e6019
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 22 19:24:40 2011 +0000
+
+    CHANGES: agent: PATCH 3402376: from Leonardo Chiquitto: Recognise ReiserFS
+    Also move various FSType definitions to the appropriate blocks
+
+commit b5ac4a04dcd5470d08d03321abcd1e982621e6e0
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:39:46 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit 2b37e4e8f250a0d8821199a74ac3f4e5b7b7baba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:31:51 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit 3d08345156c419333de969f13d21fcec7e18e94d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:32:29 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit cd859ad51c4f18d5b0fc69dd669fcb051c798969
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:39:33 2011 +0100
+
+    Fixed wrong memmove size
+
+commit 30ff58d09d4c9d5438bb621054fd7ad7a2a597e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:07:19 2011 +0100
+
+    Fixed wrong length of buffer when printing ASN_BIT_STR
+
+commit 6c1487e1d360d3d260a39cb1f5b15da978395053
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 15:47:34 2011 +0100
+
+    Fixed potential free of uninitialized pointer in error cases
+
+commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 15:44:46 2011 +0100
+
+    Fixed unitialized values in udpTable
+
+commit c44608679b89751176f28a2e54d5282b46e2a05c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:56:13 2011 +0100
+
+    Use calloc instead of malloc and manual clearing
+
+commit a05c5f9513461824e7903ae9ae9a6c3386e33879
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:40:50 2011 +0100
+
+    Fixed printing of unitialized variable when sensors_get_label() fails
+
+commit e4a5edc72393bd3de9bf12bceba9d83bbf7de70b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:31:25 2011 +0100
+
+    Removed unused variable
+
+commit fae2e5b835b8df1eae47e4cebb4eb404d7282377
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:31:21 2011 +0100
+
+    Fixed dereferencing unitialized iid in error cases and with debug info enabled.
+
+commit 9d58f81a9239cfbcfc8ebce367d21e9b3dcb028b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:33:33 2011 +0100
+
+    Fixed dereferencing uninitialized variables in error cases
+
+commit 0bc8c08edeae7ae095f116258c20ae5767d60652
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:20:52 2011 +0100
+
+    Fixed returning uninitialized variable 'status' when ss == NULL
+
+commit 7304c53cf8adee8eccef1a8f26756fc07f098721
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 18 23:31:53 2011 +0100
+
+    On solaris 10 test in /bin/sh doesn't support the -e test. Replace it with -f
+
+commit 8cd3be60d693c9c36ffb97d3d9bcb49c1b4abe35
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 17 08:52:24 2011 +0100
+
+    Avoid repetition of the complex expression determining if it is possible to get the destination address.
+    
+    This also makes it possible to build on platforms like Solaris 10 that define
+    IP_RECVDSTADDR but lack either of msghdr.msg_control and msghdr.msg_flags.
+
+commit 953f2e3d425ede3b863a2e7ccb0b4bc862928b57
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 5 22:13:07 2011 +0100
+
+    Move the use of _sendto and _recvfrom below their definitions.
+
+commit 68a1173c46cf77601426cf391d9a852794f2057e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Nov 20 20:05:18 2011 +0100
+
+    CHANGES: snmplib: Separate out the cmesg buffer size
+
+commit 461dd16f3b2647322cdce6363081cc44ba5a49b5
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 26 21:51:01 2011 +0100
+
+    CHANGES: snmplib: Merge together the Linux and *BSD version of src port sending.
+
+commit 7accb69baa1fc0b6a3439d2e549c86da3453bad2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:30:31 2011 +0100
+
+    Use a bare struct iovec in instead of a one element array.
+    
+    The purpose of this change is to make _recvfrom more similar to _sendto.
+
+commit 39852cd4c85ef2bfc75cdea2825261ee93e768c2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:29:20 2011 +0100
+
+    Add comment describing the purpose of the call to getsockname after almost removing it.
+
+commit 1b292ca27eab5caa73feaaa83dc9c12abc0f2e70
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:27:59 2011 +0100
+
+    Reduce variable scope.
+
+commit bc879571eca9520bc132f840c3e659d3793144d7
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:25:36 2011 +0100
+
+    Introduce temporary variables to ease the extraction of the server address.
+
+commit b7eea6cffbd872932ce2c04fefb6f43de339f374
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:18:33 2011 +0100
+
+    Rename the cmesgptr variable to cm.
+    
+    The purpose of this is to increase the readability of the code.
+
+commit 0a7461e728805c62a1cab9d87bfc74c7927a9fcc
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:15:22 2011 +0100
+
+    Factor out a common loop in recvmsg option processing.
+
+commit b3c6248d0201ab1610840d6d0e749b3b6c4ad792
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:13:43 2011 +0100
+
+    Unify the structure of Linux and BSD recvmsg option parsing somewhat.
+
+commit 356400d6290a423b52ebeea5a5e976fb15bb73b4
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:04:56 2011 +0100
+
+    Use CMSG_DATA on the result of CMSG_FIRST/NEXTHDR, not on the buffer.
+
+commit 3b351708c62de46aa1b90ed232cfd8c7c5b02231
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 12:00:32 2011 +0100
+
+    Remove a cast
+
+commit de9250d9dae9727a6cc7f647688dddf1b8597128
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 11:58:04 2011 +0100
+
+    CHANGES: snmpd: Make sprint_mib_oid() treat OID components as unsigned instead of signed integers
+
+commit 0e33b3b6d5854a4bac15d4ea5e016c53d161d0cd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 10:02:28 2011 +0100
+
+    Fix recently introduced compiler warnings
+
+commit b7e50d5f9a6755982d2af3191473cb34643bc03f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 08:37:22 2011 +0100
+
+    CHANGES: snmplib: Reduce overhead of config file parsing
+
+commit 73c9ee42d28afe2e107a7d6616b6d011890c36ea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 09:09:59 2011 +0100
+
+    Remove unused variables
+
+commit 3db97962b37eb12d254d61e6be234b06a391c8bb
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Thu Dec 8 07:43:45 2011 +0100
+
+    CHANGES: snmpd: PATCH 3453868: from "Bill Fenner <fenner@gmail.com>": Factor common code into pass_common
+    
+    Move the code for pormatting and printing values from pass and pass_persist
+    into pass_common.
+
+commit b6568c83f1756e9a65434edeeeb40d23ddbbb652
+Author: ccchiu <ccchiu@sourceforge.net>
+Date:   Wed Dec 7 16:25:27 2011 +0100
+
+    CHANGES: BUG: 3452069: Fix snmptrap_oid declaration in mib2c generated code
+    
+    This bug was introduced considerable time ago. It did already exist at the
+    time the 5.6 branch was created (see also commit
+    0ec088afa27cfda4e6ea78aae7cfc5507564edde).
+
+commit d494db64c208b4dc62813132f8863bd5c1a39d77
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:38:17 2011 +0100
+
+    CHANGES: snmptrapd: Eliminate an unused variable (Now)
+
+commit 28f2561bc2935d8e1cbf46d2820158173e7a4cf4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:37:11 2011 +0100
+
+    CHANGES: snmptrapd: Move the main loop code into a new function
+
+commit 396e122ddc42a916f06a02884c0e8a258edbe238
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 09:32:16 2011 +0100
+
+    CHANGES: snmpd: Match each getpwnam()/getpwuid() call with an endpwent() call and each getgrent() call with an endgrent() call.
+
+commit 3efefbc0024399786f8b68b1e93b0a8fddddc7da
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:41:01 2011 +0100
+
+    CHANGES: snmptrapd: Remove superfluous casts
+
+commit 7f05daa8e0e0f533b0f12a3e1cf07641519909d6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 11:58:32 2011 +0100
+
+    CHANGES: BUG: 3444939: BUG: 1796886: snmplib: Avoid that sprint_realloc_octet_string() embeds unprintable control characters or binary zeroes in its output. This behavior could cause truncated output in snmptrapd.
+
+commit db8f558fd2f3b7c109ea3a1c2133b75b6f8cb2ad
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:04:41 2011 +0100
+
+    Compiler warning fix: pass unsigned chars to isprint() instead of signed chars.
+
+commit 800dc1028e7e0cd8cc14d84dd31723d47ac073db
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Dec 1 10:18:58 2011 +0100
+
+    Reduce the scope of the hint variable
+
+commit 83ea4a080c90a74b9743d3f24cf0d4b8a1e8c849
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Nov 27 21:16:52 2011 +0100
+
+    Reduce the scope of the variable qos
+
+commit 7b9e03441c3dc3a07670ed01f5d04791a82c750c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:04:01 2011 +0100
+
+    Remove #define val(x) __STRING(x) and change val(x) into __STRING(x).
+
+commit 2f379b0e4ecadfa4e541e3005c8fc8281882b741
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 15:58:47 2011 +0100
+
+    Follow-up for commit 1aa704e: unbreak the MSVC build
+
+commit 64ef0f71127617837027fb2cfaf174b95ba79e0d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:19:50 2011 +0100
+
+    Add SNMP::register_debug_tokens()
+
+commit 7bead9ca917c67566d5ed98ab507bbc02816217d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:08:08 2011 +0100
+
+    AgentX subagent: Reduce code duplication
+
+commit 0ed71541f87e7d78bc998eebda3217c59e1df830
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:03:19 2011 +0100
+
+    CHANGES: snmplib: Add Doxygen-style function header for netsnmp_register_default_target() and netsnmp_clear_default_target().
+
+commit 8c2972b61e40169b47c50988b6ae9e8c285f84f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:02:54 2011 +0100
+
+    CHANGES: perl: Fix spelling in the documentation of the SNMP module
+
+commit 5df2bac6bd717799311f001ac7b73db88f11bdda
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Nov 29 08:59:58 2011 +0100
+
+    CHANGES: snmplib: Only transform the address to printable form when needed.
+
+commit 171e8d48d4af04013cff8fd28f5341a2aef21d88
+Author: Mijo Safradin <safradin@linux.vnet.ibm.com>
+Date:   Tue Nov 29 16:49:46 2011 +0100
+
+    CHANGES: snmp-bridge-mib: Fix index interpretation.
+    
+    This patch corrects a wrong data interpretation.
+    snmp-bridge-mib obtains the ifindex value from the sysfs
+    attribute 'ifindex' The value given by the sysfs attribute
+    is an integer, which is handled as hex and leads to
+    incorrect data displayed to the user.
+    
+    e.g.
+        $ > snmpwalk localhost BRIDGE-MIB::dot1dBasePortIfIndex.2
+        BRIDGE-MIB::dot1dBasePortIfIndex.2 = INTEGER: 54
+    
+    according to the sysfs attribute the value is 36
+    
+        $ > cat /sys/class/net/<device>/ifindex
+        36
+    
+    Signed-off-by: Mijo Safradin <safradin@linux.vnet.ibm.com>
+
+commit 82e39fb6706df90ecf2fc9e10ada2b962ee196f3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Nov 29 12:27:46 2011 +0000
+
+    Fix multi-line case testing of incoming OID
+
+commit b15da1a4516061105a1eac7450cf650ec44266b2
+Author: Nikolay Denev <ndenev@gmail.com>
+Date:   Tue Nov 29 08:29:49 2011 +0100
+
+    CHANGES: FreeBSD: Restore IP_RECVDSTADDR functionality.
+
+commit 7f47f52e481baa9aafb5784244b0dd2653e7dcff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Nov 28 08:51:39 2011 +0100
+
+    CHANGES: snmplib: Use SNMP_ALLOC_TYPEDEF to allocate transports in order to avoid the separate call to memset.
+
+commit cf86039e3086225c3085bb9adf088b8ba5ba6979
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 15:02:58 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T102pdu_build_clib pass.
+
+commit 1a87e76e00ee3d5cd37a07bfc3d84490d3c2a4ec
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 14:55:42 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T014gethostbyaddr_clib pass
+
+commit 8867fd1dcfe72b59d07322ff38a699b66ec4f326
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 09:44:38 2011 +0100
+
+    CHANGES: snmplib: Make netsnmp_large_fd_set_resize() robust against memory allocation failures.
+    
+    CHANGES: snmplib: Make NETSNMP_LARGE_FD_ZERO() use memset() on Unix systems instead of an explicit loop.
+    CHANGES: snmplib: Make sure that on Unix systems netsnmp_large_fd_clr() doesn't try to read memory it isn't allowed to read if the first argument equals -1 (a value that shouldn't be passed by the caller).
+    CHANGES: snmplib: Make netsnmp_large_fd_is_set() return false on Unix systems if the first argument equals -1 (a value that shouldn't be passed by the caller).
+    CHANGES: Windows: Make netsnmp_large_fd_set_resize() shrink behavior correct.
+
+commit 23db0cf09b8b0eab37b749ef0c3c3f306900245c
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Thu Jul 28 15:19:22 2011 +0200
+Date:   Mon Nov 21 23:02:57 2011 +0100
 
-    CHANGES: snmpd: Restore storage tables on Linux
+    Fix casting tv_usec to int which may be too short
 
-commit d62a0eb9070b4d8d9fe2bcfdb4d53d37ef814f9b
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Thu Jul 28 14:49:08 2011 +0200
+commit 80ee4022e534e64aad5a5f27192843b42acb85e0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 09:14:02 2011 +0100
 
-    Document interface_replace_old option.
+    CHANGES: snmpd: BUG: 3439234: Move netsnmp_pass_str_to_errno to pass_common and rename it to netsnmp_internal_pass_str_to_errno
 
-commit f660b8c0d8c2707bd73142f076079c9169f35956
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Thu Jul 28 14:40:27 2011 +0200
+commit 0baa9296c072bb3735760b0dd992f2d1d3ca27fa
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 09:05:24 2011 +0100
 
-    CHANGES: snmpd: added 'interface_replace_old' option to remove old entries
-    in ifTable when an interface with the same name as already exising one
-    appears.
-    
-    E.g. remove old ppp0 interface when new ppp0 shows up.
+    CHANGES: snmpd: BUG: 3439234: Correct the dependencies of ucd-snmp/pass and ucd-snmp/pass_persist
 
-commit 406cab818926499c3121dece4377d67638894042
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Thu Jul 28 14:32:57 2011 +0200
+commit 1aa704e4a294430b28e39b6f9e4683b8a48bce04
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 08:35:21 2011 +0100
 
-    Document the interface_fadeout option.
+    CHANGES: snmpd: Factor out asc2bin and bin2asc. Add a netsnmp_internal_ prefix to them
 
-commit 42b883ce18e58ca89fdfd514ec698e2f7ffd1f63
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Thu Jul 28 14:32:38 2011 +0200
+commit cda8fe91013f12cbf64a0775abb55720035af931
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 00:55:24 2011 +0100
 
-    Allow ifTable entries to be deleted immediately when appropriate interface
-    disappears (i.e. interface_fadeout = 0 works as expected).
+    CHANGES: snmpd: Call snmp_oidtree_compare instead of snmp_oid_min_compare
+    CHANGES: snmpd: Remove snmp_oid_min_compare since it is internal and unused
 
-commit 45062ea47be1cd8df4933a0de7f72f8cf9183aae
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Thu Jul 28 12:24:10 2011 +0200
-
-    CHANGES: snmpd: added 'interface_fadeout' configuration option to set lifetime of ifTable entries of removed interfaces.
-    
-    Previous lifetime was hardcoded 5 minutes, now it's configurable.
-
-commit 31fa07cd9ffde46d41d2b5838c3fc4d01548bfb5
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Wed Jul 27 14:45:47 2011 +0200
-
-    CHANGES: snmpd: purge zombies of pass_persist child processes.
-    
-    If pass_persist process ends, we should process its sigchild signal.
-
-commit 11bd6e032d15ffb11d72e352ca6bc95023c3371a
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Wed Jul 27 14:45:09 2011 +0200
-
-    CHANGES: snmpd: run signal handlers when select() is interrupted.
-    
-    This behavior is indicated in comment on line 1244, but it was not actually done.
-
-commit cd6e382beda8d40edd0664e8faec8db224e5d5d6
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Tue Jul 26 16:16:46 2011 +0200
-
-    Clarify an IPv6 source code comment
-
-commit 2cec624792af8546505fba02ca0a2e2116a559e7
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Tue Jul 26 14:59:33 2011 +0200
-
-    Spelling fix: definedy -> defined
-
-commit f95a1f380ea18ff633f273a9aa5e9eb27627010e
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Tue Jul 26 14:19:14 2011 +0200
-
-    Spelling fix: aleviate -> alleviate
-
-commit c5a8464c42a94c250ee2dfa2a473109a734203d8
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue Jul 26 14:24:55 2011 +0200
-
-    CHANGES: python: PATCH: 3310375: from Erinn Looney-Triggs: fixed parsing of varbinds with MIB names
-
-commit f9ccbc772666134d1d178b505af9ddcdd9ed4244
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Mon Jul 25 15:02:15 2011 +0200
-
-    CHANGES: snmpd: avoid division by zero in UCD-SNMP::dskTable
-
-commit c14fc38614baf10d517136f0480907b7f03d8d74
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jul 20 13:44:59 2011 -0700
-
-    Updated the wording choices a bit and listed the handler types its producing
-
-commit 45ff778f57164f1e2e5502370743debd7eabf2be
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Jul 19 18:36:11 2011 -0700
-
-    remove broken whitespace lines that leads to reading confusion
-
-commit ebdd216c074bf41cd3a084bd14689cf01c887b31
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Jul 19 18:36:11 2011 -0700
-
-    remove broken whitespace lines that leads to reading confusion
-
-commit d65c7b14a0f91560bbf65274f62e48db97a34b3e
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Jul 19 18:46:10 2011 -0700
-
-    updated gitignore to ignore a number of auto-generated files
-
-commit ab1d887ba383c33d853aa4d348bbceab981aa245
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Jul 19 18:36:11 2011 -0700
-
-    remove broken whitespace lines that leads to reading confusion
-
-commit df5f70055cf9be33f05fb50abe2f5a81eac092ad
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Tue Jul 19 11:07:19 2011 +0200
-
-    Reran autoreconf
-
-commit 70dee4b8dd37e8b1d59db03cd7f631fe356f19e4
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Tue Jul 19 09:38:16 2011 +0200
-
-    CHANGES: snmpd: PATCH: 3369680: from Ilya Yanok: change snmp_enableauthentraps from int to long such that modifying the corresponding MIB object does not overwrite memory in 64-bit builds.
-
-commit 0f309b493c21d3c6914487514b41560754ffcdf9
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Tue Jul 19 08:37:50 2011 +0200
-
-    CHANGES: snmptrapd: Fix a rare crash triggered by SIGTERM by moving shutdown_perl() from the SIGTERM signal handler to the cleanup code section in main().
-
-commit 690ea7dc45c6fe1a7bbfa1584ed9bf921f19b28f
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Tue Jul 19 08:28:59 2011 +0200
-
-    CHANGES: snmptrapd: Add missing newline character in a log message
-
-commit dd2fc2ed88d0f9bb81de35dbe1f9bd3bbbbb3d90
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Tue Jul 19 08:28:13 2011 +0200
-
-    CHANGES: snmptrapd: Invoke shutdown_perl() when shutting down
-
-commit 6deec1a89048c8db26523517af98ddd397fc77c3
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Tue Jul 19 08:23:05 2011 +0200
-
-    Spelling fix: branket -> bracket
-
-commit 8d9dcc806eab37fe2ddf9cc34cf86467265b62cf
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Sun Jul 17 11:38:58 2011 +0200
-
-    Run autoreconf. Fixes build breakage caused by patch d588ec853bd0531f212fcbf51b962b96c6828b59 (RPM 4.9 support)
-
-commit d617d84f83fa69ed9fa9f98efc4afaf880d121f2
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Thu Jul 14 16:43:47 2011 +0200
-
-    Spelling fix: branket -> bracket
-
-commit c48ceef941ce036d2675ae942dead854cf5a1e0d
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Thu Jul 14 16:42:00 2011 +0200
-
-    CHANGES: snmplib: Make netsnmp_ipv6_fmtaddr() show the IPv6 scope ID
-
-commit 7bad78e51941576904afd62cc913666708f8f46c
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Sun Jul 17 11:04:34 2011 +0200
-
-    CHANGES: Win32: Add support for IPv6 address scope ID
-
-commit 4fb1f0eda7909aada6abc5bd8dbf014d115fdb4e
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Sun Jul 17 11:07:10 2011 +0200
-
-    Run autoreconf
-
-commit a56721a3e7754e389daa7e8a3d5792899edc9de3
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Thu Jul 14 16:18:32 2011 +0200
-
-    Add autom4te.cache and stamp-h to .gitignore
-
-commit 851bcf53fcd13cdf0ba9f12e5d603e73f8bb9611
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Fri Jul 15 15:32:49 2011 -0700
-
-    mentione the 'before' part of the injectHandler line
-
-commit 9f793630162cb7713ac4b68c9aabe50e67514071
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Jul 14 07:31:30 2011 -0700
-
-    fix a typo
-
-commit edc2c88375feccb176bcadeb58810dd57bd97fb7
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Jul 11 19:33:03 2011 -0700
-
-    added a copy of the shell-functions to the older branch
-
-commit 964d63514982d6dd9fa95020d24a3e88b22f2d0c
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Jul 11 19:30:29 2011 -0700
-
-    a copy of the release file applied to the older branches
-
-commit 196e110b314e37e73a74edb03c43da0299ea8b44
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Jul 11 19:34:06 2011 -0700
-
-    added 5.7 patches
-
-commit a2ac24dd4b5b709773fe827687c85982775d9998
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Jul 11 19:33:03 2011 -0700
-
-    added a copy of the shell-functions to the older branch
-
-commit 8ad32cefb37c62080c4f3d74443884bec1c49add
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Jul 11 19:30:29 2011 -0700
-
-    a copy of the release file applied to the older branches
-
-commit 9ff471439e326255066377c76d995e1aaf296bd2
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jun 29 23:15:42 2011 -0700
-
-    fix tag pushing
-
-commit f9a65385b23d06dbbe9430a23c8ebcf68d12127e
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jun 29 22:32:10 2011 -0700
-
-    misc publication fixes found while publishing
-
-commit df9cf9a1e293d05a24786694f68c05a2be13a9b3
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jun 29 16:34:11 2011 -0700
-
-    xml fixes
-
-commit ee8d160416c2f7d1941863e7d37512658e3f2f36
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jun 29 16:33:50 2011 -0700
-
-    use git2cl to generate the ChangeLog file; needs much more work.
-
-commit 5d4bb80113ddcce5cee293a4e537b201fafcab83
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jun 29 14:48:39 2011 -0700
-
-    use the new run-autoconf script
-
-commit 61ffef6268675a91e230d44b3407a3d0c3ffc89d
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jun 29 14:47:56 2011 -0700
-
-    A script to invoke the correct version of the autoconf tool
-
-commit d0f6f8de37292b7fbc9e05793690b5784a041d46
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jun 29 08:41:45 2011 -0700
-
-    remaining command line changes for svn -> git
-
-commit 16560840020dc5e0c4b28cc2e30bb2cd034ce0d0
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jun 29 07:26:55 2011 -0700
-
-    make the branch echo output and svn update converted to git equivalents
-
-commit f775bcd6a7a50f33782526ecdb1beea55e3fe823
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jun 29 07:11:29 2011 -0700
-
-    pull the branch info from git
-
-commit d588ec853bd0531f212fcbf51b962b96c6828b59
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Wed Jun 29 16:07:00 2011 +0200
-
-    Tweak RPM handling to work with library version 4.9
-
-commit af8b235234f72944a649a76f0d30cff95ac2e895
-Author: Wes Hardaker <opensource@hardakers.net>
-Date:   Tue Jun 28 13:11:19 2011 -0700
-
-    Mention the Git wiki page
-
-commit 9bc82e4ca4837f00072dba86b9497a27186909f9
-Author: Bart Van Assche <bvanassche@acm.org>
-Date:   Tue Jun 28 19:13:35 2011 +0200
-
-    Add .gitignore
-
-commit f2df8a2b0165e0137fd017b41c7d04e3a5e168e6
-Author: Wes Hardaker <opensource@hardakers.net>
-Date:   Tue Jun 28 08:29:08 2011 -0700
-
-    We're now using git!
-
-commit 7d917cfc8f74574032564815ab0fb483b691864e
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jun 24 13:00:50 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20524 06827809-a52a-0410-b366-d66718629ded
-
-commit a162e931f29931ce03d40d73dd969f6086083b80
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jun 24 12:38:14 2011 +0000
-
-    Missing check for rpmts.h
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20523 06827809-a52a-0410-b366-d66718629ded
-
-commit 0787ff1f632e08440e8bb240dabca5c5e63fd82d
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jun 24 12:20:20 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20522 06827809-a52a-0410-b366-d66718629ded
-
-commit 4530d877531083bfffd3bbca4a82c30009bef8fd
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jun 24 12:08:23 2011 +0000
-
-    documentation update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20521 06827809-a52a-0410-b366-d66718629ded
-
-commit 49575f136b40d08d21a168a0d545d85f59c58701
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jun 24 12:02:15 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20520 06827809-a52a-0410-b366-d66718629ded
-
-commit 599e3cdff9e78622535683a69f42977df4089ba9
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jun 23 15:41:38 2011 +0000
-
-    Tweak RPM handling to work with library version 4.9
-    Based on a patch by Jan Safranek
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20519 06827809-a52a-0410-b366-d66718629ded
-
-commit 5c2a691bd29ea343046d218621502a66bc96a1bb
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 22 14:27:39 2011 +0000
-
-    Provide a framework for reading RPM package information from
-    a cache directory (rather than querying the RPMdb directly).
-    
-    My apologies to Jeff Johnson for the delay in adding this functionality.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20518 06827809-a52a-0410-b366-d66718629ded
-
-commit 2707435ef5e011c3637f37981cbe4d50f2e729dc
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 22 13:26:45 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20516 06827809-a52a-0410-b366-d66718629ded
-
-commit 272f96aec937ed74cc4db980745d2dbe00ca53a0
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 22 13:06:45 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20515 06827809-a52a-0410-b366-d66718629ded
-
-commit 9e471adc2a40212b4c017cbced6e25882e306a4d
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 22 13:04:12 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20514 06827809-a52a-0410-b366-d66718629ded
-
-commit c4ad27824f9c6e91a9fc11d6619656c36d5d6612
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jun 21 14:28:48 2011 +0000
-
-    Provide a framework for reading RPM package information from
-    a cache directory (rather than querying the RPMdb directly).
-    
-    My apologies to Jeff Johnson for the delay in adding this functionality.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20513 06827809-a52a-0410-b366-d66718629ded
-
-commit 8a5ac775de575416070665c30bc3d77336e12bcb
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jun 21 14:28:48 2011 +0000
-
-    Provide a framework for reading RPM package information from
-    a cache directory (rather than querying the RPMdb directly).
-    
-    My apologies to Jeff Johnson for the delay in adding this functionality.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20513 06827809-a52a-0410-b366-d66718629ded
-
-commit 594937db755eb380fcf6cd220ce62f6e4a3103c3
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sun Jun 19 07:52:26 2011 +0000
-
-    Follow-up for r20511: really use the proper format specification.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20512 06827809-a52a-0410-b366-d66718629ded
-
-commit 4524255ba6083d25c03f6436ecbe398836f4a0f8
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sun Jun 19 07:52:26 2011 +0000
-
-    Follow-up for r20511: really use the proper format specification.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20512 06827809-a52a-0410-b366-d66718629ded
-
-commit 105de0219ca2aa79ed6585ff8d0ce455a186d10a
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri Jun 17 19:09:52 2011 +0000
-
-    Fix a bug in a debug statement introduced by patch 3310250 / r20494: use %ld to print a value of type oid instead of %d.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20511 06827809-a52a-0410-b366-d66718629ded
-
-commit 621c9eda1282b7f562b3777b5fb57fd355c1a206
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri Jun 17 19:09:52 2011 +0000
-
-    Fix a bug in a debug statement introduced by patch 3310250 / r20494: use %ld to print a value of type oid instead of %d.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20511 06827809-a52a-0410-b366-d66718629ded
-
-commit 3b3e97b309a535df1a99b03693869050649d53a0
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri Jun 17 19:06:42 2011 +0000
-
-    Use %p to print a pointer instead of %ld
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20510 06827809-a52a-0410-b366-d66718629ded
-
-commit 878bcd8764be5d158d65f4b20a68cb3a948dbddf
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri Jun 17 19:06:42 2011 +0000
-
-    Use %p to print a pointer instead of %ld
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20510 06827809-a52a-0410-b366-d66718629ded
-
-commit 7909f60e2df06d65526e940ea3286c24bc36c7ff
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Fri Jun 10 06:05:43 2011 +0000
-
-    Include stdlib.h to make dmalloc happy
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20502 06827809-a52a-0410-b366-d66718629ded
-
-commit 12f26c5ee0689144d46bd34f36a2805222d3761d
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Thu Jun 9 14:35:08 2011 +0000
-
-    CHANGES: BUG: 3151845: fix multiple registrations of snmp transport handler
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20499 06827809-a52a-0410-b366-d66718629ded
-
-commit 374af0758644e9abcc4998fb291ca373869048f8
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri Jun 3 06:30:33 2011 +0000
-
-    Reverted r20362: that patch makes sense on the trunk and the 5.6 branch but not on the 5.5 nor on the 5.4 branch.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20495 06827809-a52a-0410-b366-d66718629ded
-
-commit 4850812f5afaaa7286ccb7b81bc0523f2b7de37c
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jun 1 22:24:23 2011 +0000
-
-    CHANGES: snmpd: patch 3310250: from fenner: misc fixes for debugging output of agentx
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20494 06827809-a52a-0410-b366-d66718629ded
-
-commit 7189356d88b4cbd920fd934111e4b6d690513f50
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jun 1 22:24:23 2011 +0000
-
-    CHANGES: snmpd: patch 3310250: from fenner: misc fixes for debugging output of agentx
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20494 06827809-a52a-0410-b366-d66718629ded
-
-commit c9c3db15752d6e4b8b9600cd7d1a8d79d6d83c3e
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 15:57:18 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20487 06827809-a52a-0410-b366-d66718629ded
-
-commit 0eefeccf76d630796b7c8c64a0e33d0175262fcb
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 15:48:49 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20486 06827809-a52a-0410-b366-d66718629ded
-
-commit 35f0a3822af8f00855242906b132e702de899213
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 15:47:04 2011 +0000
-
-    make depend
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20485 06827809-a52a-0410-b366-d66718629ded
-
-commit b1e5acbb605bed3210c7f5ddaeeef2a050cf6bea
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 15:42:00 2011 +0000
-
-    Reinstate an "unused" label that is actually still required.
-    (referenced in line 2710)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20484 06827809-a52a-0410-b366-d66718629ded
-
-commit 2487579d1e977137dc643acee762aeaafa60f4bd
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 15:32:23 2011 +0000
-
-    Fix typo
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20483 06827809-a52a-0410-b366-d66718629ded
-
-commit cac11a92c04a5cc51e231be0ab116db855221de1
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 15:08:51 2011 +0000
-
-    documentation update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20482 06827809-a52a-0410-b366-d66718629ded
-
-commit fa8ee4f97c2fa8fb6e59cf055e0d81a3bdecfb97
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 14:51:14 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20481 06827809-a52a-0410-b366-d66718629ded
-
-commit 865ccff3220d017f3ef3b619f0f8f447d33514eb
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 10:19:33 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20479 06827809-a52a-0410-b366-d66718629ded
-
-commit 7b619b10e912bdd1c7633ce3b1e72574c2341ce9
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 10:01:01 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20478 06827809-a52a-0410-b366-d66718629ded
-
-commit 55f6e8c3a0f7741bf8a689a0fcf06cc480ad1eff
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 09:54:04 2011 +0000
-
-    make depend
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20477 06827809-a52a-0410-b366-d66718629ded
-
-commit d7a273ccbee56901e8679a0de32bc6aa16d44bf5
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 09:06:32 2011 +0000
-
-    documentation update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20476 06827809-a52a-0410-b366-d66718629ded
-
-commit 126353551f4937f7c0bc1aa8c80c2d48d1349c93
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jun 1 09:00:24 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20475 06827809-a52a-0410-b366-d66718629ded
-
-commit eb015c5dffd47a38c977923676d1c4ec8b57bbec
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue May 31 22:49:32 2011 +0000
-
-    CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for comparing unsigned large indexes of the disk and extend tables.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20471 06827809-a52a-0410-b366-d66718629ded
-
-commit 7fa30fce08ac494c358e6a31b9702e12ffebd461
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue May 31 22:49:32 2011 +0000
-
-    CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for comparing unsigned large indexes of the disk and extend tables.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20471 06827809-a52a-0410-b366-d66718629ded
-
-commit b41d4aaf7a06b45a9ec07a5511bac5bad6fdda2a
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue May 31 22:49:32 2011 +0000
-
-    CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for comparing unsigned large indexes of the disk and extend tables.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20471 06827809-a52a-0410-b366-d66718629ded
-
-commit 1a8438650405ae38491f3a5c9a2b10fc99b1b9c2
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue May 31 22:49:32 2011 +0000
-
-    CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for comparing unsigned large indexes of the disk and extend tables.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20471 06827809-a52a-0410-b366-d66718629ded
-
-commit ab16828ad69c54e068c038a9a94491fdbc6e799f
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue May 31 12:30:30 2011 +0000
-
-    CHANGES: snmpd: fixed hrSWRunPath of swapped-out processes on Linux.
-    
-    fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped out) and when the process exited after fopen(), so check /proc/PID/status in both cases.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20470 06827809-a52a-0410-b366-d66718629ded
-
-commit c07d59bd92cc34bc96964b5e743cfdee79875b7a
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue May 31 12:30:30 2011 +0000
-
-    CHANGES: snmpd: fixed hrSWRunPath of swapped-out processes on Linux.
-    
-    fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped out) and when the process exited after fopen(), so check /proc/PID/status in both cases.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20470 06827809-a52a-0410-b366-d66718629ded
-
-commit ba68806dd064f655536d6f69371c699e6162056e
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue May 31 12:30:30 2011 +0000
-
-    CHANGES: snmpd: fixed hrSWRunPath of swapped-out processes on Linux.
-    
-    fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped out) and when the process exited after fopen(), so check /proc/PID/status in both cases.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20470 06827809-a52a-0410-b366-d66718629ded
-
-commit 91cdb815bb365757f84c2234d9e5f5763ac4b04f
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 26 16:12:48 2011 +0000
-
-    CHANGES: snmpd: patch 3299384: fix INFORMs so they retry probing for an engineID.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20458 06827809-a52a-0410-b366-d66718629ded
-
-commit 1d20d733f17406247c80c30c47b882839e0eac04
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 26 16:12:48 2011 +0000
-
-    CHANGES: snmpd: patch 3299384: fix INFORMs so they retry probing for an engineID.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20458 06827809-a52a-0410-b366-d66718629ded
-
-commit a5a9d1e8a24f02dfe4e97af04d6f5e0b590a52ae
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 26 16:12:48 2011 +0000
-
-    CHANGES: snmpd: patch 3299384: fix INFORMs so they retry probing for an engineID.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20458 06827809-a52a-0410-b366-d66718629ded
-
-commit 4b956c470ac7e49399e7e1239798e2a060fe58ba
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 26 16:12:48 2011 +0000
-
-    CHANGES: snmpd: patch 3299384: fix INFORMs so they retry probing for an engineID.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20458 06827809-a52a-0410-b366-d66718629ded
-
-commit a9bc34f6f450b4751def8b8572b25c0f7918ad5e
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 26 16:06:11 2011 +0000
-
-    Applied (roughly) patch 3299370 to avoid rewriting existing authkey/privkey/etcs
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20457 06827809-a52a-0410-b366-d66718629ded
-
-commit 374b81fffda446f6499decb6f048b19238a9f6b4
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 26 16:06:11 2011 +0000
-
-    Applied (roughly) patch 3299370 to avoid rewriting existing authkey/privkey/etcs
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20457 06827809-a52a-0410-b366-d66718629ded
-
-commit 1d331375d86282e23b4ae602052753aa4a4f87ac
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 26 16:06:11 2011 +0000
-
-    Applied (roughly) patch 3299370 to avoid rewriting existing authkey/privkey/etcs
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20457 06827809-a52a-0410-b366-d66718629ded
-
-commit aa5ec8d19de295151032639e138e8b76587866bc
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 26 16:06:11 2011 +0000
-
-    Applied (roughly) patch 3299370 to avoid rewriting existing authkey/privkey/etcs
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20457 06827809-a52a-0410-b366-d66718629ded
-
-commit 962c9eb3965563c5a313d41d8992998d7e603351
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed May 25 19:44:15 2011 +0000
-
-    CHANGES: snmpd: patch 3306476: from tinypyramids: fix memory leak in the swrun container loading
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20454 06827809-a52a-0410-b366-d66718629ded
-
-commit ec2bb4451908054669fd2fb1d44126a579059e55
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed May 25 16:17:04 2011 +0000
-
-    Follow-up for r20449: use NETSNMP_PRIo "u" for printing subids instead of only NETSNMP_PRIo.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20453 06827809-a52a-0410-b366-d66718629ded
-
-commit 880132daf2f53dadfe41b22ad322d70650a82cc1
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed May 25 13:07:23 2011 +0000
-
-    CHANGES: Win32: Microsoft Visual Studio: Link with gdi32.lib if OpenSSL has been enabled because gdi32.lib is a dependency of OpenSSL.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20451 06827809-a52a-0410-b366-d66718629ded
-
-commit 23ef2f10843c9a87789a614abdf526350c4d8443
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed May 25 13:07:23 2011 +0000
-
-    CHANGES: Win32: Microsoft Visual Studio: Link with gdi32.lib if OpenSSL has been enabled because gdi32.lib is a dependency of OpenSSL.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20451 06827809-a52a-0410-b366-d66718629ded
-
-commit 9b870372b74a7af5b7726a6051b4f3db5043a77e
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed May 25 09:24:08 2011 +0000
-
-    Follow-up for r20448: since the "oid" typedef has been changed back from uint32_t to u_long, change NETSNMP_PRIo from NETSNMP_PRI32 into "l".
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20450 06827809-a52a-0410-b366-d66718629ded
-
-commit 885d1f55cefa82d95356e3e35ecae81158af3b59
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed May 25 09:21:05 2011 +0000
-
-    CHANGES: snmpd: Use proper format specifier in debug statements for printing values of type 'oid'.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20449 06827809-a52a-0410-b366-d66718629ded
-
-commit 723bc387571757426b861b6a8854a4b8d89dcd15
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed May 25 09:21:05 2011 +0000
-
-    CHANGES: snmpd: Use proper format specifier in debug statements for printing values of type 'oid'.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20449 06827809-a52a-0410-b366-d66718629ded
-
-commit de890870de08eacfb25ab818c4d1352f5dcc09c9
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed May 25 09:21:05 2011 +0000
-
-    CHANGES: snmpd: Use proper format specifier in debug statements for printing values of type 'oid'.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20449 06827809-a52a-0410-b366-d66718629ded
-
-commit 30b4c36498879b490c15d50030d0b2c18820282d
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue May 24 23:49:57 2011 +0000
-
-    revert OID typedef to u_long as agreed to on -coders and in the admin meeting
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20448 06827809-a52a-0410-b366-d66718629ded
-
-commit 0f2ecd6f05dee37f93ea9a9ac9e7276d6b478dd0
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue May 24 12:51:39 2011 +0000
-
-    Added NULL-checks after malloc
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20446 06827809-a52a-0410-b366-d66718629ded
-
-commit c89c95bccd138bdaee3e01f2d0f663328e8e7e88
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue May 24 12:51:39 2011 +0000
-
-    Added NULL-checks after malloc
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20446 06827809-a52a-0410-b366-d66718629ded
-
-commit 05886207042ac2c90aa319165780d17676ed68f4
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue May 24 12:51:39 2011 +0000
-
-    Added NULL-checks after malloc
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20446 06827809-a52a-0410-b366-d66718629ded
-
-commit e3b20caabc313d888ca4cc9544e7ecf2e1ab09d4
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun May 22 19:34:10 2011 +0000
-
-    CHANGES: agent: BUG: 3305157: Fix ipAddressPrefix handling of IPv6 addresses
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20445 06827809-a52a-0410-b366-d66718629ded
-
-commit 9b125c713be1ecca63f2b169d2c10d1d24a2d476
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun May 22 19:34:10 2011 +0000
-
-    CHANGES: agent: BUG: 3305157: Fix ipAddressPrefix handling of IPv6 addresses
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20445 06827809-a52a-0410-b366-d66718629ded
-
-commit 04331882a0c9df79d9135457382a2725c3030f81
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun May 22 19:07:56 2011 +0000
-
-    CHANGES: python: BUG: 3295407: Fix handling of void pointer
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20444 06827809-a52a-0410-b366-d66718629ded
-
-commit 23a2b940e2656268bef30015f782ee6d038f9265
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun May 22 19:07:56 2011 +0000
-
-    CHANGES: python: BUG: 3295407: Fix handling of void pointer
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20444 06827809-a52a-0410-b366-d66718629ded
-
-commit 6e2bf91aba562ccaeb130419893a7170bb2312f9
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun May 22 19:07:56 2011 +0000
-
-    CHANGES: python: BUG: 3295407: Fix handling of void pointer
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20444 06827809-a52a-0410-b366-d66718629ded
-
-commit caba651f84f7102cba181d195b59c79768d94561
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun May 22 18:57:53 2011 +0000
-
-    CHANGES: snmplib: BUG: 3264852: Recognise missing report types (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20443 06827809-a52a-0410-b366-d66718629ded
-
-commit c5a4580b924ed5c49cffd1b7fd8e932ed168ecdb
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun May 22 18:57:53 2011 +0000
-
-    CHANGES: snmplib: BUG: 3264852: Recognise missing report types (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20443 06827809-a52a-0410-b366-d66718629ded
-
-commit a6cadd0098b16a1e9ffa813818b0e9f8fbbc0eb8
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun May 22 18:57:53 2011 +0000
-
-    CHANGES: snmplib: BUG: 3264852: Recognise missing report types (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20443 06827809-a52a-0410-b366-d66718629ded
-
-commit 98815003f345ece93fcf836fb0c3ea5997c8f900
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun May 22 18:57:53 2011 +0000
-
-    CHANGES: snmplib: BUG: 3264852: Recognise missing report types (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20443 06827809-a52a-0410-b366-d66718629ded
-
-commit 30245d00d30cfc526939bb2ff721b2076546e8c7
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 20 15:41:06 2011 +0000
-
-    CHANGES: snmplib: BUG: 3234754: Ensure old f_create_from_tstring hook is initialized to NULL
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20442 06827809-a52a-0410-b366-d66718629ded
-
-commit 7d2fe9dcaedca866cdce6178b606b8f06189bf3a
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 20 15:41:06 2011 +0000
-
-    CHANGES: snmplib: BUG: 3234754: Ensure old f_create_from_tstring hook is initialized to NULL
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20442 06827809-a52a-0410-b366-d66718629ded
-
-commit 56c74c5a49386330a581564a6ee1579bcf6c509e
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 20 15:41:06 2011 +0000
-
-    CHANGES: snmplib: BUG: 3234754: Ensure old f_create_from_tstring hook is initialized to NULL
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20442 06827809-a52a-0410-b366-d66718629ded
-
-commit 45b4bd537b627534b1c6218219fd770eb5a4a155
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 19 19:46:20 2011 +0000
-
-    use #ifdef rather than #if for define checks.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20441 06827809-a52a-0410-b366-d66718629ded
-
-commit 5cc5a4cd0d648935ec76e09616229d0ceebc41a0
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 19 19:46:20 2011 +0000
-
-    use #ifdef rather than #if for define checks.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20441 06827809-a52a-0410-b366-d66718629ded
-
-commit 58382e4885f387e3ffcb8feba936a578c69459ee
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 19 19:46:20 2011 +0000
-
-    use #ifdef rather than #if for define checks.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20441 06827809-a52a-0410-b366-d66718629ded
-
-commit b588d1a1da681b26f35f2bbf0492242cf4d83c96
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu May 19 19:46:20 2011 +0000
-
-    use #ifdef rather than #if for define checks.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20441 06827809-a52a-0410-b366-d66718629ded
-
-commit 98d6223e10af0b207395c9a71190dff6fa87959c
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu May 19 17:19:31 2011 +0000
-
-    CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response and snmp_async_send
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20440 06827809-a52a-0410-b366-d66718629ded
-
-commit c26e7a93851ed678447dc32ab72fbc1a008a135d
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu May 19 17:19:31 2011 +0000
-
-    CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response and snmp_async_send
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20440 06827809-a52a-0410-b366-d66718629ded
-
-commit af3dea110d079be1468abc7e01cec6be6c11e9cf
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu May 19 17:19:31 2011 +0000
-
-    CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response and snmp_async_send
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20440 06827809-a52a-0410-b366-d66718629ded
-
-commit c00f88f33888edd480acc9ec9312d6b61e170a76
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu May 19 17:19:31 2011 +0000
-
-    CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response and snmp_async_send
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20440 06827809-a52a-0410-b366-d66718629ded
-
-commit 32945a7a167b4d56e2940626b709ab111905d21a
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Thu May 19 08:55:26 2011 +0000
-
-    CHANGES: snmpd: fixed race condition in hrSWRunTable
-    Treat the reads from /proc/<pid>/* carefuly, processes can exit in the middle of processing.
-    (already fixed in V5-5-patches and V5-4-patches in SVN rev. 20115, dunno why I did not patch trunk)
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20438 06827809-a52a-0410-b366-d66718629ded
-
-commit 27a55953f0bb57aa1aeccf718f34a7d4ae63c43e
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu May 19 08:26:57 2011 +0000
-
-    CHANGES: snmplib: BUG: 3184697: Don't reference internal MD5 when it's explicitly disabled
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20437 06827809-a52a-0410-b366-d66718629ded
-
-commit 90ee782ca4ea8534b8b43ff1dd67fba7d5f569e1
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sun May 15 16:21:31 2011 +0000
-
-    Follow-up for r20432: testing/RUNTESTS without arguments works again as it should.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20435 06827809-a52a-0410-b366-d66718629ded
-
-commit d5fa70134261af78453f0e03123cfb5fa28cd663
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sat May 14 19:38:30 2011 +0000
-
-    Fixed a typo in a comment.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20433 06827809-a52a-0410-b366-d66718629ded
-
-commit 191cdb7b2a6e9842af1b93b772a9fdcbf4c35a31
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sat May 14 19:36:56 2011 +0000
-
-    RUNTESTS works again for tests with a four-digit number.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20432 06827809-a52a-0410-b366-d66718629ded
-
-commit 041e67bfbc07d2f4884e632eeac71a95ca357e54
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sat May 14 18:47:56 2011 +0000
-
-    Document that the ucd-snmp diskio code still has to be modified such that diskio_free_config() gets invoked upon SIGHUP.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20430 06827809-a52a-0410-b366-d66718629ded
-
-commit ca053996022e3c1de3e2d5b558fadf6d79e9fdd3
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri May 13 12:05:19 2011 +0000
-
-    Follow-up for r20417: replaced a malloc()/free() pair by a call to realloc().
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20424 06827809-a52a-0410-b366-d66718629ded
-
-commit 7f115df8336e3b9ea952300b3d4d104eb2140cdb
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri May 13 12:05:19 2011 +0000
-
-    Follow-up for r20417: replaced a malloc()/free() pair by a call to realloc().
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20424 06827809-a52a-0410-b366-d66718629ded
-
-commit 06869520856976ff4590a0bb61c4e96f16c35d6e
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Thu May 12 11:47:36 2011 +0000
-
-    CHANGES: snmpd: Fixed memory leak in TCP-MIB tables introduced by patch #3053436.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20421 06827809-a52a-0410-b366-d66718629ded
-
-commit 05d3d3a82311bf9b55386216f188198cd849fff1
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 09:03:02 2011 +0000
-
-    CHANGES: snmplib: Fixed a memory leak in snmp_free_session().
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20418 06827809-a52a-0410-b366-d66718629ded
-
-commit 4e94ab7f0c6509b6282eefc888ab0dcf78e575a6
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 09:03:02 2011 +0000
-
-    CHANGES: snmplib: Fixed a memory leak in snmp_free_session().
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20418 06827809-a52a-0410-b366-d66718629ded
-
-commit ff03bfad6d0cc54e58cee4d4f8f67fe12910518c
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 09:03:02 2011 +0000
-
-    CHANGES: snmplib: Fixed a memory leak in snmp_free_session().
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20418 06827809-a52a-0410-b366-d66718629ded
-
-commit cc78d06239755c6ebb831903b6cedd3e1dbab583
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 08:25:33 2011 +0000
-
-    CHANGES: snmplib: _mibindex_add() no longer reads past the end of the dynamically allocated array _mibindexes.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20417 06827809-a52a-0410-b366-d66718629ded
-
-commit 924cbe3d693a793c20536e80e91510c959acc9a7
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 08:25:33 2011 +0000
-
-    CHANGES: snmplib: _mibindex_add() no longer reads past the end of the dynamically allocated array _mibindexes.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20417 06827809-a52a-0410-b366-d66718629ded
-
-commit adced4a84876a2e3cb8687b5ffa5830a3b5003aa
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 08:12:47 2011 +0000
-
-    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ipNetToMediaTable.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20414 06827809-a52a-0410-b366-d66718629ded
-
-commit f0012dec2c98baf1c0e25fa17d5bf89bacd0a4a4
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 08:12:47 2011 +0000
-
-    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ipNetToMediaTable.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20414 06827809-a52a-0410-b366-d66718629ded
-
-commit 8d83f95381c8190e64c89d20b76c46ad388c421c
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 08:12:47 2011 +0000
-
-    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ipNetToMediaTable.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20414 06827809-a52a-0410-b366-d66718629ded
-
-commit 8ecd298dbccee1e327ce65852f98928d7bc041d7
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 08:08:41 2011 +0000
-
-    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ifTable.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20413 06827809-a52a-0410-b366-d66718629ded
-
-commit d962fda677814b6342ad1b9c3fa84225b555cda2
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 08:08:41 2011 +0000
-
-    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ifTable.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20413 06827809-a52a-0410-b366-d66718629ded
-
-commit ca38942908ac74fdf1f1f1de779ca5cdd4defa2d
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 08:08:41 2011 +0000
-
-    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ifTable.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20413 06827809-a52a-0410-b366-d66718629ded
-
-commit aa032769bc3da8302c38dd9d62d53f7f054eb2c7
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 07:33:02 2011 +0000
-
-    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ipAddrTable.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20412 06827809-a52a-0410-b366-d66718629ded
-
-commit 4ffa908d02cfad9ff31a2018192d4ad5f959467c
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 07:33:02 2011 +0000
-
-    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ipAddrTable.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20412 06827809-a52a-0410-b366-d66718629ded
-
-commit a21bdf7164490f21f7ee1d3dfec6a9d38e24dd78
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 07:33:02 2011 +0000
-
-    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ipAddrTable.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20412 06827809-a52a-0410-b366-d66718629ded
-
-commit 271914512dc8268d8bc49ba7ec38cc2acec656c3
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 06:54:33 2011 +0000
-
-    Documentation / source code comment spelling fix: exitent -> existent.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20411 06827809-a52a-0410-b366-d66718629ded
-
-commit c009c12d72bbc2e2795d3a6b22cab6ba06e48535
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 06:54:33 2011 +0000
-
-    Documentation / source code comment spelling fix: exitent -> existent.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20411 06827809-a52a-0410-b366-d66718629ded
-
-commit 6c8aee7f8a34d7da229f45908c8f331e7254422e
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 12 06:54:33 2011 +0000
-
-    Documentation / source code comment spelling fix: exitent -> existent.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20411 06827809-a52a-0410-b366-d66718629ded
-
-commit c2d35bd5c322d7a8536a1ff31d73e41f77c85b97
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue May 10 15:02:51 2011 +0000
-
-    MinGW: avoid that gcc complains about pasing a (char *) argument while (unsigned char *) is expected.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20402 06827809-a52a-0410-b366-d66718629ded
-
-commit 3dbe27799a3f065bbf212599466969beb72690d2
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue May 10 15:02:51 2011 +0000
-
-    MinGW: avoid that gcc complains about pasing a (char *) argument while (unsigned char *) is expected.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20402 06827809-a52a-0410-b366-d66718629ded
-
-commit 193e3984924bdea9bbb70308062baee3732abba4
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue May 10 15:02:51 2011 +0000
-
-    MinGW: avoid that gcc complains about pasing a (char *) argument while (unsigned char *) is expected.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20402 06827809-a52a-0410-b366-d66718629ded
-
-commit 94b5238d88a027306aa9115758111c785a4abad8
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon May 9 20:52:01 2011 +0000
-
-    Use symbolic named for ifType values
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20375 06827809-a52a-0410-b366-d66718629ded
-
-commit 04b8e279a7a785a76ebf4b6575f41ce6299452c6
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon May 9 20:52:01 2011 +0000
-
-    Use symbolic named for ifType values
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20375 06827809-a52a-0410-b366-d66718629ded
-
-commit 3dcbfdd4f1ffead5524149b4efb00128688e1505
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon May 9 20:52:01 2011 +0000
-
-    Use symbolic named for ifType values
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20375 06827809-a52a-0410-b366-d66718629ded
-
-commit f6586aecfa2d2bc49defd3d21f471aa9a3c5436d
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon May 9 20:52:01 2011 +0000
-
-    Use symbolic named for ifType values
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20375 06827809-a52a-0410-b366-d66718629ded
-
-commit 5d338f7b9459346cc0c255abb71e093ff3eaa838
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon May 9 20:43:51 2011 +0000
-
-    IANA has fixed the IANA-IPPM-METRICS-REGISTRY-MIB
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20374 06827809-a52a-0410-b366-d66718629ded
-
-commit 5bb1c9a8fdc47b3ef355cb42e9e18ad88ce496fb
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sun May 8 20:01:26 2011 +0000
-
-    Fix warnings and data format for DateAndTime objects.
-    These modules work, but:
-    - They are Linux only
-    - Rows must be created with rowStatus createAndWait before they are populated
-    - Agent must run as root
-    - Agent is blocked while tests run
-    - Data format for InetAddress objects is wrong. It is ASCII, not binary
-      (making it easier to use from the command line, but ...)
-    
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20363 06827809-a52a-0410-b366-d66718629ded
-
-commit dbb8795a7df595f0603f2ec61704799f4c482667
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sun May 8 20:01:26 2011 +0000
-
-    Fix warnings and data format for DateAndTime objects.
-    These modules work, but:
-    - They are Linux only
-    - Rows must be created with rowStatus createAndWait before they are populated
-    - Agent must run as root
-    - Agent is blocked while tests run
-    - Data format for InetAddress objects is wrong. It is ASCII, not binary
-      (making it easier to use from the command line, but ...)
-    
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20363 06827809-a52a-0410-b366-d66718629ded
-
-commit e9ac86278c3588022914758a345fb982bb5d4ec4
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sun May 8 20:01:26 2011 +0000
-
-    Fix warnings and data format for DateAndTime objects.
-    These modules work, but:
-    - They are Linux only
-    - Rows must be created with rowStatus createAndWait before they are populated
-    - Agent must run as root
-    - Agent is blocked while tests run
-    - Data format for InetAddress objects is wrong. It is ASCII, not binary
-      (making it easier to use from the command line, but ...)
-    
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20363 06827809-a52a-0410-b366-d66718629ded
-
-commit c4f5d9b94b4895bb9c9a050b1a88b201f901f973
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sun May 8 20:01:26 2011 +0000
-
-    Fix warnings and data format for DateAndTime objects.
-    These modules work, but:
-    - They are Linux only
-    - Rows must be created with rowStatus createAndWait before they are populated
-    - Agent must run as root
-    - Agent is blocked while tests run
-    - Data format for InetAddress objects is wrong. It is ASCII, not binary
-      (making it easier to use from the command line, but ...)
-    
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20363 06827809-a52a-0410-b366-d66718629ded
-
-commit e3db95e1619dd57dfb55ac7494f48d2add56d973
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sat May 7 15:22:27 2011 +0000
-
-    Removed an unused label from perl/SNMP/SNMP.xs.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20362 06827809-a52a-0410-b366-d66718629ded
-
-commit ea8ce00744e83233d8543852f884aa037c1183a2
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sat May 7 15:22:27 2011 +0000
-
-    Removed an unused label from perl/SNMP/SNMP.xs.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20362 06827809-a52a-0410-b366-d66718629ded
-
-commit 099945bb2f82ea6cb503c7486c64be087164123d
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sat May 7 15:22:27 2011 +0000
-
-    Removed an unused label from perl/SNMP/SNMP.xs.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20362 06827809-a52a-0410-b366-d66718629ded
-
-commit e6a1bdae4f7bf625ab607b4f2807470cd2777771
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sat May 7 13:15:44 2011 +0000
-
-    Win32: improved source code consistency by using LPCTSTR instead of LPCSTR. Note: this does not mean that Unicode builds are supported.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20358 06827809-a52a-0410-b366-d66718629ded
-
-commit 4ebfcea41964a8742a02c68785124bc24da506be
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sat May 7 13:11:44 2011 +0000
-
-    Reverted a change that was committed accidentally in r20276.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20356 06827809-a52a-0410-b366-d66718629ded
-
-commit 8186cf3c3fccd0226a07614659f3e8fc7d3aeb7a
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sat May 7 12:54:11 2011 +0000
-
-    Fixed two compiler warnings.
-    (Backported r20236 from the trunk.)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20355 06827809-a52a-0410-b366-d66718629ded
-
-commit c76e2c76985ab7a40d6dbefd2e47323857649735
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sat May 7 12:51:04 2011 +0000
-
-    Commented out an unused function because the compiler complained about it.
-    (Backported r20237 from the trunk.)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20354 06827809-a52a-0410-b366-d66718629ded
-
-commit a58969eddb3b669877d7229f719087bbd727d033
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Fri May 6 21:32:01 2011 +0000
-
-    NEWS: PATCH 3198781: from fenner: Get disman/ping and disman/traceroute to at least compile
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20352 06827809-a52a-0410-b366-d66718629ded
-
-commit 2cca6125d538faa9b51b772141f192d7b63cc0cb
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Fri May 6 21:32:01 2011 +0000
-
-    NEWS: PATCH 3198781: from fenner: Get disman/ping and disman/traceroute to at least compile
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20352 06827809-a52a-0410-b366-d66718629ded
-
-commit b1e76bef81bfce16c8d0bc01e856cb4c75930b5c
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Fri May 6 21:32:01 2011 +0000
-
-    NEWS: PATCH 3198781: from fenner: Get disman/ping and disman/traceroute to at least compile
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20352 06827809-a52a-0410-b366-d66718629ded
-
-commit d0f22dd10b7a0d3dbf795c2d48e3fa96366aef1b
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Fri May 6 21:32:01 2011 +0000
-
-    NEWS: PATCH 3198781: from fenner: Get disman/ping and disman/traceroute to at least compile
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20352 06827809-a52a-0410-b366-d66718629ded
-
-commit fcb8a8d27c2cc379dce263dbee6720d7b4e02d74
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 17:46:29 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20347 06827809-a52a-0410-b366-d66718629ded
-
-commit 515af99cb9e6a3b0923e650466f74464e3b9b5f6
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 17:37:59 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20346 06827809-a52a-0410-b366-d66718629ded
-
-commit 6f927fd73af2a4ceb67fc4090826a284a7e6fc19
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 17:35:50 2011 +0000
-
-    make depend
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20345 06827809-a52a-0410-b366-d66718629ded
-
-commit 8080a8189ed7ee73ca3218c8280c68717d4535de
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 17:22:14 2011 +0000
-
-    documentation update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20344 06827809-a52a-0410-b366-d66718629ded
-
-commit 62fb93e28728b0e93c134c88b65b1d453b6e89c2
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 17:17:46 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20343 06827809-a52a-0410-b366-d66718629ded
-
-commit 74e13cc95bee4655df23ba514bd2657886c9e4b6
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 14:23:24 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20340 06827809-a52a-0410-b366-d66718629ded
-
-commit 793187aaa04c881f6b57fcf361296b52a940e1f8
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 14:21:45 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20339 06827809-a52a-0410-b366-d66718629ded
-
-commit 1466e15e52380965f844c6d98b3eb257899a4ce2
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 14:19:57 2011 +0000
-
-    make depend
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20338 06827809-a52a-0410-b366-d66718629ded
-
-commit dec7d47ca3767c37d17981f1cf9e580ae2fe0214
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 14:02:04 2011 +0000
-
-    documentation update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20337 06827809-a52a-0410-b366-d66718629ded
-
-commit 0ec1c929167adb3d96b41eac24353496c3371b08
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 13:59:20 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20336 06827809-a52a-0410-b366-d66718629ded
-
-commit 1a014529c5c4a07c8407e955a7f1fe686cb7ee7c
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 13:50:06 2011 +0000
-
-    Fix incomplete uninstall configuration:
-    - broken removal of Microsoft DLL
-    - remove assorted new MIBs and header files
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20335 06827809-a52a-0410-b366-d66718629ded
-
-commit 1d091c5792826e39ec72b6bbfb5c7077a4a7d8eb
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 13:50:06 2011 +0000
-
-    Fix incomplete uninstall configuration:
-    - broken removal of Microsoft DLL
-    - remove assorted new MIBs and header files
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20335 06827809-a52a-0410-b366-d66718629ded
-
-commit dac102bd5b63a21181a8030adaf5ff96b9f826c3
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 13:50:06 2011 +0000
-
-    Fix incomplete uninstall configuration:
-    - broken removal of Microsoft DLL
-    - remove assorted new MIBs and header files
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20335 06827809-a52a-0410-b366-d66718629ded
-
-commit fc3b416794cf72922f8b2d636bbed377ca1a36ed
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 13:50:06 2011 +0000
-
-    Fix incomplete uninstall configuration:
-    - broken removal of Microsoft DLL
-    - remove assorted new MIBs and header files
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20335 06827809-a52a-0410-b366-d66718629ded
-
-commit f3b13725b7bd64ac948d970d9fe9652988ea4118
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 12:58:28 2011 +0000
-
-    Support Tar/GZip command paths containing spaces
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20334 06827809-a52a-0410-b366-d66718629ded
-
-commit 24ebfa48204f83846a71662db921d83c9730bd6a
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 12:58:28 2011 +0000
-
-    Support Tar/GZip command paths containing spaces
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20334 06827809-a52a-0410-b366-d66718629ded
-
-commit eec17876a653fd052ff62424a87958fa8d029442
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 12:57:07 2011 +0000
-
-    Report GZip command correctly
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20333 06827809-a52a-0410-b366-d66718629ded
-
-commit 2a4c2aa17c1aab19f7bd2c0cfc1211a714cc2a55
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri May 6 12:57:07 2011 +0000
-
-    Report GZip command correctly
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20333 06827809-a52a-0410-b366-d66718629ded
-
-commit 710434c4e7511e266b7eed5af532e23dc495c97a
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Thu May 5 21:48:24 2011 +0000
-
-    Fix for DragonFly BSD (does not define IP_SENDSRCADDR)
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20332 06827809-a52a-0410-b366-d66718629ded
-
-commit 7f7cd796e08d9421f0c907a97ec89636a9756a88
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Thu May 5 20:29:38 2011 +0000
-
-    Fix spelling of SO_RECVDSTADDR
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20331 06827809-a52a-0410-b366-d66718629ded
-
-commit c1fb3722914741fa998e6b7cee9ce8e07cd4700e
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 5 06:07:51 2011 +0000
-
-    CHANGES: MinGW: Made regression test output independent of the Net-SNMP variables defined in the Windows registry. Some tests that failed previously after the Net-SNMP binaries (MSVC build) had been installed do now pass.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20329 06827809-a52a-0410-b366-d66718629ded
-
-commit bc5258de2030228b369e13d2a4748c857a0a4b5e
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 5 06:07:51 2011 +0000
-
-    CHANGES: MinGW: Made regression test output independent of the Net-SNMP variables defined in the Windows registry. Some tests that failed previously after the Net-SNMP binaries (MSVC build) had been installed do now pass.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20329 06827809-a52a-0410-b366-d66718629ded
-
-commit 379cdf3a96cf27f47f411223b53f8005f0432a11
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu May 5 06:07:51 2011 +0000
-
-    CHANGES: MinGW: Made regression test output independent of the Net-SNMP variables defined in the Windows registry. Some tests that failed previously after the Net-SNMP binaries (MSVC build) had been installed do now pass.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20329 06827809-a52a-0410-b366-d66718629ded
-
-commit f67c150fb05ed38df44f8b526091d6e9b88d9f30
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue May 3 19:15:27 2011 +0000
-
-    CHANGES: snmplib: Guard netsnmp_udp_recvfrom() etc. declarations consistently.
-    CHANGES: Win32: Builds with Visual Studio 2010.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20279 06827809-a52a-0410-b366-d66718629ded
-
-commit eebea683a8026137a708e5cc4996dbaa41558090
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue May 3 18:55:02 2011 +0000
-
-    CHANGES: snmplib: Guard netsnmp_udp_recvfrom() etc. declarations consistently.
-    CHANGES: Win32: Builds with Visual Studio 2010.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20278 06827809-a52a-0410-b366-d66718629ded
-
-commit 0981e600a62d524bba0fc8784435d76d275d7f33
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue May 3 15:29:46 2011 +0000
-
-    CHANGES: Win32: PATCH: 3293842: Eliminate registry argument limit of 127 characters (this limitation was reported by Sylvain Dery).
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20277 06827809-a52a-0410-b366-d66718629ded
-
-commit f3ea341fb1944dc6a6396add72ac39f5794a2d69
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue May 3 15:29:46 2011 +0000
-
-    CHANGES: Win32: PATCH: 3293842: Eliminate registry argument limit of 127 characters (this limitation was reported by Sylvain Dery).
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20277 06827809-a52a-0410-b366-d66718629ded
-
-commit d1761537b11b70ba9f5c55d68d03b14bfe329925
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue May 3 15:29:46 2011 +0000
-
-    CHANGES: Win32: PATCH: 3293842: Eliminate registry argument limit of 127 characters (this limitation was reported by Sylvain Dery).
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20277 06827809-a52a-0410-b366-d66718629ded
-
-commit a2900c45d1d927e1d891800a1422a922b376d85c
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Mon May 2 11:22:34 2011 +0000
-
-    CHANGES: Win32: header file <net-snmp/net-snmp-config.h> can now be used in the MinGW environment.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20276 06827809-a52a-0410-b366-d66718629ded
-
-commit 4205f53829a725b5b5ee835d7918a7835b26adc6
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Mon May 2 11:22:34 2011 +0000
-
-    CHANGES: Win32: header file <net-snmp/net-snmp-config.h> can now be used in the MinGW environment.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20276 06827809-a52a-0410-b366-d66718629ded
-
-commit 0fd7b060699b9047fcac9a15d6c4de1c0944c5c0
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Mon May 2 11:22:34 2011 +0000
-
-    CHANGES: Win32: header file <net-snmp/net-snmp-config.h> can now be used in the MinGW environment.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20276 06827809-a52a-0410-b366-d66718629ded
-
-commit 2e00914d408b0ef9a45d2b317b03329e81456586
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Mon May 2 11:13:23 2011 +0000
-
-    Win32 DLL build fixes.
-    (Backported r20184 from trunk.)
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20275 06827809-a52a-0410-b366-d66718629ded
-
-commit 259c224843e6dd713ae677688d417b0078b0a370
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Mon May 2 11:13:23 2011 +0000
-
-    Win32 DLL build fixes.
-    (Backported r20184 from trunk.)
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20275 06827809-a52a-0410-b366-d66718629ded
-
-commit e7864207f888230de679acfda1fd9b657d792610
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri Apr 29 11:17:11 2011 +0000
-
-    Spelling and grammar fixes for the source code comments in snmplib/winservice.c.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20274 06827809-a52a-0410-b366-d66718629ded
-
-commit e7b33f43d0c3125162abbd264d7e1fa3fa406302
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri Apr 29 11:17:11 2011 +0000
-
-    Spelling and grammar fixes for the source code comments in snmplib/winservice.c.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20274 06827809-a52a-0410-b366-d66718629ded
-
-commit c17622ee7ee806f02e4ea99d64cc7eabcd4608d4
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri Apr 29 11:17:11 2011 +0000
-
-    Spelling and grammar fixes for the source code comments in snmplib/winservice.c.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20274 06827809-a52a-0410-b366-d66718629ded
-
-commit 311ade23de4a0014fe0fc23cf83d077cd663ad05
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Apr 27 21:16:23 2011 +0000
-
-    Don't free the ifXTable row found on load failure as we don't own it
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20241 06827809-a52a-0410-b366-d66718629ded
-
-commit ede24689461b75c441a36a384a6c559723dde2d3
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Apr 27 21:16:23 2011 +0000
-
-    Don't free the ifXTable row found on load failure as we don't own it
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20241 06827809-a52a-0410-b366-d66718629ded
-
-commit 1af08e1d608b7bd13361ead5c42f4c47a283b599
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Apr 27 21:16:23 2011 +0000
-
-    Don't free the ifXTable row found on load failure as we don't own it
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20241 06827809-a52a-0410-b366-d66718629ded
-
-commit 6373ef09add5b2a2cd1d8e136c674e86910b90a5
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Apr 27 21:16:23 2011 +0000
-
-    Don't free the ifXTable row found on load failure as we don't own it
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20241 06827809-a52a-0410-b366-d66718629ded
-
-commit 40abd8e5ab11a07c496ab25f1ad54cc3e58327a4
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Apr 17 20:56:48 2011 +0000
+commit 85f893e2b605e67f9bd0443c74e2ed269aa68564
+Author: Niki Denev <niki_d@users.sourceforge.net>
+Date:   Thu Nov 17 22:42:32 2011 +0100
 
     CHANGES: snmpd: PATCHES: 3175640: Use IP_RECVDSTADDR sockopt where available (*BSD)
     
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20183 06827809-a52a-0410-b366-d66718629ded
+    This hunk fell of when the rest of the patch was merged.
 
-commit d2f6f55136b3983fab1640c031d5e7bf32a48535
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Apr 17 20:56:48 2011 +0000
+commit 5c913e54656ae0096b1feb6da98b5fc9ca81f276
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:33:07 2011 +0100
+
+    Define the full NetBSD hierarchy downwards
+
+commit b881841bd0493dd71d63259bdded449b06f02c32
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:30:33 2011 +0100
+
+    Fix size_t/int mismatches
+
+commit ca294cf75bbc8e90dbf44ee40478935e91db1487
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:18:03 2011 +0100
+
+    Remove unused variables
+
+commit cd32c2dff06b9b452cc18d552d2f2234092c829c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:17:09 2011 +0100
+
+    Fix format warning
+
+commit 883136c2b2fa0739f437a8cfb6614accc76e268e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:15:58 2011 +0100
+
+    More needs for NETSNMP_PRIo format specifier
+
+commit b8084a7ccc909b6d6db7c0e8e596d78671f5678b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:14:26 2011 +0100
+
+    Fix using char as array index (ctype.h)
+
+commit 84529e6320a89d97f1314aebad806255d2a1b18c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:00:57 2011 +0100
+
+    Fix missing format for FreeBSD 4
+
+commit 4bd0352955a2551bfe02308dd134b9128c98b9e9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 22:59:36 2011 +0100
+
+    Fix paranthesis problem
+
+commit fe6269b1900cf44dc27a199a761d15a01c3f3092
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 22:58:34 2011 +0100
+
+    Fix size_t/int mismatches
+
+commit a4db9f9fc13d21ecff488eb410376edda6c28232
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 13:43:34 2011 +0100
+
+    Remove unused variables
+
+commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 13:37:49 2011 +0100
+
+    Fix format specifiers to avoid warnings
+
+commit 25cfc1962ae576ccb1558da1e3ef8b6c17f63c16
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 11:27:53 2011 +0100
+
+    Really up-to-date mibs
+
+commit 0e86c781f3989bf022c8993a118617b74a75420c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:17:19 2011 +0100
+
+    memory_linux: get Shmem from /proc/meminfo for 2.6 (or newer) kernels
+
+commit bf264d15ded7acbbf2e3871b98fd1fcef43d9ec3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:16:16 2011 +0100
+
+    memory_linux: close sockets in error situations
+
+commit 57ff8a40bae5d9bcad16089142a9cf328c9fa1f5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:14:57 2011 +0100
+
+    disman/ping, disman/traceroute: Close sockets in error situations
+
+commit 8a2502a15c3217b95939a3c836167d230ac35f02
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:13:53 2011 +0100
+
+    Up-to-date list of RFCs wit mibs
+
+commit dcdd702111d8da5f53804cfcf0dfdad731468bde
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Nov 15 10:57:34 2011 +0000
+
+    Don't try to install an empty list of man pages (MAN3)
+
+commit ba619804e5978a8df754844efcca52b69b5015fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 13:34:20 2011 +0100
+
+    MinGW: Make sure that the backslashes in the pskill message are displayed.
+
+commit 923eecc507f75043b60c5e68053a4f396ab0b0d2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 12:36:38 2011 +0100
+
+    Compiler warning fix for systems where uint64_t = unsigned long (e.g. RHEL 6.1/x86_64)
+
+commit 434bfc1f7457550b6f87d5bcd511276b270b5964
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Nov 14 11:22:53 2011 +0100
+
+    CHANGES: snmpd: from Martin Wilck: fixed snmpd crashing with 'select: bad file descriptor'.
+    
+    On 32-bit systems, snmpd dies with aforementioned message when using file descriptions > 32, e.g. when having >32 AgentX subagents.
+
+commit ed65eca6e7f9cfa7380a78d56c01ed314745b169
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 19:01:21 2011 +0100
+
+    FreeBSD-9: Fix for const'ifyed nlist arguments
+
+commit eaca7983e3655ab696fcc4461ca0cedbac6ce69a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 19:00:12 2011 +0100
+
+    NetBSD-6: One more instance of timespec replacing timeval
+
+commit 8ad6c53fdec5adeae4e52f1751ecec4a345bab05
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 18:59:01 2011 +0100
+
+    Fix buig #3436527: arp_netlink: fix dying reload of cache
+
+commit 378ffed03ba79a8346d6c62781e2ddf5ce92a478
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 18:55:43 2011 +0100
+
+    Fix bug #3436528: swinst_pkginfo: recover from NULL return from opendir
+
+commit d7ad8f5f9f3f67f16f65c2515d11e194d2cdd12c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 10 14:04:41 2011 +0100
+
+    CHANGES: Cygwin: Make date_n_time() produce time zone information
+
+commit ba35c50b2f459bd9c11ed59cc7d1b16215644fa3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 10 14:17:04 2011 +0100
+
+    Replace AC_TRY_LINK() by AC_LINK_IFELSE()
+    
+    Note: these changes do not affect the generated configure script.
+
+commit f615bf24f5d0f23ce9301da556184d6460740456
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 9 20:32:49 2011 +0100
+
+    Fis Bug #3434824: SIGSEGV when reading disk directive after SIGHUP
+
+commit a94a179d9340f51fa7c23431630bc0ffd6d759e8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 9 20:30:51 2011 +0100
+
+    Fix bug #3433616: dont treat DateAndTime as a string
+
+commit b29e4164531d258fe34a6fe2b9e1ec60c56f9544
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Nov 7 01:25:57 2011 +0100
+
+    CHANGES: testing: Remove unused variable
+
+commit e221e65fdc1c68f1968651717dcc9ccfb6414783
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 3 15:05:00 2011 +0100
+
+    Fix warnings about converting sockaddr_in * into sockaddr *.
+    
+    This is a follow-up for commit a0af385.
+
+commit 2e7e9eda0b0d62a7645a9a8f70ef3fb6f3dd6941
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 3 11:17:48 2011 +0100
+
+    Fix uninitialized variable warnings.
+
+commit 3462ebcdd0b7c298cb15c3099736f4f952257846
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 28 16:07:15 2011 +0200
+
+    Remove those superfluous parentheses that trigger a clang warning.
+
+commit 3e5fedd3e7d1ef31683604bf73dc56e944cad349
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Nov 3 09:45:27 2011 +0100
+
+    CHANGES: snmpd: fixed UCD-SNMP-MIB::systemStats after 30 days of uptime.
+    
+    After 30 days, values from /proc/stat (on Linux) can get bigger than 32bits and snmpd calculations might render counters like ssCpuUser negative or zero, while the real value is higher. Therefore the counters should be tracked as the largest integer available.
+
+commit 0fc8221b24988c4ae6180ed42b86b9852fd586ad
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 2 22:59:08 2011 +0100
+
+    dskIndex was off by one
+
+commit a5b28829e64d5f3b87e4b9b1ef8cc204f33a61b7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 2 21:25:07 2011 +0100
+
+    Solaris needs $AWK to get a usable nawk
+
+commit 2801a2139f27021e1ab15e362e2d3d624ffaa494
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 31 22:55:53 2011 +0100
+
+    Patch #3406364: Fix unstable data for NetBSD.
+
+commit 821a58d112d7ac495149e262d704412ba2800438
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 31 22:43:52 2011 +0100
+
+    Fix ipv6 statistics looping too far when scanning interfaces.
+    Fix TCP session table repeating data from first entry for all.
+
+commit 349591d03e17a55b43eacc6a687b02fd8d4e9528
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Oct 31 08:59:37 2011 +0100
+
+    CHANGES: perl: Make it possible to build perl support without support for opaque types.
+
+commit 1ec7110e72bce1561f746517459d6f043016b60e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 30 19:05:30 2011 +0100
+
+    CHANGES: testing: Make the asn1 test pass even if support for opaque types are removed.
+
+commit 6d26918af55aa3662a720542de77bbf39b0a3e91
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 29 08:34:33 2011 +0200
+
+    CHANGES: snmpd: Disable the support for integer64 in pass scripts if compiling without opaque-special-types.
+
+commit 29bf69d70424f359d9c87f07a964a099415649a5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 13:02:25 2011 +0200
+
+    CHANGES: snmptrapd_sql: Avoid that a linker error is triggered on systems where my_progname is missing in libmysqlclient (e.g. Fedora 15 and 16).
+    
+    This is a backport of commit 9f653f7.
+
+commit 2cc9504b9bb8625b94be6cda7e60993d059cd928
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:01:23 2011 +0200
+
+    CHANGES: snmplib: BUG: 3428506: Fix netsnmp_gethostbyaddr()
+    
+    This patch should fix the regressions introduced by commit 85d96c4 (May 13, 2011).
+
+commit 9b427b353f1ceb8fe87e6fc8ed3b6cfab3ce7f20
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 27 08:20:00 2011 +0200
+
+    MinGW: Avoid confusion between MinGW's kill.exe and the SysInternals pskill.exe
+
+commit 2c45f92cfcb5b05e049226a5a7883a0b106011ae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 10:42:29 2011 +0200
+
+    Fix compiler warnings about passing a const pointer to a function accepting a non-const pointer.
+
+commit 275d23edfdebe0577b08421e4c6c936ae39b7fdc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:33:09 2011 +0200
+
+    Fix compiler warnings about set-but-not-used variables
+
+commit 4495e17c078ac6997a9c7fa1a88db0644e919491
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:32:46 2011 +0200
+
+    Fix compiler warnings about casting away const
+
+commit 13952f6bee9f408867ab6d2fdfdde4f284074957
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Oct 26 14:05:16 2011 +0200
+
+    CHANGES: snmplib: from Siddhesh Poyarekar: properly clean up old requests in a subagent when we reconnect to master.
+    
+    An snmp subagent linked against net-snmp-libs may crash if it handles a
+    response which has magic referring to an older disconnected main session. This
+    may happen when the subagent
+    attempts to clean up old requests on reconnection of the disconnected master
+    session.
+
+commit ae052472b22720d08369e85127db214245df2e3f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Oct 25 16:15:17 2011 +0200
+
+    CHANGES: perl: fixed segmentation fault when handler registration fails.
+    
+    When netsnmp_register_handler fails, it frees its reginfo -> nsahr_DESTROY (and any other function) must not dereference it.
+
+commit c199bf91b6239f26b2aab34e8575e0f0df9cde9b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Oct 24 14:25:28 2011 +0200
+
+    CHANGES: snmpd: xfs, jfs and vxfs filesystems are now recognized in hrStorageTable
+
+commit 747fdc71e64d09e080928ebbb4d04cbde3906799
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Oct 5 15:57:59 2011 +0200
+
+    CHANGES: snmpd: Lowered severity of 'error finding row index in _ifXTable_container_row_restore' message.
+    
+    The message is shows up when snmpd is started and there is different set of network interfaces than it was when snmpd wast last stopped. This is common on ppp-servers or virtual hosts.
+
+commit 250f698e59eab9f1ffd332ff59fdb72ea0df06ff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 23 08:51:23 2011 +0200
+
+    CHANGES: building: Make the transport configuration code work again
+    
+    Previously the transport inheritance processing code ran with
+    NETSNMP_FEATURE_CHECKING set. In this mode the file net-snmp/feature-details.h
+    is requiered. That file is created during the first make run, and that happens
+    after configure is run.
+    Change this to undefine NETSNMP_MINIMAL_CODE, effectively turning off feature
+    support during transport configuration in order to make it work at all.
+
+commit 6ef6907642247c663b9b8964b9fd44a211dbcaa7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 20 20:30:54 2011 +0200
+
+    CHANGES: snmpd: BUG: 3408398: Fix a memory leak in agent/mibgroup/hardware/fsys.
+    
+    This memory leak was introduced via commit
+    9bf3d96d96a8ecd4a5fc35c326dc937467002b6c: Initial HAL
+    implementation of FileSystem information (March 7, 2008).
+
+commit cf82b894b2217c26edc6f1356351c932415604e2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Oct 15 14:45:08 2011 +0200
+
+    CHANGES: snmplib: BUG: 3423915: Change default number of retries back from 0 to 5
+    
+    This patch fixes a bug introduced via commit 6cac050 (May 5, 2011,
+    added support for specifying the default number of retries in
+    snmpd.conf).
+
+commit c11adaa12915abfee629bb6c026c21f2185b216e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 17 10:24:46 2011 +0200
+
+    CHANGES: Win32: Avoid that compiling the header file <net-snmp/net-snmp-config.h> with the MinGW gcc compiler triggers warnings about "pragma comment".
+
+commit b17a72a793483aee4a5bb2f2e2c7f4fd869817e6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 17 10:22:20 2011 +0200
+
+    CHANGES: Win32: Avoid that the PACKAGE_* macros defined in <net-snmp/net-snmp-config.h> cause trouble when including this header in a package that uses the GNU autotools.
+
+commit 664d3ae107d754051b8c42279d459aa57a1be1c3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 16:47:16 2011 +0200
+
+    MinGW, hw_fsys: Use proper format specifiers in a debug statement.
+    
+    This patch fixes an issue introduced in commit 76ff25d.
+
+commit 211dcb49306561e35ba3c213be7cfa257b40a8e5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 15:52:43 2011 +0200
+
+    Avoid that gcc 4.6 complains about set but not used variables
+
+commit 9f653f73e5aa70f0bef1174632e95594f87f669f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 13:02:25 2011 +0200
+
+    CHANGES: snmptrapd_sql: Avoid that a linker error is triggered on systems where my_progname is missing in libmysqlclient (e.g. Fedora 15 and 16).
+
+commit 4c83b9229a7454f34f6ff75f69e67e4030c419b5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 15:58:45 2011 +0200
+
+    CHANGES: snmplib: Set the rpath for libperl.so in libnetsnmpmibs.so such that the dynamic linker can find libperl.so without requiring the user to modify the dynamic linker settings.
+    
+    This change in agent/Makefile.in is necessary on the 5.5 branch and
+    later but not on the 5.4 branch. That is because the 5.4 branch uses
+    an older version of libtool that propagates the rpath of dependent
+    libraries. This is called inter-library dependency tracking in the
+    libtool manual. This functionality is present in libtool version 1
+    but not in libtool version 2. For more background information about
+    dynamic libraries and rpaths, see also the document with the title
+    "RpathIssue" on the Debian wiki (http://wiki.debian.org/RpathIssue).
+
+commit 8925c912d2639752a84bcffeef1b70a81026449b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:21:28 2011 +0200
+
+    CHANGES: agent: HOST-RESOURCES-MIB: Add missing brace in a debug statement
+
+commit 76ff25d9bf97579e7213102065fd5096f049a4c5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:13:18 2011 +0200
+
+    CHANGES: snmpd: HOST-RESOURCES-MIB::hrStorageTable: fix bug in handling large filesystems, where large means above 8 TB (= 2**31 * 4096 bytes).
+    
+    This patch fixes a bug introduced in commit
+    71d8293f387a6cd66bb0dbb13c0f50174d2e678b.
+    For the original bug report, see also
+    https://sourceforge.net/tracker/?func=detail&atid=112694&aid=3419825&group_id=12694.
+
+commit 866033db9904ffb1203f283f838092e4cf68de6b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Oct 6 07:33:27 2011 +0200
+
+    CHANGES: snmpd: Remove spurious #endif that seems to be the result of a mismerge.
+
+commit 20f4f3267ee20d55705b7a43789879c103f96620
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Oct 6 00:08:59 2011 +0200
+
+    CHANGES: building: Add missing end comments to feature ifndefs.
+
+commit e5de2cc57bf304f3320cad0034d2ea2d8aedc436
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 09:15:10 2011 +0200
+
+    CHANGES: agent: Log a more detailed error message if embedded perl initialization fails
+
+commit 5eef9990de28f63111e6c093be0f3c7ae2d513a1
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 08:45:49 2011 +0200
+
+    CHANGES: perl: Add agent::uptime()
+
+commit 6810ed42f9bc560750d6dbfb7e50b6e2ac11899c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 11:01:23 2011 +0200
+
+    CHANGES: Cywin: agent: Implement get_uptime() such that querying HOST-RESOURCES-MIB::hrSystemUptime returns a non-zero value.
+
+commit 97172b311d20f4441c7a7e90092b59c1e0da99f7
+Author: Thomas Jarosch <tjarosch@users.sourceforge.net>
+Date:   Wed Oct 5 08:46:39 2011 +0200
+
+    CHANGES: PATCH: 3418649: HOST-RESOURCES-MIB: Use pclose() instead of fclose() to close a pipe.
+
+commit 6591937adb85000c27069c4be84cf4688838ebcd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 16:18:03 2011 +0200
+
+    CHANGES: building: Add dependencies on @FEATURETARGS@ to make the subtarget work as well.
+
+commit b9c8012ec035bc084f175876fecc375195f9be81
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 14:02:58 2011 +0200
+
+    CHANGES: building: Add target to build agentxtrap from the toplevel
+
+commit 995647c0cfe00412262cc5797bdfae9d00b70c76
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 15:44:36 2011 +0200
+
+    CHANGES: building: Remove the use of -L flags for internal libraries as it confuses libtool.
+
+commit 93dc1235a0db58ffd29617cff00dc11263780202
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 11:31:46 2011 +0200
+
+    CHANGES: building: Make make apps work again
+    
+    apps include snmptrapd and that require the agent libraries as well.
+
+commit ba41488ed44cd23c25963d4fc56c476853b2ab59
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 11:29:33 2011 +0200
+
+    CHANGES: building: When you say make libs you expect all the libs to be built.
+    
+    This is demonstrated by the snmptrapd target at the top level which obviously
+    expected both libs to be built and so failed to compile before this patch.
+
+commit 3057c73e093473be46254bcdfb4ca788e432d1b8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Sep 30 07:32:52 2008 +0000
+
+    NEWS: building: PATCH: 2091156: correctly declare dependencies in Makefile.
+    'make -j <N>' should work now.
+    
+    Backport this to V5-4 as it is needed for correct operation in the single
+    threaded case of make miblib as well.
+
+commit 6eae340fa2a64086592982cc52735bc01487d978
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 1 19:33:50 2011 +0200
+
+    CHANGES: building: Silence libbsd 0.3.0 nagging
+    
+    If you have libbsd 0.3.0 installed then their version of nlist.h warns and
+    tries to make you include bsd/nlist.h instead. The problem is that we don't
+    need that compatibility library as we know how to do it ourself so it becomes
+    pure nagging. This patch adds a define that changes the warning into an
+    error and then figures out that there is no usable nlist.h and ignores it
+    for the future.
+
+commit ac38cb531bee50edc8d4c834f3005f5992c771d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 19:03:02 2011 +0200
+
+    CHANGES: perl: Enable sending SNMPv2 traps with an empty varbind list
+
+commit a75de2971527ac2d2e812024298602bb2412f337
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 10:41:44 2011 +0200
+
+    perl/SNMP/SNMP.xs: Update emacs modeline
+
+commit 848f6300efe38492fb454451a030f0b7e6ff8c9d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 10:41:44 2011 +0200
+
+    perl/SNMP/SNMP.xs: Update emacs modeline
+
+commit c1374473ecd8ec9e0310013861ee18c83e5d6c5b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Sep 30 03:29:36 2011 +0200
+
+    CHANGES: testing: Protect the use of $OSTYPE to ensure that 'test' get enough parameters.
+
+commit 7e97a20633a57eae39d015b23339463c32f5f848
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:22:08 2011 +0200
+
+    CHANGES: testing: Convert snmplib/test_binary_array.c into two unit tests
+
+commit 9c0dd98176457342fffaa5e74d802e3145ed70e7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 08:56:17 2011 +0200
+
+    CHANGES: testing: Add unit test for netsnmp_register_old_api()
+
+commit 5fd26e4fa3e000ea9c81c38ab975b7946efe2157
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 28 17:49:55 2011 +0200
+
+    CHANGES: agent: Avoid that netsnmp_register_old_api() failure triggers a double free.
+    
+    Fixes a regression introduced via commit
+    aa4d47c2609e52818c9cdf1a8e2205de9a335a0a (svn r19515).
+
+commit d2252d016693807326f72b66123649dea00af916
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:20:08 2011 +0200
+
+    CHANGES: testing: Require a semicolon after OK(), OKF() and PLAN()
+    
+    Also, let OKF() emit a single line of output such that all output it
+    produces is visible in the output of "make test".
+
+commit 1421924b4852142192c5bb9e93ddbfed69e908fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 21 22:20:08 2011 +0200
+
+    CHANGES: snmplib: Avoid waiting indefinitely if a session has timeout zero
+
+commit 5f27f4f74ae2bd5baf503cf306b4f9a2841a57cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:32:03 2011 +0200
+
+    CHANGES: MinGW: testing: Fix a race condition in the test runner
+
+commit 09703958cc5ea845929ae19ef9e0804aecaa512e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 12:42:41 2011 +0200
+
+    CHANGES: testing: Avoid false negative for T114agentxagentxtrap_simple caused by the test result being present in the hex dump ("mostly_harmless")
+
+commit 439300279f6f31438638d2f222c24c3c841fa6ab
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 11:16:32 2011 +0200
+
+    CHANGES: building: Micro-optimize agent module dependency analysis
+    
+    This makes the agent module dependency analysis carried out by the
+    configure script slightly faster, especially on those systems where
+    fork() is expensive (Cygwin).
+
+commit bbc680004a1376038dfdc4172dbe7b9e311fba68
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Sep 26 10:14:45 2011 +0200
+
+    CHANGES: MinGW: testing: Make test T130snmpv1vacmget_simple pass
+
+commit 70b06cf789208eaa890bfbcd638bdb775f817054
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:50:57 2011 +0000
+
+    CHANGES: Windows: testing: perl: Fix an incorrect message printed while running the Perl module regression tests
+
+commit 70bcc8de2d0fc92bbb8481823630fab9bc87af75
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 16 16:14:24 2011 +0200
+
+    CHANGES: MinGW: testing: Obtain the MSYS path from the environment
+
+commit 626275e2d1acafae7144a33ed301a40f596b37b0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 14 13:14:17 2011 +0200
+
+    CHANGES: Windows: Remove superfluous link libraries from project files (*.dsp)
+
+commit 38fc3caa9eeb3800254b4f6ad6f8f4764c0f83db
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:34:08 2011 +0200
+
+    CHANGES: snmplib: Make netsnmp_callback_accept() return -1 (failure) instead of 0 (STDIN_FILENO)
+
+commit 6c8c7e8aca8fc2eeb52010ae3e9fee6dd83ef780
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 13 09:58:26 2011 +0200
+
+    CHANGES: snmplib: Remove obsolete snmp_get_fd_for_session() declaration
+
+commit 0860d11fd8fc5dbdaaae2261fae2c07fb9c2c82d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:54:55 2011 +0200
+
+    CHANGES: Windows: MSVC: Avoid that the typedefs in <net-snmp/net-snmp-config.h> conflict with those in <stdint.h> from the msinttypes project
+
+commit f8a036f63ff68f083436120e0abd478b692a2f61
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:21:06 2011 +0200
+
+    CHANGES: Windows: MSVC: When linking with OpenSSL, link with user32.lib too
+
+commit 836a23e10ca810c3899902d32587616a9d1203df
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jul 14 18:38:13 2011 +0200
+
+    CHANGES: Windows: MSVC: Link with proper libeay32 library
+
+commit 7b07fd6cdef49ec7bb04b166e2a4fbb37b582840
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 11:10:38 2011 +0200
+
+    CHANGES: testing: Remove an incorrect comment from simple_eval_tools.sh
+
+commit 98f6d29d981ff8e607600c63dadb240535629807
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:49:03 2011 +0200
+
+    CHANGES: testing: Make ISDEFINED() check for an exact match instead of a prefix match
+
+commit 52cd0031a31f692f13263a94c335d06be1454803
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
+
+    CHANGES: MinGW: testing: Make those regression tests pass for which SNMPCONFPATH and/or SNMP_PERSISTENT_DIR matter
+
+commit f5cd89bd3356dd74e1556c0b50966a643f192085
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
+
+    CHANGES: MinGW: testing: Fix a race condition in the test framework
+
+commit deedd52c834a6448852a06785536e13865969694
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:58 2011 +0200
+
+    CHANGES: MinGW: Support the directory structure of recent Shining Light OpenSSL binary distributions
+
+commit d55bd4e0549f03b6fd32562c2aa7fe39272a9ef7
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 28 06:55:19 2011 -0700
+
+    remove the v5.7 from the frozen list
+
+commit ac2aed3c94bb2ebb473af0a1e20f0561ad629956
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 28 06:55:11 2011 -0700
+
+    remove the v5.7 from the frozen list
+
+commit 46eac02e9a27bf4f3068e795cab891f05a848870
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Sep 26 21:49:27 2011 +0200
+
+    CHANGES: snmpd: Avoid that snmpd crashes if started on a system with another OpenSSL library version than the one it has been built with.
+	
+----------------------------------------------------------------------
+
+Changes: V5.7.1 -> V5.7.2.pre2
+
+commit 810185ae0b0cd2ad4d424a1ba775ef5ceaf50f03
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 09:24:19 2012 -0700
+
+    make depend for 5.7.2.pre1
+
+commit 6271471e01282f3675724eaf1358ceb0e95ddd4e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:40 2012 -0700
+
+    Version number update: 5.7.2.pre1
+
+commit fcb782aa8893134c7414a926d9268594f725b915
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:18 2012 -0700
+
+    version update for 5.7.2.pre1
+
+commit e3bcd87c72fcea7706e868b5ace75296093f7497
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 14:09:42 2012 +0100
+
+    Fix dist/release format
+
+commit d813ce2eeefc68229cfcaf20603244cdd6d09d3c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 14:07:52 2012 +0100
+
+    Fix dist/release format
+
+commit fa7bd581e3783685db39c9b4eaf847be5ac86fd3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:53:10 2012 +0100
+
+    version update for 5.6.2.rc2
+
+commit 0739e2382d31146aca3205244cf70788b40a428d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:51:45 2012 +0100
+
+    version update for 5.6.2.rc2
+
+commit d9a15445aa74f5316bfc711c1558467872c2958c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:50:12 2012 +0100
+
+    make depend for 5.6.2.rc2
+
+commit bcabd2c9542dbebd1d319b4494413bdcca06614e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:38 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit b473898c0c5ac9eb47c7c05a3f745e4ff2a76aaa
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:28 2012 +0100
+
+    Version number update: 5.6.2.rc2
+
+commit 131429e7062fbaa65b82affed1fb92df2c0cc813
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:38 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit 1c8110b33b8105ca6190945a35fe7ae903252d68
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:21:38 2012 +0100
+
+    Avoid perl versioning problems when setting up the build environment
+
+commit 508ece16e6f6f49562da204792ae0644269994d1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:20:58 2012 +0100
+
+    Fix handling of dist/release merge
+
+commit 5b8a8547b1a47d2f5b207f48f2496e4241d902c6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:10:48 2012 +0100
+
+    version update for 5.5.2.rc2
+
+commit 6c32914bf28d695df349dca269e488b501700316
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:07:22 2012 +0100
+
+    version update for 5.5.2.rc2
+
+commit 9f5a82a5afdbb3daeb2fd437a309f0b8d357cf4b
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:05:39 2012 +0100
+
+    make depend for 5.5.2.rc2
+
+commit 39203f29477a3bedf012d41135d8abd6bcad08b1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:54:27 2012 +0100
+
+    documentation update for 5.5.2.rc2
+
+commit 17e79ef0fad79609c5ba2feb4e8b9eb5d7db6886
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:46:11 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit 5821be5bbb4018ded282fbbbd4830cf2eeadd9e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:45:59 2012 +0100
+
+    Version number update: 5.5.2.rc2
+
+commit 3f2111de6733a04e12d910d306a34d671e008762
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:46:11 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit ccf8ff2c4db60122d41302e4aeb700e0b868105f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 28 10:18:43 2012 +0100
+
+    CHANGES: snmplib: PATCHES: 3526599: Don't hang on retried failing SNMPv3 responses
+
+commit c81c8483990911f47435d3005255d91c37ab92b2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 14:09:26 2012 +0200
+
+    Fix BSD that downnot always like IP_SENDSRCADDR - so retry without
+
+commit ffce1f2dc2f8b31abd01f93b26da78f4726a1e64
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 14:03:58 2012 +0200
+
+    Fix OS missing MSG_DONTWAIT (AIX). Backport from 5.7
+
+commit c575216850185b56454dad0253e3164979e13513
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 13:56:01 2012 +0200
+
+    Fix missing include. Fixes SIGSEGV on FreeBSD9 x64
+
+commit 5805878749c08062debf0a9d798d08fb916caa2d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun May 27 06:23:19 2012 +0200
+
+    CHANGES: snmpd: Add missing debug tag
+
+commit d1a42bbcc7b14730c9a6d99c4f047097843a549b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri May 25 09:02:27 2012 +0200
+
+    CHANGES: building: Run libtool --mode=finish on the right directory
+
+commit 1fbf33711a19eac9739ad23f6f6251eacc41f1c4
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue May 22 14:54:45 2012 +0100
+
+    CHANGES: Linux: PATCH: 3525998: Don't use an uninitialised value in error message
+
+commit 32c1686b67dc85c4a189576363065609dfed5e61
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue May 22 14:52:56 2012 +0100
+
+    Attempt to mark release-candidate branches as such.
+    Omit final-release-only steps when preparing preN/rcN releases
+    (Relies on a tweak to the Makerelease perl modules)
+
+commit 4c5633f1603e4bd03ed05c37d782ec8911759c47
+Author: Robert Story <rstory@freesnmp.com>
+Date:   Mon May 14 11:40:06 2012 -0400
+
+    NEWS: snmp: BUG: 3526549: CVE-2012-2141 Array index error leading to crash
+
+commit 65dd83c2255ee58edbf0e25863e55b58a4113679
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:30:42 2012 +0100
+
+    version update for 5.6.2.rc1
+
+commit ac4bc65e2909f3bd85f32f04b504fa65d2f64553
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:28:06 2012 +0100
+
+    make depend for 5.6.2.rc1
+
+commit b74994864195119edb6e19c85147fac00bcb93e3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:13:46 2012 +0100
+
+    Version number update: 5.6.2.rc1
+
+commit 91350092c46e66d06d74143f4816473db4d25160
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 19:56:33 2012 +0100
+
+    Mark version-specific changes _before_ pushing to central repository
+
+commit 7241accd70b82d0fcd44d5a5238b2ee9445900db
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:53:17 2012 +0100
+
+    version update for 5.5.2.rc1
+
+commit 7c796a15a1d1bb85feea940bd4e3516877920919
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:50:49 2012 +0100
+
+    version update for 5.5.2.rc1
+
+commit 07e268bfb64b0ec645b3f7e87266984f9217cf12
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:44:37 2012 +0100
+
+    make depend for 5.5.2.rc1
+
+commit 16eaaf6c3ba14596ca9efaf4b114f1b709f42b68
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:29:03 2012 +0100
+
+    documentation update for 5.5.2.rc1
+
+commit c729469ef12154930cf9d15967e16186fb445f30
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:27:20 2012 +0100
+
+    Version number update: 5.5.2.rc1
+
+commit 142571d3cea08f0c072d24c1d39a43c7446f8ce7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:01:03 2012 +0100
+
+    When building a new release, the installed version of the perl
+    modules may well be different to the version being built.
+    That should not break the build.
+
+commit eba86b6f7aff261ee0e61334df70de7156e5c3cb
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:01:03 2012 +0100
+
+    When building a new release, the installed version of the perl
+    modules may well be different to the version being built.
+    That should not break the build.
+
+commit 5c0f64d6db2b593f7cc0ed2d4f55b7c592b774a8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:25:15 2012 +0200
+
+    Only output cpu warnings once.
+
+commit ee58e4827b9fa16e6635ca003e8a4f11dcb5fb7a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:17:42 2012 +0200
+
+    Fix speling in errormessage.
+
+commit 03f485df22f20e149cfae94c57cb82feecb5d74b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:12:11 2012 +0200
+
+    Not all Linuxes use rpm (debian/ubuntu comes to mind)
+
+commit 930838224f781696bd35225f22569347416f1b16
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:10:15 2012 +0200
+
+    Check need for -lm to use round/exp
+
+commit a0609cf1f3a6917d263725732248cd937a45ad94
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 08:40:44 2012 +0200
+
+    Remove limitation on configuration line length.
+
+commit 305973338a63ae54c5e02a8626fbe9a8064dcb7e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:32:19 2012 +0200
+
+    Reduce variable scopes.
+
+commit ccab4e9d3ed424c39d0dc27be63fa76c7461ea81
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:15:22 2012 +0200
+
+    Internalize the name and line number of the curret configuration file
+
+commit cf874ad7b9daf4fcc0d46cdd034474b478005341
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Apr 6 21:47:28 2012 +0200
+
+    Replace #if (A) B #else B #endif with B.
+
+commit ef9ea641bc290eec50685b60519b31bee8b14a69
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:04:06 2012 +0100
+
+    version update for 5.6.2.pre2
+
+commit 35aba1959de119f1fb89203c37109aa6f0e21c57
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:00:40 2012 +0100
+
+    version update for 5.6.2.pre2
+
+commit e41fbaff18ac9095cf4a739a06ec39a1a6ccfdc1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 20:35:35 2012 +0100
+
+    Version number update: 5.6.2.pre2
+
+commit 137fe582d6cc5611430dab46ef144efd84cfc803
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Apr 6 20:46:56 2012 +0100
+
+    Revert commit 1f4a829b18275e4956ca91e5ec370df015f06133
+    (snmp_store_needed() API is not available in 5.[45].x)
+
+commit 2b7e64288c01a8a062026c521ca31a5e885f30cc
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:12:12 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 7e95d80b698051259645c074a53ffd264a6fa916
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:06:56 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 1a9b7b7c02e2deefe994d595a7cc1dd2ffbeee1d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 15:51:20 2012 +0100
+
+    Fix compilation on FreeBSD 9.x with 'recent' header shuffling
+    Backport of c53d8c3525f590f2213d35b0da94123862f3e366 from V5-5-patches
+    (Patch #3363308 - omitting tweaks to configure)
+
+commit 3d9ddb41e263bc1a78f9f9440b8d4ad4f86c82e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:36:18 2012 +0100
+
+    Fix typo
+    Backport of 5b702b024b60176d7f5699b92e55da50a8deae71 from V5-6-patches
+
+commit 0d35c609564b66a1ffe81556d37adf0503c389ce
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:15:08 2012 +0100
+
+    Provide missing definition of NETSNMP_PRIo
+    (used in agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c)
+
+commit a79141a419953d010a6989e8b88f4df127394d38
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 09:19:26 2012 +0100
+
+    Header fiddling for FreeBSD,OpenBSD,Dragonfly
+    Backport of f7b0de1518002c6e8f9b94ef3deb8882e1e9338e from V5-7-patches
+
+commit adf74bf753d3970357afd633803256241d9c7b87
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 08:20:46 2012 +0100
+
+    Fix IPv6 TCP & UDP tables, *BSD support (including OpenBSD)
+    Backport of commits 5cd1573625471c0583e9087aec6802b77157d5a2
+      and 50d73f0d56fe22c590530b3e305d41dcdac3ce00 from V5-6-patches
+
+commit d9555acb9f47c3aa8fde4bc20a44d7ca6181a8a9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Mar 25 18:48:12 2012 +0000
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid dangling pointers (based on patch 3503259)
+
+commit 82a8b47ee96e5d29a2b7ac3ca00722d737d5b479
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:31:56 2012 +0200
+
+    Running autoheader / autoconf
+
+commit 9ca8d939ab393306a1d0f146c9cb70ea0cb19d49
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:30:38 2012 +0200
+
+    Running autoheader / autoconf
+
+commit cecd4869deb68f3d4c71e768d5b40dd576446925
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:29:31 2012 +0200
+
+    Running autoheader / autoconf
+
+commit a1a4513bd3e4e614200f6db5a02f61d6c8eefb32
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 28 09:47:45 2012 +0100
+
+    Doxygen-style documentation fixes (backport of git commit c09903a42e9d97331fd9e48ee831a85afdf9c70a)
+
+commit 9bdbcca122c37da304fc6aa6939729475f90f5fd
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 28 09:30:49 2012 +0100
+
+    Doxygen-style documentation fixes (back-port of GIT commit c09903a42e9d97331fd9e48ee831a85afdf9c70a)
+
+commit 1f4a829b18275e4956ca91e5ec370df015f06133
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:41:24 2012 +0100
+
+    CHANGES: snmpd: PATCHES: 3495697: Store persistent snmpTarget table changes
+
+commit 1f75f377d0db01754c0c161dc44373081beef520
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:14:06 2012 +0100
+
+    CHANGES: FreeBSD: PATCHES: 3489387: Install FreeBSD 10 header file (plus other missing versions)
+
+commit 3d72c9e78f2ad817c9d1d82977327bbb20d63ab9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:06:31 2012 +0100
+
+    CHANGES: snmpd: PATCH: 3487867: Don't skip missing ifXTable entries (ifConnectorPresent FALSE)
+
+commit 12906578ab30cf776d080c0ef3025b30334d7655
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 16:17:45 2012 +0200
+
+    DISMAN-PING-MIB: Fix even more memory leaks
+
+commit ccfd5ca6fe10313d6181d24bbb1797825a97da10
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:51:16 2012 +0200
+
+    DISMAN-PING-MIB: Eliminate duplicate code
+
+commit 9fda2668722f08ddbfdd67a2239d8b021db64a83
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:48:46 2012 +0200
+
+    DISMAN-PING-MIB: Write a loop as a loop
+
+commit cbc18eb763ba6df69ef70668a54d75bf35e79503
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:24:08 2012 +0200
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix more memory leaks
+
+commit c7725192478aec018fb4aefa60946e04a406c00c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 13:43:24 2012 +0200
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid reading freed memory when deleting a row from a table
+
+commit a6be739566f310d7441fd7f54989e39446f7a143
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 13:42:28 2012 +0200
+
+    Extend DISMAN-PING-MIB test
+
+commit 8a9b57291453cb8aec28e766c594701ed19c4fc6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 26 21:03:41 2012 +0200
+
+    Fix for DragonFly 3
+
+commit e5c9a32f79eac2e85527c9cf05087cdae9b35a6c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 26 20:59:53 2012 +0200
+
+    DragonFly needs _KERNEL_STRUCTURES to compile ipv6 code
+
+commit cd43bc09a39bd97ff5e719a2ce232ce424600a65
+Author: David Imhoff <dimhoff@users.sourceforge.net>
+Date:   Sat Mar 24 15:47:17 2012 +0100
+
+    CHANGES: snmplib: PATCH 3510454: Allow the use of 0.0.0.0/0 as alias for default
+
+commit e2fc15f9e5a6e3e36be5f489601cbf6bf731917f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 24 15:21:38 2012 +0100
+
+    Fix TCP state values for DragonFly
+
+commit 432fe3ddf54f2c98f936959469cb9b014d599f06
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 24 15:10:52 2012 +0100
+
+    Require perl to do pass_persist test
+
+commit 37d2770cf50c98023eeba90e25d372bff7316ada
+Author: Niels Baggesen <nba@user.sourceforge.net>
+Date:   Sat Mar 24 15:06:40 2012 +0100
+
+    Fix TCP state values for DragonFly
+
+commit 86a948d8691e881d55591dcabddc2739ce72b30e
+Author: Niels Baggesen <nba@nba-linux.sb.statsbiblioteket.dk>
+Date:   Sat Mar 24 15:01:37 2012 +0100
+
+    Properly find pass helpers for testing.
+
+commit fe26a3c4f29f046bf65ed52e9d94054b675fbc4b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:04:42 2012 +0100
+
+    DISMAN-PING-MIB: Limit source code lines to 80 columns
+
+commit 745bafcdcc9c8e84616d4e274db2a384bf234da2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 08:55:05 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make ping implementation independent of ntpd clock jumps
+
+commit da6925e6763cadbe02f4a8bbfe68a362e535ad5e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 10:38:36 2012 +0100
+
+    CHANGES: testing: Add testing/fulltests/default/T154dismanpingmib_simple
+
+commit fa606dd7ca6aff9308d4e8b01bbcde148f441271
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:49:21 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make pinging local interface addresses work
+
+commit 617a83ba799575c84c66f6b1c480ef633161a64c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:28:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix a socket leak triggered by pinging a remote host
+
+commit 625f55c272ec6281e38d8e30eb53fd51516b00ae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:54:55 2012 +0100
+
+    DISMAN-PING-MIB: Convert a dynamically allocated variable into a stack variable
+
+commit b48f19ad4b4aa68c3e16e2a72df37b9c0cd36c4a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:24:07 2012 +0100
+
+    DISMAN-PING-MIB: Add more debugging statements
+
+commit d74cb3966175892562f5e3a9b1683acba2c22e07
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:45:18 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix several memory leaks
+
+commit 0b1a77674678cc9a15be3e7700d3cef650ed02c7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 12:00:30 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Do not send the contents of the stack over the network
+
+commit 139023cd3ab51631cc10e2866d71abcf99ae4c1b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:56:07 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Don't call exit() upon memory allocation failure
+
+commit 169b6aaa7b61827cc1ad0b3aeeae3a7229dd25d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:53:26 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix IPv6 socket leak in error paths
+
+commit a0be32ad053a71fa96134d55e542bb07d4f0297d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:43:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid that host name resolution failure causes a crash
+
+commit bf9bff64556787d766ee2ef2d578afb920719f3a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:51:55 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Convert printf() statements into snmp_log() and DEBUGMSG()-statements.
+
+commit 5d74c01245523a9d8db1eda27d1efae2ebc104fb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:40:02 2012 +0100
+
+    New MIB: VRRPV3-MIB
+
+commit 5b38f062b99b6ef36708e2c7de4965a3192612e9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:34:48 2012 +0100
+
+    For safety, sizeof the right variable in memcpy
+
+commit e5f82782da05efa7c0e6dc2bf5a41ee11868f469
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:33:21 2012 +0100
+
+    Fix for hrSWRun data for FreeBSD
+
+commit 8327565e823270d10a4504568edbe5b5ae323a55
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:31:54 2012 +0100
+
+    Clean up variables for OpenBSD/NetBSD
+
+commit 170f6f027bf4f9174b7073530da4d07f400bba58
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:28:58 2012 +0100
+
+    Move declarations in front of statements
+
+commit dbb4573b69fae85cdc931b2892b5ce4e5b16b321
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:23:36 2012 +0100
+
+    Require kernel_netbsd for NetBSD6
+
+commit f11681f15aad7d9a52fa29812ecbb507f1b7fe24
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 21 12:36:38 2012 +0000
+
+    Check for old tarballs (and unpacked distributions) before starting.
+    These can confuse steps such as "make dependcheck", that do a 'find'
+    on the current tree, and would descend into such unpacked source trees.
+
+commit 470dcd4b6c3ff11ff0a3532a7340a56cffd69098
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 21 12:32:13 2012 +0000
+
+    Don't run "make docs; make mancp" if there's no Makefile present
+
+commit c9ac420343e16df2b7065f5bf2790df44e247fba
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 20 10:26:10 2012 +0000
+
+    Allow distribution as part of normal Net-SNMP packages.
+
+commit 5999f60c57723f23f3c254af57fdb10af301a8eb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 18 19:03:08 2012 +0100
+
+    Regenerate
+
+commit 275d204036a607e3df50e8447d4bc755e9db02fd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Aug 28 21:29:03 2011 +0200
+
+    CHANGES: building: Make it possible to use --disable-applications/--disable-agent together with --enable-minimalist
+
+commit bdccc875710295aacf50f71eb1c1d2ee97f336fe
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 16 20:10:58 2012 +0100
+
+    Do not declare the local variables for opaque_special_types unless that option is set.
+
+commit b80a67da052adca1b5a644db83a782e15c2237c3
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 16 19:50:03 2012 +0100
+
+    Check that the data exist before trying to read it
+
+commit efae86bba5962491d42b77b935191a3eb25dd939
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Mar 14 01:05:33 2012 +0100
+
+    Partially revert "Merge remote branch 'origin/V5-7-patches' into V5-7-patches"
+    
+    Commit d35a1860217e723e4f866dd98ef6621665934c4a accidentally reverted
+    
+    4a2e5bcd56cd2afb36eb15d754e2fee888dd50c0 (hrh_storage is a proper replacement for hr_storage)
+    0dd1e54557d1ba498b55d017b0a93e8ccf9bd522 (CHANGES: snmpd: UDP-MIB: Report the proper address in udpLocalAddress)
+    5116d48378ecf03e722f3010ad47bf22a3fbcb8c (Reduce scope of prefix_val such that the compiler doesn't warn about an unsed variable)
+    10f566f4d4cbb3e205023c23669289e4bfd089cb (perl/SNMP/SNMP.xs: Fix a compiler warning)
+    
+    and part of
+    
+    6e74d64f85a59d50e461db4c34ac76f9de468bfb (Avoid using grep options -q and -w because grep in Solaris)
+    
+    This reverts those reverts.
+
+commit aaedd59cc2da701527dc2d261d4e9f85f16e7504
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 11 20:57:38 2012 +0100
+
+    Allow make test where the source path contains the string Net-SNMP to succeed.
+
+commit 4b94d796918a4eeae68ab21aa53d444a8b5c2921
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Mar 9 08:04:59 2012 +0100
+
+    Unbreak compilation on FreeBSD 4
+
+commit 10fe6b83324ad37d18b937cc8c6de94de534d035
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 13:04:07 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit e1122edc1a5fe7976b065044134d39e7db5985ea
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 12:43:19 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit a613d3a834912206d1ba5971e441a3ea6b36af23
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 12:33:03 2012 +0000
+
+    make depend for 5.6.2.pre1
+
+commit 0ef34e6519dfcb82c97df8427547c08dcf81e69a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Mar 8 10:11:30 2012 +0100
+
+    CHANGES: snmpd: Fixed snmpd '-d' option.
+    
+    Now it dumps packets again.
+
+commit 8e69742f143e4fc11196e5b2ed66c8f7f53fd02f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 6 09:24:21 2012 +0000
+
+    Version number update: 5.6.2.pre1
+
+commit c4e00b8c3e1010cdcab5e6c02d60d75df9c6dcf2
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 6 09:24:05 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit 39490104a3ab58235aace2f9d871c266dc4485ee
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 4a2e5bcd56cd2afb36eb15d754e2fee888dd50c0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 5 20:59:38 2012 +0100
+
+    hrh_storage is a proper replacement for hr_storage
+
+commit ce85832932ccd916c42319114c40885a466a9d0e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 5 20:56:40 2012 +0100
+
+    More fixes for Solaris sh
+
+commit 0dd1e54557d1ba498b55d017b0a93e8ccf9bd522
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 15:08:26 2012 +0100
+
+    CHANGES: snmpd: UDP-MIB: Report the proper address in udpLocalAddress instead of 0.0.0.0. Makes test T160snmpnetstat pass again. Fixes a bug introduced in commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a.
+
+commit 518917e9f39f7a9d3c3bf3a865e8ac0e3026d600
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 14:04:54 2012 +0100
+
+    snmplib/snmpUDPDomain.c: Fix source code indentation
+
+commit 2651909ccceabfcfadaf942c02450e28fe837dc9
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Tue Nov 9 12:04:04 2010 +0000
+
+    Passes now on MinGW too.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19653 06827809-a52a-0410-b366-d66718629ded
+
+commit e41f115e40304c941ba17d67e24710722d90741b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 13:39:17 2012 +0100
+
+    testing/fulltests/support/simple_eval_tools.sh: Avoid using grep options -w and -q because grep in Solaris' default path doesn't understand these.
+
+commit 5116d48378ecf03e722f3010ad47bf22a3fbcb8c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 10:47:20 2012 +0100
+
+    agent/mibgroup/ip-mib/data_access/ipaddress_linux.c: Reduce scope of prefix_val such that the compiler doesn't warn about an unsed variable if it isn't needed.
+
+commit 6e74d64f85a59d50e461db4c34ac76f9de468bfb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 09:22:31 2012 +0100
+
+    testing/eval_tools.sh: Avoid using grep options -q and -w because grep in Solaris' default path doesn't understand these options.
+
+commit 10f566f4d4cbb3e205023c23669289e4bfd089cb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 10:47:39 2012 +0100
+
+    perl/SNMP/SNMP.xs: Fix a compiler warning
+
+commit 44aa265891cd563f7f4114ef25dcf7aaf3b14e9a
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit dae4e16be86117861f63d1a2f981ad361418f5c6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 28f6226f2e228b8ca248489735f86502b2cce0a1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 40022a697958259ccfbb3fed44eb3c472f5e837e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Mar 4 10:37:41 2012 +0100
+
+    Solaris sh does not understand "test -e"
+
+commit 773af0c42e077bebdaecf1c0caf393285a7688f1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 3 17:19:30 2012 +0100
+
+    Clean up nsrollup complications
+
+commit ee71049c3e21c1d0e3424297136652bbe0e39d85
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 3 16:49:41 2012 +0100
+
+    mibgroup/icmp.c: adjust ifdefs to make it compile on BSD's
+
+commit ce9600361e665dde17af9d8ab16d7ce85dc05643
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:39:55 2012 +0100
+
+    dot3StatsTable has bugs :-(
+
+commit dffacf6fa0755e1700cbac25b844185abd807a0a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:38:10 2012 +0100
+
+    passpersist test needs /usr/bin/perl
+
+commit 8726995c7a8aef674c4f164b1871c37bbdcdad50
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:36:58 2012 +0100
+
+    grep -w fails with OpenBSD and Solaris 10-64
+
+commit 1eb4745b23cc3a839864e7f6ea28355b0566eb67
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:35:49 2012 +0100
+
+    Solaris needs /usr/xpg4/bin/grep to understand -q
+
+commit 9954b4b741fd8c63d6128bd0527298c8e4e989fc
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:34:45 2012 +0100
+
+    Make sure we have the proper srcdir for out-of-source builds
+
+commit 78369002be2711f0aa876b64a4e10b090cc241cd
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:33:31 2012 +0100
+
+    Not all make versions define $(RM)
+
+commit 94245b29a3cda89475c6eab5d9493c6657ff38e3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:24:24 2012 +0100
+
+    Make autoconf 2.68 happy
+
+commit 44acd6c285fb5614b4c9611b1abdeca9dd28e4bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:12:47 2012 +0100
+
+    Fix spelling of mib module fsys_getfsstats
+
+commit 1fa1fee3693f67b820223806b3d73afd4c50ec18
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 2 01:37:20 2012 +0100
+
+    Silence a clang warning.
+
+commit 93263b98a5db344cf2c4d489c43971e7b29cdb03
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 13:37:20 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 5a175428b973d2ea8553e29fecf94cf1566aa858
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 11:48:18 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 364276a1c5aa66caa23eb5b7f111fdeb5af71fa7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 11:45:10 2012 +0000
+
+    make depend for 5.5.2.pre1
+
+commit 73598340172eff75729a6d57192b8171d5bbf00e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 10:42:56 2012 +0000
+
+    Version number update: 5.5.2.pre1
+
+commit f3214402672ca199fd531e66122bf96c4d9a4eb7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 10:42:39 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 2e74acb6f19e4729cede0ab43e931961cb23aaea
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Mar 1 09:18:39 2012 +0100
+
+    CHANGES: Bug 3152841: Do not install the util_funcs subheaders that were removed in 5.7
+
+commit b7109646b95a70713d1ad991d41bccd57c0bb3eb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Mar 1 08:48:48 2012 +0100
+
+    CHANGES: Bug 3152841: Install util_funcs subheaders introduced in 5.6
+
+commit 432cbb7a5501ab90d66d0a83e731e7343bc04b37
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Feb 25 10:13:15 2012 +0100
+
+    Correct typos
+
+commit 6a6c9bbc7584f196a1185cc1935204f1206811ed
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Feb 29 08:55:35 2012 +0100
+
+    CHANGES: Bug 3152841: Install util_funcs subheaders
+
+commit d515e2a6e4c2a1c4d84734cc7b2d0b2fc5a894ad
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 15:56:21 2012 +0000
+
+    CHANGES: snmpd: PATCHES: 3487919: Fix compilation when caching is disabled
+
+commit af8368ed8898a78d0868b47af46bc9db07d1c764
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 15:50:56 2012 +0000
+
+    CHANGES: snmplib: PATCHES: 3414773: Encode integer value using ASN_INTEGER
+
+commit 19e2715807fe06fd0baedf88165011aee933e755
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 14:05:34 2012 +0000
+
+    CHANGES: man: BUGS: 3490708: Clarify use of common command-line options
+
+commit 65f7962f932c9b75c5bbbb047d1e26ae60978e53
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 12:23:34 2012 +0000
+
+    CHANGES: snmpd: BUGS: 3489631: Fix incorrect handling of UCD monitoring flag
+
+commit ac166051b6a092dd4a594326ec85e2f699b62547
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 11:57:41 2012 +0000
+
+    CHANGES: testing: BUGS: 3474590: Don't match underscores within the source root filename
+
+commit 879bf7079d34fa46f6fcf54a01c8500beaece59a
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:44:41 2012 +0000
+
+    CHANGES: snmpd: BUGS: 3460364: Fix use of block factor when detecting error conditions
+
+commit 034f1c572f683ea428583074471e5d5d13b51837
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:22:20 2012 +0000
+
+    Skip SET-based tests when configured using --enable-read-only
+
+commit 36423e210bfb65ef121c6a66aec438c7c237d3df
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:03:25 2012 +0000
+
+    CHANGES: BUG: 3454168: configure: Fix building with --enable-read-only
+
+commit eed0bcbc43fea18259f0f63b2081b6d10535a052
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 09:27:11 2012 +0000
+
+    Skip SET-based baby-steps when compiled with --disable-set-support.
+    Inspired by bug #3454168
+
+commit ec6a23030e5a2072c19c18c1d9c124387da56b7b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 27 18:42:58 2012 +0000
+
+    Add -lrt to NETSNMPLIBS such that clock_gettime() can be found
+
+commit f13320500294bb240f63c6dd7d2e9a2208eb740d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 16:52:51 2012 +0000
+
+    Skip SET-based tests when compiled using --disable-set-support
+
+commit c4276b6232c29145c039884e6b5a6b6da4b93837
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 15:54:45 2012 +0000
+
+    Omit SET-related code when compiling with --disable-set-support (inspired by patch #3424930)
+
+commit 01c930edcc25700d6b5fb0376f55a26425e13fb0
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 15:17:22 2012 +0000
+
+    Omit SET-related code when compiling with --disable-set-support
+    (inspired by patch #3424930)
+
+commit 9484d83203c4e2d820416be665fa833aa70444d2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 24 14:00:32 2012 +0100
+
+    Rework commit b4a19505a05816e94e01de97bf99ac37fcdc6d23.
+
+commit 2b7f13495228635d816e58b2174dc124dd0cf39f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Feb 24 07:43:22 2012 -0800
+
+    set MERGE_AUTOEDIT before merging to avoid the future git 1.7.10 forced msg
+
+commit e1b910b0be9343586ae9edba6f46040af315fcdd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 10:27:54 2012 +0100
+
+    CHANGES: snmpd: init_agent() + init_kmem(): Return an error value instead of invoking exit() if access to kernel virtual memory is denied
+
+commit 463eed2120f9d191bc22673496a49e8174664e4b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 10:03:31 2012 +0100
+
+    Remove obsolete symbol NETSNMP_EXIT_ON_BAD_KLREAD
+
+commit c36ab71a4e096f16cc5a55533f080c9a94009914
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 08:53:56 2012 +0100
+
+    CHANGES: FreeBSD: snmpd + apps: Sending UDP packets works again for non-root users
+
+commit edebddba930f8b1472fa0bd20fc413ef8cf464a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Feb 21 11:31:46 2012 +0100
+
+    testing/RUNTESTS: Fix a bashism
+
+commit b4a19505a05816e94e01de97bf99ac37fcdc6d23
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 20 16:58:47 2012 +0100
+
+    Fix compiler warnings about %ld versus time_t on systems where time_t is a synonym for long long instead of long.
+
+commit d8978ecc8211be7c1e7905f1e215bb06ded266b6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Feb 21 12:32:25 2012 +0100
+
+    Fix snmplib/transports/snmpSocketBaseDomain.c file header
+
+commit aa766d196e5287f6ca79b58a345b024260aba354
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 20 17:07:13 2012 +0100
+
+    IF-MIB: do not trigger undefined behavior (>> 32 of a 32-bit variable) when updating a counter and ifi_ipackets is a 32-bit variable
+
+commit c3fb6dd9e6b99e9542493188987871fc5017cb3c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 09:45:45 2012 +0100
+
+    Fix a compiler warning on systems where mode_t is unsigned
+
+commit f8a3ef0d3d4e530279900101049b8de98a44a6fb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:48:52 2012 +0100
+
+    CHANGES: snmplib + snmpd + snmpwalk: Avoid that system clock changes (e.g. by ntpd) affect code that needs relative time
+    CHANGES: snmpd: Make sure that the range of the SNMPv3 variable snmpEngineTime is 0..2147483647 on all supported systems instead of 0..42949672 on some systems (i.e. wraparound after 497 days)
+    CHANGES: snmplib: Add netsnmp_get_monotonic_clock(), netsnmp_set_monotonic_marker(), netsnmp_ready_monotonic(), netsnmp_get_agent_runtime()
+    CHANGES: snmplib: Deprecate atime_diff(), atime_newMarker(), atime_ready(), atime_setMarker(), marker_tticks(), netsnmp_marker_uptime(), netsnmp_timeval_uptime(), timeval_tticks(), uatime_diff(), uatime_hdiff() and uatime_ready().
+    CHANGES: snmplib: Change the names of the struct timeval members of data structures that were used to store a wall clock time but that do now contain a monotonic clock value
+
+commit c19760f3333c92fac5d50e9768cdf939218bc487
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Feb 15 09:45:03 2012 +0100
+
+    snmplib/snmpv3.c: Fix source code indentation
+
+commit a6db239945e195de5a90fa183700b27a6ecb28d3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 7 00:11:14 2012 +0100
+
+    Fix possible memory leak from recent declarations patch
+
+commit 0fbbb9a9e2906a7af956957061d485874462aea9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 6 20:43:04 2012 +0100
+
+    Do not mix declarations and statements
+
+commit f308d5bafb05d78ed4030c4ecff324b6cbda680f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 15:25:30 2012 +0100
+
+    Fix two compiler warnings in agent/mibgroup/disman/ping/pingCtlTable.c
+
+commit 46f0fc1b7fc26a225763bc65cca520a1c59f0251
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 6 20:54:32 2012 +0100
+
+    sendmsg does not like IP_SENDSRCADDR if addr is INADDR_ANY
+
+commit debac498fe8410110107a2fe64f8afb748edaa07
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Feb 6 16:48:09 2012 +0100
+
+    CHANGES: added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
+
+commit fafc99cd89e73ec7e00bf7360d0b4fa61944a4f4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:18:34 2012 +0100
+
+    Simplify calculate_time_diff() and calculate_sectime_diff()
+
+commit 7af2013de8bf1b379c076db4e104508e17874d3e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:55:58 2012 +0100
+
+    Fix order of feature #ifndef and Doxygen comment block
+
+commit bbd67f63530f5ef0bfc948fc58dfe6a93f8f8679
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 15:25:30 2012 +0100
+
+    Fix two compiler warnings in agent/mibgroup/disman/ping/pingCtlTable.c
+
+commit 42a66aeff25b9e9ef635a404ad2f5212f9e8cf0d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:47:54 2012 +0100
+
+    Rename two function arguments
+
+commit 3fe72b3b99b7e4b2b982363dfc4f2d8d13f40592
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 13:49:22 2012 +0100
+
+    Convert snmp_select_info() documentation to Doxygen format
+
+commit e9db266ae48d05a7a6cb5d71b4bdea7ad808ef5e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:17:57 2012 +0100
+
+    CHANGES: snmpd: Add netsnmp_get_next_alarm_time()
+
+commit d08044cb9e5702fbf549e14425f42794259d8a21
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 09:38:07 2012 +0100
+
+    CHANGES: snmpd: Add netsnmp_get_agent_runtime()
+
+commit a05c27c2711cb41582a3b4c31e38b0e93530b62d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:51:33 2012 +0100
+
+    Fix spelling in a source code comment
+
+commit 910d7b0d99183609b9529b04c3f29330eb661021
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:38:12 2012 +0100
+
+    Replace netsnmp_timeval_uptime() by netsnmp_get_agent_uptime()
+
+commit 43a83f6c6a96cc2316b70eecacf127eb6913c7a7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:19:15 2012 +0100
+
+    Use the assignment operator instead of memcpy() for copying struct timeval
+
+commit 2fe579efb1cb3a74f82803ca323928f6b8e4b5c0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 3 14:04:02 2012 +0100
+
+    Make agent/mibgroup/mibII/icmp.c build again on non-Linux systems.
+    
+    See also commit 345a1e4254812cb9edc1d274491b76681a9dba1e.
+
+commit 881de6ab7355277a5c116a008fbe513293b05039
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 3 10:08:21 2012 +0100
+
+    Fix compiler warnings triggered by the Rmon MIB implementation
+
+commit 4629933c0d3b3f9f4ba583534f79a37fb9633817
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 20:05:31 2012 +0000
+
+    More compiler warning fixes
+
+commit e9b5a3dee6f9afab8b90a29392040632b075ad7a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 16:56:55 2012 +0100
+
+    Use SNMP_MIN() instead of min()
+
+commit ae452c77b411139d6b5800ffcf88d48e9b4792a8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 15:23:38 2012 +0100
+
+    Restore commit dbb8795a7df595f0603f2ec61704799f4c482667.
+
+commit c7d11fa00f9995ddb9fe3d4994a3e9790da2e189
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 15:18:40 2012 +0100
+
+    Restore commit dbb8795a7df595f0603f2ec61704799f4c482667 partially.
+
+commit 00fd62720ec454f5a690de4feba08223cfb2c3f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 14:48:44 2012 +0100
+
+    CHANGES: snmptrapd: Avoid crash during shutdown due to invoking perl_destruct(NULL)
+
+commit d9e229d81abeaf191ef2ccb077842885c230d622
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 14:47:41 2012 +0100
+
+    Remove a superfluous declaration
+
+commit 1e2e2af6cae830f381e87a244d029eb86bf3fcce
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 13:20:37 2012 +0100
+
+    perl/SNMP/examples/pingmib.pl: Add error checking
+
+commit 241a141e31f1684fc6cf70cc4a00cce636fd3526
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 11:28:37 2012 +0100
+
+    Make configure-time EVP_MD_CTX_create() detection work on the 5.4 branch.
+    
+    See also commit 46eac02e9a27bf4f3068e795cab891f05a848870.
+
+commit 6d9d14feaaa2d0fec68b4d158944d32cb04ff1bc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 11:12:00 2012 +0100
+
+    Revert the changes that break the build on the 5.4 branch from commit dbb8795a7df595f0603f2ec61704799f4c482667.
+
+commit 8abe49e30c97c8983e83b45a35c716fe91f66bea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Feb 1 11:56:58 2012 +0100
+
+    Fix several compiler warnings in the DISMAN MIB implementations.
+
+commit f9fb0a533375e14dc370025a0b2fbc761bf27be6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 09:56:02 2012 +0100
+
+    Revert "HOST-RESOURCES_MIB: fix a compiler warning" because it's wrong.
+    
+    This reverts commit aa6b79bc124a7b7a885d7e5035ab06aa3ecef613.
+
+commit ca4a4fe25efd2714f8f1961b97856616563f42c9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 10:21:49 2012 +0100
+
+    .gitignore: Add python/build
+
+commit 13ada56558b44e28d1355c0dce1d921f3746d548
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:53:49 2012 +0100
+
+    Revert "Revert "Fix format specifiers to avoid warnings"" - there *is* NETSNMP_PRIo in V5-6+ branches
+    
+    This reverts commit aa528bd22c7493ca8d67e678fbf615ca0f63ea6d.
+
+commit aa528bd22c7493ca8d67e678fbf615ca0f63ea6d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:13:18 2012 +0100
+
+    Revert "Fix format specifiers to avoid warnings" - there is no NETSNMP_PRIo in V5-4 or V5-5 branches
+    
+    This reverts commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b.
+
+commit 2fb99be9aa86a6ca349b86d4ef8bc726ed9f2a82
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:58:35 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit e5c35589e0bf416bfd036bd468f42aaeab25e788
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:55:56 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 345a1e4254812cb9edc1d274491b76681a9dba1e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:51:26 2012 +0100
+
+    Fixed error handling in init_icmp().
+
+commit c303549a59fa8c2f20a9d8bf1e985fbc8abde6a8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:46:29 2012 +0100
+
+    Reworked _register_extend() error handling.
+
+commit 9c20e27a7026fc030da3b328b9a2e1b4f36670cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:21:28 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 22fd0bfc2df0e1f6020dc3c50a753ddf28a4599c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:20:22 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 5d61e57baf580c78252c0abb0098c07bb05af17c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:17:05 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 3c3eeae80d796f27597c901e7ff2046c769ef4b8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:08:09 2012 +0100
+
+    Mark rowreq_ctx as freed so next iteration allocates new one instead of reusing the freed one.
+
+commit af9abd53c2337c90a691a7b044ff3f97c1003161
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:05:10 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit cf9465f54181e62e21a9b10219131107a3d2ebf6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:04:06 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 7871f2b09b8b52f34a9e57784266459053165bcb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:02:50 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 7a37f33d310c9598607bc323d9bdbf91aaf72c95
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:00:51 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 3e45f7026249e45350edaac85337423aa0e95d8b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:13:18 2012 +0100
+
+    Revert "Fix format specifiers to avoid warnings" - there is no NETSNMP_PRIo in V5-4 or V5-5 branches
+    
+    This reverts commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b.
+
+commit 61936762e641c18db75aa5125a33e776c677adc5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 11:13:39 2012 +0100
+
+    Fixed freeing reginfo twice on error in a template and all its instances.
+
+commit 496437430415fbafeb1ccd4774f1ca00d627ea1f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 11:04:13 2012 +0100
+
+    python/netsnmp/client_intf.c: Fix compiler warnings introduced on V5.6 branch
+
+commit 5b4a24cdcee1bc3d82633ccafeb96fce95349c59
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:22:27 2012 +0100
+
+    unit tests: fix a 64-bit compiler warning
+
+commit cbf1c91baf7191be5fa27d81bcf8714331a2c12f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:20:42 2012 +0100
+
+    Use snmpTargetParamTable_dispose() to free a struct targetParamTable_struct.
+    
+    Fixes a bug introduced in commit dbf26a05a04ef24c47346e5adda48e338498e71f.
+
+commit aa6b79bc124a7b7a885d7e5035ab06aa3ecef613
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:20:31 2012 +0100
+
+    HOST-RESOURCES_MIB: fix a compiler warning
+
+commit 3a76b43e11fffada632fccb848ab500e876ad48b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 18 16:21:05 2012 +0100
+
+    CHANGES: python: Avoid that an SNMP set with UseEnums enabled causes a segmentation fault
+
+commit 84dec9fa92b0aa2d58eb7020330f4f98e5154321
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 18 14:38:21 2012 +0100
+
+    python/netsnmp/client_intf.c: Fix most compiler warnings
+
+commit 38cf218c3f1a727786e227a5d3fb186fd0f1a15f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:50:13 2012 +0100
+
+    Fix a typo
+
+commit 454122244122bfdb6f67cab31256d7b46372e9e1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:30:18 2012 +0100
+
+    Free tmStateRef on errors.
+
+commit 0119022daa59c73bfec0da2386d0628f14e6dab7
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:09:12 2012 +0100
+
+    Free fingerprint when it's not needed.
+
+commit 0e84cd303a08267dec78f6d81c9bb07e3d83a11f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:48:26 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 63dc846a7949ce697b3e28c543dc1105e63a2250
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:08:28 2012 +0100
+
+    Free certificate fingerprint.
+
+commit ce1f284a63eb81644b3e32606cbe39b67e1dff2a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:37:09 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 7e21413ca6f2efd7a3afb62c62b644881b8bd1e7
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:46:30 2012 +0100
+
+    Properly allocate and free engineID.
+
+commit 34c962882607c3638a2fa25a2ac531492d71c787
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:37:25 2012 +0100
+
+    Free locally allocated tmStateRef.
+
+commit f57ae531dc5658abcd65b1627615525238d16d2d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:20:24 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 536bc57556c3141561ea4a194810b16290a691ee
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:15:47 2012 +0100
+
+    Added check if the function actually does something.
+
+commit a0777d307dbcaf219ee0184a0fbab9d4e5d6aa0b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:01:45 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 8b97a71c8e7959428eb4d4e8d90e9096d43ff09f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:57:26 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 2c1507c22030549ae660c0e211fbdc5c75ec5c57
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:53:47 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 65f2b7bcd4fe03906aa1a115ab60a89b8ae933d5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:51:36 2012 +0100
+
+    Close open files on error.
+
+commit 0e52e4f66d44766bea37473556c78e5219b95461
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:45:33 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit dbf26a05a04ef24c47346e5adda48e338498e71f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:42:17 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 748da84b1fd654e338bc701e8f9e5da229187f1c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:32:04 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit eb217146fd54036ea4202bfef78bbf774d7e382d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:23:10 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 9ba38eec66138ec1f613ea8d04e158130c7121bc
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:18:55 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit d9d938d3018c27f53277bc5e59578500490c1d09
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:16:38 2012 +0100
+
+    Close open file on error.
+
+commit d5e817d5bd518d9ac6a0d60e0e141dd64f27ad19
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:14:12 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 2ae68f059df9d74b074d12f59c1847466ed576cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:03:17 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit a00f3d461121b545aed72ac12b2438791dcfc4ba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 14:58:39 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 59884bb4d35ad13747ffa6723436dca587a9ab77
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 17:09:12 2012 +0100
+
+    In above code, olength is checked, so let's check it also here.
+
+commit ba5d5292b04393b0c7d7d7ed961241929418c6e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 17:05:14 2012 +0100
+
+    Fixed dereferencing NULL.
+
+commit da2d6a7028a13b9edf3a5c84314d0f1feef76714
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:44:56 2012 +0100
+
+    Prevent dereferencing NULL.
+
+commit f88054a9b69b6de274f7a14a59b47323e5e4e4c6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:37:35 2012 +0100
+
+    Don't dereference context if it's NULL.
+
+commit 7c4d459e8f1f652cc2098c3d4c81de90a84ed710
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:30:09 2012 +0100
+
+    Don't deference NULL.
+
+commit fc19b7f33b587927d2a01e72d23d21b9b1696ab3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:25:26 2012 +0100
+
+    Don't close NULL file.
+
+commit 5e95ca6790076b788072a801ee7c82969d995bcb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:17:09 2012 +0100
+
+    Prevent dereferencing NULL when a transport does not have f_fmtaddr.
+
+commit eed6f5f9b9ae54d2ceab67ad85adde1f6a8a21d5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:13:13 2012 +0100
+
+    Prevent dereferencing NULL.
+
+commit 41cde68b5fa4b38d81450cf91e082cdfa825e7cf
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:10:10 2012 +0100
+
+    Check if a registration was really found.
+
+commit 5b72a40853876a186efcc0090a4e32c235b9c05f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:03:58 2012 +0100
+
+    Don't dereference NULL when difflen is SMUX_MAX_PRIORITY (which is highly unlikely, but...)
+
+commit fa6a912e41c5d0fd2a636894e86b6426c07375ab
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:37:44 2012 +0100
+
+    Check for missing value in setEvent.
+
+commit 410b71da425389fecc25d14f49f23753581576ad
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:28:41 2012 +0100
+
+    Dereference ereg only if it is not NULL.
+
+commit 185272d1a0b913774186f1b9135aeaf637ebed52
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:17:21 2012 +0100
+
+    As per above code, template_v2pdu can be NULL, so check it before dereferencing.
+
+commit 48e5ead3fd2c2b385df6972c67526ff6bdc30768
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:42:22 2012 +0100
+
+    Updated last fix to new error reporting style.
+
+commit f33d33615d6d85d0073726473c4146cbcdf11ced
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:30:07 2012 +0100
+
+    Fixed sigsegv when empty config line is parsed.
+
+commit b5df1eeb47ed3559b6f4d9ecccdb242126e6c992
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:11:58 2012 +0100
+
+    Fixed (highly theoretical) sigsegv when sp->securityEngineID is NULL.
+
+commit 6feed629a71899c113096959d8549dc1201e8f9a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 13:43:37 2012 +0100
+
+    Added NULL and len check just in case someone provides value = NULL and nozero len (-> NULL is then dereferenced).
+
+commit 355c5ab264af2a6020a1d8a923f80f11b942295e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 13:36:41 2012 +0100
+
+    Extend the NULL check, i.e. return if there is nothing to remove.
+
+commit ddd7948acad938cd42974505ddca4f0372116709
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 11:11:29 2012 -0800
+
+    update sparta's copyright
+
+commit 41256086a7a5041453419cfd6e562c7b55c56b0a
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 10:32:04 2012 -0800
+
+    pulled full copy of extractnews from master
+
+commit 625a70dbdfd9902da79efa293fe6d2ac8ccf2b2e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 10:24:19 2012 -0800
+
+    update to change to the newer log generating/parsing
+
+commit 62e32b13089b29edcf276f615da67e4508fe7bb5
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 09:29:42 2012 -0800
+
+    conflicting merge from master for extractnews
+
+commit 70084da61d2bcbd2cf1ed81bdc3bf6794c2affb6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 13 11:49:16 2012 +0100
+
+    CHANGES: snmpd: DISMAN-SCHEDULER-MIB: Handle 32-character schedContextName values correctly.
+    
+    See also commit b3c4982542e0ab151fb3884754cdfbcb472da52d.
+
+commit 04bf3e288158ee880edf237e4007fee37d2044dd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:39:37 2012 +0100
+
+    Fixed endless loop when SSL_read returns error.
+
+commit c1526fccc0474c1db18caa9dbb833853cddde3cc
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:13:21 2012 +0100
+
+    Fixed a typo.
+
+commit a27aa19df283156c032c81eaee5e115859d38c17
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:11:32 2012 +0100
+
+    Don't replace 'rc' variable, it's value is needed outside the loop.
+
+commit 985dff2b0876d9483c414fccea3ef6bc63e14561
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:01:32 2012 +0100
+
+    Removed duplicate code.
+
+commit 2fd7818318e7a5dfe98f52ccf750c2a63e825ded
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:00:22 2012 +0100
+
+    Removed duplicate code.
+
+commit 15f21130ba33dc9afd164e52dfd74c9cec0e9232
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:58:14 2012 +0100
+
+    Removed duplicate code.
+
+commit 2a8a8f2ab7cd75826c5d41ec3cfd5ce3e9634cf3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:39:28 2012 +0100
+
+    remove dead code, 'cp' is always != NULL here.
+
+commit 38fd6378cc3275180f63b8d9b9a4072b3dabf8e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:25:06 2012 +0100
+
+    Fixed a typo.
+
+commit ebd92e19b10c0a38e17cde407864b45c26e17327
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:07:43 2012 +0100
+
+    Removed unnecessary if (value) check - value is checked few lines before.
+
+commit c5cacf5caf979d018ea6cae1c03b8fdf0b118dfd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:44:43 2012 +0100
+
+    Prevent double free(), 'dirname' is already freed inside se_add_pair_to_list() if it fails.
+
+commit acdceb50ea66d6b323c74ee021fb77e810e4e7af
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:43:19 2012 +0100
+
+    Prevent memory leak when malloc fails.
+
+commit 17053e34cfe9a8ab395fb50f5c3f1dafc7247aeb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:32:57 2012 +0100
+
+    Fixed double fclose().
+    Linux man page for fclose(3) says: In either case any further access (including another call to fclose()) to the stream results in undefined behavior.
+
+commit a6641edb9cb74fc2236b42ce5554fc3329956552
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 15:22:34 2012 +0100
+
+    MinGW: Skip test T065 if not started from inside an MSYS shell
+
+commit a883ef1982f301b1485d227301674927330f5b67
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 11 15:14:53 2012 +0100
+
+    Moved debug oputput before return.
+
+commit 45751967287d97640efdcdf8e77e8d490939d8eb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 14:17:18 2012 +0100
+
+    Convert strtoull() unit test into a Net-SNMP unit test
+
+commit 2c2fa48336a4f1f177c2991d6515d29f39533c44
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 13:50:44 2012 +0100
+
+    Convert read_config_read_octet_string_const() unit test into a Net-SNMP unit test
+
+commit 07c666f6cea27f2b2ab9bc08aed0cb6133fe3758
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 11 13:17:45 2012 +0100
+
+    Fixed commit 73a523e468277f6df2e984891313b8be8bce1921:
+    Fidex dereferencing key->info when key is known to be NULL.
+
+commit 3b686566296dd87bc42b7f1169daacdb3c45cc58
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Mon Oct 18 06:25:56 2010 +0000
+
+    Win32: builds again without warnings with MSVC 6.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19489 06827809-a52a-0410-b366-d66718629ded
+
+commit f3a7d1b09609dad649f58bbdb5b7e10d39b398c1
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sun Oct 17 11:04:06 2010 +0000
+
+    Follow-up for r19476: fixed a typo.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19478 06827809-a52a-0410-b366-d66718629ded
+
+commit 2de73bd365a381b9c353ca5230769eefb1ac71ed
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 11:42:42 2012 +0100
+
+    local/passtest: Remove an incorrect PATH= statement
+
+commit 699513f1238e0adce1f1cec98e0d147293fc5047
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sun Oct 17 09:25:51 2010 +0000
+
+    NETSNMP_REMOVE_CONST()-related cleanup.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19476 06827809-a52a-0410-b366-d66718629ded
+
+commit 6358dee72fb347e2600a0a7bd21f23270d3a00f6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:58:15 2012 +0100
+
+    agent/mibgroup/ucd-snmp/versioninfo.c: Add a comment
+
+commit 5396bfe032c8cbc73c8ff5d4b085ebada9f59846
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:30:16 2012 +0100
+
+    Replace strncpy()/strncat() by strlcpy()/strlcat()
+
+commit feb3af28dcae22015ae865a2e5dd8c416e9991d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:02:08 2012 +0100
+
+    Replace strncpy()/strncat() by strlcpy()/strlcat()
+
+commit b7e1aa255bae4a3453f9eca644a876634351f11d
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat Mar 20 19:36:28 2010 +0000
+
+    CHANGES: libsnmp: changed the type of the fourth argument of netsnmp_set_row_column() from const char* to const void* such that no cast is necessary when passing another datatype then char* or const char*.
+    CHANGES: Win32: changed in_addr_t from u_int to u_long such that it matches the datatype of sockaddr_in::sin_addr.
+    Also, fixed several compiler warnings (mostly char * <> u_char * mismatches) and removed some casts.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@18345 06827809-a52a-0410-b366-d66718629ded
+    
+    Conflicts:
+    	agent/agent_registry.c
+    	agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+    	agent/mibgroup/mibII/interfaces.c
+    	agent/mibgroup/ucd-snmp/disk.c
+    	apps/snmptrapd.c
+    	snmplib/snmpIPv6BaseDomain.c
+    	snmplib/snmpUDPIPv6Domain.c
+    	snmplib/system.c
+
+commit f47a3752849db075e6f2053b8595b7b792fb6462
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri Oct 15 10:56:09 2010 +0000
+
+    CHANGES: Win32: building: Builds now correctly with a 64-bit compiler.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19458 06827809-a52a-0410-b366-d66718629ded
+
+commit 02b6056df95da8b673034e39c2c7c386ed0f369c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 11:44:53 2012 +0100
+
+    Fix a compiler warning about casting away const
+
+commit a19865832fc77f4c048144d91a431b1e94d329f2
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Wed Oct 14 23:12:05 2009 +0000
+
+    CHANGES: apps, snmplib: PATCH: 2835577: identified by "Bart Van Assche": Replace SNMP_ZERO of arrays with a memset.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17797 06827809-a52a-0410-b366-d66718629ded
+
+commit 67a3e2eccb95f9c9d0809efcbddcd866ee3062d5
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 14:27:15 2010 +0000
+
+    Fixed a compiler warning about discarding the const qualifier.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17970 06827809-a52a-0410-b366-d66718629ded
+
+commit 3dcde2e8a595a527f06142c3b852de8433a1cf28
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Sun Jan 24 14:27:55 2010 +0000
+
+    CHANGES: snmplib: Prevent gcc ped-warning for NETSNMP_REMOVE_CONST
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@18052 06827809-a52a-0410-b366-d66718629ded
+
+commit c2e1525a85bda5299a3b9f241614f7e6509aeeba
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 13:35:11 2010 +0000
+
+    Backport commit 295f473c83546221b2a71d815c61e33a67f98ae3: refine NETSNMP_REMOVE_CONST() implementation.
+
+commit cb423b0ae9ed0059aa100dc4e2fd93ad1b97faf8
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 11:57:51 2010 +0000
+
+    Backport commit e2fb09e0093e2f648fe2638da2f3af18fdb32bf0 - introduce NETSNMP_REMOVE_CONST().
+    
+    Conflicts:
+    	agent/snmp_perl.c
+    	snmplib/snmp_service.c
+
+commit afc396ab1618a8595a2519fbc25f7a498e174411
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 08:49:34 2012 +0100
+
+    Unbreak netsnmp_mktemp() and make_temp().
+    
+    These were broken by commit bb8fcbb874998000f945f058d1aa6fe14e925899.
+    Also replace a strncpy() call by a call to strlcpy() and replace the
+    make_tempfile() implementation by a call to netsnmp_mktemp().
+
+commit 210185c15d0d65f0ea98b5e3c2e0776f6222d170
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 08:27:43 2012 +0100
+
+    Fix a crash during startup of snmpd introduced by commit 885061687d9caa38470979667d7d8ad6563cedad.
+    
+    Also, make sure there is only a single copy of the cleanup code in function
+    mkdirhier().
+
+commit 8bb4e86abcf98ff28748af0af89c98e64d5cd961
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jan 11 07:47:12 2012 +0100
+
+    Reduce the scope of the oldmask variable.
+
+commit 6680147b138ec114f81c5d128ac9350c8450d081
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 18:44:31 2012 +0000
+
+    Make test T015int64_clib pass on 64-bit systems
+
+commit 3aad15ae560ac857e73c90764e903e7ca02b3295
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:40:59 2012 +0100
+
+    Fixed buffer overflow for large OID names
+
+commit fba188ee82010b2f2d8ca2e426ba654499ab3d0a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:31:33 2012 +0100
+
+    fixed buffer overflow in __concat_oid_str
+
+commit 21d25d86b8e4904d798dc8c96dade9e5048457a8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:26:07 2012 +0100
+
+    Fixed buffer overflow when parsing port numbers.
+
+commit d36931841b2fc2cebc6364b2949129a0ad42ad1d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:05:51 2012 +0100
+
+    Fixed a buffer overflow when large SumFile is used.
+
+commit 0efdd022da09af1b5e16171fa7a2b523c5d6ec59
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:01:53 2012 +0100
+
+    Fixed buffer overflow when too big temp file pattern is used.
+
+commit 560bc6c09b751556efd6b4c4495751b109a93f92
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:59:24 2012 +0100
+
+    Fixed buffer overflow, just to be sure.
+
+commit 8291d7c5b92a31dd4f582b497d4b2a0853367a56
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:55:16 2012 +0100
+
+    Fixed buffer overflow.
+
+commit 88e1f34de7300575fa6dab857ecddb242a87de80
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:48:55 2012 +0100
+
+    Fixed buffer overflow when too long interface names are used.
+
+commit be1375a9926ebe0cd5b78a4045c3bd11c83664b1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:46:49 2012 +0100
+
+    Fixed buffer overflow when a sensor name is too long.
+
+commit 1cb24625372062b14c71d7dd51e20fef773e2743
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:41:00 2012 +0100
+
+    Fixed buffer overflow when a CPU has too long name.
+
+commit 84c807ee03251e54856e83d62d06ea08b8df527a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:36:50 2012 +0100
+
+    Fixed buffer overflow when too long interface names are used.
+
+commit c310e390b5dd05f24be7eb1904c74e41259c93db
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:24:54 2012 +0100
+
+    Fixed buffer overflow when too big temp file pattern is used.
+
+commit 4600d11434e83b8653cf9f813a3d8b630455b42d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:17:08 2012 +0100
+
+    Fixed plausible string overflow before parsing command line options.
+
+commit 885061687d9caa38470979667d7d8ad6563cedad
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:11:02 2012 +0100
+
+    Get rid of (insecure) SNMP_MAXPATH in mkdirhier()
+
+commit 8016890a445f6a7e2a873a04873d4e27b6ee64e3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:48:34 2012 +0100
+
+    Fixed wrong integer size on 64 bit platform.
+
+commit bb8fcbb874998000f945f058d1aa6fe14e925899
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:31:36 2012 +0100
+
+    Secure mkstemp() with umask() - on some implementations it does not set 0600 permissions automatically.
+
+commit 202523ca704bd722dc1ac0e1e6b0e4b4e5424495
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:11:57 2012 +0100
+
+    Fixed dereferencing 'c' before NULL check.
+
+commit 73a523e468277f6df2e984891313b8be8bce1921
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:08:24 2012 +0100
+
+    Fixed dereferencing key->info when key is known to be NULL.
+
+commit 2f4e6acd714183f015b763657f8f084593357e26
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 10:38:16 2012 +0100
+
+    .gitignore: Ignore perl/*.yml files
+
+commit c365d80c16c2d17b160011e8c1f9cb958954e9db
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 08:34:16 2012 +0100
+
+    CHANGES: snmptrapd: Do not invoke shutdown_perl() from inside the SIGTERM handler since that fails if SIGTERM is received while a Perl handler is active. Based on a patch posted by Joel Avni <javni@arubanetworks.com>
+
+commit d059fb878b1436599953cea5a077499ddcdcbcb5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 17:03:55 2012 +0000
+
+    CHANGES: BUG: 3440752: IF-MIB: Report interface speed correctly for Ethernet interfaces if other than 10 Mbps, 100 Mbps, 1 Gbps, 2.5 Gbps or 10 Gbps. Add support for NICs faster than 65 Gbps.
+
+commit c09903a42e9d97331fd9e48ee831a85afdf9c70a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jan 9 13:26:17 2012 +0100
+
+    Doxygen-style documentation fixes
+
+commit e325ecbfce77f00ac5cf6fbd957f95495f61c59b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jan 9 13:25:10 2012 +0100
+
+    Suppress uninteresting Doxygen warnings
+
+commit be9161d3a5898e863767f926613486126c2cbf67
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 12:35:39 2012 +0100
+
+    CHANGES: snmplib: Simplify implementation of functions manipulating 64-bit numbers.
+
+commit 86e4c2be0852a0a13b0603075720b3264ec70dde
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 12:29:11 2012 +0100
+
+    CHANGES: snmplib: Make it explicit that MAX_SUBID is an unsigned constant
+
+commit 37e272d8f7b7180ba140fa386a5ff058968a08a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 18:21:48 2012 +0000
+
+    CHANGES: snmpd: IF-MIB::ifType: Report type "infiniband (199)" for InfiniBand interfaces instead of type "other (1)".
+
+commit 269932fa32c7cd47957489698e09bee31f63b7af
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:34:42 2012 +0100
+
+    Fix an MSVC compiler warning
+
+commit 0d1c21f9991d1309d057e3e4056d547df7d40ecf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 16:06:31 2012 +0100
+
+    Make declaration and definition of strlcat() consistent.
+
+commit 0c3d4dbb0a9cf5b359f70b2f19915495554f840f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 15:23:16 2012 +0100
+
+    CHANGES: Win32: snmpd: Remove dlmod
+
+commit 893ecc97b587661045becbe09a320c1bcbc71c7c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:36:59 2012 +0100
+
+    Add strlcat() to the MSVC build infrastructure.
+
+commit 3d126422e625702b9d3fa0676a97ec5cb20d9d10
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 15:01:06 2012 +0100
+
+    Make win32/net-snmp/net-snmp-config.h consistent with its .in file
+
+commit af53b76c2ffa751e3958d0fc5d8279f78c2c1c26
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:43:55 2012 +0100
+
+    Skip T066pass_simple and T067passpersist_simple on MinGW
+
+commit 35a92e693d133a5b11e9e9b599dbf47edef4933b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 08:16:36 2012 +0100
+
+    Remove snmplib/snmpDTLSUDPDomain.c again, which was added accidentally while resolving merge conflicts (commit 1d78f7d5b58aed2b52c4d386a7ba80a44711baca)
+
+commit a9b073ea3b6cedf713e305e7b15f28ae57bfdf1b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 17:47:11 2012 +0000
+
+    Fix 64-bit compiler warnings
+
+commit 7e890dad95f566069ee280215a4fea3f0e2e3980
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 16:38:50 2012 +0100
+
+    Avoid a SIGSEGV if cp == NULL. This is a follow-up for commit 089bcb360aa26790ad2a8ceddf583b7ba5ddfd48.
+
+commit 1f6200cfe1b0b27ebb093a1606b592f9e9684be8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 15:53:34 2012 +0100
+
+    Convert strncpy() calls introduced in v5.6
+
+commit c3126b143921fabeac442166eca5b5b742fd42c0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 15:02:39 2012 +0100
+
+    Replace most strncpy() calls introduced in v5.5
+
+commit b24ee7c909657db43bd8c5d8c01055ca0883c9cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 08:40:39 2012 +0100
+
+    Eliminate most strncpy() and strncat() calls
+    
+    Using strncpy() and strncat() is error prone -- see also
+    http://www.gratisoft.us/todd/papers/strlcpy.html. Hence replace
+    all invocations of strncpy() and strncat(). Replace
+    strncpy(dst, src, n) calls by:
+    * strlcpy(dst, src, n) if the goal was to avoid output buffer overflow.
+    * sprintf(dst, "%.*s", n, src) to copy a prefix of src to dst or if src is
+        not '\0'-terminated.
+    * memcpy(dst, src, n) if strlen(src) >= n and n < size of dst.
+    * strcpy(dst, src) if n > strlen(src) and n < size of dst.
+
+commit 6d95bc4149472931005475c30a541fed5534da39
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 11:19:16 2012 +0100
+
+    Fix warnings triggered during compilation of the Perl xs source files
+
+commit bad0600f6ec944ef8455e327ce784b9b07d247c9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 10:00:13 2012 +0100
+
+    Add configure test for sockaddr_un.sun_path such that the com2sec test is run
+
+commit 92a32ac4866a5edc7f347d37942bf028de02762f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 10:00:29 2012 +0100
+
+    Get rid of a compiler warning
+
+commit 83e4c0e304f617ccac6610edd74d1706797bbf52
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:15:37 2012 +0100
+
+    CHANGES: testing: Add a test for se_store_list()
+
+commit 4fae5852103ec3893ad488bc0d905ca6914595ef
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:17:15 2012 +0100
+
+    CHANGES: snmplib: Simplify the se_store_enum_list() implementation
+
+commit b3222bb275f2f2346e0fd0478afa2efb600773e5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:16:45 2012 +0100
+
+    CHANGES: snmplib: Declare "type" argument of se_store_list() / se_store_slist() / se_store_enum_list() const
+
+commit 022f840fbfcb0e26b08f0e55728231f611495803
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 19:55:56 2012 +0000
+
+    Avoid that Valgrind complains about sending UDP data
+
+commit 672a809c228e9550b99b8910be75d0b161985402
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 17:33:09 2012 +0000
+
+    Fix a 64-bit compiler warning
+
+commit 24ff260ad89ce2aa361a55c7c72e916031defe35
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 17:11:24 2012 +0100
+
+    Change the type of the second argument of snmp_set_var_value() and snmp_set_var_typed_value() from u_char* to void*, like on more recent branches
+
+commit c6ca737fb46f90a4bda5d43734aac34e837a05f4
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat Mar 13 19:07:37 2010 +0000
+
+    Backport commit f504ce2d74a4bc88f68cc9515fa7053373cb15b5.
+    (Fixed most compiler warnings triggered by the source code in the perl subdirectory. Note: these changes may contain some real bug fixes.)
+    
+    Conflicts:
+    
+    	perl/ASN/ASN.xs
+    	perl/OID/OID.xs
+    	perl/SNMP/SNMP.xs
+    	perl/agent/agent.xs
+
+commit d212dc984ec34e4d230625e46e58b0c628a50df5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 16:46:49 2012 +0100
+
+    SNMP.xs compiler warning fixes
+
+commit baceebb10d8caf5db63cc36935fed65ee931029d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 16:22:44 2012 +0100
+
+    Add declaration for shutdown_snmpNotifyTable()
+
+commit f7f966abd6d2849b1331252afe5c473e5c40b32d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 14:24:33 2012 +0100
+
+    Fix format specification mismatches.
+
+commit 303c015bcfe9af0b154e9881c7b4f449e08f30bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 6 22:06:23 2009 +0000
+
+    Backport commit d3eb2b5ced22a8480053ce43acf9739729055404
+    (Sprinkle some const-ness where relevant / fix format string mismatches,
+    Niels Baggesen, May 2009)
+    
+    Conflicts:
+    
+    	agent/agent_sysORTable.c
+    	agent/helpers/instance.c
+    	agent/mibgroup/disman/event/mteTriggerConf.c
+    	include/net-snmp/agent/instance.h
+    	include/net-snmp/agent/sysORTable.h
+
+commit d95b40406916bda5b48b5a6131bec27b866b0a79
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 6 21:59:20 2009 +0000
+
+    Backport a2a7316c310f0fcc3728673fa047051c23b71960
+    (Trivial warning fixes, Niels Baggesen, May 2009).
+    
+    Conflicts:
+    
+    	agent/mibgroup/hardware/cpu/cpu_linux.c
+    	agent/mibgroup/host/hr_swrun.c
+    	agent/mibgroup/if-mib/data_access/interface_linux.c
+    	agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+    	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+    	agent/mibgroup/mibII/sysORTable.c
+    	agent/mibgroup/mibII/system_mib.c
+    	agent/mibgroup/ucd-snmp/logmatch.c
+    	agent/mibgroup/util_funcs/get_pid_from_inode.c
+    	agent/snmpd.c
+    	snmplib/container_list_ssll.c
+
+commit d86c47f003fdc192bce7b46ac4f06b09e387c12b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 13:29:08 2012 +0100
+
+    Fixed a typo
+
+commit bee4d79cf4eb7e0a45397f59b5298da633a8e1ba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 13:14:57 2012 +0100
+
+    Fixed reading past end of buffer.
+
+commit 3dc0e00a2fd8e34fe1ae33ecabf36e146460a31f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 12:40:07 2012 +0100
+
+    Fixed buffer overflow when large 'token' is used.
+
+commit b3c4982542e0ab151fb3884754cdfbcb472da52d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 12:28:52 2012 +0100
+
+    Fixed off-by-one memset.
+
+commit 0f53695044dd3f0c3507753e3f8c29d97e96872d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 3 21:38:26 2011 +0200
+
+    CHANGES: snmplib, snmpd, perl: Eliminate dead variables
+    
+    Conflicts:
+    
+    	agent/mibgroup/agentx/master_admin.c
+    	agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
+    	agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
+    	agent/mibgroup/host/data_access/swinst_pkginfo.c
+    	agent/mibgroup/host/data_access/swrun_procfs_status.c
+    	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+    	agent/mibgroup/mibII/kernel_linux.c
+    	agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
+    	agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
+    	apps/snmptls.c
+    	apps/snmptrapd_log.c
+    	snmplib/dir_utils.c
+    	snmplib/snmp_client.c
+    	snmplib/snmp_openssl.c
+    	snmplib/transports/snmpTLSTCPDomain.c
+
+commit 0153805c99b9197365935c5d11ae9c3d4bfaa0f3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 09:48:41 2012 +0100
+
+    Fix a set-but-not-used warning
+
+commit 3f8885fbee9407748fc2f0573728a11ba2bc023a
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Tue Apr 28 05:51:13 2009 +0000
+
+    Return a value from sprint_realloc_value even if no subtree is located.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17578 06827809-a52a-0410-b366-d66718629ded
+
+commit b1eaaf302369fd4552e8fee7b6a805091ec0a9b4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:38:51 2012 +0100
+
+    Added check of find_sec_mod() return value.
+
+commit aee4e895fe3bd5f4a61e34275bfca0368b560555
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:31:22 2012 +0100
+
+    Added check of snmp_sess_transport() return value.
+
+commit 5d1d0a744ab30c8e645c3b8506cbbd2cceb3d275
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:04:48 2012 +0100
+
+    Added check of netsnmp_extract_iterator_context() return value.
+
+commit 299ea9a89c3f1758a7748bb9b3411f62f2c70f88
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 10:54:55 2012 +0100
+
+    Added check of fopen() return value, just in case of some race.
+
+commit 90f1ae6757917481636eef77100caeeb53edfe01
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 3 10:06:56 2012 +0100
+
+    Add strlcat.c. Source: http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/string/strlcat.c.
+
+commit 089bcb360aa26790ad2a8ceddf583b7ba5ddfd48
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 10:50:56 2012 +0100
+
+    Added strrchr return value check, just to be sure.
+
+commit 199a0511f6eb0ef3ff1d9f922b790ab67dfde01e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 10:31:26 2012 +0100
+
+    CHANGES: snmpd: smux: simplify smux_list_detach()
+
+commit d883573aa73e0f5fc188acedee6451f95dae900c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 10:23:06 2012 +0100
+
+    Fix a compiler warning introduced by commit a809fe5075c9f374715f7d1a682949a0730172c1.
+
+commit 7b7a3eb2500527eaa1699287a6ca6fcc4cc2e08a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 09:40:02 2012 +0100
+
+    Fix a build error caused by commit a809fe5075c9f374715f7d1a682949a0730172c1.
+
+commit 2b6c119fed4848da6663c11f0c2cbdc29921b5c6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:51:10 2012 +0100
+
+    Check for netsnmp_ds_get_int() errors.
+
+commit 6ce5360caa4c9de51ade57879e83f96bd04b4c5a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:42:23 2012 +0100
+
+    Check for missing view.
+
+commit b3bc54bed31690a85df2acfbf3296da93a9e89b4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:23:17 2012 +0100
+
+    Check socket() result.
+    Also close the socket on error.
+
+commit 92075f51cd45a38ca38760b3ffe82e16559e9c2e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:18:26 2012 +0100
+
+    Check open() result.
+
+commit 6665d5fe2fc569d6fa854d1d78e347bbac69e070
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:22:22 2012 +0100
+
+    Fixed missing break.
+
+commit a6648c5453e1ef8dac57a38efcc00cce53bf9e4f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:20:27 2012 +0100
+
+    Fixed missing break.
+
+commit d68dcae0f18d554571aef321944a5290548dde86
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:16:11 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit fb6f80c0fe3ba36e56f5b911a47e3f6f32ba266e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:14:07 2012 +0100
+
+    Fixed exit code of encode_keychange with wrong arguments.
+    Also added a comment for Coverity.
+
+commit 3130e24fdc232464dd7bb216f46cafa2e0e775a6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:09:54 2012 +0100
+
+    Added missing break
+
+commit 18c126a9565cb4d69d7513b944a2105588045d35
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:07:29 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit 6d31c82070a2c68fe3c519e9d56fa2779554d01f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:01:53 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit dc6f0e2e549b4cd061ebc190084b1fc77a55f40f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:32:59 2012 +0100
+
+    Fixed wrong operator
+
+commit dab32867ed0b99301efd7b8d852ad1288a184be0
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:30:33 2012 +0100
+
+    Fixed QUITFUN usage.
+
+commit b1a2bcf64615eb66bc24d5be4950e45012962045
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:18:03 2012 +0100
+
+    Fixed wrong operator
+
+commit b2b1c851b94fed37c386eaa1bfead5c77696e3ef
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:14:52 2012 +0100
+
+    Fixed wrong operator
+
+commit a809fe5075c9f374715f7d1a682949a0730172c1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 10:58:46 2012 +0100
+
+    Added check for failed register_mib.
+
+commit 5949f055c16ae650615aae7a1fee3f2d7b16d940
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 10:29:59 2012 +0100
+
+    Make MIB file parsing and detection more strict - LABEL is required at the beginning of MIB files.
+
+commit e4b673683c68ba8b3abc040b9125ec304643cc7c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jan 1 23:00:24 2012 +0100
+
+    Assume that libdl might be in AGENTLIBS or SNMPLIBS so preadd them.
+
+commit b13c1e57bedba79b806103c74f1921d53a706b38
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jan 1 22:55:06 2012 +0100
+
+    Do not require ucd-snmp/dlmod unless it will work.
+
+commit 27dcea0d5f801df494ab2cb5c5c0ebe54eb0dcd3
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 14:48:29 2011 +0100
+
+    Adjust paths for test restructure
+
+commit 14b60e85a1b5700e93d126e2f291d5c485f34e36
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 14:14:29 2011 +0100
+
+    CHANGES: snmpd: Make the configuration of the dlmod module fail rather than generate a dummy module if the dlopen function isn't available.
+
+commit 98a97538fc1e9ff46b60d5d969347444578378c0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 13:35:13 2011 +0100
+
+    Adjust the paths to support testing even if builddir != srcdir
+
+commit 88f0af3cfb916ae5863cc2986071d435f20c3064
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 11:37:52 2011 +0100
+
+    Reduce the scope of the variables 'p' and 'len'.
+
+commit 0815a7536c76f7e4842638683f674894a1a8ce14
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 14:42:54 2011 +0000
+
+    Report problems with SetUndo processing
+    Missed when applying patch #3445440
+
+commit eb2ab23742ca86c0b89ccfe91eb6ea374bf3acc1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 14:37:31 2011 +0000
+
+    Check for the expected error (EPIPE) on closure.
+    Missed when applying patch #3447444
+
+commit aac10bc4f053c014f382d6593fc32ab95e0b1a57
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 12:59:52 2011 +0000
+
+    CHANGES: snmpd: BUG: 3463767: Handle parsing subidentifiers > 2^31
+
+commit bbc02e36e90c1aab7898562f963f5cadb26e10bd
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Dec 28 17:15:16 2011 +0000
+
+    Move pass/pass_persist tests to the new location
+
+commit 3898c04fd6f89867062fdfebf36857ab619c0450
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Dec 28 16:53:24 2011 +0000
+
+    Add tests for pass/pass_persist, supplied by Bill Fenner
+
+commit d5ee3f0a1a63bb1752c74cbca55aa3d40bf9bf13
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 21:58:51 2011 +0000
+
+    CHANGES: snmpd: PATCHES: 3447444: Fix SIG_PIPE handling
+    Patch provided by Bill Fenner
+
+commit 2a17b37430c1852998c3588e547d7eb61c06da71
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 21:45:38 2011 +0000
+
+    CHANGES: agentx: PATCHES: 3445440: More robust handling of AgentX errors
+    Patch provided by Bill Fenner
+
+commit fe58a0e5f4d4e2e2ecbcb47382b08cb1e4df352c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 18:16:23 2011 +0000
+
+    CHANGES: snmplib: PATCHES: 3456770: Handle (obsolete) UInteger type properly
+    Patch provided by Bill Fenner
+
+commit 1be8cf08a67a91855fee1ec4a2d8e087c7812456
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 18:04:10 2011 +0000
+
+    CHANGES: agentx: PATCHES: 3445437: Log AgentX disconnections
+    (in line with connections) Patch provided by Bill Fenner
+
+commit 068037289107faa2ba3f5cd2fb00c19494bb9a04
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 17:27:46 2011 +0000
+
+    Handle any GETNEXT request OID, not just a simple walk.
+
+commit a74fa528983123d355a8cdcaa77dd4eb4b8c6959
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 17:00:18 2011 +0000
+
+    CHANGES: pass: PATCHES: 349394: Bring pass_persisttest script into line with passtest*
+    (i.e. using the legitimate structure of NET-SNMP-PASS-MIB)
+    Patch provided by Bill Fenner
+
+commit bbe649ebfa61ea22399170b36b99db30a1de8012
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 16:54:38 2011 +0000
+
+    Rework "passtest" example to fully validate GETNEXT requests
+    and use a legitimate structure for output.  Backport of SVN
+    revision 17632 (which updated 'passtest.pl' but missed 'passtest')
+    Correct in branches 5.5 and above
+
+commit 82d06c7247b22c8b01d45bf55041d2f1e6427d49
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 13:45:18 2011 +0000
+
+    CHANGES: snmpd: PATCHES: 3447671: Fix override handling of OID values
+    Patch supplied by Phillip O'Donnell
+
+commit ba4a9ce51c9600f9fda168f1e6eff32a1db63cb9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 13:24:26 2011 +0000
+
+    Tweak --disable-snmp-set changes
+
+commit 827c8b28830171faa9c61d53efca9eb6600561c2
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 11:25:43 2011 +0000
+
+    CHANGES: python: PATCHES: 3433846: Fix for use with python 2.4
+
+commit f98a54a99caf7b46b100a920db942cbca9c43926
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 10:10:36 2011 +0000
+
+    Skip SET-based tests when configured with --disable-set-support
+
+commit 230df14f94c3736ff34379a4e281eea353b47f80
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Dec 26 23:34:23 2011 +0100
+
+    Do not assign tmStateRef twice
+
+commit c96b3b4d8530ad5e0efb03f24dab5e5f1a460031
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 25 11:18:21 2011 +0100
+
+    Correct use-after-free.
+
+commit c5978c89cde2440f4d20dadbc9d1dd8db562d56e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 25 11:15:44 2011 +0100
+
+    Correct double-free.
+    
+    netsnmp_tlstmAddr_add takes ownership of it's argument so calling free on the
+    argument on failure is incorrect.
+
+commit c139ca123b44bb3b9b6bf921e1609cc45f63a660
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:55:30 2011 +0000
+
+    CHANGES: snmpd: PATCHES 3410059: Fix sparsely augmenting trigger tables
+    Patch provided by Stephen Turner
+
+commit c4ae021b2e6384437081c5623f360c8896390188
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:29:54 2011 +0000
+
+    CHANGES: snmpd: PATCHES 3410050: Skip already-'processed' varbinds
+    Based on mib2c patch provided by Stephen Turner
+
+commit c6accf8c66254fa8c48767ed7dec795ddafc522e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:27:11 2011 +0000
+
+    CHANGES: mib2c: PATCHES 3410050: Skip already-'processed' varbinds
+    Patch provided by Stephen Turner
+
+commit a61826ad8ca54661d1d909712503bd3a8b32eed0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Dec 22 18:35:46 2011 +0100
+
+    Remove unused variable.
+    
+    myMatch is unused as nmatch is zero and also since regexBuffer is created
+    with REG_NOSUB set.
+
+commit ba4fc80fe2cfd5a5d89230d8f3703e4fe01e6019
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 22 19:24:40 2011 +0000
+
+    CHANGES: agent: PATCH 3402376: from Leonardo Chiquitto: Recognise ReiserFS
+    Also move various FSType definitions to the appropriate blocks
+
+commit b5ac4a04dcd5470d08d03321abcd1e982621e6e0
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:39:46 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit 2b37e4e8f250a0d8821199a74ac3f4e5b7b7baba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:31:51 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit 3d08345156c419333de969f13d21fcec7e18e94d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:32:29 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit cd859ad51c4f18d5b0fc69dd669fcb051c798969
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:39:33 2011 +0100
+
+    Fixed wrong memmove size
+
+commit 30ff58d09d4c9d5438bb621054fd7ad7a2a597e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:07:19 2011 +0100
+
+    Fixed wrong length of buffer when printing ASN_BIT_STR
+
+commit 6c1487e1d360d3d260a39cb1f5b15da978395053
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 15:47:34 2011 +0100
+
+    Fixed potential free of uninitialized pointer in error cases
+
+commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 15:44:46 2011 +0100
+
+    Fixed unitialized values in udpTable
+
+commit c44608679b89751176f28a2e54d5282b46e2a05c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:56:13 2011 +0100
+
+    Use calloc instead of malloc and manual clearing
+
+commit a05c5f9513461824e7903ae9ae9a6c3386e33879
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:40:50 2011 +0100
+
+    Fixed printing of unitialized variable when sensors_get_label() fails
+
+commit e4a5edc72393bd3de9bf12bceba9d83bbf7de70b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:31:25 2011 +0100
+
+    Removed unused variable
+
+commit fae2e5b835b8df1eae47e4cebb4eb404d7282377
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:31:21 2011 +0100
+
+    Fixed dereferencing unitialized iid in error cases and with debug info enabled.
+
+commit 9d58f81a9239cfbcfc8ebce367d21e9b3dcb028b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:33:33 2011 +0100
+
+    Fixed dereferencing uninitialized variables in error cases
+
+commit 0bc8c08edeae7ae095f116258c20ae5767d60652
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:20:52 2011 +0100
+
+    Fixed returning uninitialized variable 'status' when ss == NULL
+
+commit 7304c53cf8adee8eccef1a8f26756fc07f098721
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 18 23:31:53 2011 +0100
+
+    On solaris 10 test in /bin/sh doesn't support the -e test. Replace it with -f
+
+commit 8cd3be60d693c9c36ffb97d3d9bcb49c1b4abe35
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 17 08:52:24 2011 +0100
+
+    Avoid repetition of the complex expression determining if it is possible to get the destination address.
+    
+    This also makes it possible to build on platforms like Solaris 10 that define
+    IP_RECVDSTADDR but lack either of msghdr.msg_control and msghdr.msg_flags.
+
+commit 953f2e3d425ede3b863a2e7ccb0b4bc862928b57
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 5 22:13:07 2011 +0100
+
+    Move the use of _sendto and _recvfrom below their definitions.
+
+commit 68a1173c46cf77601426cf391d9a852794f2057e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Nov 20 20:05:18 2011 +0100
+
+    CHANGES: snmplib: Separate out the cmesg buffer size
+
+commit 461dd16f3b2647322cdce6363081cc44ba5a49b5
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 26 21:51:01 2011 +0100
+
+    CHANGES: snmplib: Merge together the Linux and *BSD version of src port sending.
+
+commit 7accb69baa1fc0b6a3439d2e549c86da3453bad2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:30:31 2011 +0100
+
+    Use a bare struct iovec in instead of a one element array.
+    
+    The purpose of this change is to make _recvfrom more similar to _sendto.
+
+commit 39852cd4c85ef2bfc75cdea2825261ee93e768c2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:29:20 2011 +0100
+
+    Add comment describing the purpose of the call to getsockname after almost removing it.
+
+commit 1b292ca27eab5caa73feaaa83dc9c12abc0f2e70
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:27:59 2011 +0100
+
+    Reduce variable scope.
+
+commit bc879571eca9520bc132f840c3e659d3793144d7
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:25:36 2011 +0100
+
+    Introduce temporary variables to ease the extraction of the server address.
+
+commit b7eea6cffbd872932ce2c04fefb6f43de339f374
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:18:33 2011 +0100
+
+    Rename the cmesgptr variable to cm.
+    
+    The purpose of this is to increase the readability of the code.
+
+commit 0a7461e728805c62a1cab9d87bfc74c7927a9fcc
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:15:22 2011 +0100
+
+    Factor out a common loop in recvmsg option processing.
+
+commit b3c6248d0201ab1610840d6d0e749b3b6c4ad792
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:13:43 2011 +0100
+
+    Unify the structure of Linux and BSD recvmsg option parsing somewhat.
+
+commit 356400d6290a423b52ebeea5a5e976fb15bb73b4
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:04:56 2011 +0100
+
+    Use CMSG_DATA on the result of CMSG_FIRST/NEXTHDR, not on the buffer.
+
+commit 3b351708c62de46aa1b90ed232cfd8c7c5b02231
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 12:00:32 2011 +0100
+
+    Remove a cast
+
+commit de9250d9dae9727a6cc7f647688dddf1b8597128
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 11:58:04 2011 +0100
+
+    CHANGES: snmpd: Make sprint_mib_oid() treat OID components as unsigned instead of signed integers
+
+commit 0e33b3b6d5854a4bac15d4ea5e016c53d161d0cd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 10:02:28 2011 +0100
+
+    Fix recently introduced compiler warnings
+
+commit b7e50d5f9a6755982d2af3191473cb34643bc03f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 08:37:22 2011 +0100
+
+    CHANGES: snmplib: Reduce overhead of config file parsing
+
+commit 73c9ee42d28afe2e107a7d6616b6d011890c36ea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 09:09:59 2011 +0100
+
+    Remove unused variables
+
+commit 3db97962b37eb12d254d61e6be234b06a391c8bb
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Thu Dec 8 07:43:45 2011 +0100
+
+    CHANGES: snmpd: PATCH 3453868: from "Bill Fenner <fenner@gmail.com>": Factor common code into pass_common
+    
+    Move the code for pormatting and printing values from pass and pass_persist
+    into pass_common.
+
+commit b6568c83f1756e9a65434edeeeb40d23ddbbb652
+Author: ccchiu <ccchiu@sourceforge.net>
+Date:   Wed Dec 7 16:25:27 2011 +0100
+
+    CHANGES: BUG: 3452069: Fix snmptrap_oid declaration in mib2c generated code
+    
+    This bug was introduced considerable time ago. It did already exist at the
+    time the 5.6 branch was created (see also commit
+    0ec088afa27cfda4e6ea78aae7cfc5507564edde).
+
+commit d494db64c208b4dc62813132f8863bd5c1a39d77
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:38:17 2011 +0100
+
+    CHANGES: snmptrapd: Eliminate an unused variable (Now)
+
+commit 28f2561bc2935d8e1cbf46d2820158173e7a4cf4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:37:11 2011 +0100
+
+    CHANGES: snmptrapd: Move the main loop code into a new function
+
+commit 396e122ddc42a916f06a02884c0e8a258edbe238
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 09:32:16 2011 +0100
+
+    CHANGES: snmpd: Match each getpwnam()/getpwuid() call with an endpwent() call and each getgrent() call with an endgrent() call.
+
+commit 3efefbc0024399786f8b68b1e93b0a8fddddc7da
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:41:01 2011 +0100
+
+    CHANGES: snmptrapd: Remove superfluous casts
+
+commit 7f05daa8e0e0f533b0f12a3e1cf07641519909d6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 11:58:32 2011 +0100
+
+    CHANGES: BUG: 3444939: BUG: 1796886: snmplib: Avoid that sprint_realloc_octet_string() embeds unprintable control characters or binary zeroes in its output. This behavior could cause truncated output in snmptrapd.
+
+commit db8f558fd2f3b7c109ea3a1c2133b75b6f8cb2ad
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:04:41 2011 +0100
+
+    Compiler warning fix: pass unsigned chars to isprint() instead of signed chars.
+
+commit 800dc1028e7e0cd8cc14d84dd31723d47ac073db
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Dec 1 10:18:58 2011 +0100
+
+    Reduce the scope of the hint variable
+
+commit 83ea4a080c90a74b9743d3f24cf0d4b8a1e8c849
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Nov 27 21:16:52 2011 +0100
+
+    Reduce the scope of the variable qos
+
+commit 7b9e03441c3dc3a07670ed01f5d04791a82c750c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:04:01 2011 +0100
+
+    Remove #define val(x) __STRING(x) and change val(x) into __STRING(x).
+
+commit 2f379b0e4ecadfa4e541e3005c8fc8281882b741
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 15:58:47 2011 +0100
+
+    Follow-up for commit 1aa704e: unbreak the MSVC build
+
+commit 64ef0f71127617837027fb2cfaf174b95ba79e0d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:19:50 2011 +0100
+
+    Add SNMP::register_debug_tokens()
+
+commit 7bead9ca917c67566d5ed98ab507bbc02816217d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:08:08 2011 +0100
+
+    AgentX subagent: Reduce code duplication
+
+commit 0ed71541f87e7d78bc998eebda3217c59e1df830
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:03:19 2011 +0100
+
+    CHANGES: snmplib: Add Doxygen-style function header for netsnmp_register_default_target() and netsnmp_clear_default_target().
+
+commit 8c2972b61e40169b47c50988b6ae9e8c285f84f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:02:54 2011 +0100
+
+    CHANGES: perl: Fix spelling in the documentation of the SNMP module
+
+commit 5df2bac6bd717799311f001ac7b73db88f11bdda
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Nov 29 08:59:58 2011 +0100
+
+    CHANGES: snmplib: Only transform the address to printable form when needed.
+
+commit 171e8d48d4af04013cff8fd28f5341a2aef21d88
+Author: Mijo Safradin <safradin@linux.vnet.ibm.com>
+Date:   Tue Nov 29 16:49:46 2011 +0100
+
+    CHANGES: snmp-bridge-mib: Fix index interpretation.
+    
+    This patch corrects a wrong data interpretation.
+    snmp-bridge-mib obtains the ifindex value from the sysfs
+    attribute 'ifindex' The value given by the sysfs attribute
+    is an integer, which is handled as hex and leads to
+    incorrect data displayed to the user.
+    
+    e.g.
+        $ > snmpwalk localhost BRIDGE-MIB::dot1dBasePortIfIndex.2
+        BRIDGE-MIB::dot1dBasePortIfIndex.2 = INTEGER: 54
+    
+    according to the sysfs attribute the value is 36
+    
+        $ > cat /sys/class/net/<device>/ifindex
+        36
+    
+    Signed-off-by: Mijo Safradin <safradin@linux.vnet.ibm.com>
+
+commit 82e39fb6706df90ecf2fc9e10ada2b962ee196f3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Nov 29 12:27:46 2011 +0000
+
+    Fix multi-line case testing of incoming OID
+
+commit b15da1a4516061105a1eac7450cf650ec44266b2
+Author: Nikolay Denev <ndenev@gmail.com>
+Date:   Tue Nov 29 08:29:49 2011 +0100
+
+    CHANGES: FreeBSD: Restore IP_RECVDSTADDR functionality.
+
+commit 7f47f52e481baa9aafb5784244b0dd2653e7dcff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Nov 28 08:51:39 2011 +0100
+
+    CHANGES: snmplib: Use SNMP_ALLOC_TYPEDEF to allocate transports in order to avoid the separate call to memset.
+
+commit cf86039e3086225c3085bb9adf088b8ba5ba6979
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 15:02:58 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T102pdu_build_clib pass.
+
+commit 1a87e76e00ee3d5cd37a07bfc3d84490d3c2a4ec
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 14:55:42 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T014gethostbyaddr_clib pass
+
+commit 8867fd1dcfe72b59d07322ff38a699b66ec4f326
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 09:44:38 2011 +0100
+
+    CHANGES: snmplib: Make netsnmp_large_fd_set_resize() robust against memory allocation failures.
+    
+    CHANGES: snmplib: Make NETSNMP_LARGE_FD_ZERO() use memset() on Unix systems instead of an explicit loop.
+    CHANGES: snmplib: Make sure that on Unix systems netsnmp_large_fd_clr() doesn't try to read memory it isn't allowed to read if the first argument equals -1 (a value that shouldn't be passed by the caller).
+    CHANGES: snmplib: Make netsnmp_large_fd_is_set() return false on Unix systems if the first argument equals -1 (a value that shouldn't be passed by the caller).
+    CHANGES: Windows: Make netsnmp_large_fd_set_resize() shrink behavior correct.
+
+commit 23db0cf09b8b0eab37b749ef0c3c3f306900245c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 21 23:02:57 2011 +0100
+
+    Fix casting tv_usec to int which may be too short
+
+commit 80ee4022e534e64aad5a5f27192843b42acb85e0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 09:14:02 2011 +0100
+
+    CHANGES: snmpd: BUG: 3439234: Move netsnmp_pass_str_to_errno to pass_common and rename it to netsnmp_internal_pass_str_to_errno
+
+commit 0baa9296c072bb3735760b0dd992f2d1d3ca27fa
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 09:05:24 2011 +0100
+
+    CHANGES: snmpd: BUG: 3439234: Correct the dependencies of ucd-snmp/pass and ucd-snmp/pass_persist
+
+commit 1aa704e4a294430b28e39b6f9e4683b8a48bce04
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 08:35:21 2011 +0100
+
+    CHANGES: snmpd: Factor out asc2bin and bin2asc. Add a netsnmp_internal_ prefix to them
+
+commit cda8fe91013f12cbf64a0775abb55720035af931
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 00:55:24 2011 +0100
+
+    CHANGES: snmpd: Call snmp_oidtree_compare instead of snmp_oid_min_compare
+    CHANGES: snmpd: Remove snmp_oid_min_compare since it is internal and unused
+
+commit 85f893e2b605e67f9bd0443c74e2ed269aa68564
+Author: Niki Denev <niki_d@users.sourceforge.net>
+Date:   Thu Nov 17 22:42:32 2011 +0100
 
     CHANGES: snmpd: PATCHES: 3175640: Use IP_RECVDSTADDR sockopt where available (*BSD)
     
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20183 06827809-a52a-0410-b366-d66718629ded
+    This hunk fell of when the rest of the patch was merged.
 
-commit c048f2ce43bfa82e8d3ad8a2bd312290c6ba27f0
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Apr 15 13:42:14 2011 +0000
-
-    CHANGES: snmplib: PATCHES: 3183000: Fix calculation of common OID prefix length
-    CHANGES: snmplib: BUGS: 3182985: Fix calculation of common OID prefix length
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20182 06827809-a52a-0410-b366-d66718629ded
-
-commit 0e2d8e8337af7257f7eb727678f8034e84ae74ce
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Apr 15 13:42:14 2011 +0000
-
-    CHANGES: snmplib: PATCHES: 3183000: Fix calculation of common OID prefix length
-    CHANGES: snmplib: BUGS: 3182985: Fix calculation of common OID prefix length
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20182 06827809-a52a-0410-b366-d66718629ded
-
-commit 391597cffd9abde5ff46b74c5b6c7e321ab7d3c1
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Apr 15 13:42:14 2011 +0000
-
-    CHANGES: snmplib: PATCHES: 3183000: Fix calculation of common OID prefix length
-    CHANGES: snmplib: BUGS: 3182985: Fix calculation of common OID prefix length
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20182 06827809-a52a-0410-b366-d66718629ded
-
-commit 6b3fbbad913a8d75a8ae50a6d5320e1fafe0e10d
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Apr 15 13:42:14 2011 +0000
-
-    CHANGES: snmplib: PATCHES: 3183000: Fix calculation of common OID prefix length
-    CHANGES: snmplib: BUGS: 3182985: Fix calculation of common OID prefix length
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20182 06827809-a52a-0410-b366-d66718629ded
-
-commit 0f1b78755f9d92d39b10bb6f0ac32493206b3684
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Apr 15 13:17:37 2011 +0000
-
-    CHANGES: Linux: PATCHES: 3205811: Option to skip fd/loop/ram devices in diskIOTable
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20181 06827809-a52a-0410-b366-d66718629ded
-
-commit e4574372e478d37efa3975ca0fc718fcda30608f
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 21:31:09 2011 +0000
-
-    CHANGES: python: PATCHES: 3185085: Fix segfault on 64-bit systems
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20180 06827809-a52a-0410-b366-d66718629ded
-
-commit 6c06a2594f6e87c72251ff793e7d9187b8915fbc
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 21:31:09 2011 +0000
-
-    CHANGES: python: PATCHES: 3185085: Fix segfault on 64-bit systems
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20180 06827809-a52a-0410-b366-d66718629ded
-
-commit 257f4d73702fc4c7ba2f7e1321a9655946b0e803
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 21:31:09 2011 +0000
-
-    CHANGES: python: PATCHES: 3185085: Fix segfault on 64-bit systems
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20180 06827809-a52a-0410-b366-d66718629ded
-
-commit 7e899b5cf2db2164e0c1d58706b9502e86596970
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 21:10:56 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3175323: Fix handling of 'while (false)' blocks
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20179 06827809-a52a-0410-b366-d66718629ded
-
-commit 6967d78999b7f4cb527020750cd35927fe4f2fe7
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 21:10:56 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3175323: Fix handling of 'while (false)' blocks
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20179 06827809-a52a-0410-b366-d66718629ded
-
-commit 50239f6650586bb4b99205424592b7b5191d5404
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 21:10:56 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3175323: Fix handling of 'while (false)' blocks
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20179 06827809-a52a-0410-b366-d66718629ded
-
-commit 93b32e28ef5519933f502decf99c68ea85a0dea5
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 21:10:56 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3175323: Fix handling of 'while (false)' blocks
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20179 06827809-a52a-0410-b366-d66718629ded
-
-commit 5d5d6fd481528adf7ca01ec0790849ca73196dc2
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 20:52:59 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3204883: Fix handling of non-table objects named fooTable
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20178 06827809-a52a-0410-b366-d66718629ded
-
-commit 3a8dca3143c5ca11443feb07f7af4bed808bdd32
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 20:52:59 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3204883: Fix handling of non-table objects named fooTable
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20178 06827809-a52a-0410-b366-d66718629ded
-
-commit b4bc7b27cda499391b9ecb2cbe541e10c151abd5
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 20:52:59 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3204883: Fix handling of non-table objects named fooTable
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20178 06827809-a52a-0410-b366-d66718629ded
-
-commit 59d4d9dc2e42a299c58b80c7ce8983683bd2a772
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 20:52:59 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3204883: Fix handling of non-table objects named fooTable
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20178 06827809-a52a-0410-b366-d66718629ded
-
-commit 6a29968cbdc0166a47a93d1c14d39a2e39fa98d2
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 20:44:37 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3211484: Support enumerations in notification varbinds
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20177 06827809-a52a-0410-b366-d66718629ded
-
-commit 342ca9db5371cbad7fa96af32aced750c2d77db1
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 20:44:37 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3211484: Support enumerations in notification varbinds
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20177 06827809-a52a-0410-b366-d66718629ded
-
-commit c6a71eaebef6c831daa36f57ec1ff230f052b330
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 20:44:37 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3211484: Support enumerations in notification varbinds
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20177 06827809-a52a-0410-b366-d66718629ded
-
-commit 5287f5d14631d4084eee24031746c54225267122
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Apr 14 20:44:37 2011 +0000
-
-    CHANGES: mib2c: PATCHES: 3211484: Support enumerations in notification varbinds
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20177 06827809-a52a-0410-b366-d66718629ded
-
-commit f08a1998071b6d4f4ec8d9f5fbf8aefe5629ce7a
+commit 5c913e54656ae0096b1feb6da98b5fc9ca81f276
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 20:01:55 2011 +0000
+Date:   Wed Nov 16 23:33:07 2011 +0100
 
-    Add missing system oids to mib
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20176 06827809-a52a-0410-b366-d66718629ded
+    Define the full NetBSD hierarchy downwards
 
-commit 3331e09bbec734034dbdb767e66c03e14a4548d5
+commit b881841bd0493dd71d63259bdded449b06f02c32
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 20:01:55 2011 +0000
+Date:   Wed Nov 16 23:30:33 2011 +0100
 
-    Add missing system oids to mib
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20176 06827809-a52a-0410-b366-d66718629ded
+    Fix size_t/int mismatches
 
-commit dd889d56abc4a6a2b76b1f7489ea55b0467be184
+commit ca294cf75bbc8e90dbf44ee40478935e91db1487
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 20:01:55 2011 +0000
+Date:   Wed Nov 16 23:18:03 2011 +0100
 
-    Add missing system oids to mib
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20176 06827809-a52a-0410-b366-d66718629ded
+    Remove unused variables
 
-commit 0a185a9d306b6816a26e3508dcb098b91861dc0b
+commit cd32c2dff06b9b452cc18d552d2f2234092c829c
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 20:01:55 2011 +0000
+Date:   Wed Nov 16 23:17:09 2011 +0100
 
-    Add missing system oids to mib
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20176 06827809-a52a-0410-b366-d66718629ded
+    Fix format warning
 
-commit d9477251d154fbb526f53367b0b6ebcd1d2674ac
+commit 883136c2b2fa0739f437a8cfb6614accc76e268e
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 19:53:10 2011 +0000
+Date:   Wed Nov 16 23:15:58 2011 +0100
 
-    Fix for garbage output when agent presents more columns in bulk
-    response than our local MIB file  specified.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20175 06827809-a52a-0410-b366-d66718629ded
+    More needs for NETSNMP_PRIo format specifier
 
-commit 79c698a1474e10855f210a6998708096712be608
+commit b8084a7ccc909b6d6db7c0e8e596d78671f5678b
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 19:53:10 2011 +0000
+Date:   Wed Nov 16 23:14:26 2011 +0100
 
-    Fix for garbage output when agent presents more columns in bulk
-    response than our local MIB file  specified.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20175 06827809-a52a-0410-b366-d66718629ded
+    Fix using char as array index (ctype.h)
 
-commit f394a266604af9f3e1b53ef6da375baa4a3901fe
+commit 84529e6320a89d97f1314aebad806255d2a1b18c
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 19:53:10 2011 +0000
+Date:   Wed Nov 16 23:00:57 2011 +0100
 
-    Fix for garbage output when agent presents more columns in bulk
-    response than our local MIB file  specified.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20175 06827809-a52a-0410-b366-d66718629ded
+    Fix missing format for FreeBSD 4
 
-commit 54787d25b2fbaad047a54fc30efeecc2d2805ce7
+commit 4bd0352955a2551bfe02308dd134b9128c98b9e9
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 19:53:10 2011 +0000
+Date:   Wed Nov 16 22:59:36 2011 +0100
 
-    Fix for garbage output when agent presents more columns in bulk
-    response than our local MIB file  specified.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20175 06827809-a52a-0410-b366-d66718629ded
+    Fix paranthesis problem
 
-commit 007e76d6dc38acdfab756fe9bd8e23d82095b4c6
+commit fe6269b1900cf44dc27a199a761d15a01c3f3092
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 19:50:08 2011 +0000
+Date:   Wed Nov 16 22:58:34 2011 +0100
 
-    Fix wrong name for config token 'doNotRetainNotificationLogs'
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20174 06827809-a52a-0410-b366-d66718629ded
+    Fix size_t/int mismatches
 
-commit f1edcfd049b760bc50104cfe82838ed2b3632861
+commit a4db9f9fc13d21ecff488eb410376edda6c28232
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 19:50:08 2011 +0000
+Date:   Wed Nov 16 13:43:34 2011 +0100
 
-    Fix wrong name for config token 'doNotRetainNotificationLogs'
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20174 06827809-a52a-0410-b366-d66718629ded
+    Remove unused variables
 
-commit af50924069a88b5badc084065e21b691f31f313d
+commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 19:50:08 2011 +0000
+Date:   Wed Nov 16 13:37:49 2011 +0100
 
-    Fix wrong name for config token 'doNotRetainNotificationLogs'
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20174 06827809-a52a-0410-b366-d66718629ded
+    Fix format specifiers to avoid warnings
 
-commit 33b9405d1203046a4590634c592c7181c133b7f2
+commit 25cfc1962ae576ccb1558da1e3ef8b6c17f63c16
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Apr 12 19:50:08 2011 +0000
+Date:   Wed Nov 16 11:27:53 2011 +0100
 
-    Fix wrong name for config token 'doNotRetainNotificationLogs'
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20174 06827809-a52a-0410-b366-d66718629ded
+    Really up-to-date mibs
 
-commit 2fb0b89c2323db309b162d60a943c1e3a0a17d07
+commit 0e86c781f3989bf022c8993a118617b74a75420c
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sat Apr 9 21:59:11 2011 +0000
+Date:   Wed Nov 16 09:17:19 2011 +0100
 
-    Remove bogus (Linux) defines
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20173 06827809-a52a-0410-b366-d66718629ded
+    memory_linux: get Shmem from /proc/meminfo for 2.6 (or newer) kernels
 
-commit 4f3da767b0f87c99c4c1f5b741203d7d696beeea
+commit bf264d15ded7acbbf2e3871b98fd1fcef43d9ec3
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sat Apr 9 21:59:11 2011 +0000
+Date:   Wed Nov 16 09:16:16 2011 +0100
 
-    Remove bogus (Linux) defines
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20173 06827809-a52a-0410-b366-d66718629ded
+    memory_linux: close sockets in error situations
 
-commit c3dbbd9fc57acbca999356cdf9be958cc11735ef
+commit 57ff8a40bae5d9bcad16089142a9cf328c9fa1f5
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sat Apr 9 21:56:33 2011 +0000
+Date:   Wed Nov 16 09:14:57 2011 +0100
 
-    HAVE_TM_TM_GMTOFF is HAVE_STRUCT_TM_TM_GMTOFF
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20172 06827809-a52a-0410-b366-d66718629ded
+    disman/ping, disman/traceroute: Close sockets in error situations
 
-commit 184848f6a5362a4501974a5cf2e5771d2864ff78
+commit 8a2502a15c3217b95939a3c836167d230ac35f02
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sat Apr 9 21:56:33 2011 +0000
+Date:   Wed Nov 16 09:13:53 2011 +0100
 
-    HAVE_TM_TM_GMTOFF is HAVE_STRUCT_TM_TM_GMTOFF
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20172 06827809-a52a-0410-b366-d66718629ded
+    Up-to-date list of RFCs wit mibs
 
-commit b1cd21a4d71c17c122134ac3284917f65363e4d2
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sat Apr 9 20:04:29 2011 +0000
+commit dcdd702111d8da5f53804cfcf0dfdad731468bde
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Nov 15 10:57:34 2011 +0000
 
-    Solaris support for SCTP-MIB
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20170 06827809-a52a-0410-b366-d66718629ded
+    Don't try to install an empty list of man pages (MAN3)
 
-commit cce304193098f7573807c82a708bcbe0347a7a2b
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sat Apr 9 20:04:29 2011 +0000
+commit ba619804e5978a8df754844efcca52b69b5015fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 13:34:20 2011 +0100
 
-    Solaris support for SCTP-MIB
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20170 06827809-a52a-0410-b366-d66718629ded
+    MinGW: Make sure that the backslashes in the pskill message are displayed.
 
-commit c6659c94ad9ba8060dde18942761ce85d1a5cc19
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sat Apr 9 19:50:30 2011 +0000
+commit 923eecc507f75043b60c5e68053a4f396ab0b0d2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 12:36:38 2011 +0100
 
-    TZ is one hour off if HAVE_TM_TM_GMTOFF and SYSV (such is Linux)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20169 06827809-a52a-0410-b366-d66718629ded
+    Compiler warning fix for systems where uint64_t = unsigned long (e.g. RHEL 6.1/x86_64)
 
-commit 9fa64f27ac5198e54fef2df58dc094af237faf1e
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sat Apr 9 19:50:30 2011 +0000
-
-    TZ is one hour off if HAVE_TM_TM_GMTOFF and SYSV (such is Linux)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20169 06827809-a52a-0410-b366-d66718629ded
-
-commit a9a619e0d17303c9ee7d5a7e7106ea0af33b9e96
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Fri Apr 1 01:11:07 2011 +0000
-
-    CHANGES: snmplib: dtls: overhaul of debug
-    
-      - drastic reduction in number of messages and msg complexity
-        for basic dtlsudp token
-      - previous level of detail available by adding 9:dtlsdup token
-    
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20168 06827809-a52a-0410-b366-d66718629ded
-
-commit 1fad987eec1def7cd86c65ac27901373e7a63d0b
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Fri Apr 1 00:53:29 2011 +0000
-
-    CHANGES: snmplib: dtls: clean up close; catch 'connect'/'disconnect'
-    
-      connect = we get successfully decoded snmp data
-      disconnect = 0 byte read, ssh shutdown flag set
-      add bio_cache flags for connected/disconnected
-      check for null ptr before dereferencing
-      close handling:
-      -  only send queued data if we got to connected state
-      -  seriously reduce timeout to wait for junk read. i think
-         we shouldn't even bother
-      - return early if cachep is NULL, so we don't have to test it
-        repeatedly
-      - use correct nfds value in select call
-    
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20167 06827809-a52a-0410-b366-d66718629ded
-
-commit 806326b58a91683ea2a642f6c32a18b0987645df
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Thu Mar 31 05:17:40 2011 +0000
-
-    make trunk and v5-6-patches closely aligned
-    
-      mostly changes in debug, cookie tracking
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20166 06827809-a52a-0410-b366-d66718629ded
-
-commit 0d7e7e42ee3ba0faf215400900434d6024c250f8
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Thu Mar 31 03:53:33 2011 +0000
-
-    add cookie handling; remove ifdef'd code
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20165 06827809-a52a-0410-b366-d66718629ded
-
-commit 9888d444388e3f6b0f69eaaaa2258b314b377057
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Mar 18 11:23:24 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20147 06827809-a52a-0410-b366-d66718629ded
-
-commit a2b453bda72373dbbb115f7a9c04a635d9339e09
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Mar 18 11:18:22 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20146 06827809-a52a-0410-b366-d66718629ded
-
-commit b5d549a2e179cb18d5ab3440305310841161ff1f
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Mar 18 11:15:55 2011 +0000
-
-    make depend
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20145 06827809-a52a-0410-b366-d66718629ded
-
-commit bda22e0bc5d482c5c303e31ba5c432c091fa0dd8
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Mar 18 10:36:22 2011 +0000
-
-    documentation update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20144 06827809-a52a-0410-b366-d66718629ded
-
-commit 7345322e2812588b13a4c81b3cdc87729cc3d8f7
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Mar 18 10:32:49 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20143 06827809-a52a-0410-b366-d66718629ded
-
-commit 4aea5866f15f965da7264b9c123a728c9cfa873d
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Thu Mar 17 21:09:10 2011 +0000
-
-    Formatting botch
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20142 06827809-a52a-0410-b366-d66718629ded
-
-commit 0ef8dcd01d1540b8fc77163845f01e3e2d9b5101
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Thu Mar 17 21:07:27 2011 +0000
-
-    Install required mibs
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20141 06827809-a52a-0410-b366-d66718629ded
-
-commit 767936a375c4a97fd22951dfd2ea7b85aeafd96c
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Thu Mar 17 21:05:21 2011 +0000
-
-    New RFC mibs
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20140 06827809-a52a-0410-b366-d66718629ded
-
-commit 9e5056f124f1546f6f506d86169bc8cf0f505e02
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Mar 15 12:37:20 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20138 06827809-a52a-0410-b366-d66718629ded
-
-commit 66628aa7e040d6a8a3e618dcf72843ea0b81e116
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Mar 15 10:57:59 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20137 06827809-a52a-0410-b366-d66718629ded
-
-commit 7ea517905a81784c78e7fcae8e72348524166ab8
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Mar 15 10:56:00 2011 +0000
-
-    make depend
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20136 06827809-a52a-0410-b366-d66718629ded
-
-commit 6b8b4168f9ee82a6b25a1af7e007cd0e75547d53
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Mar 15 10:42:06 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20135 06827809-a52a-0410-b366-d66718629ded
-
-commit ec44f7ce43c362b86e3fd1c8ba99dd514df98231
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Mar 15 10:41:27 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20134 06827809-a52a-0410-b366-d66718629ded
-
-commit a3716193fe4cf2e82c4be0e9e8e6f4e67d4d06bd
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue Mar 15 10:31:12 2011 +0000
-
-    Spelling fix: reginerated -> regenerated.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20133 06827809-a52a-0410-b366-d66718629ded
-
-commit bed9272ff9fa6ffb7513a82ec6d423e6a4de5b26
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue Mar 15 09:59:30 2011 +0000
-
-    Fixed a compiler warning that was introduced in r20113.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20131 06827809-a52a-0410-b366-d66718629ded
-
-commit 69d6815b6544f47d39291191e9deb5bbae1134e2
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Mar 14 15:21:36 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20128 06827809-a52a-0410-b366-d66718629ded
-
-commit 9cc8c72e676f0e46d784d15f1ab072c192a54bf7
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Mar 14 14:14:07 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20127 06827809-a52a-0410-b366-d66718629ded
-
-commit b079a0a3d1cff4f4a30a56ffd55bdce1ea5ddee8
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Mar 14 14:11:14 2011 +0000
-
-    make depend
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20126 06827809-a52a-0410-b366-d66718629ded
-
-commit 0697d0ada97474613233a69b57330333e75b1886
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Mar 14 14:00:52 2011 +0000
-
-    documentation update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20125 06827809-a52a-0410-b366-d66718629ded
-
-commit edfcfe076f707d0d74fb8e1c7f5642dc8d889519
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Mar 14 13:57:00 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20124 06827809-a52a-0410-b366-d66718629ded
-
-commit b5e9c8dd4272b67f9877648d445a074c4e405b28
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Mar 14 13:47:05 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20123 06827809-a52a-0410-b366-d66718629ded
-
-commit 05b37281d00ed0ca1278042c05021084c7b9a354
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Mar 14 09:31:57 2011 +0000
-
-    Fix main agent select call to use the renamed API routine.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20122 06827809-a52a-0410-b366-d66718629ded
-
-commit 7a61f832523eaba60397e7bd5673667e03ff28ea
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Mar 13 20:09:52 2011 +0000
-
-    Bring the naming of the large_fd_set select call into
-    line with the rest of the API.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20121 06827809-a52a-0410-b366-d66718629ded
-
-commit 6e5bdc5cba4347922f68ca15a37c3321ac986552
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Mar 13 20:09:52 2011 +0000
-
-    Bring the naming of the large_fd_set select call into
-    line with the rest of the API.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20121 06827809-a52a-0410-b366-d66718629ded
-
-commit 6deb3600cdedbb800d0d4b180bd4a0cd85629fec
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Mar 13 20:06:24 2011 +0000
-
-    CHANGES: snmplib: PATCH: 3203806: Add the function netsnmp_large_select()
-    (plus tweaks to netsnmp_large_fd_set_resize)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20120 06827809-a52a-0410-b366-d66718629ded
-
-commit 711e33babb208a90623ecf6b424ed11c3309f987
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Sat Mar 12 06:59:56 2011 +0000
-
-    CHANGES: snmplib: realloc+init instead of calloc
-    
-     inspired by patch 3195532 from Stephen Hemminger
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20119 06827809-a52a-0410-b366-d66718629ded
-
-commit 1e7a6b47c8d7d7717189a9466d1721de88a7a877
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Sat Mar 12 06:59:56 2011 +0000
-
-    CHANGES: snmplib: realloc+init instead of calloc
-    
-     inspired by patch 3195532 from Stephen Hemminger
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20119 06827809-a52a-0410-b366-d66718629ded
-
-commit 18f125f9f3f3f3cfcf71ea75294353a06ca1f42e
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Sat Mar 12 05:47:58 2011 +0000
-
-    CHANGES: snmpd: PATCH: optimizations for large route tables from Stephen Hemminger
-    
-     applied parts 1-3 of 4 from him (msgs to coders on 2/28/11; subject
-     ip-forward-mib performance improvements; part 4 needs more work
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20118 06827809-a52a-0410-b366-d66718629ded
-
-commit a24d79b70473b1dc2664470afd79ce6318046558
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Sat Mar 12 05:47:58 2011 +0000
-
-    CHANGES: snmpd: PATCH: optimizations for large route tables from Stephen Hemminger
-    
-     applied parts 1-3 of 4 from him (msgs to coders on 2/28/11; subject
-     ip-forward-mib performance improvements; part 4 needs more work
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20118 06827809-a52a-0410-b366-d66718629ded
-
-commit 0598b77e1c3ac730ac07d92f79c1b0245b79352e
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Fri Mar 11 14:43:16 2011 +0000
-
-    CHANGES: snmplib: add more openssl error cases where we check for local cert
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20117 06827809-a52a-0410-b366-d66718629ded
-
-commit 51dd623ee467e3b97dac4c5ccdbce42c2707e007
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri Mar 11 12:01:23 2011 +0000
-
-    MinGW: dskTable: Report zero for unimplemented fields instead of random data.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20116 06827809-a52a-0410-b366-d66718629ded
-
-commit 84c2412f0022a96eac2f2948caa188036a945036
+commit 434bfc1f7457550b6f87d5bcd511276b270b5964
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Fri Mar 11 11:11:28 2011 +0000
+Date:   Mon Nov 14 11:22:53 2011 +0100
 
-    CHANGES: snmpd: fixed race condition in hrSWRunTable
-    Treat the reads from /proc/<pid>/* carefuly, processes can exit in the middle of processing.
+    CHANGES: snmpd: from Martin Wilck: fixed snmpd crashing with 'select: bad file descriptor'.
     
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20115 06827809-a52a-0410-b366-d66718629ded
+    On 32-bit systems, snmpd dies with aforementioned message when using file descriptions > 32, e.g. when having >32 AgentX subagents.
 
-commit 2d48ccf6cc93c0e44eec55edf559d9f1523c74f9
+commit ed65eca6e7f9cfa7380a78d56c01ed314745b169
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 19:01:21 2011 +0100
+
+    FreeBSD-9: Fix for const'ifyed nlist arguments
+
+commit eaca7983e3655ab696fcc4461ca0cedbac6ce69a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 19:00:12 2011 +0100
+
+    NetBSD-6: One more instance of timespec replacing timeval
+
+commit 8ad6c53fdec5adeae4e52f1751ecec4a345bab05
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 18:59:01 2011 +0100
+
+    Fix buig #3436527: arp_netlink: fix dying reload of cache
+
+commit 378ffed03ba79a8346d6c62781e2ddf5ce92a478
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 18:55:43 2011 +0100
+
+    Fix bug #3436528: swinst_pkginfo: recover from NULL return from opendir
+
+commit d7ad8f5f9f3f67f16f65c2515d11e194d2cdd12c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 10 14:04:41 2011 +0100
+
+    CHANGES: Cygwin: Make date_n_time() produce time zone information
+
+commit ba35c50b2f459bd9c11ed59cc7d1b16215644fa3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 10 14:17:04 2011 +0100
+
+    Replace AC_TRY_LINK() by AC_LINK_IFELSE()
+    
+    Note: these changes do not affect the generated configure script.
+
+commit f615bf24f5d0f23ce9301da556184d6460740456
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 9 20:32:49 2011 +0100
+
+    Fis Bug #3434824: SIGSEGV when reading disk directive after SIGHUP
+
+commit a94a179d9340f51fa7c23431630bc0ffd6d759e8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 9 20:30:51 2011 +0100
+
+    Fix bug #3433616: dont treat DateAndTime as a string
+
+commit b29e4164531d258fe34a6fe2b9e1ec60c56f9544
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Nov 7 01:25:57 2011 +0100
+
+    CHANGES: testing: Remove unused variable
+
+commit e221e65fdc1c68f1968651717dcc9ccfb6414783
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 3 15:05:00 2011 +0100
+
+    Fix warnings about converting sockaddr_in * into sockaddr *.
+    
+    This is a follow-up for commit a0af385.
+
+commit 2e7e9eda0b0d62a7645a9a8f70ef3fb6f3dd6941
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 3 11:17:48 2011 +0100
+
+    Fix uninitialized variable warnings.
+
+commit 3462ebcdd0b7c298cb15c3099736f4f952257846
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 28 16:07:15 2011 +0200
+
+    Remove those superfluous parentheses that trigger a clang warning.
+
+commit 3e5fedd3e7d1ef31683604bf73dc56e944cad349
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Fri Mar 11 11:11:28 2011 +0000
+Date:   Thu Nov 3 09:45:27 2011 +0100
 
-    CHANGES: snmpd: fixed race condition in hrSWRunTable
-    Treat the reads from /proc/<pid>/* carefuly, processes can exit in the middle of processing.
+    CHANGES: snmpd: fixed UCD-SNMP-MIB::systemStats after 30 days of uptime.
     
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20115 06827809-a52a-0410-b366-d66718629ded
+    After 30 days, values from /proc/stat (on Linux) can get bigger than 32bits and snmpd calculations might render counters like ssCpuUser negative or zero, while the real value is higher. Therefore the counters should be tracked as the largest integer available.
 
-commit b818fcedcc3b57a288a5274b993edcbb0ffbad07
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Fri Mar 11 08:42:05 2011 +0000
-
-    CHANGES: snmpd: Builds with most recent MinGW (having #define localtime_r).
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20114 06827809-a52a-0410-b366-d66718629ded
-
-commit c0822105a39c11181629185ee6d7348aecfb5f18
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Fri Mar 11 03:08:50 2011 +0000
-
-    CHANGES: snmplib: refine cert debugging; remove unused function
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20113 06827809-a52a-0410-b366-d66718629ded
-
-commit 5a1641eba1c85f24ea7461e7185c8042d76653dc
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Thu Mar 10 21:21:32 2011 +0000
-
-    CHANGES: snmpd: BUG: 3205765: handle reconfig for certSecName token
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20112 06827809-a52a-0410-b366-d66718629ded
-
-commit f5b7127f42c454a2d91a1a923a9e4822354df61b
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 10 20:01:33 2011 +0000
-
-    Spelling fix in a source code comment: messges -> messages.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20111 06827809-a52a-0410-b366-d66718629ded
-
-commit 0b196dfd42d6690e4f5be7ee3e2064f0372747e4
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 10 19:55:26 2011 +0000
-
-    CHANGES: snmplib: PATCH: 3203806: Minor performance optimization of netsnmp_large_fd_set_resize().
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20110 06827809-a52a-0410-b366-d66718629ded
-
-commit c4e8bb759286e731559f1b82ab7fafbafd2d7ea3
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 10 19:48:43 2011 +0000
-
-    CHANGES: snmpd: PATCH: 3203806: Avoid that the main agent processing loop - when using more than FD_SETSIZE file descriptors - can cause memory corruption by invoking select().
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20109 06827809-a52a-0410-b366-d66718629ded
-
-commit dbb0f7b979f0762185ee5ee184ba3cf23b5b31a1
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 10 19:43:16 2011 +0000
-
-    CHANGES: snmplib: PATCH: 3203806: Add the function netsnmp_large_select().
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20108 06827809-a52a-0410-b366-d66718629ded
-
-commit a752a8626ff20fa56c959e60945530e582c929ea
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 10 18:57:24 2011 +0000
-
-    Fixed two compiler warnings (backported r20098 from the trunk).
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20107 06827809-a52a-0410-b366-d66718629ded
-
-commit de6c522cbc61a728ff737fee1e4f4479133013ea
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 10 18:55:53 2011 +0000
-
-    Added a minimal unit test for netsnmp_large_fd_set.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20106 06827809-a52a-0410-b366-d66718629ded
-
-commit 64f176a9db16993eae1c1a31c98fd4c73474b153
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 10 18:52:34 2011 +0000
-
-    CHANGES: snmplib: PATCH: 3203806: Make netsnmp_large_fd_set_resize() clear all relevant file descriptors.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20105 06827809-a52a-0410-b366-d66718629ded
-
-commit 3c0fc360d0e8ba1fcf0c3185980e5baf6fc93ef7
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Mar 10 15:51:27 2011 +0000
-
-    CHANGES: snmpd: BUG: 3178389: Fix inconsistent handling of TZ offsets
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20104 06827809-a52a-0410-b366-d66718629ded
-
-commit 3e69fa5a2fb2b2486ef282e3ba2c8ffd58b0ad71
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Mar 10 15:51:27 2011 +0000
-
-    CHANGES: snmpd: BUG: 3178389: Fix inconsistent handling of TZ offsets
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20104 06827809-a52a-0410-b366-d66718629ded
-
-commit b9a1469898aa515c68972608cbbf01a82f2a9882
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Mar 10 15:51:27 2011 +0000
-
-    CHANGES: snmpd: BUG: 3178389: Fix inconsistent handling of TZ offsets
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20104 06827809-a52a-0410-b366-d66718629ded
-
-commit f8a852104af67c6cfad820665eca2dc73d9b51ff
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Mar 10 15:51:27 2011 +0000
-
-    CHANGES: snmpd: BUG: 3178389: Fix inconsistent handling of TZ offsets
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20104 06827809-a52a-0410-b366-d66718629ded
-
-commit d0e8e6f4d211eb55d05e619650be655dfa9394e5
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Mon Mar 7 17:19:46 2011 +0000
-
-    CHANGES: snmplib: PATCH: 3195537: Minor binary_array container sort optimization
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20077 06827809-a52a-0410-b366-d66718629ded
-
-commit eb03c48e355e08ae5624d6059466659b40bd985c
+commit 0fc8221b24988c4ae6180ed42b86b9852fd586ad
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sun Mar 6 19:47:06 2011 +0000
+Date:   Wed Nov 2 22:59:08 2011 +0100
 
-    Tabs to spaces
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20076 06827809-a52a-0410-b366-d66718629ded
+    dskIndex was off by one
 
-commit 6bd2b0bb01c74283534edcfc1cb08790861e0d74
+commit a5b28829e64d5f3b87e4b9b1ef8cc204f33a61b7
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sun Mar 6 11:28:04 2011 +0000
+Date:   Wed Nov 2 21:25:07 2011 +0100
 
-    Configure check for gethostname2
-    Use getaddrinfo if available. Now works for Solaris (and Windows?)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20075 06827809-a52a-0410-b366-d66718629ded
+    Solaris needs $AWK to get a usable nawk
 
-commit d868436215c0e70bde3c44e4c926daa6ab880078
+commit 2801a2139f27021e1ab15e362e2d3d624ffaa494
 Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Sat Mar 5 12:50:44 2011 +0000
+Date:   Mon Oct 31 22:55:53 2011 +0100
 
-    Clean up, and cosolidate result table row creation into a new function.
-    Saves 200 lines of code, with (hopefully) no functionality change
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20073 06827809-a52a-0410-b366-d66718629ded
+    Patch #3406364: Fix unstable data for NetBSD.
 
-commit c82102d9e2a62db4628b2c5dd9ffb6d7077f02c5
+commit 821a58d112d7ac495149e262d704412ba2800438
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 31 22:43:52 2011 +0100
+
+    Fix ipv6 statistics looping too far when scanning interfaces.
+    Fix TCP session table repeating data from first entry for all.
+
+commit 349591d03e17a55b43eacc6a687b02fd8d4e9528
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Oct 31 08:59:37 2011 +0100
+
+    CHANGES: perl: Make it possible to build perl support without support for opaque types.
+
+commit 1ec7110e72bce1561f746517459d6f043016b60e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 30 19:05:30 2011 +0100
+
+    CHANGES: testing: Make the asn1 test pass even if support for opaque types are removed.
+
+commit 6d26918af55aa3662a720542de77bbf39b0a3e91
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 29 08:34:33 2011 +0200
+
+    CHANGES: snmpd: Disable the support for integer64 in pass scripts if compiling without opaque-special-types.
+
+commit 29bf69d70424f359d9c87f07a964a099415649a5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 13:02:25 2011 +0200
+
+    CHANGES: snmptrapd_sql: Avoid that a linker error is triggered on systems where my_progname is missing in libmysqlclient (e.g. Fedora 15 and 16).
+    
+    This is a backport of commit 9f653f7.
+
+commit 2cc9504b9bb8625b94be6cda7e60993d059cd928
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:01:23 2011 +0200
+
+    CHANGES: snmplib: BUG: 3428506: Fix netsnmp_gethostbyaddr()
+    
+    This patch should fix the regressions introduced by commit 85d96c4 (May 13, 2011).
+
+commit 9b427b353f1ceb8fe87e6fc8ed3b6cfab3ce7f20
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 27 08:20:00 2011 +0200
+
+    MinGW: Avoid confusion between MinGW's kill.exe and the SysInternals pskill.exe
+
+commit 2c45f92cfcb5b05e049226a5a7883a0b106011ae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 10:42:29 2011 +0200
+
+    Fix compiler warnings about passing a const pointer to a function accepting a non-const pointer.
+
+commit 275d23edfdebe0577b08421e4c6c936ae39b7fdc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:33:09 2011 +0200
+
+    Fix compiler warnings about set-but-not-used variables
+
+commit 4495e17c078ac6997a9c7fa1a88db0644e919491
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:32:46 2011 +0200
+
+    Fix compiler warnings about casting away const
+
+commit 13952f6bee9f408867ab6d2fdfdde4f284074957
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Fri Mar 4 15:09:26 2011 +0000
+Date:   Wed Oct 26 14:05:16 2011 +0200
 
-    CHANGES: snmpd: fixed 'truncating integer value > 32 bits' in UCD-SNMP-MIB::systemStats on Linux
+    CHANGES: snmplib: from Siddhesh Poyarekar: properly clean up old requests in a subagent when we reconnect to master.
     
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20061 06827809-a52a-0410-b366-d66718629ded
+    An snmp subagent linked against net-snmp-libs may crash if it handles a
+    response which has magic referring to an older disconnected main session. This
+    may happen when the subagent
+    attempts to clean up old requests on reconnection of the disconnected master
+    session.
 
-commit 476cca83a283335780a84ec0b873441f114863da
+commit ae052472b22720d08369e85127db214245df2e3f
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Fri Mar 4 15:09:26 2011 +0000
+Date:   Tue Oct 25 16:15:17 2011 +0200
 
-    CHANGES: snmpd: fixed 'truncating integer value > 32 bits' in UCD-SNMP-MIB::systemStats on Linux
+    CHANGES: perl: fixed segmentation fault when handler registration fails.
     
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20061 06827809-a52a-0410-b366-d66718629ded
+    When netsnmp_register_handler fails, it frees its reginfo -> nsahr_DESTROY (and any other function) must not dereference it.
 
-commit 15af0adf81f255463b908859b383f4a515bec36d
+commit c199bf91b6239f26b2aab34e8575e0f0df9cde9b
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Fri Mar 4 15:09:26 2011 +0000
+Date:   Mon Oct 24 14:25:28 2011 +0200
 
-    CHANGES: snmpd: fixed 'truncating integer value > 32 bits' in UCD-SNMP-MIB::systemStats on Linux
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20061 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: snmpd: xfs, jfs and vxfs filesystems are now recognized in hrStorageTable
 
-commit 65791ed6034b4495dff67e0bd775a2c577d13f67
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 3 10:56:21 2011 +0000
-
-    CHANGES: Win32: Deprecated libsnmp.def - add NETSNMP_IMPORT to function declarations instead to export a function from netsnmp.dll.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20056 06827809-a52a-0410-b366-d66718629ded
-
-commit 5a4f9eab6bf211f0a0917c592cde2e5e84d0c4dc
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 3 10:50:23 2011 +0000
-
-    Moved a source code comment such that it is again immediately above the function declarations it applies to.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20055 06827809-a52a-0410-b366-d66718629ded
-
-commit e64f510ffb17961911268a845d69bba7adadbf85
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 3 10:48:34 2011 +0000
-
-    Added missing NETSNMP_IMPORT declarations.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20054 06827809-a52a-0410-b366-d66718629ded
-
-commit 461d2d09038e321b59d831905ac9b765bb4a3c8e
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 3 10:24:01 2011 +0000
-
-    Removed two obsolete Win32 files.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20053 06827809-a52a-0410-b366-d66718629ded
-
-commit 2886d02c72769fa969f0a117dc72cb5d6b40b2d5
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Mar 3 10:09:14 2011 +0000
-
-    Trivial comment fix: snmpIPv6BaseDomain.c contains IPv6 base transport support functions instead of IPv4.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20052 06827809-a52a-0410-b366-d66718629ded
-
-commit 2f54f5b39d96aa7b484d0c994434bd929b172763
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Feb 25 12:55:04 2011 +0000
-
-    Fix the command to create a new SVN tag line
-    
-    (Having brought the structure of the 5.5.x branch
-     into line with the other branches, the previous
-     command is now wrong for *all* branches, rather
-     than just most of them!)
-    
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19997 06827809-a52a-0410-b366-d66718629ded
-
-commit a691c2f7451e401f4fb8d74bff8bf1168f0a6ff1
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Feb 25 12:55:04 2011 +0000
-
-    Fix the command to create a new SVN tag line
-    
-    (Having brought the structure of the 5.5.x branch
-     into line with the other branches, the previous
-     command is now wrong for *all* branches, rather
-     than just most of them!)
-    
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19997 06827809-a52a-0410-b366-d66718629ded
-
-commit c6ce5a8becf3ee52216d160f5c73a17935eaf791
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Feb 25 12:55:04 2011 +0000
-
-    Fix the command to create a new SVN tag line
-    
-    (Having brought the structure of the 5.5.x branch
-     into line with the other branches, the previous
-     command is now wrong for *all* branches, rather
-     than just most of them!)
-    
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19997 06827809-a52a-0410-b366-d66718629ded
-
-commit bea9033d6a583a1d9f8274af4ce1565dfff0f090
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Feb 25 11:49:17 2011 +0000
-
-    documentation update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19995 06827809-a52a-0410-b366-d66718629ded
-
-commit 5229a066f234f70f5b0894f0f3617b4f9ed1fcc1
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Feb 25 11:41:31 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19994 06827809-a52a-0410-b366-d66718629ded
-
-commit be2a9185b6f4adfc4c81d542af7e3b654f553b16
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Feb 25 11:39:24 2011 +0000
-
-    version update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19993 06827809-a52a-0410-b366-d66718629ded
-
-commit 15a456e1d2ed112a07838caf7f3456521c17fdf9
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Feb 25 11:15:52 2011 +0000
-
-    Version number update
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19992 06827809-a52a-0410-b366-d66718629ded
-
-commit 1c4fe3a1b91b837869d82e3d8143e6be569a0966
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Feb 25 11:10:00 2011 +0000
-
-    Avoid a possible crash if the engineID is not available or set.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19991 06827809-a52a-0410-b366-d66718629ded
-
-commit d2fd77d862803e3ad50f21067430a71f1ece9d8d
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Feb 25 11:10:00 2011 +0000
-
-    Avoid a possible crash if the engineID is not available or set.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19991 06827809-a52a-0410-b366-d66718629ded
-
-commit 5771c225da96b496b8db2f4784e7b85c4bb523c1
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Feb 25 11:10:00 2011 +0000
-
-    Avoid a possible crash if the engineID is not available or set.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19991 06827809-a52a-0410-b366-d66718629ded
-
-commit 41e26abde2b5d6f40caf684a7a309f7a611c631f
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Feb 25 11:10:00 2011 +0000
-
-    Avoid a possible crash if the engineID is not available or set.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19991 06827809-a52a-0410-b366-d66718629ded
-
-commit 9889082e3252e02caf5cc4f3bc1c4b4d1c134c52
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Feb 23 21:04:34 2011 +0000
-
-    Include required prototype
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19977 06827809-a52a-0410-b366-d66718629ded
-
-commit 3130166226d00364d607ba9e8743abb7aa42ecc1
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Feb 23 15:23:37 2011 +0000
-
-    unsigned juggling to remove warnings
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19975 06827809-a52a-0410-b366-d66718629ded
-
-commit 5aaa4b3f6893ae412e74d0caed26f473dc38b435
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Feb 23 15:20:11 2011 +0000
-
-    Enable (probably forgotten) ipAddressPrefixTable
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19974 06827809-a52a-0410-b366-d66718629ded
-
-commit 5daec12de442a22ff298235e1250be996103cd89
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Feb 23 09:54:16 2011 +0000
-
-    Loading IPv6 data is a no-no when IPv6 not enabled
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19972 06827809-a52a-0410-b366-d66718629ded
-
-commit 8ab6ce95db7bcda44291f07eb83a2bc3b91d262a
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Feb 23 09:36:22 2011 +0000
-
-    Fix bug 3118631: snmptable segfaults if index contains : character
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19971 06827809-a52a-0410-b366-d66718629ded
-
-commit 965a77b923f14097b91edb89ba36bc0b569078c9
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Feb 23 09:36:22 2011 +0000
-
-    Fix bug 3118631: snmptable segfaults if index contains : character
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19971 06827809-a52a-0410-b366-d66718629ded
-
-commit c5b742d9355843e84100c977a9abc151e2d78afd
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Feb 23 09:36:22 2011 +0000
-
-    Fix bug 3118631: snmptable segfaults if index contains : character
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19971 06827809-a52a-0410-b366-d66718629ded
-
-commit 7a61223f4cf7a389b87face247a7a65734900c66
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Feb 23 09:36:22 2011 +0000
-
-    Fix bug 3118631: snmptable segfaults if index contains : character
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19971 06827809-a52a-0410-b366-d66718629ded
-
-commit 6ccb54e9457279d8c2b0c030aced215e7036010e
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Feb 23 09:30:52 2011 +0000
-
-    FreeBSD 8 support
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19970 06827809-a52a-0410-b366-d66718629ded
-
-commit f9c70dd16befe8728ef2ab3f103dd83e8c33eace
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Feb 23 09:30:52 2011 +0000
-
-    FreeBSD 8 support
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19970 06827809-a52a-0410-b366-d66718629ded
-
-commit 91b95881eddc25a885b0b4711b52b11278990e7a
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Feb 23 09:30:52 2011 +0000
-
-    FreeBSD 8 support
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19970 06827809-a52a-0410-b366-d66718629ded
-
-commit 583e7b1454a27cac89907d44325a1432fd0b9a88
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Feb 22 15:25:35 2011 +0000
-
-    Revert a bogus change that crept into the code.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19966 06827809-a52a-0410-b366-d66718629ded
-
-commit 00ef569e00d164d9e1070cd705c65e4a7390a162
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Feb 22 08:55:48 2011 +0000
-
-    Fix 5.5.x branch structure (part 2)
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19965 06827809-a52a-0410-b366-d66718629ded
-
-commit 727a2f21c3cc74d3c3be8a4707ef1ec49ab6bf7c
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Feb 21 22:40:06 2011 +0000
-
-    proper process status values for netbsd
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19962 06827809-a52a-0410-b366-d66718629ded
-
-commit 0d820fcf95e444dd8a531cc6f82cc7b8a69866b8
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Feb 21 22:39:05 2011 +0000
-
-    conditionalize variable
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19961 06827809-a52a-0410-b366-d66718629ded
-
-commit a49d0d8082c1912733a8775a73817adf4ab3ebef
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Feb 21 22:20:04 2011 +0000
-
-    tcp-mib/udp-mib support for the *bsds
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19960 06827809-a52a-0410-b366-d66718629ded
-
-commit 5f729d4809785ae0c75db2a831ea9441622cf7f7
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Feb 21 22:16:56 2011 +0000
-
-    tcp-mib/udp-mib support for the *bsds
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19959 06827809-a52a-0410-b366-d66718629ded
-
-commit 2b4f0706c3c1433069d566bcb48892f451ca60d8
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Feb 21 22:05:56 2011 +0000
-
-    Properly end debug message with newline
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19958 06827809-a52a-0410-b366-d66718629ded
-
-commit 53b3596496b3d7858298320ef3e83e4a26a7aa3e
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Feb 21 22:04:24 2011 +0000
-
-    remove var that shadows the useful one
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19957 06827809-a52a-0410-b366-d66718629ded
-
-commit 50d73f0d56fe22c590530b3e305d41dcdac3ce00
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Feb 21 22:02:30 2011 +0000
-
-    major fiddling to get things working for openbsd too. This should really be reworked to use the tcp-mib/udp-mib/data_access
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19956 06827809-a52a-0410-b366-d66718629ded
-
-commit 27607e31f7454dbc1d70a106d0531f43559a31ba
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Feb 21 21:59:50 2011 +0000
-
-    fix tcp states for dragonflybsd
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19955 06827809-a52a-0410-b366-d66718629ded
-
-commit 60d549566a90494043537d58ec847afc487d66d0
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Feb 21 21:57:59 2011 +0000
-
-    enable new tcp/udp mibs for solaris
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19954 06827809-a52a-0410-b366-d66718629ded
-
-commit 8a2408c16fab83d6b4010e477cf660dc18fbb33b
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Feb 21 19:08:00 2011 +0000
-
-    Updated comment about where makerelease comes from (now github)
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19952 06827809-a52a-0410-b366-d66718629ded
-
-commit 3abbcaa091da41e40f82081f61b24bbf0cfd218b
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Mon Feb 21 19:08:00 2011 +0000
-
-    Updated comment about where makerelease comes from (now github)
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19952 06827809-a52a-0410-b366-d66718629ded
-
-commit 19ea88631e5fff7e048de38eff352a9f004d62e9
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Mon Feb 21 11:14:01 2011 +0000
-
-    Backported r19454 from the trunk and thereby fixed this Valgrind complaint:
-    
-    ==6287== Invalid read of size 8
-    ==6287==    at 0x4E6CCAE: netsnmp_delete_table_data_set (table_dataset.c:186)
-    ==6287==    by 0x5121974: shutdown_notification_log (notification_log.c:564)
-    ==6287==    by 0x51941DB: _shutdown_mib_modules (mib_module_shutdown.h:32)
-    ==6287==    by 0x54B14F4: snmp_call_callbacks (callback.c:344)
-    ==6287==    by 0x548B58B: snmp_shutdown (snmp_api.c:862)
-    ==6287==    by 0x404C06: main (snmpd.c:1060)
-    ==6287==  Address 0x686f318 is 24 bytes inside a block of size 40 free'd
-    ==6287==    at 0x4A060E0: free (vg_replace_malloc.c:366)
-    ==6287==    by 0x4E6AB16: netsnmp_table_data_delete_table (table_data.c:320)
-    ==6287==    by 0x4E6CC84: netsnmp_delete_table_data_set (table_dataset.c:180)
-    ==6287==    by 0x5121974: shutdown_notification_log (notification_log.c:564)
-    ==6287==    by 0x51941DB: _shutdown_mib_modules (mib_module_shutdown.h:32)
-    ==6287==    by 0x54B14F4: snmp_call_callbacks (callback.c:344)
-    ==6287==    by 0x548B58B: snmp_shutdown (snmp_api.c:862)
-    ==6287==    by 0x404C06: main (snmpd.c:1060)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19944 06827809-a52a-0410-b366-d66718629ded
-
-commit a951c20a6865920949f4504cb076906c23cab485
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Mon Feb 21 07:13:33 2011 +0000
-
-    Fixed a MinGW-specific compiler warning (backported r19922 from trunk).
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19943 06827809-a52a-0410-b366-d66718629ded
-
-commit 71b615e38a5af0c07ab98994d94058ded1ef006d
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sun Feb 20 09:24:29 2011 +0000
-
-    CHANGES: snmpd: BUG: 3185528: shutdown_master_agent doesn't close UDP socket
-    (Fixes a bug introduced in r19511.)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19942 06827809-a52a-0410-b366-d66718629ded
-
-commit 92a6919e6a975d668c7af11f788fbb3551cf186b
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Sun Feb 20 09:24:29 2011 +0000
-
-    CHANGES: snmpd: BUG: 3185528: shutdown_master_agent doesn't close UDP socket
-    (Fixes a bug introduced in r19511.)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19942 06827809-a52a-0410-b366-d66718629ded
-
-commit 3654fcd0aa9d4609bafc7e877958f5e234e1b1c9
+commit 747fdc71e64d09e080928ebbb4d04cbde3906799
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Thu Feb 17 11:28:27 2011 +0000
+Date:   Wed Oct 5 15:57:59 2011 +0200
 
-    Fixed snmp-bridge-mib in standalone (agentx) version.
-    Don't declare local variables inside block. Patch provided by Jens Osterkamp.
+    CHANGES: snmpd: Lowered severity of 'error finding row index in _ifXTable_container_row_restore' message.
     
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19939 06827809-a52a-0410-b366-d66718629ded
+    The message is shows up when snmpd is started and there is different set of network interfaces than it was when snmpd wast last stopped. This is common on ppp-servers or virtual hosts.
 
-commit dacbe63c18b61f7e7dd73681b78bfbea3e221af9
+commit 250f698e59eab9f1ffd332ff59fdb72ea0df06ff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 23 08:51:23 2011 +0200
+
+    CHANGES: building: Make the transport configuration code work again
+    
+    Previously the transport inheritance processing code ran with
+    NETSNMP_FEATURE_CHECKING set. In this mode the file net-snmp/feature-details.h
+    is requiered. That file is created during the first make run, and that happens
+    after configure is run.
+    Change this to undefine NETSNMP_MINIMAL_CODE, effectively turning off feature
+    support during transport configuration in order to make it work at all.
+
+commit 6ef6907642247c663b9b8964b9fd44a211dbcaa7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 20 20:30:54 2011 +0200
+
+    CHANGES: snmpd: BUG: 3408398: Fix a memory leak in agent/mibgroup/hardware/fsys.
+    
+    This memory leak was introduced via commit
+    9bf3d96d96a8ecd4a5fc35c326dc937467002b6c: Initial HAL
+    implementation of FileSystem information (March 7, 2008).
+
+commit cf82b894b2217c26edc6f1356351c932415604e2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Oct 15 14:45:08 2011 +0200
+
+    CHANGES: snmplib: BUG: 3423915: Change default number of retries back from 0 to 5
+    
+    This patch fixes a bug introduced via commit 6cac050 (May 5, 2011,
+    added support for specifying the default number of retries in
+    snmpd.conf).
+
+commit c11adaa12915abfee629bb6c026c21f2185b216e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 17 10:24:46 2011 +0200
+
+    CHANGES: Win32: Avoid that compiling the header file <net-snmp/net-snmp-config.h> with the MinGW gcc compiler triggers warnings about "pragma comment".
+
+commit b17a72a793483aee4a5bb2f2e2c7f4fd869817e6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 17 10:22:20 2011 +0200
+
+    CHANGES: Win32: Avoid that the PACKAGE_* macros defined in <net-snmp/net-snmp-config.h> cause trouble when including this header in a package that uses the GNU autotools.
+
+commit 664d3ae107d754051b8c42279d459aa57a1be1c3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 16:47:16 2011 +0200
+
+    MinGW, hw_fsys: Use proper format specifiers in a debug statement.
+    
+    This patch fixes an issue introduced in commit 76ff25d.
+
+commit 211dcb49306561e35ba3c213be7cfa257b40a8e5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 15:52:43 2011 +0200
+
+    Avoid that gcc 4.6 complains about set but not used variables
+
+commit 9f653f73e5aa70f0bef1174632e95594f87f669f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 13:02:25 2011 +0200
+
+    CHANGES: snmptrapd_sql: Avoid that a linker error is triggered on systems where my_progname is missing in libmysqlclient (e.g. Fedora 15 and 16).
+
+commit 4c83b9229a7454f34f6ff75f69e67e4030c419b5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 15:58:45 2011 +0200
+
+    CHANGES: snmplib: Set the rpath for libperl.so in libnetsnmpmibs.so such that the dynamic linker can find libperl.so without requiring the user to modify the dynamic linker settings.
+    
+    This change in agent/Makefile.in is necessary on the 5.5 branch and
+    later but not on the 5.4 branch. That is because the 5.4 branch uses
+    an older version of libtool that propagates the rpath of dependent
+    libraries. This is called inter-library dependency tracking in the
+    libtool manual. This functionality is present in libtool version 1
+    but not in libtool version 2. For more background information about
+    dynamic libraries and rpaths, see also the document with the title
+    "RpathIssue" on the Debian wiki (http://wiki.debian.org/RpathIssue).
+
+commit 8925c912d2639752a84bcffeef1b70a81026449b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:21:28 2011 +0200
+
+    CHANGES: agent: HOST-RESOURCES-MIB: Add missing brace in a debug statement
+
+commit 76ff25d9bf97579e7213102065fd5096f049a4c5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:13:18 2011 +0200
+
+    CHANGES: snmpd: HOST-RESOURCES-MIB::hrStorageTable: fix bug in handling large filesystems, where large means above 8 TB (= 2**31 * 4096 bytes).
+    
+    This patch fixes a bug introduced in commit
+    71d8293f387a6cd66bb0dbb13c0f50174d2e678b.
+    For the original bug report, see also
+    https://sourceforge.net/tracker/?func=detail&atid=112694&aid=3419825&group_id=12694.
+
+commit 866033db9904ffb1203f283f838092e4cf68de6b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Oct 6 07:33:27 2011 +0200
+
+    CHANGES: snmpd: Remove spurious #endif that seems to be the result of a mismerge.
+
+commit 20f4f3267ee20d55705b7a43789879c103f96620
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Oct 6 00:08:59 2011 +0200
+
+    CHANGES: building: Add missing end comments to feature ifndefs.
+
+commit e5de2cc57bf304f3320cad0034d2ea2d8aedc436
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 09:15:10 2011 +0200
+
+    CHANGES: agent: Log a more detailed error message if embedded perl initialization fails
+
+commit 5eef9990de28f63111e6c093be0f3c7ae2d513a1
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 08:45:49 2011 +0200
+
+    CHANGES: perl: Add agent::uptime()
+
+commit 6810ed42f9bc560750d6dbfb7e50b6e2ac11899c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 11:01:23 2011 +0200
+
+    CHANGES: Cywin: agent: Implement get_uptime() such that querying HOST-RESOURCES-MIB::hrSystemUptime returns a non-zero value.
+
+commit 97172b311d20f4441c7a7e90092b59c1e0da99f7
+Author: Thomas Jarosch <tjarosch@users.sourceforge.net>
+Date:   Wed Oct 5 08:46:39 2011 +0200
+
+    CHANGES: PATCH: 3418649: HOST-RESOURCES-MIB: Use pclose() instead of fclose() to close a pipe.
+
+commit 6591937adb85000c27069c4be84cf4688838ebcd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 16:18:03 2011 +0200
+
+    CHANGES: building: Add dependencies on @FEATURETARGS@ to make the subtarget work as well.
+
+commit b9c8012ec035bc084f175876fecc375195f9be81
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 14:02:58 2011 +0200
+
+    CHANGES: building: Add target to build agentxtrap from the toplevel
+
+commit 995647c0cfe00412262cc5797bdfae9d00b70c76
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 15:44:36 2011 +0200
+
+    CHANGES: building: Remove the use of -L flags for internal libraries as it confuses libtool.
+
+commit 93dc1235a0db58ffd29617cff00dc11263780202
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 11:31:46 2011 +0200
+
+    CHANGES: building: Make make apps work again
+    
+    apps include snmptrapd and that require the agent libraries as well.
+
+commit ba41488ed44cd23c25963d4fc56c476853b2ab59
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 11:29:33 2011 +0200
+
+    CHANGES: building: When you say make libs you expect all the libs to be built.
+    
+    This is demonstrated by the snmptrapd target at the top level which obviously
+    expected both libs to be built and so failed to compile before this patch.
+
+commit 3057c73e093473be46254bcdfb4ca788e432d1b8
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Wed Feb 16 14:56:33 2011 +0000
+Date:   Tue Sep 30 07:32:52 2008 +0000
 
-    Fixed snmp-bridge-mib when working in the embedded perl.
+    NEWS: building: PATCH: 2091156: correctly declare dependencies in Makefile.
+    'make -j <N>' should work now.
     
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19938 06827809-a52a-0410-b366-d66718629ded
+    Backport this to V5-4 as it is needed for correct operation in the single
+    threaded case of make miblib as well.
 
-commit c8da341a64bd199529a9e59ac3523547cc2fe1f6
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Wed Feb 16 13:16:57 2011 +0000
+commit 6eae340fa2a64086592982cc52735bc01487d978
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 1 19:33:50 2011 +0200
 
-    Fixed GETNEXT processing in snmp-bridge-mib.
+    CHANGES: building: Silence libbsd 0.3.0 nagging
     
+    If you have libbsd 0.3.0 installed then their version of nlist.h warns and
+    tries to make you include bsd/nlist.h instead. The problem is that we don't
+    need that compatibility library as we know how to do it ourself so it becomes
+    pure nagging. This patch adds a define that changes the warning into an
+    error and then figures out that there is no usable nlist.h and ignores it
+    for the future.
+
+commit ac38cb531bee50edc8d4c834f3005f5992c771d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 19:03:02 2011 +0200
+
+    CHANGES: perl: Enable sending SNMPv2 traps with an empty varbind list
+
+commit a75de2971527ac2d2e812024298602bb2412f337
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 10:41:44 2011 +0200
+
+    perl/SNMP/SNMP.xs: Update emacs modeline
+
+commit 848f6300efe38492fb454451a030f0b7e6ff8c9d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 10:41:44 2011 +0200
+
+    perl/SNMP/SNMP.xs: Update emacs modeline
+
+commit c1374473ecd8ec9e0310013861ee18c83e5d6c5b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Sep 30 03:29:36 2011 +0200
+
+    CHANGES: testing: Protect the use of $OSTYPE to ensure that 'test' get enough parameters.
+
+commit 7e97a20633a57eae39d015b23339463c32f5f848
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:22:08 2011 +0200
+
+    CHANGES: testing: Convert snmplib/test_binary_array.c into two unit tests
+
+commit 9c0dd98176457342fffaa5e74d802e3145ed70e7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 08:56:17 2011 +0200
+
+    CHANGES: testing: Add unit test for netsnmp_register_old_api()
+
+commit 5fd26e4fa3e000ea9c81c38ab975b7946efe2157
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 28 17:49:55 2011 +0200
+
+    CHANGES: agent: Avoid that netsnmp_register_old_api() failure triggers a double free.
     
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19937 06827809-a52a-0410-b366-d66718629ded
+    Fixes a regression introduced via commit
+    aa4d47c2609e52818c9cdf1a8e2205de9a335a0a (svn r19515).
 
-commit bcc68f7378c29efcf81daa0c2996c4ede80e55bc
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 22:24:06 2011 +0000
+commit d2252d016693807326f72b66123649dea00af916
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:20:08 2011 +0200
 
-    Properly save entries for NetBSD and DragonFly
+    CHANGES: testing: Require a semicolon after OK(), OKF() and PLAN()
     
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19936 06827809-a52a-0410-b366-d66718629ded
+    Also, let OKF() emit a single line of output such that all output it
+    produces is visible in the output of "make test".
 
-commit 10050c94209b0a9dfe45ab710c928b656d906a3a
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 22:24:06 2011 +0000
+commit 1421924b4852142192c5bb9e93ddbfed69e908fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 21 22:20:08 2011 +0200
 
-    Properly save entries for NetBSD and DragonFly
+    CHANGES: snmplib: Avoid waiting indefinitely if a session has timeout zero
+
+commit 5f27f4f74ae2bd5baf503cf306b4f9a2841a57cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:32:03 2011 +0200
+
+    CHANGES: MinGW: testing: Fix a race condition in the test runner
+
+commit 09703958cc5ea845929ae19ef9e0804aecaa512e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 12:42:41 2011 +0200
+
+    CHANGES: testing: Avoid false negative for T114agentxagentxtrap_simple caused by the test result being present in the hex dump ("mostly_harmless")
+
+commit 439300279f6f31438638d2f222c24c3c841fa6ab
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 11:16:32 2011 +0200
+
+    CHANGES: building: Micro-optimize agent module dependency analysis
     
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19936 06827809-a52a-0410-b366-d66718629ded
+    This makes the agent module dependency analysis carried out by the
+    configure script slightly faster, especially on those systems where
+    fork() is expensive (Cygwin).
 
-commit 5402248cd46dcc22e8e5d30af7770ab8fa01dfdb
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 22:18:43 2011 +0000
+commit bbc680004a1376038dfdc4172dbe7b9e311fba68
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Sep 26 10:14:45 2011 +0200
 
-    remove redundant includes
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19935 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: MinGW: testing: Make test T130snmpv1vacmget_simple pass
 
-commit df649ccaf843ed76cbd8f96564f57176a8a61ba8
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 22:18:43 2011 +0000
+commit 70b06cf789208eaa890bfbcd638bdb775f817054
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:50:57 2011 +0000
 
-    remove redundant includes
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19935 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: Windows: testing: perl: Fix an incorrect message printed while running the Perl module regression tests
 
-commit b5655cc10721e9ddc23d8ea0a54007b1ab0680e1
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 21:48:05 2011 +0000
+commit 70bcc8de2d0fc92bbb8481823630fab9bc87af75
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 16 16:14:24 2011 +0200
 
-    rerun autoheader/autoconf
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19934 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: MinGW: testing: Obtain the MSYS path from the environment
 
-commit ce8e87458775c2809ed8f920ce80421ad6f14cba
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 21:48:05 2011 +0000
+commit 626275e2d1acafae7144a33ed301a40f596b37b0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 14 13:14:17 2011 +0200
 
-    rerun autoheader/autoconf
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19934 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: Windows: Remove superfluous link libraries from project files (*.dsp)
 
-commit 9cfbd8b144d6595e988f33ca484382c7082bb6ed
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 21:26:30 2011 +0000
+commit 38fc3caa9eeb3800254b4f6ad6f8f4764c0f83db
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:34:08 2011 +0200
 
-    Too much quoting is bad
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19931 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: snmplib: Make netsnmp_callback_accept() return -1 (failure) instead of 0 (STDIN_FILENO)
 
-commit 88dc144bc6ba2ab2377f9d7182a1c2c03375459e
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 21:11:37 2011 +0000
+commit 6c8c7e8aca8fc2eeb52010ae3e9fee6dd83ef780
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 13 09:58:26 2011 +0200
 
-    Fix IPv6 TCP and UDP tables, *BSD support
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19930 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: snmplib: Remove obsolete snmp_get_fd_for_session() declaration
 
-commit 5cd1573625471c0583e9087aec6802b77157d5a2
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 21:11:37 2011 +0000
+commit 0860d11fd8fc5dbdaaae2261fae2c07fb9c2c82d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:54:55 2011 +0200
 
-    Fix IPv6 TCP and UDP tables, *BSD support
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19930 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: Windows: MSVC: Avoid that the typedefs in <net-snmp/net-snmp-config.h> conflict with those in <stdint.h> from the msinttypes project
 
-commit b00595c7b8728786cd843f2687779b11f0e6196b
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 20:45:34 2011 +0000
+commit f8a036f63ff68f083436120e0abd478b692a2f61
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:21:06 2011 +0200
 
-    Kill compiler warnings
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19929 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: Windows: MSVC: When linking with OpenSSL, link with user32.lib too
 
-commit b76a54f7ee6644a9636d98d960fefecabb74bc29
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 20:45:34 2011 +0000
+commit 836a23e10ca810c3899902d32587616a9d1203df
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jul 14 18:38:13 2011 +0200
 
-    Kill compiler warnings
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19929 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: Windows: MSVC: Link with proper libeay32 library
 
-commit 65558935e9b2718757366e8b3b10a91412b96ae8
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 20:44:22 2011 +0000
+commit 7b07fd6cdef49ec7bb04b166e2a4fbb37b582840
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 11:10:38 2011 +0200
 
-    Filter IPv6 entries from IPv4 table
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19928 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: testing: Remove an incorrect comment from simple_eval_tools.sh
 
-commit e88f9222c99ebdb11e94aef394c84d6cf67bc751
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 20:44:22 2011 +0000
+commit 98f6d29d981ff8e607600c63dadb240535629807
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:49:03 2011 +0200
 
-    Filter IPv6 entries from IPv4 table
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19928 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: testing: Make ISDEFINED() check for an exact match instead of a prefix match
 
-commit 8fdc21faa1f41851df7e00d0e05b5883cc32182e
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 20:42:47 2011 +0000
+commit 52cd0031a31f692f13263a94c335d06be1454803
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
 
-    Proper use of getproc2 and dragonfly support
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19927 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: MinGW: testing: Make those regression tests pass for which SNMPCONFPATH and/or SNMP_PERSISTENT_DIR matter
 
-commit edd5de6c7c004d1164ae2c51d9b7f1b3b7c53067
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 20:41:09 2011 +0000
+commit f5cd89bd3356dd74e1556c0b50966a643f192085
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
 
-    getvfsstat is only for NetBSD
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19926 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: MinGW: testing: Fix a race condition in the test framework
 
-commit d02e5daf238f08b50704319ed444060589dceba2
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Feb 15 20:39:53 2011 +0000
+commit deedd52c834a6448852a06785536e13865969694
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:58 2011 +0200
 
-    Detect need for -lkvm in proper time
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19925 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: MinGW: Support the directory structure of recent Shining Light OpenSSL binary distributions
 
-commit 4de84884041e23ac8c1b6dfc33153a6fcca4e6d1
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Mon Feb 14 14:38:00 2011 +0000
-
-    Fixed a MinGW-specific compiler warning.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19922 06827809-a52a-0410-b366-d66718629ded
-
-commit f71e16d38ddc9902be613d37498eaad525757cdc
-Author: Magnus Fromreide <magfr@users.sourceforge.net>
-Date:   Sun Feb 13 16:28:16 2011 +0000
-
-    CHANGES: Make it possible to build static applications using net-snmp-config and the -*libs flags once more.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19921 06827809-a52a-0410-b366-d66718629ded
-
-commit 1c4dea25b0e51f542517d52cd7bad941f8d01ed7
-Author: Magnus Fromreide <magfr@users.sourceforge.net>
-Date:   Sun Feb 13 16:28:16 2011 +0000
-
-    CHANGES: Make it possible to build static applications using net-snmp-config and the -*libs flags once more.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19921 06827809-a52a-0410-b366-d66718629ded
-
-commit 13fdf6c496ba94908702ac18fc05f9762f0ff313
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Feb 10 15:13:59 2011 +0000
-
-    CHANGES: snmplib: PATCHES: 3165878: Catch buffer overrun on 64-bit systems
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19920 06827809-a52a-0410-b366-d66718629ded
-
-commit e5d33f93047f73761102b642dfeaa93ebb284cf1
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Feb 10 15:13:59 2011 +0000
-
-    CHANGES: snmplib: PATCHES: 3165878: Catch buffer overrun on 64-bit systems
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19920 06827809-a52a-0410-b366-d66718629ded
-
-commit f3026316c6832b05bd364928e4bc5f95a71252b1
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Feb 10 15:13:59 2011 +0000
-
-    CHANGES: snmplib: PATCHES: 3165878: Catch buffer overrun on 64-bit systems
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19920 06827809-a52a-0410-b366-d66718629ded
-
-commit ed5f7c37f89964c1f7dd16e622cd63c63bd33574
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Feb 10 15:06:46 2011 +0000
-
-    CHANGES: snmpd: PATCHES: 3152412: Handle (and report) problems reading /proc/vmstat
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19919 06827809-a52a-0410-b366-d66718629ded
-
-commit d128ddd4ae5919b9bf82e244a57294115cfd1859
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Feb 10 15:06:46 2011 +0000
-
-    CHANGES: snmpd: PATCHES: 3152412: Handle (and report) problems reading /proc/vmstat
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19919 06827809-a52a-0410-b366-d66718629ded
-
-commit 02713342654efc4099f6a653801846b300bbfa84
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Feb 10 15:06:46 2011 +0000
-
-    CHANGES: snmpd: PATCHES: 3152412: Handle (and report) problems reading /proc/vmstat
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19919 06827809-a52a-0410-b366-d66718629ded
-
-commit 7ce8e225787e4d07092a634b803fba635578760f
+commit d55bd4e0549f03b6fd32562c2aa7fe39272a9ef7
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Feb 8 17:41:37 2011 +0000
+Date:   Wed Sep 28 06:55:19 2011 -0700
 
-    CHANGES: perl: patch from Martin Buck: don't always open stderr as the calls to snmp_log already do this and it messes up the agent when embedded
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19916 06827809-a52a-0410-b366-d66718629ded
+    remove the v5.7 from the frozen list
 
-commit 118cd42bda1d60a81f0e449563110fa8c3889e2c
+commit ac2aed3c94bb2ebb473af0a1e20f0561ad629956
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Feb 8 17:41:37 2011 +0000
+Date:   Wed Sep 28 06:55:11 2011 -0700
 
-    CHANGES: perl: patch from Martin Buck: don't always open stderr as the calls to snmp_log already do this and it messes up the agent when embedded
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19916 06827809-a52a-0410-b366-d66718629ded
+    remove the v5.7 from the frozen list
 
-commit 98a23f0c8f1d052218d296ad1fed5692bb0c5478
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Feb 8 17:41:37 2011 +0000
+commit 46eac02e9a27bf4f3068e795cab891f05a848870
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Sep 26 21:49:27 2011 +0200
 
-    CHANGES: perl: patch from Martin Buck: don't always open stderr as the calls to snmp_log already do this and it messes up the agent when embedded
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19916 06827809-a52a-0410-b366-d66718629ded
-
-commit b43eab32031d7a58fad48883aba648b000338de5
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Feb 8 17:37:01 2011 +0000
-
-    CHANGES: snmpd: Fix a strlen calculation as pointed out by Konstantin Baydarov
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19915 06827809-a52a-0410-b366-d66718629ded
-
-commit 3cd24222397721ca55203b41458df9bc3bb5b633
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Feb 8 17:37:01 2011 +0000
-
-    CHANGES: snmpd: Fix a strlen calculation as pointed out by Konstantin Baydarov
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19915 06827809-a52a-0410-b366-d66718629ded
-
-commit ff39fa775f8f6f0407bc4c7fcf8c1de830196080
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Feb 8 17:37:01 2011 +0000
-
-    CHANGES: snmpd: Fix a strlen calculation as pointed out by Konstantin Baydarov
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19915 06827809-a52a-0410-b366-d66718629ded
-
-commit f0d6bf03d5fe6dbfce4430f0af2040f00ce14e45
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Thu Feb 3 22:42:29 2011 +0000
-
-    CHANGES: snmplib: BUG: 3171878: Using SNMPv3 context does not work
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-2-patches@19910 06827809-a52a-0410-b366-d66718629ded
-
-commit 1cf9c456b3ca4317d1d7d220adeccd84d0535ddb
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Thu Feb 3 22:42:29 2011 +0000
-
-    CHANGES: snmplib: BUG: 3171878: Using SNMPv3 context does not work
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19910 06827809-a52a-0410-b366-d66718629ded
-
-commit 9ed7ba42fc22977229a6e431b309031ef8f8cca4
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Thu Feb 3 22:42:29 2011 +0000
-
-    CHANGES: snmplib: BUG: 3171878: Using SNMPv3 context does not work
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19910 06827809-a52a-0410-b366-d66718629ded
-
-commit 9c07d48562145807f72180a7b213cc599d8a6be5
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Thu Feb 3 22:42:29 2011 +0000
-
-    CHANGES: snmplib: BUG: 3171878: Using SNMPv3 context does not work
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19910 06827809-a52a-0410-b366-d66718629ded
-
-commit 69c4075530c657a28fa45283e964a3c1a12f980e
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue Feb 1 13:07:55 2011 +0000
-
-    Don't check for 32/64bit wrap in calculated entries.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19908 06827809-a52a-0410-b366-d66718629ded
-
-commit 0a42003eb18fc0511048d0ac26e5de420b4e1dc4
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue Feb 1 09:41:28 2011 +0000
-
-    CHANGES: snmpd: fixed the agent writing 'looks like a 64bit wrap, but prev!=new' in syslog when computing ipSystemStats
-    
-    Without the memcpy, prev_vals->stats and new_vals->stats could get different,
-    which could much much later (when a counter gets bigger than 32 bits) result
-    in 'prev!=new' message in syslog. Typically this happens after long time of
-    uptime and it is very hard to reproduce.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19907 06827809-a52a-0410-b366-d66718629ded
-
-commit fffc3002a0f7580cb441df760bd3dd4b549015e4
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue Feb 1 09:41:28 2011 +0000
-
-    CHANGES: snmpd: fixed the agent writing 'looks like a 64bit wrap, but prev!=new' in syslog when computing ipSystemStats
-    
-    Without the memcpy, prev_vals->stats and new_vals->stats could get different,
-    which could much much later (when a counter gets bigger than 32 bits) result
-    in 'prev!=new' message in syslog. Typically this happens after long time of
-    uptime and it is very hard to reproduce.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19907 06827809-a52a-0410-b366-d66718629ded
-
-commit 0c99af240416bcd6d5c51596c310d57b0aff4c5c
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue Feb 1 09:41:28 2011 +0000
-
-    CHANGES: snmpd: fixed the agent writing 'looks like a 64bit wrap, but prev!=new' in syslog when computing ipSystemStats
-    
-    Without the memcpy, prev_vals->stats and new_vals->stats could get different,
-    which could much much later (when a counter gets bigger than 32 bits) result
-    in 'prev!=new' message in syslog. Typically this happens after long time of
-    uptime and it is very hard to reproduce.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19907 06827809-a52a-0410-b366-d66718629ded
-
-commit 3b1d30c7391055d5367597d0d7dce71aa2a284cd
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Jan 31 22:39:38 2011 +0000
-
-    addprototypes and remove unused vars
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19905 06827809-a52a-0410-b366-d66718629ded
-
-commit a60812829f2c93698f0c42a79049a55133a059a5
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Jan 31 22:39:38 2011 +0000
-
-    addprototypes and remove unused vars
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19905 06827809-a52a-0410-b366-d66718629ded
-
-commit 901664620c4988e5e9f4be6f1fdb934da9b23852
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Jan 31 22:37:58 2011 +0000
-
-    const juggling to remove warnings
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19904 06827809-a52a-0410-b366-d66718629ded
-
-commit 9e324634be7b0dc0086349eb6c0f7542883eb15d
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Jan 31 22:37:58 2011 +0000
-
-    const juggling to remove warnings
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19904 06827809-a52a-0410-b366-d66718629ded
-
-commit c23aa4d90d92f5c4986a8dca0b182523dc58590b
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Jan 31 22:30:54 2011 +0000
-
-    diskio for dragonfly
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19903 06827809-a52a-0410-b366-d66718629ded
-
-commit 28513f12a72a9a0de4a95450479ac54a681ad8a9
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Jan 31 22:30:54 2011 +0000
-
-    diskio for dragonfly
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19903 06827809-a52a-0410-b366-d66718629ded
-
-commit 0d4f8d6119b2eb6fdf569090c2a34fc96424c0f7
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Jan 31 22:28:30 2011 +0000
-
-    properly name initalizer function for cpu_kinfo
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19902 06827809-a52a-0410-b366-d66718629ded
-
-commit 5943c59441393ebdcd9b1cb6b832a428024f9145
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Mon Jan 31 22:28:30 2011 +0000
-
-    properly name initalizer function for cpu_kinfo
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19902 06827809-a52a-0410-b366-d66718629ded
-
-commit e6969b993b20951ccd8232ebd5101c6694e9887f
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Sun Jan 30 01:06:21 2011 +0000
-
-    CHANGES: snmpd: BUG: 3151897: fd leak w/ /proc/partitions
-    read in diskio
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-2-patches@19899 06827809-a52a-0410-b366-d66718629ded
-
-commit 55eea37241a599898ce61f364a6a07d856202fad
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Sun Jan 30 01:06:21 2011 +0000
-
-    CHANGES: snmpd: BUG: 3151897: fd leak w/ /proc/partitions
-    read in diskio
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19899 06827809-a52a-0410-b366-d66718629ded
-
-commit 7f2c7ffa020ea57f854a27129a683ecca3bd69c6
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Sun Jan 30 01:06:21 2011 +0000
-
-    CHANGES: snmpd: BUG: 3151897: fd leak w/ /proc/partitions
-    read in diskio
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19899 06827809-a52a-0410-b366-d66718629ded
-
-commit 9051303409341f8b151acd33d53ca763c4e85d0e
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Sun Jan 30 01:06:21 2011 +0000
-
-    CHANGES: snmpd: BUG: 3151897: fd leak w/ /proc/partitions
-    read in diskio
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19899 06827809-a52a-0410-b366-d66718629ded
-
-commit e63da79b1b62b7b061c05c4e7a2ad8386b47661d
-Author: Thomas Anders <tanders@users.sourceforge.net>
-Date:   Sat Jan 29 23:36:29 2011 +0000
-
-    NEWS: snmpd: BUG: 3166568: hrSystemProcesses missing in 5.6/5.6.1
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19898 06827809-a52a-0410-b366-d66718629ded
-
-commit 791d420e4874d03acc25374f79eb2aa19db72a9c
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 27 09:35:24 2011 +0000
-
-    After ten years intensive use, an "experimental"
-    feature can probably be released for general use.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19897 06827809-a52a-0410-b366-d66718629ded
-
-commit cee25426b4ccc59bd3d592a73182caf7603014d8
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 27 09:35:24 2011 +0000
-
-    After ten years intensive use, an "experimental"
-    feature can probably be released for general use.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19897 06827809-a52a-0410-b366-d66718629ded
-
-commit 08958f69ac6a8450c7133c052c47c90ba35ee9eb
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 27 09:35:24 2011 +0000
-
-    After ten years intensive use, an "experimental"
-    feature can probably be released for general use.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19897 06827809-a52a-0410-b366-d66718629ded
-
-commit 8a06f9d4d9b0890a5f93af00cf8ae4a45da83cfc
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jan 26 16:50:52 2011 +0000
-
-    CHANGES: mib2c: make the mib2c foreach ranges work as advertised in the comments.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19896 06827809-a52a-0410-b366-d66718629ded
-
-commit 0cf1ba6ca5d5ad3278caa8879bc46d25ed1d5554
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jan 26 16:50:52 2011 +0000
-
-    CHANGES: mib2c: make the mib2c foreach ranges work as advertised in the comments.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19896 06827809-a52a-0410-b366-d66718629ded
-
-commit 3bbde5f3cf8dff99bd806f1fcdaa384eceb18857
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Wed Jan 26 16:50:52 2011 +0000
-
-    CHANGES: mib2c: make the mib2c foreach ranges work as advertised in the comments.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19896 06827809-a52a-0410-b366-d66718629ded
-
-commit 3e972de97427b664852258aececa2a4d95cc30b7
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Wed Jan 26 09:12:20 2011 +0000
-
-    CHANGES: snmpd: fixed rare race condition when counting processes for UCD-SNMP-MIB::prTable
-    
-    The XX process can exit after fopen(/proc/XX/status) and before fgets() from it. snmpd should continue with other processes and not to stop.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19893 06827809-a52a-0410-b366-d66718629ded
-
-commit bcee037c71f006e2be3b446e3e81c509d49c65cd
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Wed Jan 26 09:12:20 2011 +0000
-
-    CHANGES: snmpd: fixed rare race condition when counting processes for UCD-SNMP-MIB::prTable
-    
-    The XX process can exit after fopen(/proc/XX/status) and before fgets() from it. snmpd should continue with other processes and not to stop.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19893 06827809-a52a-0410-b366-d66718629ded
-
-commit 2e5f5640db999783b8398116f8462a5b0a3247e4
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Wed Jan 19 13:57:47 2011 +0000
-
-    Make us compatible with rpm-4.9, rpmGetFilesystemList does not exist anymore, so the configure script should not check it.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19892 06827809-a52a-0410-b366-d66718629ded
-
-commit 8424efd97e002d534c81d4bc687329d723a9e18b
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Jan 19 06:31:01 2011 +0000
-
-    diskIOLAx requires exp which may require -lm
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19891 06827809-a52a-0410-b366-d66718629ded
-
-commit 32334038970c5af6a1c19815204d1cd484052493
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Jan 19 06:20:45 2011 +0000
-
-    Define DRAGONFLYID
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19890 06827809-a52a-0410-b366-d66718629ded
-
-commit 6a0c352e91cfce95d4d4cbbe555895c266da7456
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Wed Jan 19 06:20:45 2011 +0000
-
-    Define DRAGONFLYID
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19890 06827809-a52a-0410-b366-d66718629ded
-
-commit 5b702b024b60176d7f5699b92e55da50a8deae71
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Jan 18 22:01:24 2011 +0000
-
-    typo
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19885 06827809-a52a-0410-b366-d66718629ded
-
-commit bcb59726874500ba3704f0b487a0390835822ca9
-Author: Niels Baggesen <nba@users.sourceforge.net>
-Date:   Tue Jan 18 21:54:24 2011 +0000
-
-    Find proper if-mib interface for NetBSD
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19883 06827809-a52a-0410-b366-d66718629ded
-
-commit 97ce3858698b3bf0e13389940a58c7a3df0ff268
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Fri Jan 14 12:28:40 2011 +0000
-
-    CHANGES: snmpd: from Robert Story: fixed adding new addresses to ipAddressTable
-    
-    Long time ago, there was a bugreport[1] regarding ipAddressTable on
-    net-snmp-coders list and rstory's experimental patch without any feedback.
-    Now I've got few complaints that SNMP SET on ipAddressTable produces the
-    same errors and guess what, the patch fixes them.
-    
-    [1]: http://sourceforge.net/mailarchive/forum.php?thread_name=20060920134935.35b36ed6%40dev.futz.org&forum_name=net-snmp-coders
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19881 06827809-a52a-0410-b366-d66718629ded
-
-commit f1bddec2c276cbadc2761c438d6e9c0decf11ebf
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Fri Jan 14 12:28:40 2011 +0000
-
-    CHANGES: snmpd: from Robert Story: fixed adding new addresses to ipAddressTable
-    
-    Long time ago, there was a bugreport[1] regarding ipAddressTable on
-    net-snmp-coders list and rstory's experimental patch without any feedback.
-    Now I've got few complaints that SNMP SET on ipAddressTable produces the
-    same errors and guess what, the patch fixes them.
-    
-    [1]: http://sourceforge.net/mailarchive/forum.php?thread_name=20060920134935.35b36ed6%40dev.futz.org&forum_name=net-snmp-coders
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19881 06827809-a52a-0410-b366-d66718629ded
-
-commit 65f4fed313714c42caccb67a5f671db62ee46efd
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Fri Jan 14 06:25:59 2011 +0000
-
-    remove completely useless and nonsensical code
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19878 06827809-a52a-0410-b366-d66718629ded
-
-commit a70966a2f8b3649ea1c717b5e8835ee85510bf6e
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Fri Jan 14 06:25:59 2011 +0000
-
-    remove completely useless and nonsensical code
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19878 06827809-a52a-0410-b366-d66718629ded
-
-commit 64aad8e91cb4e0c1f62c12de96e1a648660a56c5
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 13 15:56:37 2011 +0000
-
-    Ensure releases are installed to the correct path within the /tags SVN tree
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19876 06827809-a52a-0410-b366-d66718629ded
-
-commit e75458fe5e84ba29209c477bbf7423c92033d5ae
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 13 15:56:37 2011 +0000
-
-    Ensure releases are installed to the correct path within the /tags SVN tree
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19876 06827809-a52a-0410-b366-d66718629ded
-
-commit e4d96dcec0933820733fa589cee62875edf6cde3
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 13 15:15:57 2011 +0000
-
-    Remove C++ comments
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19868 06827809-a52a-0410-b366-d66718629ded
-
-commit 4ec8b431b58c5cded16794a4be92f883769391a8
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 13 15:15:57 2011 +0000
-
-    Remove C++ comments
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19868 06827809-a52a-0410-b366-d66718629ded
-
-commit 3bc482a9104ba69dcb2bf1f6f573742977376c70
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 13 13:17:41 2011 +0000
-
-    Fix broken patch
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19864 06827809-a52a-0410-b366-d66718629ded
-
-commit ca7ae5c3f29014066d55662f59e33825d1f73e47
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 13 12:14:19 2011 +0000
-
-    Configure fixes for DragonFly support
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19863 06827809-a52a-0410-b366-d66718629ded
-
-commit a4dd1b4dafb8970041c1f38cf26da2a006e4dde3
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 13 12:14:19 2011 +0000
-
-    Configure fixes for DragonFly support
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19863 06827809-a52a-0410-b366-d66718629ded
-
-commit a514118047950a6da3e82cc5d07d4530cfef8286
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 13 12:04:53 2011 +0000
-
-    Code fixes for DragonFly support
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19862 06827809-a52a-0410-b366-d66718629ded
-
-commit 986b2deda5792a244ffda5e007412bb5e43a673f
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 13 12:04:53 2011 +0000
-
-    Code fixes for DragonFly support
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19862 06827809-a52a-0410-b366-d66718629ded
-
-commit 19f970699aa06639378861b6d6a5e27f4c3fc967
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 13 11:33:14 2011 +0000
-
-    Fix typo
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19861 06827809-a52a-0410-b366-d66718629ded
-
-commit 36e5d6db9b9bcf31ad754d207ab8a589b1259e40
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 13 11:33:14 2011 +0000
-
-    Fix typo
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19861 06827809-a52a-0410-b366-d66718629ded
-
-commit abaf0254111aac0853d3ec4347b0ffc843daec22
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed Jan 12 19:20:23 2011 +0000
-
-    Get rid of a compiler warning in agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters/usmDHParameters.c.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19857 06827809-a52a-0410-b366-d66718629ded
-
-commit be804c7be847692cb808c19efc0603bb5660fd5b
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed Jan 12 19:20:23 2011 +0000
-
-    Get rid of a compiler warning in agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters/usmDHParameters.c.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19857 06827809-a52a-0410-b366-d66718629ded
-
-commit 4dc6aa686dc7f6bb36c054532ef2662b262ce5c5
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed Jan 12 19:04:39 2011 +0000
-
-    Fixed a compiler warning (format specification mismatch) that was introduced
-    in r19808 ("snmpd: PATCHES: 2975254: Avoid callback re-use of closed sessions").
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19856 06827809-a52a-0410-b366-d66718629ded
-
-commit f2d73454ba07347b41cfed7751ec6f921bdbd801
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed Jan 12 19:04:39 2011 +0000
-
-    Fixed a compiler warning (format specification mismatch) that was introduced
-    in r19808 ("snmpd: PATCHES: 2975254: Avoid callback re-use of closed sessions").
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19856 06827809-a52a-0410-b366-d66718629ded
-
-commit d66f88ff4f0a669f5c5de7027e1eb0c7cd9aafbc
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Wed Jan 12 19:04:39 2011 +0000
-
-    Fixed a compiler warning (format specification mismatch) that was introduced
-    in r19808 ("snmpd: PATCHES: 2975254: Avoid callback re-use of closed sessions").
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19856 06827809-a52a-0410-b366-d66718629ded
-
-commit 8f58dae2a1b3e745ee1e8b944f7ea7e5ae1c4cf0
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Wed Jan 12 15:03:11 2011 +0000
-
-    CHANGES: snmp: patch: 3096725: sysORTable registation for notification log mib
-    
-      original patch fixed several issues, other parts applied earlier
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19855 06827809-a52a-0410-b366-d66718629ded
-
-commit 8905c98db6de880b3bc992edd94ef70fa4d51773
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Wed Jan 12 15:03:11 2011 +0000
-
-    CHANGES: snmp: patch: 3096725: sysORTable registation for notification log mib
-    
-      original patch fixed several issues, other parts applied earlier
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19855 06827809-a52a-0410-b366-d66718629ded
-
-commit 159530ea5fe3ad623db821c8b793cd0465dab0b2
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Wed Jan 12 14:37:09 2011 +0000
-
-    CHANGES: agent: MIB-specific leak-at-exit fixes.
-    
-      backport applicable parts of r19533 from trunk
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19854 06827809-a52a-0410-b366-d66718629ded
-
-commit 956c849530e59c0451d9643247e4348e2ab09584
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Wed Jan 12 14:37:09 2011 +0000
-
-    CHANGES: agent: MIB-specific leak-at-exit fixes.
-    
-      backport applicable parts of r19533 from trunk
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19854 06827809-a52a-0410-b366-d66718629ded
-
-commit 165c8badda697067df8faac0db12455b812cc5a9
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 16:04:16 2011 +0000
-
-    Recognise Agent OID for DragonFly systems (and general tidying up)
-    [From NetBSD patch archive]
-    
-    Qn: Should these be updated to refer to Net-SNMP (rather than UCD)?
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19852 06827809-a52a-0410-b366-d66718629ded
-
-commit 9b6d276a2cbc3f1864ae96ae1bd7aa430642c865
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 16:04:16 2011 +0000
-
-    Recognise Agent OID for DragonFly systems (and general tidying up)
-    [From NetBSD patch archive]
-    
-    Qn: Should these be updated to refer to Net-SNMP (rather than UCD)?
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19852 06827809-a52a-0410-b366-d66718629ded
-
-commit b2faeb0ecd6c30a03f9de2daf37325910d2fd00f
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 16:01:22 2011 +0000
-
-    Define Agent OID for DragonFly systems
-    (and general tidying up)
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19851 06827809-a52a-0410-b366-d66718629ded
-
-commit dd01deba7fed58549f3478091a794112075f929f
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 16:01:22 2011 +0000
-
-    Define Agent OID for DragonFly systems
-    (and general tidying up)
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19851 06827809-a52a-0410-b366-d66718629ded
-
-commit a6e53908be48e8b0fea5aa3961ded3d7184dc461
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 16:01:22 2011 +0000
-
-    Define Agent OID for DragonFly systems
-    (and general tidying up)
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19851 06827809-a52a-0410-b366-d66718629ded
-
-commit 1cb1c20ecaa254d12461a6a2c035f55a9034bc98
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 15:27:50 2011 +0000
-
-    NetBSD DragonFly support for UDP & TCP tables
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19850 06827809-a52a-0410-b366-d66718629ded
-
-commit 25349cf839cfcf1cc7e83ecdbeca5761cb91ea7a
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 15:27:50 2011 +0000
-
-    NetBSD DragonFly support for UDP & TCP tables
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19850 06827809-a52a-0410-b366-d66718629ded
-
-commit a8be80412fb47ede5a25b5a6ac606f3233bfa89c
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 14:41:26 2011 +0000
-
-    CHANGES: NetBSD: DragonFly support
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19849 06827809-a52a-0410-b366-d66718629ded
-
-commit b443cbd85a65e355ff0101fe68142d49b8cc4e57
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 14:41:26 2011 +0000
-
-    CHANGES: NetBSD: DragonFly support
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19849 06827809-a52a-0410-b366-d66718629ded
-
-commit 0932b04910ec670112e216e64789ca2f4b5b0761
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 14:36:25 2011 +0000
-
-    NetBSD/DragonFly 'struct ifnet' requires KERNEL, but not _KERNEL
-    [From NetBSD patch archive]
-        (I hope I've got this one right!)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19848 06827809-a52a-0410-b366-d66718629ded
-
-commit a52f8c3f8563189bd0d1dfe49d0c809ef08d7de2
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 14:36:25 2011 +0000
-
-    NetBSD/DragonFly 'struct ifnet' requires KERNEL, but not _KERNEL
-    [From NetBSD patch archive]
-        (I hope I've got this one right!)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19848 06827809-a52a-0410-b366-d66718629ded
-
-commit c7588e871bfa91426984021690afda76b231f5fb
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Tue Jan 11 14:14:07 2011 +0000
-
-    revert PATCH 3053436: tcpConnectionTable_data_access invalid memory access
-    
-      the bug this is fixing was introduced in r17719, and fixed in r17861.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19847 06827809-a52a-0410-b366-d66718629ded
-
-commit ca270b95495d637bca9d21658c0295d5e0cbe3b6
-Author: Robert Story <rstory@users.sourceforge.net>
-Date:   Tue Jan 11 14:14:07 2011 +0000
-
-    revert PATCH 3053436: tcpConnectionTable_data_access invalid memory access
-    
-      the bug this is fixing was introduced in r17719, and fixed in r17861.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19847 06827809-a52a-0410-b366-d66718629ded
-
-commit ae99704f5cd9b85e93fe4a8ddf18f1700f73062f
-Author: Jan Safranek <jsafranek@users.sourceforge.net>
-Date:   Tue Jan 11 13:34:22 2011 +0000
-
-    CHANGES: snmplib: from Bill Fenner: fix sending of UDP responses from multihomed agents.
-    
-    Try to send the response as it was before Net-SNMP 5.6 (assuming the appropriate request was unicast) and only if it fails try to set if_index (the request must be broadcast).
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19846 06827809-a52a-0410-b366-d66718629ded
-
-commit c3fe2f7200fb00be1f3c232051938ea87847c258
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 13:22:10 2011 +0000
-
-    Really handle systems with 'struct timespec ifnet.if_lastchange'
-    (missing element from SVN revision 19841)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19845 06827809-a52a-0410-b366-d66718629ded
-
-commit f483c9b99de034e98a91489f2c65cfad9ac8836f
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 13:22:10 2011 +0000
-
-    Really handle systems with 'struct timespec ifnet.if_lastchange'
-    (missing element from SVN revision 19841)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19845 06827809-a52a-0410-b366-d66718629ded
-
-commit 5b10b4b0c8444b0432e1fcb5b335d885b01f4873
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 12:24:12 2011 +0000
-
-    Additional headers when testing for IPv6 headers
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19844 06827809-a52a-0410-b366-d66718629ded
-
-commit 4aebbff707bf0cd4b5172474143aa1b302c31bef
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 12:24:12 2011 +0000
-
-    Additional headers when testing for IPv6 headers
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19844 06827809-a52a-0410-b366-d66718629ded
-
-commit c40ed6ee39840f3729f93ee7f3c792dde922570e
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 12:24:12 2011 +0000
-
-    Additional headers when testing for IPv6 headers
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19844 06827809-a52a-0410-b366-d66718629ded
-
-commit 3f43fcedfab013adb62bbdc919c519d023df9cf2
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 12:14:25 2011 +0000
-
-    Missing type under darwin
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19843 06827809-a52a-0410-b366-d66718629ded
-
-commit 96d131f9a66c334a57ca504a0269523bd016a960
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 12:14:25 2011 +0000
-
-    Missing type under darwin
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19843 06827809-a52a-0410-b366-d66718629ded
-
-commit f089052d69036e3287a5f4525b38855a0c1a6631
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 12:10:56 2011 +0000
-
-    NetBSD support for Disk I/O stats
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19842 06827809-a52a-0410-b366-d66718629ded
-
-commit 3557ef70f0ca8617d787b4bfc1bf7ad91be0202f
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 12:01:27 2011 +0000
-
-    Handle systems with 'struct timespec ifnet.if_lastchange' (rather than struct timeval)
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19841 06827809-a52a-0410-b366-d66718629ded
-
-commit 79e8b3f958a977d5e9ceb994815446652c089fdb
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 12:01:27 2011 +0000
-
-    Handle systems with 'struct timespec ifnet.if_lastchange' (rather than struct timeval)
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19841 06827809-a52a-0410-b366-d66718629ded
-
-commit 5aa3a33621df89bf1f5567e1cd9a6677ae9f20db
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 11:27:06 2011 +0000
-
-    Pull in kernel_netbsd module when required
-    [Based on fix from NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19840 06827809-a52a-0410-b366-d66718629ded
-
-commit b329dc9ffc6a7d14ccb0277f763cfda750a57eca
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 11:27:06 2011 +0000
-
-    Pull in kernel_netbsd module when required
-    [Based on fix from NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19840 06827809-a52a-0410-b366-d66718629ded
-
-commit 7b57bdb515471612396c5f711b9fe04a69da0d50
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 10:36:08 2011 +0000
-
-    CHANGES: NetBSD: Retrieve MIB-II network statistics via sysctl
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19839 06827809-a52a-0410-b366-d66718629ded
-
-commit 83b1cab8b8dcbcaeb1a68d03cb0e0c4c19696560
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Tue Jan 11 10:36:08 2011 +0000
-
-    CHANGES: NetBSD: Retrieve MIB-II network statistics via sysctl
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19839 06827809-a52a-0410-b366-d66718629ded
-
-commit d52121d7c95a6ef2afe86c2bbc435f4e49c7f28b
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Jan 10 16:56:11 2011 +0000
-
-    Add support for darwin
-    (The patch from the NetBSD archive appears to be essentially the
-    same as the equivalent code from the OpenBSD patch archive)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19837 06827809-a52a-0410-b366-d66718629ded
-
-commit ea05f39d271e36e4a1d1f018e65fd18920219f8c
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Jan 10 16:56:11 2011 +0000
-
-    Add support for darwin
-    (The patch from the NetBSD archive appears to be essentially the
-    same as the equivalent code from the OpenBSD patch archive)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19837 06827809-a52a-0410-b366-d66718629ded
-
-commit 2d96be70eb7cb46e2898c957ed87676706a6d6df
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Jan 10 16:56:11 2011 +0000
-
-    Add support for darwin
-    (The patch from the NetBSD archive appears to be essentially the
-    same as the equivalent code from the OpenBSD patch archive)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19837 06827809-a52a-0410-b366-d66718629ded
-
-commit 30f6836d044c33a5595b62d16ffc596f0ac2c90a
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Jan 10 16:54:02 2011 +0000
-
-    Add support for darwin
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19836 06827809-a52a-0410-b366-d66718629ded
-
-commit 1a6ad19705069fc8cb4f70c30c962af38d541d26
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Jan 10 16:54:02 2011 +0000
-
-    Add support for darwin
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19836 06827809-a52a-0410-b366-d66718629ded
-
-commit 74d30b631467ac1778ec71231c55a3cc858a5c6a
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Jan 10 16:54:02 2011 +0000
-
-    Add support for darwin
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19836 06827809-a52a-0410-b366-d66718629ded
-
-commit b4fd01aa074e4b749a96f9ca439289f384cb80c3
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Jan 10 14:55:57 2011 +0000
-
-    CHANGES: NetBSD: Update memory and CPU statistics handling
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19835 06827809-a52a-0410-b366-d66718629ded
-
-commit ce854d19635821aea1a8cf5f9095e14068f3fb9b
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Jan 10 14:55:57 2011 +0000
-
-    CHANGES: NetBSD: Update memory and CPU statistics handling
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19835 06827809-a52a-0410-b366-d66718629ded
-
-commit 98c39b6876dd530c9ace76a86e91723631fea69e
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Jan 10 14:22:44 2011 +0000
-
-    Fix divide-by-zero error in CPU performance statistics
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19834 06827809-a52a-0410-b366-d66718629ded
-
-commit b61ddc4fc6dcb331c6921c825b93b60c8b257fb4
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Mon Jan 10 14:22:44 2011 +0000
-
-    Fix divide-by-zero error in CPU performance statistics
-    [From NetBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19834 06827809-a52a-0410-b366-d66718629ded
-
-commit 8a49cadb5e2a8e4f1a3f20bf72b9db4a04fa30c9
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Jan 9 22:54:50 2011 +0000
-
-    CHANGES: OpenBSD: Update SWRun code to use kvm_getproc2
-    [From OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19833 06827809-a52a-0410-b366-d66718629ded
-
-commit 27161932a3ccc28fc26427c76408b86f3b708003
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Jan 9 21:30:38 2011 +0000
-
-    CHANGES: build: OpenBSD: Fix order of headers when checking <netinet/in_pcb.h>
-    [From OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19832 06827809-a52a-0410-b366-d66718629ded
-
-commit 8d29d40de4ba5f257f6bf46e2b39b11b2781c884
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Jan 9 19:44:57 2011 +0000
-
-    Amend how multi-CPU statistics are retreived using sysctl on OpenBSD systems
-    (if this block was active, which it isn't, but that's not important right not)
-    [Based on OpenBSD patch archive, amended (probably wrongly) by DTS]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19831 06827809-a52a-0410-b366-d66718629ded
-
-commit 4afec7f88ab840c6b8bc0b96c6aa777cc33cbb3c
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Jan 9 19:44:57 2011 +0000
-
-    Amend how multi-CPU statistics are retreived using sysctl on OpenBSD systems
-    (if this block was active, which it isn't, but that's not important right not)
-    [Based on OpenBSD patch archive, amended (probably wrongly) by DTS]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19831 06827809-a52a-0410-b366-d66718629ded
-
-commit e377e89305194e19ffc39d6d88d84d236faca559
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Jan 9 18:13:50 2011 +0000
-
-    sysctl takes a 'size_t' variable for the size parameter
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19830 06827809-a52a-0410-b366-d66718629ded
-
-commit 77af899aedeb8541123ff889c2f9f45265d8dbae
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Jan 9 18:13:50 2011 +0000
-
-    sysctl takes a 'size_t' variable for the size parameter
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19830 06827809-a52a-0410-b366-d66718629ded
-
-commit d20906cb685da29dcea71b893d2721142186bd6f
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Jan 9 18:13:50 2011 +0000
-
-    sysctl takes a 'size_t' variable for the size parameter
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19830 06827809-a52a-0410-b366-d66718629ded
-
-commit 90c140ce893e8a6c2fd97cd339654a36c36e682a
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Jan 9 18:11:01 2011 +0000
-
-    sysctl takes a 'size_t' variable for the size parameter
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19829 06827809-a52a-0410-b366-d66718629ded
-
-commit 294a2da95679d66822ff39d4696ce6f4035dfde3
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Sun Jan 9 18:11:01 2011 +0000
-
-    sysctl takes a 'size_t' variable for the size parameter
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19829 06827809-a52a-0410-b366-d66718629ded
-
-commit 0e59c14c5cf2f87f53afb98b3705bede14823618
-Author: Magnus Fromreide <magfr@users.sourceforge.net>
-Date:   Sat Jan 8 00:47:22 2011 +0000
-
-    Update acconfig.h with changes from r19819.
-    Rerun autoheader.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19827 06827809-a52a-0410-b366-d66718629ded
-
-commit 39b9a0abcbba0cafea5a6324e1c576e6588a1cd5
-Author: Magnus Fromreide <magfr@users.sourceforge.net>
-Date:   Sat Jan 8 00:47:22 2011 +0000
-
-    Update acconfig.h with changes from r19819.
-    Rerun autoheader.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19827 06827809-a52a-0410-b366-d66718629ded
-
-commit c64a0629d3d3263d86ac51ea198672dd307dd4f5
-Author: Magnus Fromreide <magfr@users.sourceforge.net>
-Date:   Sat Jan 8 00:47:22 2011 +0000
-
-    Update acconfig.h with changes from r19819.
-    Rerun autoheader.
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19827 06827809-a52a-0410-b366-d66718629ded
-
-commit 0c8970ec23c1064a81cfc5c362e3b348afb02070
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:56:26 2011 +0000
-
-    CHANGES: OpenBSD: Support updating the routing table
-    [From OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19826 06827809-a52a-0410-b366-d66718629ded
-
-commit 834cc128af7fd5422a9eda73aa48987774f2435d
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:56:26 2011 +0000
-
-    CHANGES: OpenBSD: Support updating the routing table
-    [From OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19826 06827809-a52a-0410-b366-d66718629ded
-
-commit 1143754a4c1853cbc82e9c026be2d2c8faebbd88
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:56:26 2011 +0000
-
-    CHANGES: OpenBSD: Support updating the routing table
-    [From OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19826 06827809-a52a-0410-b366-d66718629ded
-
-commit b2d8f102666e226ff186d1a53e0f598bb4a3c84c
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:29:39 2011 +0000
-
-    Set 'next' field for udp entry linked list on OpenBSD4
-    [From OpenBSD patch archive]
-    
-    This should probably be set in <net-snmp/system/openbsd.h>
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19825 06827809-a52a-0410-b366-d66718629ded
-
-commit 1b5c9c0030f7a8309fe886044add16a244628b4e
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:29:39 2011 +0000
-
-    Set 'next' field for udp entry linked list on OpenBSD4
-    [From OpenBSD patch archive]
-    
-    This should probably be set in <net-snmp/system/openbsd.h>
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19825 06827809-a52a-0410-b366-d66718629ded
-
-commit 1e2c6641720e0bd496034a4f2543a984ae5a5041
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:29:39 2011 +0000
-
-    Set 'next' field for udp entry linked list on OpenBSD4
-    [From OpenBSD patch archive]
-    
-    This should probably be set in <net-snmp/system/openbsd.h>
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19825 06827809-a52a-0410-b366-d66718629ded
-
-commit eecb69f26a44fd7e7c8f3ef9682546d6380db519
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:12:25 2011 +0000
-
-    Use a suitable constant for CWD buffer size
-    [Based on OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19824 06827809-a52a-0410-b366-d66718629ded
-
-commit ece033355f7d69a9def4b8d2307bd5db3308a28e
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:12:25 2011 +0000
-
-    Use a suitable constant for CWD buffer size
-    [Based on OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19824 06827809-a52a-0410-b366-d66718629ded
-
-commit 1433360c0c3ab03ddfd14961796b1fd9cd0ce1b9
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:12:25 2011 +0000
-
-    Use a suitable constant for CWD buffer size
-    [Based on OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19824 06827809-a52a-0410-b366-d66718629ded
-
-commit d829ed65255cdc620bc2638e68ab2f7efe593705
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:07:17 2011 +0000
-
-    Move global variable into the method where it's used.
-    [From OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19823 06827809-a52a-0410-b366-d66718629ded
-
-commit 8a238b5983589cba474d875571dde2a51a8f8273
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:07:17 2011 +0000
-
-    Move global variable into the method where it's used.
-    [From OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19823 06827809-a52a-0410-b366-d66718629ded
-
-commit 983e5f2b7ea8d1b8263c70e2d4bfba2b56b9a5c0
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 20:07:17 2011 +0000
-
-    Move global variable into the method where it's used.
-    [From OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19823 06827809-a52a-0410-b366-d66718629ded
-
-commit 2546ec2d474cde54e853f40ef689bf46c52e47d4
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 16:48:56 2011 +0000
-
-    Handle systems without IFM_TOKEN
-    [From OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19822 06827809-a52a-0410-b366-d66718629ded
-
-commit 7913236176a001246b0a7bd4249052102cee70db
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 16:48:56 2011 +0000
-
-    Handle systems without IFM_TOKEN
-    [From OpenBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19822 06827809-a52a-0410-b366-d66718629ded
-
-commit 8e4bf4b53a13dc97df18ddd818d02a43a80bcfa6
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 14:38:37 2011 +0000
-
-    Update retrieval of cache usage statistics on FreeBSD
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19821 06827809-a52a-0410-b366-d66718629ded
-
-commit 38281777115f27e050a6633d3dd581a90ae7c6e3
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 14:38:37 2011 +0000
-
-    Update retrieval of cache usage statistics on FreeBSD
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19821 06827809-a52a-0410-b366-d66718629ded
-
-commit 2dbdc5cb6761501a6b9e12ec92d77849c5470d70
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 14:20:30 2011 +0000
-
-    Increase maximum size of execute output cache
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19819 06827809-a52a-0410-b366-d66718629ded
-
-commit 549a77f72200d44707359a8e49ff8c5bd53a3f30
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 14:20:30 2011 +0000
-
-    Increase maximum size of execute output cache
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19819 06827809-a52a-0410-b366-d66718629ded
-
-commit b540d3c9971045890bddd3de50f40f1468f1b03c
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 14:20:30 2011 +0000
-
-    Increase maximum size of execute output cache
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19819 06827809-a52a-0410-b366-d66718629ded
-
-commit cc459f69fba68b6332b9ad27b4bc81a3df13bc1a
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 14:09:15 2011 +0000
-
-    Remove duplicate include directives
-    [From FreeBSD patches archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19817 06827809-a52a-0410-b366-d66718629ded
-
-commit 7f7151632dea5ad894530ee58476564241d95807
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 14:09:15 2011 +0000
-
-    Remove duplicate include directives
-    [From FreeBSD patches archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19817 06827809-a52a-0410-b366-d66718629ded
-
-commit f8d6b46c2c32a7221716ef533bfaaed89590384e
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:47:23 2011 +0000
-
-    Handle systems where RTF_LLINFO is not defined
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19816 06827809-a52a-0410-b366-d66718629ded
-
-commit ba81b1dfb488e5602af131a9239a9ab8d3d35e1e
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:47:23 2011 +0000
-
-    Handle systems where RTF_LLINFO is not defined
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19816 06827809-a52a-0410-b366-d66718629ded
-
-commit 2ff46fe697d9c3af9106515c41b7e6a98126aa09
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:47:23 2011 +0000
-
-    Handle systems where RTF_LLINFO is not defined
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19816 06827809-a52a-0410-b366-d66718629ded
-
-commit f02312aaebff55f040476a1c7103e991a11c6aa2
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:40:40 2011 +0000
-
-    Include zfs mount points for disk reports under FreeBSD
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19815 06827809-a52a-0410-b366-d66718629ded
-
-commit 83bf444f076ed2b921223959586a4ee383595623
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:40:40 2011 +0000
-
-    Include zfs mount points for disk reports under FreeBSD
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19815 06827809-a52a-0410-b366-d66718629ded
-
-commit bd6cdca26f9469611303356bbdaedd8237d3d1ba
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:40:40 2011 +0000
-
-    Include zfs mount points for disk reports under FreeBSD
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19815 06827809-a52a-0410-b366-d66718629ded
-
-commit e2d771b727e60af1045af2871a8f4a9e0107ccb5
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:34:53 2011 +0000
-
-    Protect against multiple-inclusion
-    [From FreeBSD patches archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19814 06827809-a52a-0410-b366-d66718629ded
-
-commit 65c0f39beca4b23211cd217ade7ca196d4ee9efc
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:34:53 2011 +0000
-
-    Protect against multiple-inclusion
-    [From FreeBSD patches archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19814 06827809-a52a-0410-b366-d66718629ded
-
-commit 90afcdaad908440ad8a00dbf7b71132e3e631e8e
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:34:53 2011 +0000
-
-    Protect against multiple-inclusion
-    [From FreeBSD patches archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19814 06827809-a52a-0410-b366-d66718629ded
-
-commit 349facd5ac5556b9f9eb6b2fbba9c0ed8fda16e2
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:24:31 2011 +0000
-
-    Include <unistd.h>
-    [From BSD patches archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19813 06827809-a52a-0410-b366-d66718629ded
-
-commit 5451067dffa01f991eb2f91bbd5ed5b655989a1c
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:24:31 2011 +0000
-
-    Include <unistd.h>
-    [From BSD patches archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19813 06827809-a52a-0410-b366-d66718629ded
-
-commit a8f492a9fbeb4f13357e7a759107dffcc5e9c491
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:24:31 2011 +0000
-
-    Include <unistd.h>
-    [From BSD patches archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19813 06827809-a52a-0410-b366-d66718629ded
-
-commit 6450a984519b8bc87727ec7cf08ce5b7c10e3c50
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:21:48 2011 +0000
-
-    Avoid callback re-use of closed sessions.
-    (Part of patch #2975254 - see SVN revision 19808)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19812 06827809-a52a-0410-b366-d66718629ded
-
-commit ff477751ddc86c7a8ef5882d38d42e3a8db199b1
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:21:48 2011 +0000
-
-    Avoid callback re-use of closed sessions.
-    (Part of patch #2975254 - see SVN revision 19808)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19812 06827809-a52a-0410-b366-d66718629ded
-
-commit cf61a312638716b097e583be09fa521763e45bee
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 13:21:48 2011 +0000
-
-    Avoid callback re-use of closed sessions.
-    (Part of patch #2975254 - see SVN revision 19808)
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19812 06827809-a52a-0410-b366-d66718629ded
-
-commit 9c5417d15b4cedca95483b44a9dcf1b3812ccb69
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 12:55:31 2011 +0000
-
-    FreeBSD uses a slightly different naming scheme for struct ifreq
-    [From FreeBSD patches archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19811 06827809-a52a-0410-b366-d66718629ded
-
-commit 38b291b096a5d1ddf6d803a4336475d3b7ad9236
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 12:55:31 2011 +0000
-
-    FreeBSD uses a slightly different naming scheme for struct ifreq
-    [From FreeBSD patches archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19811 06827809-a52a-0410-b366-d66718629ded
-
-commit 685a7dd9d5eec998aa7c5ea050c6987af4220f0b
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 12:55:31 2011 +0000
-
-    FreeBSD uses a slightly different naming scheme for struct ifreq
-    [From FreeBSD patches archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19811 06827809-a52a-0410-b366-d66718629ded
-
-commit b0eb15a23d9c87b8a41114e36f84bbaada6a12ce
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 12:22:03 2011 +0000
-
-    Ensure TCP table information is loaded before counting connections
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19810 06827809-a52a-0410-b366-d66718629ded
-
-commit f512f80d7fdd76dd092e70ea8fc1703b019e62c3
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 12:22:03 2011 +0000
-
-    Ensure TCP table information is loaded before counting connections
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19810 06827809-a52a-0410-b366-d66718629ded
-
-commit e5a21937bceb17a610cb638e5f5fbd1bb7b73c42
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Fri Jan 7 12:22:03 2011 +0000
-
-    Ensure TCP table information is loaded before counting connections
-    [From FreeBSD patch archive]
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19810 06827809-a52a-0410-b366-d66718629ded
-
-commit 4f7c52b58c2b79578a077adfdb63e2872a10ee11
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Jan 6 19:35:06 2011 +0000
-
-    Fix documentation bug pointed out in cpan bug #52618
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19809 06827809-a52a-0410-b366-d66718629ded
-
-commit e3a59ae5669b461e0b107e7c2e9fec2410ef73ac
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Jan 6 19:35:06 2011 +0000
-
-    Fix documentation bug pointed out in cpan bug #52618
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19809 06827809-a52a-0410-b366-d66718629ded
-
-commit cfc92ec84506bc1699eded558f035a94005a1bc9
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Thu Jan 6 19:35:06 2011 +0000
-
-    Fix documentation bug pointed out in cpan bug #52618
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19809 06827809-a52a-0410-b366-d66718629ded
-
-commit 70ea9bb61012a75bb6a62a8c95c861c4d7a6d03f
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 6 14:11:22 2011 +0000
-
-    CHANGES: snmpd: PATCHES: 2975254: Avoid callback re-use of closed sessions
-    
-    Qn: Should this also be applied when main session is NULL?
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19808 06827809-a52a-0410-b366-d66718629ded
-
-commit 3c50754319664dda889f6bfb216792dbc3005b76
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 6 14:11:22 2011 +0000
-
-    CHANGES: snmpd: PATCHES: 2975254: Avoid callback re-use of closed sessions
-    
-    Qn: Should this also be applied when main session is NULL?
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19808 06827809-a52a-0410-b366-d66718629ded
-
-commit fbbe2c75868110cbb3aaaef809fdd57322684954
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 6 14:11:22 2011 +0000
-
-    CHANGES: snmpd: PATCHES: 2975254: Avoid callback re-use of closed sessions
-    
-    Qn: Should this also be applied when main session is NULL?
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19808 06827809-a52a-0410-b366-d66718629ded
-
-commit 97b0e915dabbae4e9b878d9a3c0e01761f4ed9b6
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 6 13:21:39 2011 +0000
-
-    Fix misleading indentation
-    
-    Qn: Should this call 'subagent_startup' rather than 'agentx_reopen_session'?
-    Qn: Why doesn't this attempt to re-open the session if it was originally NULL?
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19807 06827809-a52a-0410-b366-d66718629ded
-
-commit b7dcf87fc5e9ed4fc78a3dda0c4f1725573b0438
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 6 13:21:39 2011 +0000
-
-    Fix misleading indentation
-    
-    Qn: Should this call 'subagent_startup' rather than 'agentx_reopen_session'?
-    Qn: Why doesn't this attempt to re-open the session if it was originally NULL?
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19807 06827809-a52a-0410-b366-d66718629ded
-
-commit ecceb51dfaf230c89cdb2cb2d10439e2e0e241a6
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 6 13:21:39 2011 +0000
-
-    Fix misleading indentation
-    
-    Qn: Should this call 'subagent_startup' rather than 'agentx_reopen_session'?
-    Qn: Why doesn't this attempt to re-open the session if it was originally NULL?
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19807 06827809-a52a-0410-b366-d66718629ded
-
-commit e550998c4211daff394a2f772575f9e469d1854a
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 6 12:46:19 2011 +0000
-
-    CHANGES: snmpd: PATCHES: 2941811: Handle successful requests with reqID 0
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19806 06827809-a52a-0410-b366-d66718629ded
-
-commit 86ff535e2766b5f5ab237e7002a7ec0784e9f806
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 6 12:46:19 2011 +0000
-
-    CHANGES: snmpd: PATCHES: 2941811: Handle successful requests with reqID 0
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19806 06827809-a52a-0410-b366-d66718629ded
-
-commit b420e1b69bf2313b6ce75cdee20d6225860a4cb1
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Thu Jan 6 12:46:19 2011 +0000
-
-    CHANGES: snmpd: PATCHES: 2941811: Handle successful requests with reqID 0
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19806 06827809-a52a-0410-b366-d66718629ded
-
-commit 48525a0ef53a85d1f0294205d41c9d9179a007df
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Thu Jan 6 09:38:50 2011 +0000
-
-    Spelling fix: Initialzies -> Initializes.
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19805 06827809-a52a-0410-b366-d66718629ded
-
-commit adda36da776486d072c4dcf9eaa8e57d78384bc2
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jan 5 16:31:50 2011 +0000
-
-    Use the appropriate API call for reporting config errors.
-    ("Don't be so impatient, Dave....")
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19802 06827809-a52a-0410-b366-d66718629ded
-
-commit 6ff8f22fd7b57cf0945d0f15b0433a476a67d9bd
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jan 5 16:31:50 2011 +0000
-
-    Use the appropriate API call for reporting config errors.
-    ("Don't be so impatient, Dave....")
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19802 06827809-a52a-0410-b366-d66718629ded
-
-commit c12ab5edbd8765d633f328ff468fc1e8dcf6e2a0
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jan 5 14:06:52 2011 +0000
-
-    CHANGES: snmplib: BUGS: 3134323: Fix crash when comparing invalid OIDs
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19801 06827809-a52a-0410-b366-d66718629ded
-
-commit c92f28604d13baf2ab0a6b3d7100730d33949f0f
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jan 5 14:06:52 2011 +0000
-
-    CHANGES: snmplib: BUGS: 3134323: Fix crash when comparing invalid OIDs
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19801 06827809-a52a-0410-b366-d66718629ded
-
-commit 9ab15fc6e426e5e08a3374ec3da7be42827bdc52
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jan 5 14:06:52 2011 +0000
-
-    CHANGES: snmplib: BUGS: 3134323: Fix crash when comparing invalid OIDs
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19801 06827809-a52a-0410-b366-d66718629ded
-
-commit 08985b591471b9b47908bfbb7ebc63ad5b74b1e2
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jan 5 14:04:59 2011 +0000
-
-    CHANGES: snmptrapd: BUGS: 3151254: Fix crash with invalid traphandle directive
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19800 06827809-a52a-0410-b366-d66718629ded
-
-commit fbac8b726dbc9a4d0f734c6d5d3b7762f27f2edf
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jan 5 14:04:59 2011 +0000
-
-    CHANGES: snmptrapd: BUGS: 3151254: Fix crash with invalid traphandle directive
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19800 06827809-a52a-0410-b366-d66718629ded
-
-commit 2ef02ec033b92a000e801cc39702983df87ef412
-Author: Dave Shield <dts12@users.sourceforge.net>
-Date:   Wed Jan 5 14:04:59 2011 +0000
-
-    CHANGES: snmptrapd: BUGS: 3151254: Fix crash with invalid traphandle directive
-    
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19800 06827809-a52a-0410-b366-d66718629ded
-
-commit 1b8628a2f5a006e6f32b120d2334788df5801038
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Jan 4 18:24:55 2011 +0000
-
-    Copyright update for 2011
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-2-patches@19795 06827809-a52a-0410-b366-d66718629ded
-
-commit bc9bf08395f987d1d39d1651a2586ee067227089
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Jan 4 18:24:55 2011 +0000
-
-    Copyright update for 2011
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19795 06827809-a52a-0410-b366-d66718629ded
-
-commit 574502a3c71f5f9760c20e42c38d3e96716aa7ea
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Jan 4 18:24:55 2011 +0000
-
-    Copyright update for 2011
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19795 06827809-a52a-0410-b366-d66718629ded
-
-commit a7e6757dd9218ddc0fb4591eb4999998e9b0afcc
-Author: Wes Hardaker <hardaker@users.sourceforge.net>
-Date:   Tue Jan 4 18:24:55 2011 +0000
-
-    Copyright update for 2011
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19795 06827809-a52a-0410-b366-d66718629ded
-
-commit dffd621ab05ee2ad4f189255aefd42bf2cb5eb70
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue Jan 4 12:19:13 2011 +0000
-
-    Fix compiler warnings triggered by the Win32 MIB-II implementation (backported r19790 from the trunk).
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19793 06827809-a52a-0410-b366-d66718629ded
-
-commit c4ec540f63c5e184d947b6eba51148257c416796
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue Jan 4 12:17:51 2011 +0000
-
-    Removed two unused variables from the sctp-mib implementation (backported r19780 from the trunk).
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19792 06827809-a52a-0410-b366-d66718629ded
-
-commit e286996a581242befdf0fcfe37d9e503538d204e
-Author: Bart Van Assche <bvassche@users.sourceforge.net>
-Date:   Tue Jan 4 12:15:27 2011 +0000
-
-    Fixed a recently introduced mismatch between format specification and argument list in the ip-mib implementation (backported r19779 from the trunk).
-    
-    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19791 06827809-a52a-0410-b366-d66718629ded
+    CHANGES: snmpd: Avoid that snmpd crashes if started on a system with another OpenSSL library version than the one it has been built with.
 
 ----------------------------------------------------------------------
 
-Changes: V5.6 -> V5.6.1
+Changes: V5.7.rc3 -> V5.7.1
 
-2011-01-03 22:28  hardaker
+2011-09-27  Wes Hardaker <hardaker@users.sourceforge.net>
 
-   * NEWS:
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.1
 
-   NEWS update
 
-2011-01-03 22:26  hardaker
+2011-09-22  Wes Hardaker <hardaker@users.sourceforge.net>
 
-   * configure, configure.d/config_project_with_enable:
+   * ChangeLog: version update for 5.7.1.rc3
 
-   CHANGES: Upgraded DTLS support from alpha to full; mention that
-   tsm is needed for TLS too
+----------------------------------------------------------------------
 
-2011-01-03 22:24  hardaker
+Changes: V5.7.rc2 -> V5.7.1.rc3
 
-   *  FAQ, README, configure, configure.ac, dist/Makefile,   
-      dist/net-snmp.spec:
+2011-09-22  Wes Hardaker <hardaker@users.sourceforge.net>
 
-   Version number update
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.1.rc3
 
-2010-12-29 01:41  hardaker
+
+2011-09-22  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit 07f61a02a2409096e5c962cd211126396ad09d2b Merge: ee0d3ad
+
+ bda324b Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Thu
+ Sep 22 10:39:59 2011 +0100
+
+2011-09-22  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit c55f608f16f160f5e79dc057f8878def462973e1 Author: Dave
+
+ Shield <D.T.Shield@liverpool.ac.uk> Date:   Thu Sep 22 10:35:24 2011
+ +0100
+
+2011-09-22  Steve Friedl <steve@unixwiz.net>
+
+   * agent/mibgroup/ucd-snmp/disk_hw.c: CHANGES: snmpd: 3409692:
+
+ Calculate disk percentage usage via floating-point arithmetic to
+ avoid integer arithmetic errors.  (Code based on patch, rather than
+ applied verbatim)
+
+2011-09-22  Steve Friedl <steve@unixwiz.net>
+
+   * agent/mibgroup/ucd-snmp/disk_hw.c: CHANGES: snmpd: 3409692:
+
+ Calculate disk percentage usage via floating-point arithmetic to
+ avoid integer overflow errors.  (Code based on the submitted patch,
+ rather than applied verbatim)
+
+2011-09-22  Bart Van Assche <bvanassche@acm.org>
+
+   * ChangeLog: The only change between V5.7.rc1 and V5.7.1.rc2 is the
+
+ version number. Make this clear in the ChangeLog file.
+
+2011-09-21  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: changelog update
+
+----------------------------------------------------------------------
+
+Changes: V5.7.rc1 -> V5.7.1.rc2
+
+2011-09-21  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.1.rc2
+
+
+2011-09-04  Magnus Fromreide <magfr@lysator.liu.se>
+
+   * : commit 4d6defdae72c35b1080076180313d2910568475b Merge: d3a758c
+
+ 3b7fdc4 Author: Magnus Fromreide <magfr@lysator.liu.se> Date:   Sun
+ Sep 4 14:46:02 2011 +0200
+
+2011-09-04  Magnus Fromreide <magfr@lysator.liu.se>
+
+   * : commit bbe2c19a01ecec024f741e2e54701ae6212f4c3e Author: Magnus
+
+ Fromreide <magfr@lysator.liu.se> Date:   Sun Sep 4 14:44:38 2011
+ +0200
+
+2011-09-04  Magnus Fromreide <magfr@lysator.liu.se>
+
+   * : commit d3a758cf30254b80706a43f191c15238b2cb73c9 Merge: c107ce0
+
+ 227dbd7 Author: Magnus Fromreide <magfr@lysator.liu.se> Date:   Sun
+ Sep 4 14:08:35 2011 +0200
+
+2011-09-04  Magnus Fromreide <magfr@lysator.liu.se>
+
+   * : commit 9efa467a972bb6e1c7fbdaf2e27429d29f4ab89e Author: Magnus
+
+ Fromreide <magfr@lysator.liu.se> Date:   Sun Sep 4 14:00:12 2011
+ +0200
+
+----------------------------------------------------------------------
+
+Changes: V5.7.pre2 -> V5.7.1.rc1
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend for 5.7.1.rc1
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/read_config.c: fix C++ comment
+
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.1.rc1
+
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c107ce078409d265b9b218d49f3815b795db1dc3 Merge: ea4b3b2
+
+ 915aa8d Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 30 19:07:07 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 422b082a9593ca9c65aac449e6d128a9e97e94fb Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Aug 30
+ 19:06:56 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ea4b3b23f350583e5626328b5367e6c617255f95 Merge: bcf38b8
+
+ b34d5dc Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 30 16:38:25 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 71c0d7650493710631fa08d5dc4dad501a9aa771 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Aug 30
+ 16:37:41 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b13f4d8886b6a4e73bc07df2b90d1a6115cf3dfc Merge: f7e21f2
+
+ 64e9778 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 30 11:09:30 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b5d2a43f97a59858c944eba2290b59b93c230a6a Merge: 86efee2
+
+ cf4cf7f Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 30 11:09:29 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-6-patches' into
+
+ V5-6-patches
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: auto-determine patch arguments if
+
+ possible for nspatchtry
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: make it so the git commit line can
+
+ be cut/paste without linebreaks
+
+2011-08-30  Ronald Wahl <rwa-co@users.sourceforge.net>
+
+   * snmplib/read_config.c: CHANGES: libnetsnmp: PATCH 3394586: from
+
+ rwa-co: file descriptor leak in read_config (+fix) Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: describe that nsrollup needs to be run now.
+
+
+2011-08-30  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit 2b92a0a1e3a0618c515ebd902271b95c08931afa Merge: a086347
+
+ 86efee2 Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Tue
+ Aug 30 11:28:14 2011 +0100
+
+2011-08-30  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * agent/mibgroup/hardware/fsys/fsys_mntent.c: Apparently IRIX has a
+
+ different API for statfs
+
+2011-08-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_tdata.c: don't provide a feature when your a
+
+ child of another feature
+
+2011-08-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-7-patches' into
+
+ V5-7-patches
+
+2011-08-28  Magnus Fromreide <magfr@lysator.liu.se>
+
+   * apps/Makefile.in: Use the feature target instead of the target
+
+ when building the feature set
+
+2011-08-29  Thomas Anders <tanders@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/fsys.h: the irix6 build only defines
+
+ irix6, not irix
+
+2011-08-29  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, configure.d/config_os_struct_members, 
+      include/net-snmp/net-snmp-config.h.in: re-add sockaddr_un.sun_path
+
+ configure check (lost in previous commit)
+
+2011-08-28  Thomas Anders <tanders@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/fsys.h: 
+
+ agent/mibgroup/hardware/fsys/fsys_mntent.c doesn't build on IRIX yet
+
+2011-08-28  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit a0863479d80962c652947dfdee11bdd136c0e013 Merge: 5250893
+
+ f95aa31 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Sun Aug 28 23:37:27 2011 +0200
+
+2011-08-28  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, configure.d/config_os_struct_members, 
+      include/net-snmp/net-snmp-config.h.in, snmplib/snmpUDPDomain.c, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: building: build fix
+
+ for systems lacking fields msg_control/msg_flags in struct msghdr
+ (backport)
+
+2011-08-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interface.m2c: added required features for
+
+ mfd handling
+
+2011-08-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * .gitignore: added .ft and .ft.1 for feature files
+
+
+2011-08-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * perl/agent/agent.xs: no_write_support supported
+
+
+2011-08-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interface.m2c: handle no-write-support with
+
+ ifdefs
+
+2011-08-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 525089327aba7d01d633c634c6b6f06de42acbb8 Merge: 1bb234a
+
+ 04fd71a Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 25 06:57:21 2011 -0700
+
+2011-08-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ea8bed79e81c42e33cbf37ca6f3c03c549987b22 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Thu Aug 25
+ 06:56:22 2011 -0700
+
+2011-08-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * python/netsnmp/client.py: use >> to print to stderr
+
+
+2011-08-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * local/minimalist/feature-remove: CHANGES: build: Do not generate
+
+ an output file on failure make supposes that no output is generated if the command failed.
+ Change feature-remove to follow that presumption.
+
+2011-08-21  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * local/minimalist/feature-remove: Correct typo
+
+
+2011-08-23  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 1bb234a6cc36e6a4efbe3fb29c480210dc2b9c13 Merge: 35a98c3
+
+ 1f082a3 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Tue Aug 23 23:38:07 2011 +0200
+
+2011-08-23  Thomas Anders <tanders@users.sourceforge.net>
+
+   * configure, configure.d/config_os_struct_members: make sure that
+
+ _KERNEL is defined to 1 so that "#if _KERNEL" works on systems that
+ need it (e.g. IRIX)
+
+2011-08-23  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 35a98c3d7c5a3c5df356add9e8b808287899b69a Merge: 1f37f57
+
+ a27f744 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Tue Aug 23 23:30:27 2011 +0200
+
+2011-08-23  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 26bb2470c106f834442a2adbc7611bf16657fbdf Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Tue Aug 23 23:22:44
+ 2011 +0200
+
+2011-08-22  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : autoreconf
+
+
+2011-08-22  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure.d/config_os_struct_members, 
+      snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: building: build fix
+
+ for systems lacking field msg_flags in struct msghdr (e.g. IRIX)
+
+2011-08-21  Thomas Anders <tanders@users.sourceforge.net>
+
+   * configure: autoreconf
+
+
+2011-08-21  Thomas Anders <tanders@users.sourceforge.net>
+
+   * configure: autoreconf
+
+
+2011-08-21  Thomas Anders <tanders@users.sourceforge.net>
+
+   * configure: autoreconf
+
+
+2011-08-21  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit b62cb0864f577ba85573d0d250d12a39387c07b4 Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Aug 21 00:55:33
+ 2011 +0200
+
+2011-08-21  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 71b90b6f217944b4ffc1836e5160d40e33b4423d Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Aug 21 00:40:28
+ 2011 +0200
+
+----------------------------------------------------------------------
+
+Changes: V5.7.pre1 -> V5.7.1.pre2
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend for 5.7.1.pre2
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.1.pre2
+
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 03053479604bc83efbea579b4562b1831cea1cb6 Merge: f73e636
+
+ d94df39 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 18 11:57:46 2011 -0700
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 28b54070514753e8d8abb718b224d657ab7a8ab8 Author: Garrett
+
+ Cooper <yaberauneya@users.sourceforge.net> Date:   Thu Aug 18
+ 11:49:56 2011 -0700
+
+2011-08-18  Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk_hw.c: CHANGES: agent: PATCH 3389228:
+
+ from wulf2001: incomplete commit (patch 3386633: fix integer
+ overflow) Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * man/snmp.conf.5.def: Patch from Claus Klein on -coders for fixing
+
+ man page typos
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: changed clientaddr so it registers as pre-mib
+
+ to be picked up before the transports get created
+
+2011-08-17  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c02131e5b35d296755baec99bd363205a86307dd Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Aug 17
+ 09:34:00 2011 -0700
+
+2011-08-17  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/system.c: Fix the log message that reports that
+
+ gethostbyaddr() is missing
+
+2011-08-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 182e1dc0c3eacfa4e9ccdb28600ff0f2370211ae Merge: 499b796
+
+ 517b6b0 Author: Bart Van Assche <bvanassche@acm.org> Date:   Wed Aug
+ 17 18:09:30 2011 +0200
+
+2011-08-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 6580556cc7bd833af731b62ce1ed2017564fe7eb Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Wed Aug 17 18:08:01 2011 +0200
+
+2011-08-14  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 499b796cbd78065c3354779136bd3d9d1f548a58 Merge: 0418ff0
+
+ a9cb267 Author: Bart Van Assche <bvanassche@acm.org> Date:   Sun Aug
+ 14 08:02:38 2011 +0200
+
+2011-08-14  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 3cb3f1ede388d84e392e1d815d5994a4bf0f10f9 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Sun Aug 14 07:59:25 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * perl/OID/OID.xs, perl/SNMP/SNMP.xs, perl/agent/agent.xs: Windows:
+
+ Make the Perl agent module work again with the original SNMP_FREE()
+ definition.
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0418ff0cda21411a47fa8978c3e0d043a19d24b6 Merge: 26b0aa3
+
+ 3c73b48 Author: Bart Van Assche <bvanassche@acm.org> Date:   Sat Aug
+ 13 18:42:05 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/tools.h: Revert the two most recent
+
+ SNMP_FREE() changes (commits
+ 47c8ef1b89c6ccb4247d9633477925908c68c1a5 and
+ 7f42d0d93320484152271427cc9808cbda49bbd0).
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 26b0aa3010fa182b6039a8c2cad8ccb4571652de Merge: 2f3d607
+
+ 0c8e1a9 Author: Bart Van Assche <bvanassche@acm.org> Date:   Sat Aug
+ 13 11:43:20 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 3e50c3e00e9f321fb708bc579eb4dc1a0f1e7c4d Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Sat Aug 13 11:31:40 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 2f3d6079dc36aad9559d91c5c324e2ce535573dd Merge: e32aa97
+
+ ff1734d Author: Bart Van Assche <bvanassche@acm.org> Date:   Sat Aug
+ 13 09:08:06 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit e147e4b96755207de1ce30990d67b4b7c76dd483 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Sat Aug 13 08:39:14 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * win32/build.pl: CHANGES: Windows: building (build.bat): Install
+
+ netsnmp.dll before running the Perl regression tests such that the
+ regression tests are run with the correct version of netsnmp.dll.
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * win32/Makefile.in: CHANGES: Windows: perl (build.bat): When
+
+ installing development files, install the PDB files too.
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   *  perl/SNMP/t/async.t, perl/SNMP/t/conf.t, perl/SNMP/t/mib.t, 
+      perl/agent/test.pl: CHANGES: testing: Fix Perl regression test
+
+ failures All Perl regression tests pass now on Linux and on Windows (MSVC).
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * perl/SNMP/t/async.t, perl/SNMP/t/bulkwalk.t: CHANGES: testing:
+
+ Perl regression tests: Don't fail skipped tests.
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * perl/SNMP/SNMP.pm, perl/SNMP/SNMP.xs: CHANGES: perl: Add
+
+ SNMP::getenv() and SNMP::setenv().
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c: CHANGES:
+
+ snmplib: Add netsnmp_setenv().
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * local/pass_persisttest: local/pass_persisttest: document how to
+
+ use on Windows
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * local/pass_persisttest: Set execute flag on local/pass_persisttest
+
+ such that the instructions in that file work
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Fix a suppression pattern
+
+
+2011-08-12  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit e32aa97742232ced3a72f8b845ace5ce3d53b8df Merge: 4adfec8
+
+ 86fbd33 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Fri Aug 12 09:11:14 2011 -0700
+
+2011-08-12  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit a73eb40ec263a0fdf53a74e720ddf41c4a7ee3d4 Merge: 7690894
+
+ 2940ee3 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Fri Aug 12 09:11:13 2011 -0700
+
+2011-08-12  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 1f0a928a2913cfa7f5ceaaf4696c69fbdc687621 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Fri Aug 12
+ 09:09:11 2011 -0700
+
+2011-08-11  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 4adfec81216f6c5bf25c9ac6b2b7478d1be8e842 Merge: 281b869
+
+ 2940ee3 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 11 18:57:29 2011 +0200
+
+2011-08-11  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 1e1000a8815921b5ec2e7997b53592a544b3dfc2 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Aug 11 15:46:32 2011 +0200
+
+2011-08-11  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 281b86961b10266ddf3883942d4dc3b6b98d3227 Merge: d8d225c
+
+ f181099 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 11 18:46:06 2011 +0200
+
+2011-08-11  Bart Van Assche <bvanassche@acm.org>
+
+   * : Merge V5-4-patches.
+
+
+2011-08-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swrun.c: don't assert on a double
+
+ init; just don't do it twice
+
+2011-08-10  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit d8d225ca34a8f22752153acb7944f9435f564d2c Merge: 06b4186
+
+ 47c8ef1 Author: Bart Van Assche <bvanassche@acm.org> Date:   Wed Aug
+ 10 18:05:21 2011 +0200
+
+2011-08-10  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/tools.h: SNMP_FREE(): cast argument to
+
+ (void *) before passing it to netsnmp_free()
+
+2011-08-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 06b41865ec302c3931b1083d3fde89f9345ec06f Merge: 11426fb
+
+ a4f6ac7 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 9 06:44:41 2011 -0700
+
+2011-08-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 11426fb3c6f327820b9bb86a76ecc9e2c37e7934 Merge: 0344df9
+
+ 9bf0681 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 9 06:44:11 2011 -0700
+
+2011-08-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-09  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 9bf0681218edf43cdb5fc68f172123bc4a2d0188 Merge: f9db611
+
+ ccb0eb6 Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Aug
+ 9 08:19:33 2011 +0200
+
+2011-08-09  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit de7e348ece03d2380c2a8806ebbad5d9b5487682 Merge: d538bcb
+
+ ccb0eb6 Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Aug
+ 9 08:07:22 2011 +0200
+
+2011-08-09  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0220392d899a9cab701f74af12030bb1d4cc5e2e Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 1 13:02:15 2011 +0200
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * CHANGES, NEWS: version update for 5.7.1.pre1
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update for 5.7.1.pre1
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/snmpd.c: fix C++ comments
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/snmpd.c: fix C++ comments
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/snmpd.c: fix C++ comments
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/snmpd.c: fix C++ comments
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec, perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm,
+       perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+      perl/TrapReceiver/TrapReceiver.pm, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm: Version number update:
+
+ 5.7.1.pre1
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.top: version update for 5.7.1.pre1
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit cf4cce4c189cf47f4c489db43b7fa510f8906a1a Merge: df91a9f
+
+ 93e97dc Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon
+ Aug 8 22:15:28 2011 +0100
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : Merge remote-tracking branch 'origin/V5-6-patches' into
+
+ V5-6-patches
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   *  win32/Makefile-apps.in, win32/dist/README.build.win32.txt, 
+      win32/libagent/Makefile.in, win32/libnetsnmptrapd/Makefile.in, 
+      win32/libsnmp/Makefile.in, win32/libsnmp_dll/Makefile.in, 
+      win32/netsnmpmibs/Makefile.in, win32/snmpd/Makefile.in, 
+      win32/snmpnetstat/Makefile.in, win32/snmptrapd/Makefile.in: Define
+
+ _BIND_TO_CURRENT_VCLIBS_VERSION token (as per Alex' build
+ instructions)
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   *  win32/Makefile-apps.in, win32/libagent/Makefile.in, 
+      win32/libhelpers/Makefile.in, win32/libnetsnmptrapd/Makefile.in, 
+      win32/libsnmp/Makefile.in, win32/libsnmp_dll/Makefile.in, 
+      win32/netsnmpmibs/Makefile.in, win32/snmpd/Makefile.in, 
+      win32/snmpnetstat/Makefile.in, win32/snmptrapd/Makefile.in: Define
+
+ _BIND_TO_CURRENT_VCLIBS_VERSION token (as per Alex' build
+ instructions)
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit df16dc2221e993dd3c66650d5e872577ffe6c01b Merge: 714bc82
+
+ 8e5a28d Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 13:56:43 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ffa05b051ac3e2b197195a9989cc7a91fe8d9282 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Mon Aug 8 13:55:38
+ 2011 -0700
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit 714bc82fa01e21a3655824963fa54e9b8042ffb0 Merge: 6fe8fe5
+
+ 3ef1db5 Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon
+ Aug 8 21:21:46 2011 +0100
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit b451607dca015c111e96fdfeb2ddb0661fb4f724 Author: Dave
+
+ Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon Aug 8 21:20:32 2011
+ +0100
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 6fe8fe5294a45bc7e4ea3751a1ad7aa47b5cabb2 Merge: 364f8ff
+
+ f69abe3 Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 22:02:38 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit c94813044a4c4a608e98e80223075c6faf04ee11 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 21:56:15 2011 +0200
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 364f8ffaeb90b4eb0165fc855688cd0626632794 Merge: 3287295
+
+ 7abb926 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 11:24:26 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-6-patches' into
+
+ V5-6-patches
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: display the branch we'll commit to
+
+
+2011-08-08  Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk_hw.c: CHANGES: snmpd: PATCH 3386633:
+
+ from wulf2001: fix integer overflow in disk percent calculations Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 84a775d0557fea97570e41715a3164970b4c03a2 Merge: 6fff1c1
+
+ d373c4f Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 20:12:32 2011 +0200
+
+2011-08-08  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * agent/agent_trap.c: CHANGES: libnetsnmp: PATCH 3387139: from
+
+ yaberauneya: Avoid segfault if trapsess transport element cant be
+ parsed Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: nssfpatchapply: split the
+
+ displayed git commit command into multiple segments
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/helpers/scalar_group.c: CHANGES: snmplib: PATCH: 3386961:
+
+ Make SNMP GET work in an AgentX subagent if write support is
+ disabled via NETSNMP_NO_WRITE_SUPPORT (Mark Rusk).
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/mib.c: CHANGES: snmplib: Fix a crash that could be
+
+ triggered by calling _mibindex_add() with the second argument not
+ equal to -1.
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 6fff1c1ae51b06c9d80faf15373a963d173f14e8 Merge: 837c52e
+
+ 8cc9004 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:58:59 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 8ca7ff1e692caec4186b788c9ae2d27be213290f Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Mon Aug 8 10:33:56
+ 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b8f529cba27c0114b4cb7340cfd449504fa07506 Merge: 0822f2d
+
+ 556e938 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:05:36 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: fix function name typo
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 29882a078a959a0f78b03e01968f1d17b7f6a299 Merge: 5e9bd2f
+
+ 0409c0a Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:03:34 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge of pull/push
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: make nspull/nspush check for a
+
+ clean repo
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: new function "nsmakeall" to test
+
+ building on every branch
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: default to merge
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-7-patches' into
+
+ V5-7-patches
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/tools.h: CHANGES: Windows: Avoid that if
+
+ the Net-SNMP Perl modules have been built with another version of
+ Microsoft Visual Studio than ActivePerl that using one of these Perl
+ modules triggers a "Free to wrong pool" crash. This regression was
+ caused by commit 3b14c59cf8278d410207ff42debda2636426a468 (the
+ netsnmp_free() into SNMP_FREE() changes in the *.xs files).
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit e109539930703cb3052d5241b18ac6fc062faaca Merge: 0c9b6cb
+
+ e46b170 Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 18:34:11 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/mib.c: CHANGES: snmplib: Fix a crash that could be
+
+ triggered by calling _mibindex_add() with the second argument not
+ equal to -1.
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7f42d0d93320484152271427cc9808cbda49bbd0 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 09:50:51 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0c9b6cbe9dbe2ec5217a95b6781fd7dc1f6ebda7 Merge: fa6cef5
+
+ 963320f Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 18:14:36 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a3b8654a232c563bc97cc9925cd98590a30c5bc5 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 17:24:18 2011 +0200
+
+2011-08-07  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit fa6cef5ca91df3a0b03455b68559d2bee248101c Merge: f5fe536
+
+ 8add0da Author: Bart Van Assche <bvanassche@acm.org> Date:   Sun Aug
+ 7 10:18:54 2011 +0200
+
+2011-08-07  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a0dd3caf25926e43465718bf417a464c2fb36366 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Sun Aug 7 10:17:01 2011 +0200
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: 32 is too limited for
+
+ bigger tables; increase the max msg count to 128
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: make rollup and sync support
+
+ --rebase and change the default back to merge
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Win32: Documented how to use build.bat with
+
+ OpenSSL enabled
+
+2011-07-15  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Windows: Remove outdated instructions about
+
+ editing win32\libsnmp_dll\libsnmp.def from README.win32
+
+2011-07-15  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Win32: Document how to build 64-bit
+
+ executables for the x64/amd64 architecture
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit f5fe536e8fd6c48fe243decd31fac9cf1c92f4cc Merge: 7850ea1
+
+ 80928a8 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 15:13:27 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 80928a8909cfab37f01b39a071a3e8ad85956222 Merge: f16a094
+
+ 0dbc869 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 13:57:30 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0dbc869fec07d8e90dbd1c95493ee7cbc623c95c Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 12:40:31 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add
+
+ perl/agent/default_store/default_store.def and perl/SNMP/t
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 86c1e2b9679fec2cd799ba76005c3d60e9d47634 Merge: bcd8635
+
+ f16a094 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 12:20:50 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 2f8d4f5796cbc1c7e967acdaa8019b24f1520a36 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 12:02:51 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/parse.c: Unbreak the V5-4-patches - revert commit
+
+ d2c4768bd2efb48664434a831425c2dda85d7133 (CHANGES: libnetsnmp: PATCH
+ 3362233: from yaberauneya: Mute unnecessary cannot find module
+ noise).
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/mibII/snmp_mib.c, agent/mibgroup/mibII/snmp_mib.h: 
+
+ Unbreak the V5-4-patches branch - was broken by commit
+ bf7178b0b22587d43d1a80c269cd216bd5930214 (agent: change type of
+ snmp_enableauthentraps to long)
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/snmpusm.h: Unbreak the V5-4-patches
+
+ branch - was broken by commit
+ 0e6842fe080cec853b08cd2323015ababc381ce1 (CHANGES: snmptrapd: PATCH
+ 3383441: from sachinsurendran: Fix crash on 5.4.4 due to access of
+ freed memory).
+
+2011-08-05  Thomas Anders <tanders@users.sourceforge.net>
+
+   * NEWS: minor NEWS polish
+
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit bcd86350713822963d376eff582a92f43e426d6c Merge: 9c810a3
+
+ 7a20f71 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 10:28:55 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 3aa949fbdfc1a94a8340ad8baf8b314756a0bb9d Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 10:26:15 2011 +0200
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 9c810a3b37b68573c40337e246e2faf299b77d31 Merge: 71cb2e8
+
+ 610d63f Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 10:42:08 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 943930e1e124385fd94738b6dcda37d29dc7ac7f Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Thu Aug 4 10:41:41
+ 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 4edcb88dae8b2e59dc683e80d414fa7ecec36885 Merge: 65f3eef
+
+ 2dd9ed0 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 10:24:11 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-5-patches' into
+
+ V5-5-patches
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit bc5ca03a04ab19c634a34d060b0b16b7484cb520 Merge: 88fddb7
+
+ 90c0e75 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 19:13:07 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmp_client.c, snmplib/snmpusm.c: snmpusm: Fix recently
+
+ introduced compiler warnings
+
+2011-08-04  Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/memory/memory_netbsd.c: CHANGES: openbsd:
+
+ PATCH 3357932: from t0jw2fu0kmg: Cleaning in memory_netbsd.c Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/fsys/fsys_getfsstats.c: CHANGES: agent:
+
+ PATCH 3386147: from wulf2001: fix UCD-SNMP-MIB::dskUsed Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 473d7e5cd4d411bba20eb85359d8728063301cbd Merge: a4e8b62
+
+ 88fddb7 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:28:22 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 2101bb2d7ad6db038c755aa9193c8ace0dbd4f58 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Thu Aug 4 09:28:06
+ 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * .gitignore: ignore *.orig and *.rej
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: help output describes rebase vs
+
+ merge better
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit f126a17c6a3063455a511940b023047abd9b48ee Merge: ad765f4
+
+ 77a4784 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:25:16 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 452e1707f209ec45e7c7f2a3040ef595fb9d1af6 Merge: dc755a6
+
+ b372e5a Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:25:03 2011 -0700
+
+2011-08-04  Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
+
+   *  Makefile.in, acconfig.h, agent/mibgroup/hardware/cpu.h, 
+      agent/mibgroup/hardware/memory.h, 
+      agent/mibgroup/if-mib/data_access/interface.h, 
+      include/net-snmp/net-snmp-config.h.in, 
+      include/net-snmp/system/openbsd.h, 
+      include/net-snmp/system/openbsd4.h, 
+      include/net-snmp/system/openbsd5.h: CHANGES: openbsd: PATCH
+      3357927:
+
+ from t0jw2fu0kmg: Recognise openbsd5 Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: fix where arguments are set
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: split nssfpatchapply into two
+
+ parts: apply and commiting
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: patch using -N
+
+
+2011-08-04  David Arnold <dja@users.sourceforge.net>
+
+   *  man/default_store.3.bot, man/encode_keychange.1.def, 
+      man/fixproc.1.def, man/mib2c.conf.5.in, man/net-snmp-config.1.def,
+       man/netsnmp_agent_api.3.def, man/netsnmp_mib_api.3.def, 
+      man/snmp.conf.5.def, man/snmpbulkget.1.def,
+      man/snmpbulkwalk.1.def,  man/snmpcmd.1.def, man/snmpconf.1.def,
+      man/snmpd.8.def,  man/snmpd.conf.5.def, man/snmpd.examples.5.def, 
+      man/snmpdelta.1.def, man/snmpdf.1.def, man/snmpget.1.def, 
+      man/snmpgetnext.1.def, man/snmpnetstat.1.def, man/snmpset.1.def, 
+      man/snmpstatus.1.def, man/snmptable.1.def, man/snmptest.1.def, 
+      man/snmptranslate.1.def, man/snmptrap.1.def, man/snmptrapd.8.def, 
+      man/snmptrapd.conf.5.def, man/snmpusm.1.def, man/snmpvacm.1.def, 
+      man/snmpwalk.1.def: CHANGES: man: PATCH 3312861: from dja: Man
+      pages
+
+ hyphen-vs-minus cleanup Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Detect (and reject) OpenSSL
+
+ 1.0.0
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Command-line options for silent
+
+ install
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Ensure Windows package
+
+ uninstalls completely.
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 81c63fb5c5e4abb9c29aca89bf9d694410086e97 Merge: 4a6920a
+
+ dc755a6 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 08:33:34 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_client.c: added spacing to match the later branches
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_client.c: removed accidentially duplicated code
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * Makefile.in: CHANGES: freebsd: PATCH 3363328: from yaberauneya:
+
+ Add FreeBSD 9.x to supported OSes list Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * Makefile.in: CHANGES: freebsd: PATCH 3363328: from yaberauneya:
+
+ Add FreeBSD 9.x to supported OSes list Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/memory/memory_freebsd.c, 
+      agent/mibgroup/mibII/ipAddr.c, snmplib/keytools.c,
+      snmplib/scapi.c:
+
+ CHANGES: building: PATCH 3383951: from yaberauneya: Fix -Wunused
+ compile warnings with FreeBSD/NetBSD Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/memory/memory_freebsd.c, 
+      agent/mibgroup/mibII/ipAddr.c, snmplib/keytools.c,
+      snmplib/scapi.c:
+
+ CHANGES: building: PATCH 3383951: from yaberauneya: Fix -Wunused
+ compile warnings with FreeBSD/NetBSD Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit e878abbdb1808ef83e0a8074536fb54e13219a8b Merge: 403de42
+
+ 878fbf4 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:55:00 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 250afa06892fd897ac31e3836a7ffc9e2b4cf7b9 Merge: 2c14c1c
+
+ 3afc5e0 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:51:33 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 578cd7cce351ae8d904ec3d80be9ba6d1d48a712 Merge: 25988be
+
+ f3bc551 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:50:56 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : autoconf
+
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * configure.d/config_os_struct_members: CHANGES: building: PATCH
+
+ 3383949: from yaberauneya: Fix autoconf tests for sys/mbuf.h Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: prompt for patch and an area, and
+
+ use the proper CHANGES line format
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: Use fetch --all and rebase as
+
+ suggested by Bart for speed improvements
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit d6a1a89e6f648951a9b831932d3cc230821f2d37 Merge: dcb712f
+
+ 872e013 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 12:06:18 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 44969b4e57c27194e5bd357bc45275feb8695d22 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 8 20:52:25 2011 +0200
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/winExtDLL.c: CHANGES: Win32: winExtDLL: Invoke
+
+ SnmpUtilOidFree() before SnmpUtilOidCpy(). It's not clear yet why
+ the original code did not make snmpwalk trigger a memory leak.
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit dcb712ffc86b33583000ef4ae9a51ced25cd15bf Merge: e85cfa5
+
+ 98623ef Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 11:36:17 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 8a01ec6423d400c4a13ccac68a3791d0218a0885 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Aug 4 11:19:17 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit e85cfa599b23b76d97913c96b5d703bff6ba4944 Merge: b056ee6
+
+ e21eef2 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 08:44:43 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/host/data_access/swinst_pkginfo.c: CHANGES: agent:
+
+ Avoid that a MIB walk on the host resources MIB triggers a crash on
+ Fedora 15
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit b056ee6eb53909ad04f16ec26d2690d7a083192a Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Aug 4 07:59:04 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/agent_trap.c, agent/helpers/table_array.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/protocol.c, 
+      agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_acc
+       ess.c, agent/mibgroup/host/data_access/swinst_pkginfo.c, 
+      agent/mibgroup/host/data_access/swrun_procfs_status.c, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c, 
+      agent/mibgroup/mibII/kernel_linux.c, 
+      agent/mibgroup/rmon-mib/data_access/etherstats_linux.c, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access
+       .c, agent/mibgroup/smux/smux.c, agent/mibgroup/snmpv3/usmUser.c, 
+      agent/mibgroup/ucd-snmp/versioninfo.c, agent/snmp_agent.c, 
+      apps/snmpbulkget.c, apps/snmptls.c, apps/snmptrapd_log.c, 
+      perl/SNMP/SNMP.xs, snmplib/container_iterator.c, 
+      snmplib/dir_utils.c, snmplib/snmp_api.c, snmplib/snmp_client.c, 
+      snmplib/snmp_enum.c, snmplib/snmp_openssl.c, snmplib/snmpusm.c, 
+      snmplib/transports/snmpTLSTCPDomain.c: CHANGES: snmplib, snmpd:
+
+ perl: Eliminate dead variables
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ae8e3ecd2df4cf37625944aded1dfe4735d44eea Merge: 73187ce
+
+ 9335e19 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Wed Aug 3 14:37:36 2011 -0700
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 794f9a69d7eb642268200b0a4b199151def66ed0 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Aug 3 14:36:25
+ 2011 -0700
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib.h: Reenable IP-MIB::ipDefaultRouterTable
+      Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib.h: Reenable IP-MIB::ipDefaultRouterTable
+      Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-07-18  Ilya Yanok <yanok@emcraft.com>
+
+   * agent/agent_trap.c, agent/mibgroup/mibII/snmp_mib.c: agent: change
+
+ type of snmp_enableauthentraps to long Type of snmp_enableauthentraps variable is changed from int to long.
+ This fixes the bug with writing to snmpEnableAuthenTraps if server
+ is compiled for 64bit (snmpset reports wrong length). This bug was
+ introduced a long time ago (by faeecd0 commit).  Actually this is a 'less effort' type of fix but I wonder why we
+ need a long to store an INTEGER in the first place? Signed-off-by: Ilya Yanok <yanok@emcraft.com> Signed-off-by: Wes
+ Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 6ad7e28ff9e5e4ebc1358ee39cc9796a44a1bee7 Merge: f2832e3
+
+ 1e154ce Author: Bart Van Assche <bvanassche@acm.org> Date:   Wed Aug
+ 3 19:15:24 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 61b178f1ee8952aa03aa3b1ba51f4a6655e47f01 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Wed Aug 3 18:09:47 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/types.h: Whitespace-only change: fix indentation
+
+ of an #include directive
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * perl/NetSNMP.xs: CHANGES: Perl: Remove file perl/NetSNMP.xs
+
+ because it breaks the Windows build.  To Wes: if you can tell me how to reproduce the problem you observed
+ I'll try to find a portable fix.  This reverts commit d54871f5293675c8058ecce88fed5b646c836323 ("Added
+ a bogus empty .xs file for bundling on newer perl that wants
+ "something"").
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0f489b199adab48b1633ebcaf5ff5a7c22c4cb89 Merge: f4eaa02
+
+ 72a59bc Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Aug
+ 2 10:11:53 2011 +0200
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7fcc0b8032f8da5b7bc30059af0ba656eae71091 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 1 14:11:28 2011 +0200
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_access.c: Fix a compiler warning in
+
+
+ agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
+
+2011-08-01  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add file names and patterns for output
+
+ files generated during the Windows build
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Sort alphabetically
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add apps/sshtosnmp
+
+
+2011-08-01  Bart Van Assche <bvanassche@acm.org>
+
+   *  .gitignore, perl/TrapReceiver/const-c.inc, 
+      perl/TrapReceiver/const-xs.inc: Remove two generated Perl files.
+
+
+2011-08-02  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit f4eaa02d9b076a67d7272de7eef8e9dfbf189bbf Merge: 40125d8
+
+ adadcb9 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Tue Aug 2 00:57:51 2011 +0200
+
+2011-08-02  Thomas Anders <tanders@users.sourceforge.net>
+
+   * dist/nsb-functions: suppress "ok" test output in nsb
+
+
+2011-08-01  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 40125d8539cd89f952fbc24588c5e81e9cd821fe Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Mon Aug 1
+ 13:58:33 2011 +0200
+
+2011-08-01  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 5acf0d2ceb3977964ed39f003073ba64138c2ebd Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Jul 31 23:57:41
+ 2011 +0200
+
+2011-07-31  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a7722a81f9cb7aa8670e7c238601362a31087acc Merge: 242e179
+
+ ae9ac6c Author: Bart Van Assche <bvanassche@acm.org> Date:   Sun Jul
+ 31 09:11:45 2011 +0200
+
+2011-07-31  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/sshtosnmp.c: Fix an incorrect source code comment: there is
+
+ no requirement in the ANSI C standard that stack variables should be
+ initialized to zero.
+
+2011-07-31  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 242e1797b2694a0689856ae36d05d3413aaf8d77 Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Jul 31 01:44:09
+ 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * snmplib/system.c: CHANGES: building: build fix for systems lacking
+
+ getaddrinfo() and EAI_FAIL (e.g. HP-UX 10.20/11.00)
+
+2011-07-30  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 18df759f19b975c449d010bb0a162119bb68360d Merge: 54a44cb
+
+ 7050718 Author: Bart Van Assche <bvanassche@acm.org> Date:   Sat Jul
+ 30 16:39:13 2011 +0200
+
+2011-07-30  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 82d73fb11be3ae31f39c9d618d5388dc9b1006d7 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 29 20:51:27 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, include/net-snmp/net-snmp-config.h.in, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: autoreconf
+
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, include/net-snmp/net-snmp-config.h.in, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: autoreconf
+
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 109f6694d788f48ebd9fc0a1e90c45abc37bea20 Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sat Jul 30 14:22:19
+ 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 7d8100eed459a1ff1a20c067364fa6cb47491309 Merge: 116c24f
+
+ 9e47ac4 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Sat Jul 30 00:20:01 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * dist/nsb-functions, dist/nsb-nightly, dist/nsb-package: minor nsb
+
+ fixes/enhancements from my old svn tree
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 116c24f0f7fb3f99ba646730f61c56d1ae23ba41 Merge: 982fb7f
+
+ 4fc0b8b Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Jul
+ 29 11:31:20 2011 +0200
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit c48173c06a9eaadbf81e6b4962d55ef0a54db251 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 29 10:27:39 2011 +0200
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, ltmain.sh, m4/libtool.m4: Rerun autoreconf
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Sort alphabetically
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add apps/sshtosnmp
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/mibgroup/host/hr_storage.h, 
+      agent/mibgroup/host/hrh_storage.c: Fix two filenames in host mib
+
+ source code comments.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 982fb7fd8bab25c4322aa62c50437036ce296e3e Merge: 1eda675
+
+ 3458128 Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Thu Jul 28 16:24:03 2011 +0200
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Fix potential
+
+ sigsegv when an ifTable entry is removed as result of both
+ interface_replace_old and interface_fadeout at the same time.
+
+2011-07-28  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/sshtosnmp.c: Make apps/sshtosnmp.c build again (was broken by
+
+ commit 612247cdf14c1e745c384cefe1f3fde3e445b347 that changed
+ MSG_NOSIGNAL into NETSNMP_NOSIGNAL)
+
+2011-07-28  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 1eda6753b7fe7d3b3f217c09254ec02d0ee1d0ce Merge: db8b860
+
+ a2f9ece Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Jul
+ 28 15:32:28 2011 +0200
+
+2011-07-28  Niels Baggesen <nba@users.sourceforge.net>
+
+   * configure.d/config_os_functions, configure.d/config_os_libs1: 
+
+ CHANGES: snmpd: Restore storage tables on Linux
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document interface_replace_old option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_replace_old' option to remove old entries in
+ ifTable when an interface with the same name as already exising one
+ appears.  E.g. remove old ppp0 interface when new ppp0 shows up.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document the interface_fadeout option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Allow ifTable
+
+ entries to be deleted immediately when appropriate interface
+ disappears (i.e. interface_fadeout = 0 works as expected).
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_fadeout' configuration option to set
+ lifetime of ifTable entries of removed interfaces.  Previous lifetime was hardcoded 5 minutes, now it's configurable.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit d62a0eb9070b4d8d9fe2bcfdb4d53d37ef814f9b Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Thu Jul 28
+ 14:49:08 2011 +0200
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_replace_old' option to remove old entries in
+ ifTable when an interface with the same name as already exising one
+ appears.  E.g. remove old ppp0 interface when new ppp0 shows up.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document the interface_fadeout option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Allow ifTable
+
+ entries to be deleted immediately when appropriate interface
+ disappears (i.e. interface_fadeout = 0 works as expected).
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_fadeout' configuration option to set
+ lifetime of ifTable entries of removed interfaces.  Previous lifetime was hardcoded 5 minutes, now it's configurable.
+
+2011-07-28  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  apps/sshtosnmp.c, include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h, 
+      snmplib/transports/snmpUDPBaseDomain.c: CHANGES: building: build
+      fix
+
+ for systems lacking MSG_DONTWAIT
+
+2011-07-27  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/mibII/tcp.c: CHANGES: snmpd: Make
+
+ TCP-MIB::tcpCurrEstab work again. Was broken in 5.7 by the
+ introduction of the "features" feature.
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit fb88074fbbc268c7f0509491535aec5fecb05684 Merge: a743ae5
+
+ 3821273 Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Wed Jul 27 14:47:25 2011 +0200
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 31fa07cd9ffde46d41d2b5838c3fc4d01548bfb5 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Wed Jul 27
+ 14:45:47 2011 +0200
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/snmpd.c: CHANGES: snmpd: run signal handlers when select()
+
+ is interrupted.  This behavior is indicated in comment on line 1244, but it was not
+ actually done.
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 2e9466d7f59d65d050277735e4ed9d30719ff752 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 26 13:10:04 2011 +0200
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7708296760eaf5a80d8540746c9c249826fd1bfe Merge: ea11e5e
+
+ cd6e382 Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 26 16:21:41 2011 +0200
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmpUDPIPv6Domain.c: Clarify an IPv6 source code comment
+
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/agent_handler.c, man/netsnmp_handler.3: Spelling fix:
+
+ definedy -> defined
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/helpers/stash_cache.c, man/netsnmp_stash_cache.3: Spelling
+
+ fix: aleviate -> alleviate
+
+2011-07-26  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit dd2c47133493d5a00de6b3cdbcfac7e9d44b6ffe Merge: f9ccbc7
+
+ ea11e5e Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Tue Jul 26 14:25:28 2011 +0200
+
+2011-07-26  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit c5a8464c42a94c250ee2dfa2a473109a734203d8 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Tue Jul 26
+ 14:24:55 2011 +0200
+
+2011-07-25  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit f9ccbc772666134d1d178b505af9ddcdd9ed4244 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Mon Jul 25
+ 15:02:15 2011 +0200
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b0c0a355d5f601a11be4914fbf713716abd30a29 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Jul 19
+ 18:36:11 2011 -0700
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c14fc38614baf10d517136f0480907b7f03d8d74 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Jul 20
+ 13:44:59 2011 -0700
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/testhandler.c: remove broken whitespace lines that
+
+ leads to reading confusion
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ebdd216c074bf41cd3a084bd14689cf01c887b31 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Jul 19
+ 18:36:11 2011 -0700
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * .gitignore: updated gitignore to ignore a number of auto-generated
+
+ files
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/testhandler.c: remove broken whitespace lines that
+
+ leads to reading confusion
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit df5f70055cf9be33f05fb50abe2f5a81eac092ad Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 19 11:07:19 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit f596f18242dcdfd6cf49c88da1d836c16e260cac Merge: 0f309b4
+
+ 70dee4b Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 19 11:33:28 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/agent_trap.c, agent/mibgroup/mibII/snmp_mib.c, 
+      agent/mibgroup/mibII/snmp_mib_5_5.c: CHANGES: snmpd: PATCH:
+      3369680:
+
+ from Ilya Yanok: change snmp_enableauthentraps from int to long such
+ that modifying the corresponding MIB object does not overwrite
+ memory in 64-bit builds.
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/agentx/subagent.c: CHANGES: snmpd: PATCH: 3370645:
+
+ from Bill Fenner: Fix AgentX subagent four byte leak
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness: do
+
+ not invoke ISRUNNING() on MinGW.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness:
+
+ cleanup - remove code that became superfluous.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: MinGW: Do not
+
+ assume that kill.exe reports via its exit status whether the
+ signalled process still exists.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Remove the function WAITORDIE() from simple_eval_tools.sh since it
+ is never invoked.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Simplify WAITFOR() in simple_eval_tools.sh. The code that handled
+ invocation of WAITFOR() with zero or one arguments has been dropped
+ since WAITFOR() is always invoked with two arguments.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness:
+
+ minor simplification.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/default/T059trapdtraphandle_simple: CHANGES:
+
+ testing: Skip test 59 if SIGHUP is not supported. Makes test 59 pass
+ on MinGW.
+
+2011-07-06  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: MinGW fix
+
+
+2011-07-06  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test framework
+
+ refactoring: Introduce WAITFORNOTCOND().
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Make STOPPROG send SIGTERM repeatedly. This fixes a race where
+ SIGTERM could be sent before the SIGTERM signal handler was set up,
+ especially when running the regression tests under Valgrind.
+ CHANGES: testing: Make the SNMP_VERBOSE=1 output even more verbose.
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness
+
+ refactoring: introduce ECHOSENDSIGTERM() and ECHOSENDSIGKILL()
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Fix a bug in
+
+ testing/fulltests/support/simple_eval_tools.sh that was introduced
+ in commit 938d75c.
+
+2011-07-01  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Ignore *.exe files generated by the Win32
+
+ build
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Test only once during a test whether the shell supports sub-second
+ sleeping instead of repeatedly.
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_run: CHANGES: testing: Changed
+
+ default timeout from 1s to 10s when the regression tests are run
+ under Valgrind
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ After having sent SIGTERM to snmpd or snmptrapd, wait until the
+ process has stopped before sending SIGKILL. This race condition was
+ hit most easily when running the regression tests under Valgrind.
+ CHANGES: testing: Check PID file existence after having read it
+ instead of before. This fixes the race condition where the PID file
+ disappeared after the existence check and before it was read.
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+
+ introduced by patch 3310250 / r20494: use %ld to print a value of
+ type oid instead of %d.  This patch is a combination of the following to V5.6 SVN patches: git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20511 06827809-a52a-0410-b366-d66718629dedgit-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0f309b493c21d3c6914487514b41560754ffcdf9 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 19 08:37:50 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 1b7454bc281568470a1300476d2edb4f411e6029 Merge: 8d9dcc8
+
+ 690ea7d Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 19 08:31:28 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/snmptrapd.c: CHANGES: snmptrapd: Add missing newline
+
+ character in a log message
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/snmptrapd.c: CHANGES: snmptrapd: Invoke shutdown_perl() when
+
+ shutting down
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmpUDPIPv6Domain.c: Spelling fix: branket -> bracket
+
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, include/net-snmp/net-snmp-config.h.in: Run autoreconf.
+
+ Fixes build breakage caused by patch
+ d588ec853bd0531f212fcbf51b962b96c6828b59 (RPM 4.9 support)
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit d617d84f83fa69ed9fa9f98efc4afaf880d121f2 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Jul 14 16:43:47 2011 +0200
+
+2011-07-14  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: CHANGES: snmplib: Make
+
+ netsnmp_ipv6_fmtaddr() show the IPv6 scope ID
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   *  configure, configure.d/config_os_functions, 
+      include/net-snmp/net-snmp-config.h.in, 
+      snmplib/transports/snmpIPv6BaseDomain.c, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: Add support
+      for
+
+ IPv6 address scope ID
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, include/net-snmp/net-snmp-config.h.in: Run autoreconf
+
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a56721a3e7754e389daa7e8a3d5792899edc9de3 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Jul 14 16:18:32 2011 +0200
+
+2011-07-15  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 844d4ce867bf3abe7b7536c5dbfba401937a8d4a Merge: eed0198
+
+ 61036a8 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Fri Jul 15 15:33:10 2011 -0700
+
+2011-07-15  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 851bcf53fcd13cdf0ba9f12e5d603e73f8bb9611 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Fri Jul 15
+ 15:32:49 2011 -0700
+
+2011-07-14  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/cache_handler.c: fix a typo
+
+
+2011-07-13  Robert Story <rstory@localhost>
+
+   * snmplib/parse.c: CHANGES: snmplib:  tweak patch 3044888 to restore
+
+ proper non-error return during mib loading
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : added 5.7 patches to the branch list and fix the release file
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : added 5.7 patches to the branch list
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/release: a copy of the release file applied to the older
+
+ branches
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added 5.7 patches
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c431231e8f0a39d1950bc72c32e3402f90fa8030 Merge: 56fee40
+
+ a2ac24d Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Jul 11 19:33:17 2011 -0700
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a copy of the
+
+ shell-functions to the older branch
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/release: a copy of the release file applied to the older
+
+ branches
+
+2011-07-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update for 5.7
+
+
+2011-07-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7
+
+
+2011-07-01  Robert Story <rstory@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPv4BaseDomain.c, 
+      snmplib/transports/snmpTLSBaseDomain.c: Revert "fix dtlsudp
+
+ transport address format function" This reverts commit 2ab3a6e6f2fcc1ff3e5f0fb5dc5d05e498820d89.   - for some reason I saw 'rc' and my brain interpreted it as    'pre-release'. What can I say, it was late. :-/
+
+2011-07-01  Robert Story <rstory@localhost>
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPv4BaseDomain.c, 
+      snmplib/transports/snmpTLSBaseDomain.c: fix dtlsudp transport
+
+ address format function  - update ipv4 fmtaddr to handle sockaddr and to check    size before assuming data is addr pair  - move dtlsudp functions to extract addr(s) to tlsbase
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 56fee40118b21a9f4dc02a6f247f7da6fc69a005 Merge: d39194b
+
+ 9ff4714 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Wed Jun 29 23:18:13 2011 -0700
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: fix tag pushing
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: fix tag pushing
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: misc publication fixes found while
+
+ publishing
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update for 5.7.rc3
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.rc3
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: remove unneeded comment
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: misc publication fixes found while
+
+ publishing
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/net-snmp-config.h.in: ran autoheader to add the
+
+ missing template ifdefs
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update for 5.7.rc2
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.rc2
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 64b6c68a84930ab01e3e146c49f3ab5382efda3e Merge: 127eec2
+
+ d39194b Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Wed Jun 29 17:12:46 2011 -0700
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit df9cf9a1e293d05a24786694f68c05a2be13a9b3 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Jun 29
+ 16:34:11 2011 -0700
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: use git2cl to generate the ChangeLog file;
+
+ needs much more work.
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: use the new run-autoconf script
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/run-autoconf: A script to invoke the correct version of the
+
+ autoconf tool
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: remaining command line changes for svn ->
+
+ git
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: make the branch echo output and svn update
+
+ converted to git equivalents
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: pull the branch info from git
+
+
+2011-06-29  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst_rpm.c, 
+      agent/mibgroup/host/hr_swinst.c, configure.d/config_os_headers, 
+      configure.d/config_os_libs1: Tweak RPM handling to work with
+      library
+
+ version 4.9
+
+2011-06-29  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit d588ec853bd0531f212fcbf51b962b96c6828b59 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Wed Jun 29
+ 16:07:00 2011 +0200
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/release: noted that the master branch is in rc state
+
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit 8b23b4c13923b8caf4d4aed32a450933934ff461 Merge: 153781d
+
+ 47f5048 Author: Wes Hardaker <opensource@hardakers.net> Date:   Tue
+ Jun 28 13:14:52 2011 -0700
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit af8b235234f72944a649a76f0d30cff95ac2e895 Author: Wes
+
+ Hardaker <opensource@hardakers.net> Date:   Tue Jun 28 13:11:19 2011
+ -0700
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+   * local/gittools/shell-functions: use git merge with the --log
+
+ option
+
+2011-06-28  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 153781dbfb2afc0003ba4e58ffcca53001e486d6 Merge: b3e80de
+
+ 3c5a409 Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jun
+ 28 19:43:13 2011 +0200
+
+2011-06-28  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 9bc82e4ca4837f00072dba86b9497a27186909f9 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jun 28 19:13:35 2011 +0200
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+   * FAQ: We're now using git!
+
+
+2011-06-27  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit b3e80de9b07d282ff11af8b06a91d64279d3261d Merge: c4ad278
+
+ 6a5e5a6 Author: Wes Hardaker <opensource@hardakers.net> Date:   Mon
+ Jun 27 21:34:59 2011 -0700
+
+2011-06-27  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit 38fe8177d533135a6cc682724f16a91113bcd7f3 Merge: 7d917cf
+
+ dd58baf Author: Wes Hardaker <opensource@hardakers.net> Date:   Mon
+ Jun 27 21:34:56 2011 -0700
+
+2011-06-27  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit 5c177f517d16f05545b279d16f0e4fd5696be651 Merge: f0d6bf0
+
+ c2bcebc Author: Wes Hardaker <opensource@hardakers.net> Date:   Mon
+ Jun 27 21:34:55 2011 -0700
+
+2011-06-27  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit 9c9769572eb8c03b69556c1c5aab9b4d56c6d1d3 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Mon Jun 27
+ 14:11:14 2011 +0000
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a feature to not roll
+
+ branches currenly in rc phase git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20532 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a nsrollup function for
+
+ rolling branches upward.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20531 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: created an nspatchapply function
+
+ to apply a previously tested patch git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20530 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a nstrypatch function to
+
+ test patch application against various branches git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20529 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added verbose output git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20528 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: more prefix changes and better
+
+ setting of default values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20527 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: use ns prefixes instead of generic
+
+ snmp prefixes git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20526 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20524 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+   * configure, configure.in, include/net-snmp/net-snmp-config.h.in: 
+
+ Missing check for rpmts.h git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20523 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+   * configure: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20522 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20521 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      snmplib/snmp_version.c: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20520 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-23  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/host/hr_swinst.c, configure, configure.in, 
+      include/net-snmp/net-snmp-config.h.in: Tweak RPM handling to work
+
+ with library version 4.9 Based on a patch by Jan Safranek git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20519 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swinst.c: Provide a framework for reading
+
+ RPM package information from a cache directory (rather than querying
+ the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+ functionality.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20518 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20516 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * configure: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20515 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      snmplib/snmp_version.c: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20514 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.h, 
+      agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+
+ framework for reading RPM package information from a cache directory
+ (rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+ functionality.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.h, 
+      agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+
+ framework for reading RPM package information from a cache directory
+ (rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+ functionality.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.h, 
+      agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+
+ framework for reading RPM package information from a cache directory
+ (rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+ functionality.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Follow-up for r20511: really use
+
+ the proper format specification.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Follow-up for r20511: really use
+
+ the proper format specification.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+
+ introduced by patch 3310250 / r20494: use %ld to print a value of
+ type oid instead of %d.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20511 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+
+ introduced by patch 3310250 / r20494: use %ld to print a value of
+ type oid instead of %d.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20511 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/helpers/cache_handler.c: Use %p to print a pointer instead
+
+ of %ld git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20510 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/helpers/cache_handler.c: Use %p to print a pointer instead
+
+ of %ld git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20510 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-13  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20508 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-13  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20507 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-13  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: run correct version of autoconf git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20506 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-13  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20505 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-13  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: ran autoconf git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20504 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-10  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/cert_util.c: Include stdlib.h to make dmalloc happy
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20502 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-10  Niels Baggesen <nba@users.sourceforge.net>
+
+   * configure.d/config_modules_security_modules: Fix build of snmpusm
+
+ when additional sec modules requested git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20501 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/cert_util.c: Include std爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´õ€’‘b.h to make dmalloc happy
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20500 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-09  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/snmp_transport.c: CHANGES: BUG: 3151845: fix multiple
+
+ registrations of snmp transport handler git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20499 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-09  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/snmp_transport.c: CHANGES: BUG: 3151845: fix multiple
+
+ registrations of snmp transport handler git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20499 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-08  Robert Story <rstory@users.sourceforge.net>
+
+   *  include/net-snmp/library/default_store.h, snmplib/snmp_api.c, 
+      snmplib/system.c: more dnssec tweaks  - create an app-global
+      validator context for use with all    validation routines. mainly
+      useful for long-lived apps.   - use the apptype as the validator
+      'scope', allowing    for app-specific configuration of validation
+      via libval's    dnsval.conf git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20498 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-07  Robert Story <rstory@users.sourceforge.net>
+
+   * include/net-snmp/library/default_store.h: add a max define for
+
+ each default store type   not actually used, just a helpful reminder for those adding   new ids who might not think to check NETSNMP_DS_MAX_SUBIDS.    (the bool list is rapidly approaching the current limit.) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20497 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-07  Robert Story <rstory@users.sourceforge.net>
+
+   * testing/fulltests/support/simple_run: mention builddir when
+
+ complaining about not being run from source tree git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20496 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * perl/SNMP/SNMP.xs: Reverted r20362: that patch makes sense on the
+
+ trunk and the 5.6 branch but not on the 5.5 nor on the 5.4 branch.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20495 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/agentx/master.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/protocol.c,
+      agent/mibgroup/agentx/subagent.c:
+
+ CHANGES: snmpd: patch 3310250: from fenner: misc fixes for debugging
+ output of agentx git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20494 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/agentx/master.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/protocol.c,
+      agent/mibgroup/agentx/subagent.c:
+
+ CHANGES: snmpd: patch 3310250: from fenner: misc fixes for debugging
+ output of agentx git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20494 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/agentx/master.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/protocol.c,
+      agent/mibgroup/agentx/subagent.c:
+
+ CHANGES: snmpd: patch 3310250: from fenner: misc fixes for debugging
+ output of agentx git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20494 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * CHANGES, NEWS: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20492 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/Makefile.depend: make depend git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20491 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: fixed autoconf version git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20490 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20489 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20487 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20486 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20485 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * perl/SNMP/SNMP.xs: Reinstate an "unused" label that is actually
+
+ still required.  (referenced in line 2710) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20484 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk.c: Fix typo git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20483 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20482 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      snmplib/snmp_version.c: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20481 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20479 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20478 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/helpers/Makefile.depend, agent/mibgroup/Makefile.depend, 
+      apps/Makefile.depend, apps/snmpnetstat/Makefile.depend, 
+      snmplib/Makefile.depend: make depend git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20477 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20476 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  CHANGES, FAQ, README, configure, configure.in, 
+      dist/net-snmp.spec, snmplib/snmp_version.c: Version number update
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20475 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: fix xml quoting git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20474 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/parse.c: fix non existent malloc macro to use calloc
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20473 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/parse.h, snmplib/parse.c: CHANGES:
+
+ snmplib: Applied the intent of patch 3044888 to allow applications
+ to read the error messages of a MIB parsing failure.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20472 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c: 
+
+ CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
+ comparing unsigned large indexes of the disk and extend tables.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20471 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c: 
+
+ CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
+ comparing unsigned large indexes of the disk and extend tables.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20471 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c: 
+
+ CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
+ comparing unsigned large indexes of the disk and extend tables.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20471 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c: 
+
+ CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
+ comparing unsigned large indexes of the disk and extend tables.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20471 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c: 
+
+ CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
+ comparing unsigned large indexes of the disk and extend tables.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20471 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed hrSWRunPath
+
+ of swapped-out processes on Linux.  fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped
+ out) and when the process exited after fopen(), so check
+ /proc/PID/status in both cases.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20470 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed hrSWRunPath
+
+ of swapped-out processes on Linux.  fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped
+ out) and when the process exited after fopen(), so check
+ /proc/PID/status in both cases.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20470 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed hrSWRunPath
+
+ of swapped-out processes on Linux.  fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped
+ out) and when the process exited after fopen(), so check
+ /proc/PID/status in both cases.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20470 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed hrSWRunPath
+
+ of swapped-out processes on Linux.  fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped
+ out) and when the process exited after fopen(), so check
+ /proc/PID/status in both cases.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20470 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: up the ante and run other test suites
+
+ besides just the default set git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20462 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmpusm.c: CHANGES: snmpd: patch 3299384: fix INFORMs so
+
+ they retry probing for an engineID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20461 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmpusm.c: Applied (roughly) patch 3299370 to avoid
+
+ rewriting existing authkey/privkey/etcs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20460 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/header_complex.c, agent/mibgroup/header_complex.h, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c, 
+      agent/mibgroup/notification/snmpNotifyTable.c: Applied the intent
+      of
+
+ patch 3299386 which fixes duplicate entries on a SIGHUP.  To achieve
+ this some new header_complex functions needed to be created that
+ didn't change the behavior of the older ones.  The notification code
+ now calls these newer functions.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20459 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmpd: patch 3299384: fix INFORMs so
+
+ they retry probing for an engineID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20458 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmpd: patch 3299384: fix INFORMs so
+
+ they retry probing for an engineID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20458 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmpd: patch 3299384: fix INFORMs so
+
+ they retry probing for an engineID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20458 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmpd: patch 3299384: fix INFORMs so
+
+ they retry probing for an engineID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20458 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: Applied (roughly) patch 3299370 to avoid
+
+ rewriting existing authkey/privkey/etcs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20457 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: Applied (roughly) patch 3299370 to avoid
+
+ rewriting existing authkey/privkey/etcs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20457 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: Applied (roughly) patch 3299370 to avoid
+
+ rewriting existing authkey/privkey/etcs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20457 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: Applied (roughly) patch 3299370 to avoid
+
+ rewriting existing authkey/privkey/etcs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20457 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c, 
+      agent/mibgroup/util_funcs/get_pid_from_inode.c, 
+      agent/mibgroup/util_funcs/get_pid_from_inode.h, perl/Makefile.PL:
+
+ NEWS: snmpd: patch 3131397: from takevos: huge speedups of the
+ TCP/UDP Tables git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20456 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * perl/NetSNMP.xs: Added a bogus empty .xs file for bundling on
+
+ newer perl that wants "something" git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20455 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swrun_procfs_status.c: CHANGES:
+
+ snmpd: patch 3306476: from tinypyramids: fix memory leak in the
+ swrun container loading git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20454 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swrun_procfs_status.c: CHANGES:
+
+ snmpd: patch 3306476: from tinypyramids: fix memory leak in the
+ swrun container loading git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20454 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/tunnel/tunnel.c: Follow-up for r20449: use
+
+ NETSNMP_PRIo "u" for printing subids instead of only NETSNMP_PRIo.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20453 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/tunnel/tunnel.c: Follow-up for r20449: use
+
+ NETSNMP_PRIo "u" for printing subids instead of only NETSNMP_PRIo.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20453 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: Microsoft
+
+ Visual Studio: Link with gdi32.lib if OpenSSL has been enabled
+ because gdi32.lib is a dependency of OpenSSL.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20451 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: Microsoft
+
+ Visual Studio: Link with gdi32.lib if OpenSSL has been enabled
+ because gdi32.lib is a dependency of OpenSSL.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20451 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: Microsoft
+
+ Visual Studio: Link with gdi32.lib if OpenSSL has been enabled
+ because gdi32.lib is a dependency of OpenSSL.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20451 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: Follow-up for r20448: since the
+
+ "oid" typedef has been changed back from uint32_t to u_long, change
+ NETSNMP_PRIo from NETSNMP_PRI32 into "l".  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20450 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: Follow-up for r20448: since the
+
+ "oid" typedef has been changed back from uint32_t to u_long, change
+ NETSNMP_PRIo from NETSNMP_PRI32 into "l".  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20450 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/tunnel/tunnel.c: CHANGES: snmpd: Use proper format
+
+ specifier in debug statements for printing values of type 'oid'.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20449 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/tunnel/tunnel.c: CHANGES: snmpd: Use proper format
+
+ specifier in debug statements for printing values of type 'oid'.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20449 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/tunnel/tunnel.c: CHANGES: snmpd: Use proper format
+
+ specifier in debug statements for printing values of type 'oid'.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20449 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/tunnel/tunnel.c: CHANGES: snmpd: Use proper format
+
+ specifier in debug statements for printing values of type 'oid'.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20449 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: revert OID typedef to u_long as
+
+ agreed to on -coders and in the admin meeting git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20448 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: revert OID typedef to u_long as
+
+ agreed to on -coders and in the admin meeting git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20448 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/system.c: Remember to return info also without DNSSEC
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20447 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/arp_common.c: Added NULL-checks
+
+ after malloc git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20446 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/arp_common.c: Added NULL-checks
+
+ after malloc git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20446 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/arp_common.c: Added NULL-checks
+
+ after malloc git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20446 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/arp_common.c: Added NULL-checks
+
+ after malloc git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20446 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c: CHANGES:
+
+ agent: BUG: 3305157: Fix ipAddressPrefix handling of IPv6 addresses git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20445 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c: CHANGES:
+
+ agent: BUG: 3305157: Fix ipAddressPrefix handling of IPv6 addresses git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20445 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: BUG: 3295407: Fix
+
+ handling of void pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20444 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: BUG: 3295407: Fix
+
+ handling of void pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20444 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: BUG: 3295407: Fix
+
+ handling of void pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20444 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: BUG: 3295407: Fix
+
+ handling of void pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20444 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c: CHANGES:
+
+ snmplib: BUG: 3264852: Recognise missing report types
+ (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20443 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c: CHANGES:
+
+ snmplib: BUG: 3264852: Recognise missing report types
+ (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20443 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c: CHANGES:
+
+ snmplib: BUG: 3264852: Recognise missing report types
+ (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20443 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c: CHANGES:
+
+ snmplib: BUG: 3264852: Recognise missing report types
+ (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20443 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c: CHANGES:
+
+ snmplib: BUG: 3264852: Recognise missing report types
+ (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20443 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-20  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/snmpAAL5PVCDomain.c, snmplib/snmpAliasDomain.c, 
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpIPXDomain.c, 
+      snmplib/snmpSSHDomain.c, snmplib/snmpSTDDomain.c, 
+      snmplib/snmpTCPDomain.c, snmplib/snmpTCPIPv6Domain.c, 
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c, 
+      snmplib/snmpUnixDomain.c: CHANGES: snmplib: BUG: 3234754: Ensure
+      old
+
+ f_create_from_tstring hook is initialized to NULL git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20442 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-20  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/transports/snmpAAL5PVCDomain.c, 
+      snmplib/transports/snmpAliasDomain.c, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPXDomain.c, 
+      snmplib/transports/snmpSSHDomain.c, 
+      snmplib/transports/snmpSTDDomain.c, 
+      snmplib/transports/snmpTCPDomain.c, 
+      snmplib/transports/snmpTCPIPv6Domain.c, 
+      snmplib/transports/snmpTLSTCPDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv6Domain.c, 
+      snmplib/transports/snmpUnixDomain.c: CHANGES: snmplib: BUG:
+      3234754:
+
+ Ensure old f_create_from_tstring hook is initialized to NULL git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20442 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-20  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/transports/snmpAAL5PVCDomain.c, 
+      snmplib/transports/snmpAliasDomain.c, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPXDomain.c, 
+      snmplib/transports/snmpSSHDomain.c, 
+      snmplib/transports/snmpSTDDomain.c, 
+      snmplib/transports/snmpTCPDomain.c, 
+      snmplib/transports/snmpTCPIPv6Domain.c, 
+      snmplib/transports/snmpTLSTCPDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv6Domain.c, 
+      snmplib/transports/snmpUnixDomain.c: CHANGES: snmplib: BUG:
+      3234754:
+
+ Ensure old f_create_from_tstring hook is initialized to NULL git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20442 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-20  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/snmpAAL5PVCDomain.c, snmplib/snmpIPXDomain.c, 
+      snmplib/snmpSTDDomain.c, snmplib/snmpTCPDomain.c, 
+      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPDomain.c, 
+      snmplib/snmpUDPIPv6Domain.c, snmplib/snmpUnixDomain.c: CHANGES:
+
+ snmplib: BUG: 3234754: Ensure old f_create_from_tstring hook is
+ initialized to NULL git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20442 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in: use #ifdef
+
+ rather than #if for define checks.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20441 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in: use #ifdef
+
+ rather than #if for define checks.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20441 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in: use #ifdef
+
+ rather than #if for define checks.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20441 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in: use #ifdef
+
+ rather than #if for define checks.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20441 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in: use #ifdef
+
+ rather than #if for define checks.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20441 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * man/snmp_api.3.def, man/snmp_sess_api.3.def: CHANGES: man: BUG:
+
+ 3190725: Document snmp{,_sess}synch_response and snmp_async_send git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20440 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * man/session_api.3.def, man/snmp_sess_api.3.def: CHANGES: man: BUG:
+
+ 3190725: Document snmp{,_sess}synch_response and snmp_async_send git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20440 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * man/netsnmp_sess_api.3.def, man/netsnmp_session_api.3.def: 
+
+ CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response and
+ snmp_async_send git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20440 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * man/netsnmp_sess_api.3.def, man/netsnmp_session_api.3.def: 
+
+ CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response and
+ snmp_async_send git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20440 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * man/snmp_api.3.def, man/snmp_sess_api.3.def: CHANGES: man: BUG:
+
+ 3190725: Document snmp{,_sess}synch_response and snmp_async_send git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20440 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed race
+
+ condition in hrSWRunTable Treat the reads from /proc/<pid>/*
+ carefuly, processes can exit in the middle of processing.  (already
+ fixed in V5-5-patches and V5-4-patches in SVN rev. 20115, dunno why
+ I did not patch trunk) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20438 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed race
+
+ condition in hrSWRunTable Treat the reads from /proc/<pid>/*
+ carefuly, processes can exit in the middle of processing.  (already
+ fixed in V5-5-patches and V5-4-patches in SVN rev. 20115, dunno why
+ I did not patch trunk) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20438 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/keytools.c, snmplib/scapi.c: CHANGES: snmplib: BUG:
+
+ 3184697: Don't reference internal MD5 when it's explicitly disabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20437 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/keytools.c, snmplib/scapi.c: CHANGES: snmplib: BUG:
+
+ 3184697: Don't reference internal MD5 when it's explicitly disabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20437 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-16  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/system.c: make sure we get the hint git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20436 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/RUNTESTS: Follow-up for r20432: testing/RUNTESTS without
+
+ arguments works again as it should.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20435 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/RUNTESTS: Follow-up for r20432: testing/RUNTESTS without
+
+ arguments works again as it should.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20435 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: Ran
+
+ snmplib/transports/snmpIPv6BaseDomain.c through dos2unix.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20434 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/fulltests/default/T071com2sec6_simple: Fixed a typo in a
+
+ comment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20433 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/fulltests/default/T071com2sec6_simple: Fixed a typo in a
+
+ comment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20433 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/RUNTESTS: RUNTESTS works again for tests with a four-digit
+
+ number.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20432 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/RUNTESTS: RUNTESTS works again for tests with a four-digit
+
+ number.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20432 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/system.c: Fixed a recently introduced bug in
+
+ netsnmp_getaddrinfo().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20431 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/diskio.c: Document that the ucd-snmp
+
+ diskio code still has to be modified such that diskio_free_config()
+ gets invoked upon SIGHUP.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20430 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/diskio.c: Document that the ucd-snmp
+
+ diskio code still has to be modified such that diskio_free_config()
+ gets invoked upon SIGHUP.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20430 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/system.c: fix cast git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20429 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Robert Story <rstory@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_acces
+       s.c: Revert 20420 "CHANGES: snmpd: Fixed memory leak in TCP-MIB
+
+ tables introduced by patch #3053436." Revert 19708 "CHANGES: snmpd:
+ PATCH: 3053436: from: takevos: fix: tcpConnectionTable_data_access
+ invalid memory access" the bug 3053436 is fixing was introduced in r17719, and fixed in
+ r17861.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20428 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Robert Story <rstory@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      apps/snmpnetstat/inet.c, apps/snmpnetstat/route.c, 
+      apps/snmptrapd_log.c, configure, configure.d/config_os_functions, 
+      configure.d/config_os_libs2, include/net-snmp/library/system.h, 
+      include/net-snmp/net-snmp-config.h.in, snmplib/system.c, 
+      snmplib/transports/snmpIPv4BaseDomain.c, 
+      snmplib/transports/snmpIPv6BaseDomain.c, 
+      snmplib/transports/snmpUDPIPv6Domain.c: more dns related tweaks  -
+      add netsnmp_gethostbyaddr  - always define netsnmp_* versions;
+      logonce if underlying    function is not available  - use new
+      functions in disman mibs git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20427 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Robert Story <rstory@users.sourceforge.net>
+
+   *  apps/snmpnetstat/inet6.c, snmplib/snmpv3.c, 
+      snmplib/transports/snmpIPv6BaseDomain.c, 
+      snmplib/transports/snmpUDPIPv6Domain.c: use new netsnmp dns
+
+ functions in apps/snmplib git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20426 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Robert Story <rstory@users.sourceforge.net>
+
+   * include/net-snmp/library/system.h, snmplib/system.c: move DNSSEC
+
+ validation into resolver wrapper functions   - allows other code to benefit from validation   - new netsnmp_gethostbyname, netsnmp_getaddrinfo git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20425 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: Follow-up for r20417: replaced a malloc()/free()
+
+ pair by a call to realloc().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20424 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: Follow-up for r20417: replaced a malloc()/free()
+
+ pair by a call to realloc().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20424 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: Follow-up for r20417: replaced a malloc()/free()
+
+ pair by a call to realloc().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20424 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib/data_access/arp_netlink.c: Fix for RHEL4
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20423 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmp_transport.h, 
+      snmplib/transports/snmpUDPBaseDomain.c: Header fiddling for the
+
+ benefit of RHEL4, Solaris, OpenBSD git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20422 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_acces
+       s.c: CHANGES: snmpd: Fixed memory leak in TCP-MIB tables
+      introduced
+
+ by patch #3053436.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20421 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_acces
+       s.c: CHANGES: snmpd: Fixed memory leak in TCP-MIB tables
+      introduced
+
+ by patch #3053436.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20420 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/net-snmp/net-snmp-config.h: Reverted accidentally committed
+
+ changes of r20412.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20419 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: Fixed a memory leak in
+
+ snmp_free_session().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20418 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: Fixed a memory leak in
+
+ snmp_free_session().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20418 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: Fixed a memory leak in
+
+ snmp_free_session().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20418 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: Fixed a memory leak in
+
+ snmp_free_session().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20418 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: CHANGES: snmplib: _mibindex_add() no longer reads
+
+ past the end of the dynamically allocated array _mibindexes.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20417 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: CHANGES: snmplib: _mibindex_add() no longer reads
+
+ past the end of the dynamically allocated array _mibindexes.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20417 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: CHANGES: snmplib: _mibindex_add() no longer reads
+
+ past the end of the dynamically allocated array _mibindexes.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20417 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/lcd_time.c: Avoid that MSVC triggers a compiler warning on
+
+ the code in snmplib/lcd_time.c.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20416 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/notification/snmpNotifyFilterProfileTable.c: Avoid
+
+ reading an uninitialized variable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20415 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/at.c: CHANGES: Win32: Fixed a memory leak in
+
+ the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipNetToMediaTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20414 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/at.c: CHANGES: Win32: Fixed a memory leak in
+
+ the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipNetToMediaTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20414 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/at.c: CHANGES: Win32: Fixed a memory leak in
+
+ the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipNetToMediaTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20414 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/at.c: CHANGES: Win32: Fixed a memory leak in
+
+ the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipNetToMediaTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20414 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/interfaces.c: CHANGES: Win32: Fixed a memory
+
+ leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ifTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20413 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/interfaces.c: CHANGES: Win32: Fixed a memory
+
+ leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ifTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20413 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/interfaces.c: CHANGES: Win32: Fixed a memory
+
+ leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ifTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20413 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/interfaces.c: CHANGES: Win32: Fixed a memory
+
+ leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ifTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20413 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipAddr.c: CHANGES: Win32: Fixed a memory leak
+
+ in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipAddrTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20412 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipAddr.c: CHANGES: Win32: Fixed a memory leak
+
+ in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipAddrTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20412 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipAddr.c: CHANGES: Win32: Fixed a memory leak
+
+ in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipAddrTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20412 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipAddr.c, win32/net-snmp/net-snmp-config.h: 
+
+ CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL)
+ implementation of the MIB-II ipAddrTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20412 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * ChangeLog: Documentation / source code comment spelling fix:
+
+ exitent -> existent.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20411 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * ChangeLog, snmplib/mib.c: Documentation / source code comment
+
+ spelling fix: exitent -> existent.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20411 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * ChangeLog, snmplib/mib.c: Documentation / source code comment
+
+ spelling fix: exitent -> existent.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20411 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * ChangeLog, snmplib/mib.c: Documentation / source code comment
+
+ spelling fix: exitent -> existent.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20411 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: CHANGES: Win32: Build
+
+ snmplib/transports/snmpIPv6BaseDomain.c only if NETSNMP_ENABLE_IPV6
+ has been defined.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20410 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  Makefile.in, Makefile.rules, configure, 
+      configure.d/config_project_with_enable: install the built feature
+
+ headers too git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20409 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  testing/fulltests/default/T025snmpv3getSHADES_simple, 
+      testing/fulltests/default/T026snmpv3getSHAAES_simple: CHANGES:
+
+ testing: Tests 025 and 026 pass on MinGW even if winExtDLL has been
+ enabled.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20408 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/fulltests/default/T065agentextend_simple: T065 robustness
+
+ improvement.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20407 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/fsys.h, 
+      agent/mibgroup/hardware/fsys/fsys_void.c, 
+      agent/mibgroup/ucd-snmp/disk_hw.h: CHANGES: snmpd: ucd_snmp builds
+
+ again on MinGW and Cygwin.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20406 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.in: install the net-snmp-features.h file git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20405 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/fulltests/default/T0141snmpv2cset_simple: Improved test
+
+ robustness.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20404 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/schedule/schedCore.c, 
+      agent/mibgroup/smux/smux.c: Compiler warning fixes.  git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20403 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: MinGW: avoid that gcc complains about pasing
+
+ a (char *) argument while (unsigned char *) is expected.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20402 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: MinGW: avoid that gcc complains about pasing
+
+ a (char *) argument while (unsigned char *) is expected.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20402 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: MinGW: avoid that gcc complains about pasing
+
+ a (char *) argument while (unsigned char *) is expected.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20402 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: MinGW: avoid that gcc complains about pasing
+
+ a (char *) argument while (unsigned char *) is expected.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20402 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/tools.c: Avoid out-of-bounds array access if the last char
+
+ of time_string is in the range 0x80..0xfe and char is a signed type.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20401 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: Reverted r20380 because it breaks
+
+ all statements that print an OID sub-ID on any 64-bit platform. The
+ effect of r20380 on big endian architectures was that a "0" would be
+ printed instead of the OID sub-ID (at least with the LP64 and the
+ ILP64 models).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20400 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * CHANGES, NEWS: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20385 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20384 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20383 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/hardware/cpu/cpu_linux.c, 
+      agent/mibgroup/ip-mib/data_access/arp_linux.c: C++ -> C comments
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20382 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: NEWS update for 5.7 git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20381 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: revert the oid typedef resizing
+
+ from r17809 because it broke backwards compat, as pointed out by
+ users on the -coders list git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20380 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: use proper autoconf version git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20379 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec, perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm,
+       perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+      perl/TrapReceiver/TrapReceiver.pm, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm: Version number update
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20378 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.top: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20377 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  mibs/UCD-SNMP-MIB.txt: added a missing 0 in the revision date
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20376 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c: Use symbolic
+
+ named for ifType values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20375 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c: Use symbolic
+
+ named for ifType values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20375 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c: Use symbolic
+
+ named for ifType values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20375 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c: Use symbolic
+
+ named for ifType values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20375 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c: Use symbolic
+
+ named for ifType values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20375 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/rfcmibs.diff: IANA has fixed the
+
+ IANA-IPPM-METRICS-REGISTRY-MIB git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20374 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/rfcmibs.diff: IANA has fixed the
+
+ IANA-IPPM-METRICS-REGISTRY-MIB git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20374 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: added a new REVISION clause to list the
+
+ changes in the the recent update git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20373 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: added ping/traceroute mibs note git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20372 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/proxy.c: we actually want to use the base
+
+ OID as the starting point, not the reg OID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20371 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/proxy.c: fixed the proxy support to do a
+
+ proper OID less than OID compare.  We actually don't care about the
+ length of the original request, only that it was before the
+ registered rebase git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20370 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/proxy.c: CHANGES: patch 3140833: from
+
+ jsafranek: fix proxy GETNEXT requests When OIDs requested are below
+ the proxy request remap, we need to not include any OIDs that might
+ be in the space between the original OID and the remapped OID.  This
+ patch fudges the request so that it fixes the request OID so it's
+ just before the remapped proxy range.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20369 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/cpu/cpu.c, 
+      agent/mibgroup/hardware/cpu/cpu_linux.c, 
+      agent/mibgroup/ucd-snmp/vmstat.c,
+      agent/mibgroup/ucd-snmp/vmstat.h, 
+      include/net-snmp/agent/hardware/cpu.h, mibs/UCD-SNMP-MIB.txt:
+      NEWS:
+
+ PATCH 3167325: from krisztoforo: UCD-SNMP/SystemStats: add variables
+ to report cpusteal, cpuguest, cpuguestnice git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20368 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface.c: CHANGES: patch
+
+ 3184026: from eivnaes: Avoid constant refresh of interface
+ statistics git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20367 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/snmp_agent.c, apps/snmpdelta.c, snmplib/scapi.c, 
+      snmplib/snmp_api.c, snmplib/system.c, snmplib/tools.c: Fixed
+      several
+
+ compiler warnings reported by the MSVC compiler.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20366 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  snmplib/gettimeofday.c: Win32/MSVC: Fixed a compiler warning. 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20365 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/var_route.c: CHANGES: agent: Fixed a
+
+ year-2038 bug in the implementation of ipRouteTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20364 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-08  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c: Fix
+
+ warnings and data format for DateAndTime objects.  These modules
+ work, but: - They are Linux only - Rows must be created with rowStatus createAndWait before they are
+ populated - Agent must run as root - Agent is blocked while tests run - Data format for InetAddress objects is wrong. It is ASCII, not
+   binary (making it easier to use from the command line, but ...) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20363 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-08  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c: Fix
+
+ warnings and data format for DateAndTime objects.  These modules
+ work, but: - They are Linux only - Rows must be created with rowStatus createAndWait before they are
+ populated - Agent must run as root - Agent is blocked while tests run - Data format for InetAddress objects is wrong. It is ASCII, not
+   binary (making it easier to use from the command line, but ...) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20363 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-08  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c: Fix
+
+ warnings and data format for DateAndTime objects.  These modules
+ work, but: - They are Linux only - Rows must be created with rowStatus createAndWait before they are
+ populated - Agent must run as root - Agent is blocked while tests run - Data format for InetAddress objects is wrong. It is ASCII, not
+   binary (making it easier to use from the command line, but ...) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20363 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-08  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c: Fix
+
+ warnings and data format for DateAndTime objects.  These modules
+ work, but: - They are Linux only - Rows must be created with rowStatus createAndWait before they are
+ populated - Agent must run as root - Agent is blocked while tests run - Data format for InetAddress objects is wrong. It is ASCII, not
+   binary (making it easier to use from the command line, but ...) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20363 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-08  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c: Fix
+
+ warnings and data format for DateAndTime objects.  These modules
+ work, but: - They are Linux only - Rows must be created with rowStatus createAndWait before they are
+ populated - Agent must run as root - Agent is blocked while tests run - Data format for InetAddress objects is wrong. It is ASCII, not
+   binary (making it easier to use from the command line, but ...) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20363 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  perl/SNMP/SNMP.xs: Removed an unused label from perl/SNMP/SNMP.xs.
+       git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20362 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  perl/SNMP/SNMP.xs: Removed an unused label from perl/SNMP/SNMP.xs.
+       git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20362 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  perl/SNMP/SNMP.xs: Removed an unused label from perl/SNMP/SNMP.xs.
+       git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20362 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  perl/SNMP/SNMP.xs: Removed an unused label from perl/SNMP/SNMP.xs.
+       git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20362 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/agent_registry.c, agent/helpers/old_api.c, 
+      include/net-snmp/agent/agent_registry.h, 
+      include/net-snmp/agent/old_api.h: CHANGES: snmpd: Declare the OID
+
+ argument type of MIB registration functions as 'const oid *' instead
+ of 'oid *' since these functions do not modify the OID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20361 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib/data_access/arp_linux.c, 
+      agent/mibgroup/ip-mib/data_access/arp_netlink.c, 
+      include/net-snmp/data_access/arp.h: Use the correct data type for
+
+ the 'cache expired' variable: char instead of int.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20360 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Fixed a compiler warning that was
+
+ introduced in r20151.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20359 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Win32: improved source code consistency by
+
+ using LPCTSTR instead of LPCSTR. Note: this does not mean that
+ Unicode builds are supported.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20358 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Win32: improved source code consistency by
+
+ using LPCTSTR instead of LPCSTR. Note: this does not mean that
+ Unicode builds are supported.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20358 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/arp_netlink.c: Add file
+
+ forgotten in r20353 git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20357 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/net-snmp/net-snmp-config.h: Reverted a change that was
+
+ committed accidentally in r20276.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20356 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: Fixed two compiler
+
+ warnings.  (Backported r20236 from the trunk.) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20355 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/diskio.c: Commented out an unused function
+
+ because the compiler complained about it.  (Backported r20237 from
+ the trunk.) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20354 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/cache_handler.c, 
+      agent/mibgroup/ip-mib/data_access/arp.h, 
+      agent/mibgroup/ip-mib/data_access/arp_common.c, 
+      agent/mibgroup/ip-mib/data_access/arp_linux.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_
+       access.c, include/net-snmp/agent/cache_handler.h, 
+      include/net-snmp/data_access/arp.h: CHANGES: snmpd: PATCH 312596:
+
+ from fabled80: listen for netlink change events for the arp-related
+ tables git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20353 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h: NEWS: PATCH
+
+ 3198781: from fenner: Get disman/ping and disman/traceroute to at
+ least compile git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20352 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h: NEWS: PATCH
+
+ 3198781: from fenner: Get disman/ping and disman/traceroute to at
+ least compile git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20352 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h: NEWS: PATCH
+
+ 3198781: from fenner: Get disman/ping and disman/traceroute to at
+ least compile git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20352 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h: NEWS: PATCH
+
+ 3198781: from fenner: Get disman/ping and disman/traceroute to at
+ least compile git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20352 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/system.c: NEWS: snmplib: add optional support for local
+
+ DNSSEC validation of hostnames  - optional at configure time: --with-local-dnssec-validation  - requires DNSSEC-Tool validation libraries  - initial support, for systems with getaddrinfo. support for
+    additional resolver interfaces coming soon.   - also TODO: flag for ignoring validatoin errors (log & continue) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20351 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Robert Story <rstory@users.sourceforge.net>
+
+   * include/net-snmp/library/parse.h: move unused (and too generic)
+
+ token within UCD_COMPATIBLE ifdef   - MAXLABEL conflicts with <arpa/nameser.h>   - added NETSNMP_MAXLABEL git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20350 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Robert Story <rstory@users.sourceforge.net>
+
+   *  agent/Makefile.in, apps/Makefile.in, 
+      apps/snmpnetstat/Makefile.in, configure, 
+      configure.d/config_os_misc2, 
+      configure.d/config_project_with_enable, 
+      include/net-snmp/net-snmp-config.h.in: update configure/Makefiles
+
+ for DNSSEC local validation option git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20349 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20347 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20346 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/Makefile.depend: make depend git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20345 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20344 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      snmplib/snmp_version.c: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20343 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_sysctl.c: removed the
+
+ accidental broken feature require line that got half inserted git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20342 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20340 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20339 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/Makefile.depend: make depend git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20338 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20337 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      snmplib/snmp_version.c: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20336 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Fix incomplete uninstall
+
+ configuration: - broken removal of Microsoft DLL - remove assorted new MIBs and header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20335 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Fix incomplete uninstall
+
+ configuration: - broken removal of Microsoft DLL - remove assorted new MIBs and header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20335 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Fix incomplete uninstall
+
+ configuration: - broken removal of Microsoft DLL - remove assorted new MIBs and header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20335 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Fix incomplete uninstall
+
+ configuration: - broken removal of Microsoft DLL - remove assorted new MIBs and header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20335 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Fix incomplete uninstall
+
+ configuration: - broken removal of Microsoft DLL - remove assorted new MIBs and header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20335 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/build-binary.pl: Support Tar/GZip command paths
+
+ containing spaces git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20334 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/build-binary.pl: Support Tar/GZip command paths
+
+ containing spaces git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20334 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/build-binary.pl: Support Tar/GZip command paths
+
+ containing spaces git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20334 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  win32/dist/build-binary.pl: Report GZip command correctly
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20333 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  win32/dist/build-binary.pl: Report GZip command correctly
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20333 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  win32/dist/build-binary.pl: Report GZip command correctly
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20333 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c: Fix for DragonFly BSD (does
+      not
+
+ define IP_SENDSRCADDR) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20332 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c: Fix for DragonFly BSD (does
+      not
+
+ define IP_SENDSRCADDR) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20332 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h: Fix spelling of
+
+ SO_RECVDSTADDR git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20331 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h: Fix spelling of
+
+ SO_RECVDSTADDR git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20331 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Robert Story <rstory@users.sourceforge.net>
+
+   *  include/net-snmp/library/default_store.h, man/snmp.conf.5.def, 
+      snmplib/snmp_api.c: NEWS: apps: add snmp.conf tokens for timeouts
+
+ and retries git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20330 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/tools.c, testing/TESTCONF.sh: CHANGES: MinGW: Made
+
+ regression test output independent of the Net-SNMP variables defined
+ in the Windows registry. Some tests that failed previously after the
+ Net-SNMP binaries (MSVC build) had been installed do now pass.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20329 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/tools.c, testing/TESTCONF.sh: CHANGES: MinGW: Made
+
+ regression test output independent of the Net-SNMP variables defined
+ in the Windows registry. Some tests that failed previously after the
+ Net-SNMP binaries (MSVC build) had been installed do now pass.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20329 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/tools.c, testing/fulltests/support/simple_TESTCONF.sh: 
+
+ CHANGES: MinGW: Made regression test output independent of the
+ Net-SNMP variables defined in the Windows registry. Some tests that
+ failed previously after the Net-SNMP binaries (MSVC build) had been
+ installed do now pass.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20329 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/tools.c, testing/fulltests/support/simple_TESTCONF.sh: 
+
+ CHANGES: MinGW: Made regression test output independent of the
+ Net-SNMP variables defined in the Windows registry. Some tests that
+ failed previously after the Net-SNMP binaries (MSVC build) had been
+ installed do now pass.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20329 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/encode_keychange/encode_keychange.vcproj, 
+      win32/libagent/libagent.vcproj, 
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj, 
+      win32/libsnmp/libsnmp.vcproj,
+      win32/libsnmp_dll/libsnmp_dll.vcproj, 
+      win32/netsnmpmibs/netsnmpmibs.vcproj, 
+      win32/snmpbulkget/snmpbulkget.vcproj, 
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj, 
+      win32/snmpget/snmpget.vcproj,
+      win32/snmpgetnext/snmpgetnext.vcproj, 
+      win32/snmpnetstat/snmpnetstat.vcproj,
+      win32/snmpset/snmpset.vcproj,  win32/snmpstatus/snmpstatus.vcproj,
+       win32/snmptable/snmptable.vcproj, win32/snmptest/snmptest.vcproj,
+       win32/snmptranslate/snmptranslate.vcproj, 
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+      win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj, 
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32.sln,
+      win32/win32dll.sln:
+
+ Removed Visual Studio 2005 solution and project files again since
+ Visual Studio 2010 refuses to load these.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20328 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.in: clean the perl/python feature leftovers git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20327 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: fix mib module invocation git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20326 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c: fix ifdef
+
+ typo git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20325 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.in: fix perl/python feature dependencies git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20324 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/auto_nlist.c: reverted auto_nlist macro usage; the function
+
+ is used in headers git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20323 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  local/minimalist/sizetests: Add a -T option to run 'make test'
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20322 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * apps/Makefile.in: fix the encode_keychange .ft filename git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20321 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * perl/TrapReceiver/netsnmp-feature-definitions.h, snmplib/tools.c: 
+
+ fix the features required by the TrapReceiver module git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20320 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  Makefile.in: Add the TrapReceiver to the list of perl modules
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20319 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * perl/SNMP/SNMP.xs: use the newer Net-SNMP APIs, rather than the
+
+ older UCD ones git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20318 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  perl/SNMP/SNMP.xs: remove SET code when under --read-only mode
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20317 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/disman/event/mteTriggerTable.c: require
+
+ check_vb_uint git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20316 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagen
+       t.c, agent/snmp_agent.c, local/mib2c-conf.d/subagent.m2c, 
+      python/netsnmp/netsnmp-feature-definitions.h, 
+      snmplib/snmp_logging.c: last of the perl-used feature functions
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20315 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/Rmon/event.c, agent/mibgroup/agentx/subagent.c, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagen
+       t.c, agent/mibgroup/smux/smux.c, apps/snmptrapd_handlers.c, 
+      local/mib2c-conf.d/subagent.m2c, snmplib/mib.c, snmplib/parse.c:
+
+ started the final set of function removals for features required by
+ perl/python git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20314 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-source-includes.m2i: added the
+
+ net-snmp-features.h header git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20313 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  perl/OID/netsnmp-feature-definitions.h, 
+      perl/SNMP/netsnmp-feature-definitions.h, 
+      perl/TrapReceiver/netsnmp-feature-definitions.h, 
+      perl/agent/netsnmp-feature-definitions.h: Added perl feature
+
+ requirements git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20312 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  Makefile.in, Makefile.rules, configure, 
+      configure.d/config_project_perl_python, 
+      perl/ASN/netsnmp-feature-definitions.h, 
+      perl/OID/netsnmp-feature-definitions.h, 
+      perl/SNMP/netsnmp-feature-definitions.h, 
+      perl/agent/netsnmp-feature-definitions.h, 
+      perl/default_store/netsnmp-feature-definitions.h: hopefully
+      working
+
+ rules to apply feature requirements to perl and python git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20311 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/if-mib/data_access/interface.c, 
+      agent/mibgroup/if-mib/data_access/interface_ioctl.c, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c, 
+      agent/snmp_agent.c: more changes to remove unneeded functions
+
+ primarily when write mode is turned off git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20310 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_logging.c: change the want invocation to only default
+
+ to exclude external hooks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20309 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/find-unused-code: search through .xs files for
+
+ function invocations git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20308 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/auto_nlist.c: forgot a semicolon git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20307 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/Rmon/alarmTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/event/mteTriggerTable.c, 
+      agent/mibgroup/disman/expr/expExpressionTable.c: iquery pdu
+      sessions
+
+ are only needed in write mode.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20306 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * apps/Makefile.in: fix feature detection of sometimes-built
+
+ applications git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20305 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/auto_nlist.c: use the feature_unused macro for making an
+
+ empty file for consistency git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20304 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/table_dataset.c, agent/mibgroup/Rmon/alarmTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/schedule/schedTable.c, 
+      agent/mibgroup/hardware/fsys/hw_fsys.c, 
+      agent/mibgroup/host/data_access/swrun.c, 
+      agent/mibgroup/host/hr_network.c, 
+      agent/mibgroup/if-mib/data_access/interface.c, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/if-mib/data_access/interface_openbsd.c, 
+      agent/mibgroup/if-mib/data_access/interface_solaris2.c, 
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c,
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+       agent/mibgroup/mibII/interfaces.c, agent/mibgroup/mibII/ipAddr.c,
+       agent/mibgroup/mibII/var_route.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSN
+       Table.c, agent/mibgroup/ucd-snmp/proc.c, 
+      agent/mibgroup/utilities/iquery.c, apps/snmptls.c, 
+      snmplib/cert_util.c, snmplib/mib.c, snmplib/snmp_openssl.c, 
+      snmplib/transports/snmpDTLSUDPDomain.c: Another sweep for unused
+
+ functions when read_only mode is turned on git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20303 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/table_tdata.c, agent/mibgroup/Rmon/alarmTable.c, 
+      agent/mibgroup/agent/extend.c, agent/mibgroup/agent/nsLogging.c, 
+      agent/mibgroup/agent/nsVacmAccessTable.c, 
+      agent/mibgroup/disman/event/mteEvent.c, 
+      agent/mibgroup/disman/event/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/event/mteEventSetTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/event/mteObjectsTable.c, 
+      agent/mibgroup/disman/event/mteTrigger.c, 
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/event/mteTriggerTable.c, 
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/expr/expExpressionTable.c, 
+      agent/mibgroup/disman/expr/expObjectTable.c, 
+      agent/mibgroup/disman/expression/expExpressionTable.c, 
+      agent/mibgroup/disman/expression/expObjectTable.c, 
+      agent/mibgroup/disman/mteObjectsTable.c, 
+      agent/mibgroup/disman/mteTriggerTable.c, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/schedule/schedTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/header_complex.c, 
+      agent/mibgroup/if-mib/data_access/interface.c, 
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c, 
+      agent/mibgroup/mibII/snmp_mib.c, 
+      agent/mibgroup/mibII/snmp_mib_5_5.c, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c, 
+      agent/mibgroup/notification/snmpNotifyTable.c, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
+       , 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSN
+       Table.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.
+       c, snmplib/check_varbind.c: mark a slew of functions as features
+
+ that are only needed with write_support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20302 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/find-unused-code: run grep with -n git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20301 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_transport.c, snmplib/transports/snmpDTLSUDPDomain.c: 
+
+ featurize netsnmp_sockaddr_size git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20300 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c: remove a
+
+ feature_require not actually needed.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20299 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/cert_util.c, snmplib/container.c: mark SUBCONTAINER_FIND
+
+ as a feature git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20298 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_client.c, snmplib/snmptsm.c: the row creation API is
+
+ only used in the TSM implementation git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20297 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c, snmplib/snmptsm.c: the newer context engineID
+
+ probing is only needed iff TSM is in use git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20296 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/dir_utils.c: fix an ifdef typo git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20295 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_openssl.c: moved fetaure child_of statements to the
+
+ top of the file git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20294 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/cert_util.c, snmplib/container.c, snmplib/dir_utils.c, 
+      snmplib/snmp_openssl.c: marked a couple of rarely used container
+
+ functions.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20293 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c, 
+      agent/mibgroup/util_funcs.c: split out the prefix_info feature
+      into
+
+ sub-features git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20292 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_int
+       erface.c: mark the accessor functions as unneeded git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20291 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swinst.c: fix a child_of statement
+
+ with a copy/paste error git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20290 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_tdata.c: the container row-remove is only
+
+ needed if the tdata remove_row is needed git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20289 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/table_tdata.c, agent/mibgroup/Rmon/alarmTable.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSN
+       Table.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.
+       c: feature marking of unused tdata functions    
+      table_tdata_delete_table     table_tdata_extract_table    
+      table_tdata_remove_row git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20288 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/table_dataset.c, 
+      agent/mibgroup/disman/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/mteEventTable.c, 
+      agent/mibgroup/examples/data_set.c: removal of some rarely used
+
+ 	functions table_set_multi_add_default_row 	table_dataset_unregister_auto_data_table git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20287 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: Added a definition to incorporate
+
+ read_only/notify_only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20286 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_data.c: added a missing feature definition
+
+ line git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20285 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/Makefile.in: added back in missing mibgroup feature
+
+ definition list git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20284 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: Include the original base flags to
+
+ ensure --with-defaults gets picked up git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20283 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: fix usage git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20282 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: Added a -b flag for base arguments to
+
+ start from git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20281 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: default to a linear seach of size
+
+ tests, rather than exponential git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20280 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/snmpUDPDomain.h, snmplib/snmpUDPDomain.c: 
+
+ CHANGES: snmplib: Guard netsnmp_udp_recvfrom() etc. declarations
+ consistently.  CHANGES: Win32: Builds with Visual Studio 2010.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20279 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h, 
+      snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c: CHANGES: snmplib:
+      Guard
+
+ netsnmp_udp_recvfrom() etc. declarations consistently.  CHANGES:
+ Win32: Builds with Visual Studio 2010.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20278 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h, 
+      snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c: CHANGES: snmplib:
+      Guard
+
+ netsnmp_udp_recvfrom() etc. declarations consistently.  CHANGES:
+ Win32: Builds with Visual Studio 2010.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20278 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: CHANGES: Win32: PATCH: 3293842: Eliminate
+
+ registry argument limit of 127 characters (this limitation was
+ reported by Sylvain Dery).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20277 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: CHANGES: Win32: PATCH: 3293842: Eliminate
+
+ registry argument limit of 127 characters (this limitation was
+ reported by Sylvain Dery).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20277 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: CHANGES: Win32: PATCH: 3293842: Eliminate
+
+ registry argument limit of 127 characters (this limitation was
+ reported by Sylvain Dery).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20277 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: CHANGES: Win32: PATCH: 3293842: Eliminate
+
+ registry argument limit of 127 characters (this limitation was
+ reported by Sylvain Dery).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20277 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: header file
+
+ <net-snmp/net-snmp-config.h> can now be used in the MinGW
+ environment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20276 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: header file
+
+ <net-snmp/net-snmp-config.h> can now be used in the MinGW
+ environment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20276 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: header file
+
+ <net-snmp/net-snmp-config.h> can now be used in the MinGW
+ environment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20276 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: header file
+
+ <net-snmp/net-snmp-config.h> can now be used in the MinGW
+ environment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20276 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/getopt.h, 
+      include/net-snmp/library/large_fd_set.h, 
+      include/net-snmp/net-snmp-includes.h: Win32 DLL build fixes.
+
+ (Backported r20184 from trunk.) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20275 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/getopt.h, 
+      include/net-snmp/library/large_fd_set.h, 
+      include/net-snmp/net-snmp-includes.h: Win32 DLL build fixes.
+
+ (Backported r20184 from trunk.) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20275 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Spelling and grammar fixes for the source
+
+ code comments in snmplib/winservice.c.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20274 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Spelling and grammar fixes for the source
+
+ code comments in snmplib/winservice.c.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20274 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Spelling and grammar fixes for the source
+
+ code comments in snmplib/winservice.c.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20274 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Spelling and grammar fixes for the source
+
+ code comments in snmplib/winservice.c.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20274 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: added note about the new timing function git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20273 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Update the manual page to reflect the new
+
+ timing options git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20272 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/tools.c: better documentation git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20271 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/agentx/agentx_config.c, 
+      agent/mibgroup/disman/mteTriggerTable.c, 
+      agent/mibgroup/disman/schedule/schedConf.c: use the
+
+ netsnmp_string_time_to_secs() for parsing frequencies/time git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20270 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/unit-tests/T102pdu_build_clib.c: fix pdu
+
+ building tests under various disabled modes git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20269 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/unit-tests/T102pdu_build_clib.c: don't try to
+
+ build the GET pdu under notify_only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20268 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c: fix a bug with
+
+ no-suffix strings and use a const input string git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20267 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *   * 
+      testing/fulltests/unit-tests/T010netsnmp_string_time_to_secs_clib.c:
+
+ A new unit test for the time conversion routine git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20266 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: use the
+
+ netsnmp_string_time_to_secs() function for computing interval
+ periods git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20265 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c: Added a
+
+ netsnmp_string_time_to_secs() functions to convert, e.g., 1h to 3600 git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20264 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: remove code to build/parse GET/etc requests
+
+ when NOTIFY_ONLY is turned on.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20263 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: update the NEWS to reflect the new --enable-read-only and
+
+ --enable-notify-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20262 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/if-mib/ifTable/ifTable_interface.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: minor
+
+ improvements for ronly vs rwrite handling git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20261 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_interface.c: still enable
+
+ RONLY when RWRITE isn't possible git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20260 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/cache_handler.c: fix GET support when no_write is
+
+ enabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20259 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: mark a future
+
+ modification need in a comment git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20258 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/old_api.c: fix handling of no_write support
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20257 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/agent_read_config.c, agent/snmp_agent.c, agent/snmpd.c: 
+
+ don't open any listening transports when notify-only is specified git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20256 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure, configure.d/config_project_with_enable: set the
+
+ no-listen and read-only flags when --enable-notify-only is set git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20255 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/net-snmp-config.h.in: ran autoheader git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20254 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/transports/snmpAAL5PVCDomain.c, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPXDomain.c, 
+      snmplib/transports/snmpSSHDomain.c, 
+      snmplib/transports/snmpTCPDomain.c, 
+      snmplib/transports/snmpTCPIPv6Domain.c, 
+      snmplib/transports/snmpTLSTCPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c, 
+      snmplib/transports/snmpUDPIPv6Domain.c, 
+      snmplib/transports/snmpUnixDomain.c: implement the
+
+ NETSNMP_NO_LISTEN_SUPPORT in these transports git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20253 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: run autoconf git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20252 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure.d/config_project_with_enable: move the read-only flag
+
+ definition below the notify-only, since notify-only needs to imply
+ read-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20251 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure, configure.d/config_project_with_enable: Defined a new
+
+ --enable-notify-only flag for building a toolset that only allows
+ for notifications with no read/write support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20250 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure, configure.d/config_project_with_enable: Defined a new
+
+ --no-listen flag to remove listening support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20249 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/default_modules.h: the disman schedule mib is only
+
+ useful when SETs are turned on git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20248 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/disman.h: the disman schedule mib is only useful
+
+ when SETs are turned on git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20247 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_inter
+       face.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_int
+       erface.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_interface.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interf
+       ace.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.
+       c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c: finished no_write support for common included tables
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20246 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_dataset.c: Add back in
+
+ 'netsnmp_set_row_column' when no_write support is enabled This
+ function is a generic data manipulation function, not SET specific git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20245 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_dataset.c: don't use mark_row_column_writable
+
+ when read-only support is enabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20244 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/agent/nsCache.c, agent/mibgroup/agent/nsDebug.c, 
+      agent/mibgroup/agent/nsLogging.c, 
+      agent/mibgroup/ip-mib/ip_scalars.c, 
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udpTable.c, 
+      agent/mibgroup/notification-log-mib/notification_log.c, 
+      agent/mibgroup/ucd-snmp/proxy.c, 
+      agent/mibgroup/utilities/override.c: fix no_write support
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20243 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c: fix no_write support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20242 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: Don't free
+
+ the ifXTable row found on load failure as we don't own it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20241 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: Don't free
+
+ the ifXTable row found on load failure as we don't own it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20241 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: Don't free
+
+ the ifXTable row found on load failure as we don't own it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20241 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: Don't free
+
+ the ifXTable row found on load failure as we don't own it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20241 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: Don't free
+
+ the ifXTable row found on load failure as we don't own it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20241 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: git bash-shell functions to enable
+
+ branch switching and external building These local shell functions
+ (snmpconfigure and snmpmake) let you configure and build the
+ Net-SNMP source code in external directories that are
+ auto-calculated based on the existing branch name (with an optional
+ suffix).  This lets you run 'snmpmake' from within the source
+ directory and have it actually externally keep track of modified
+ files, etc, so building in multiple branches can be done from a
+ single git checkout.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20240 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c: clean up the iterators
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20239 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: free varbinds after
+
+ sending git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20238 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/diskio.c: Commented out an unused function
+
+ because the compiler complained about it.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20237 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: Fixed two compiler
+
+ warnings.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20236 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   *  agent/helpers/table_data.c: Remove unnecessary null check
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20235 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/helpers/table_container.c: Move pointer dereference to after
+
+ the check for successful allocation of the pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20234 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_registry.c: Reduce variable scope git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20233 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_registry.c: Remove an unused variable git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20232 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_registry.c: Reduce variable scope git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20231 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_registry.c: Reduce variable scope git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20230 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_trap.c: Reduce variable scope git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20229 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_trap.c: Remove unused variable git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20228 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: mention which module is required when
+
+ building to get the deliver support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20227 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: deleted an unneeded
+
+ debugging statement git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20226 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: properly update the max
+
+ count in the outgoing notifications git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20225 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: better packet estimation
+
+ to ensure we don't overrun.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20224 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: estimate the packet size
+
+ and break the notification up based on it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20223 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: transform the
+
+ notification sending into a larger loop for later multi-notifs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20222 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  NEWS: further information about feature marking/selection
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20221 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: mention the new delivery by notifications git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20220 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: document the minimalist support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20219 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: document the new deliverByNotify config
+
+ tokens git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20218 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: allow run time
+
+ modifications of the OIDs to use git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20217 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: add config flags to not
+
+ include the period config and msg count values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20216 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: include the periodic
+
+ count, the message number and the max message number git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20215 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: deleted debugging
+
+ comment git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20214 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt: Move the notification
+
+ definition to within the sub-mib git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20213 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: delete an unused
+
+ variable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20212 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.h: load the MIB into the
+
+ default set git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20211 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt: A new mib to hold the
+
+ periodic notify objects git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20210 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: fill out the config free
+
+ routine git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20209 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: properly monitor the
+
+ whole container git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20208 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: parse the conf files and
+
+ create and insert objects into the container git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20207 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: defined a container to
+
+ store a list of deliver objects in git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20206 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.h: added a next_run
+
+ timestamp git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20205 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: actually send a
+
+ notification with the results git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20204 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: make the walk on the
+
+ test object function.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20203 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: create a max packet size
+
+ config token and parse it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20202 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: minimal starting test
+
+ object git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20201 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: added a function to
+
+ calculate the time until the next run git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20200 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: remove left in template
+
+ line git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20199 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: use an alarm callback
+
+ prototype for execute git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20198 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: beginning template code
+
+ for delivery of data by notifications git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20197 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/snmp_agent.c: Reduce variable scope git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20196 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/snmp_agent.c: Reduce variable scopes git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20195 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/snmp_agent.c: Remove unused variable git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20194 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/libsnmp/libsnmp.vcproj, win32/win32.sln: Added Visual Studio
+
+ 2005 project and solution file for building the Net-SNMP library as
+ a static library. Both the Win32 and the x64 configurations are
+ included.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20193 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/encode_keychange/encode_keychange.vcproj, 
+      win32/libagent/libagent.vcproj, 
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj, 
+      win32/libsnmp_dll/libsnmp_dll.vcproj, 
+      win32/netsnmpmibs/netsnmpmibs.vcproj, 
+      win32/snmpbulkget/snmpbulkget.vcproj, 
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj, 
+      win32/snmpget/snmpget.vcproj,
+      win32/snmpgetnext/snmpgetnext.vcproj, 
+      win32/snmpnetstat/snmpnetstat.vcproj,
+      win32/snmpset/snmpset.vcproj,  win32/snmpstatus/snmpstatus.vcproj,
+       win32/snmptable/snmptable.vcproj, win32/snmptest/snmptest.vcproj,
+       win32/snmptranslate/snmptranslate.vcproj, 
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+      win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj, 
+      win32/snmpwalk/snmpwalk.vcproj: More Visual Studio 2005 project
+      file
+
+ cleanup.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20191 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-18  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/encode_keychange/encode_keychange.vcproj, 
+      win32/snmpbulkget/snmpbulkget.vcproj, 
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj, 
+      win32/snmpget/snmpget.vcproj,
+      win32/snmpgetnext/snmpgetnext.vcproj, 
+      win32/snmpnetstat/snmpnetstat.vcproj,
+      win32/snmpset/snmpset.vcproj,  win32/snmpstatus/snmpstatus.vcproj,
+       win32/snmptable/snmptable.vcproj, win32/snmptest/snmptest.vcproj,
+       win32/snmptranslate/snmptranslate.vcproj, 
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+      win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj, 
+      win32/snmpwalk/snmpwalk.vcproj: Cleaned up Win32 VS2005 project
+
+ files - removed superfluous library references.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20189 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-18  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/encode_keychange/encode_keychange.vcproj, 
+      win32/libagent/libagent.vcproj, 
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj, 
+      win32/libsnmp_dll/libsnmp_dll.vcproj, 
+      win32/netsnmpmibs/netsnmpmibs.vcproj, 
+      win32/snmpbulkget/snmpbulkget.vcproj, 
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj, 
+      win32/snmpget/snmpget.vcproj,
+      win32/snmpgetnext/snmpgetnext.vcproj, 
+      win32/snmpnetstat/snmpnetstat.vcproj,
+      win32/snmpset/snmpset.vcproj,  win32/snmpstatus/snmpstatus.vcproj,
+       win32/snmptable/snmptable.vcproj, win32/snmptest/snmptest.vcproj,
+       win32/snmptranslate/snmptranslate.vcproj, 
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+      win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj, 
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32dll.sln: Added x64
+
+ configurations.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20188 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-18  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/encode_keychange/encode_keychange.vcproj, 
+      win32/libagent/libagent.vcproj, 
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj, 
+      win32/libsnmp_dll/libsnmp_dll.vcproj, 
+      win32/netsnmpmibs/netsnmpmibs.vcproj, 
+      win32/snmpbulkget/snmpbulkget.vcproj, 
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj, 
+      win32/snmpget/snmpget.vcproj,
+      win32/snmpgetnext/snmpgetnext.vcproj, 
+      win32/snmpnetstat/snmpnetstat.vcproj,
+      win32/snmpset/snmpset.vcproj,  win32/snmpstatus/snmpstatus.vcproj,
+       win32/snmptable/snmptable.vcproj, win32/snmptest/snmptest.vcproj,
+       win32/snmptranslate/snmptranslate.vcproj, 
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+      win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj, 
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32dll.sln: Added
+
+ win32dll-related Visual Studio 2005 project and solution files.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20186 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-18  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/getopt.h, 
+      include/net-snmp/library/large_fd_set.h, 
+      include/net-snmp/net-snmp-includes.h: Win32 DLL build fixes. 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20184 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-17  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpUDPDomain.c: CHANGES: snmpd: PATCHES: 3175640: Use
+
+ IP_RECVDSTADDR sockopt where available (*BSD) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20183 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-17  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c: CHANGES: snmpd:
+      PATCHES:
+
+ 3175640: Use IP_RECVDSTADDR sockopt where available (*BSD) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20183 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-17  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c: CHANGES: snmpd:
+      PATCHES:
+
+ 3175640: Use IP_RECVDSTADDR sockopt where available (*BSD) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20183 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: PATCHES: 3183000: Fix
+
+ calculation of common OID prefix length CHANGES: snmplib: BUGS:
+ 3182985: Fix calculation of common OID prefix length git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20182 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: PATCHES: 3183000: Fix
+
+ calculation of common OID prefix length CHANGES: snmplib: BUGS:
+ 3182985: Fix calculation of common OID prefix length git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20182 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: PATCHES: 3183000: Fix
+
+ calculation of common OID prefix length CHANGES: snmplib: BUGS:
+ 3182985: Fix calculation of common OID prefix length git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20182 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: PATCHES: 3183000: Fix
+
+ calculation of common OID prefix length CHANGES: snmplib: BUGS:
+ 3182985: Fix calculation of common OID prefix length git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20182 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: PATCHES: 3183000: Fix
+
+ calculation of common OID prefix length CHANGES: snmplib: BUGS:
+ 3182985: Fix calculation of common OID prefix length git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20182 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/ucd-snmp/diskio.c, apps/snmptrapd_ds.h, 
+      include/net-snmp/agent/ds_agent.h, man/snmpd.conf.5.def: CHANGES:
+
+ Linux: PATCHES: 3205811: Option to skip fd/loop/ram devices in
+ diskIOTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20181 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/ucd-snmp/diskio.c, apps/snmptrapd_ds.h, 
+      include/net-snmp/agent/ds_agent.h, man/snmpd.conf.5.def: CHANGES:
+
+ Linux: PATCHES: 3205811: Option to skip fd/loop/ram devices in
+ diskIOTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20181 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: PATCHES: 3185085:
+
+ Fix segfault on 64-bit systems git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20180 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: PATCHES: 3185085:
+
+ Fix segfault on 64-bit systems git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20180 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: PATCHES: 3185085:
+
+ Fix segfault on 64-bit systems git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20180 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: PATCHES: 3185085:
+
+ Fix segfault on 64-bit systems git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20180 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3175323: Fix handling of
+
+ 'while (false)' blocks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20179 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3175323: Fix handling of
+
+ 'while (false)' blocks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20179 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3175323: Fix handling of
+
+ 'while (false)' blocks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20179 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3175323: Fix handling of
+
+ 'while (false)' blocks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20179 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3175323: Fix handling of
+
+ 'while (false)' blocks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20179 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3204883: Fix handling of
+
+ non-table objects named fooTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20178 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3204883: Fix handling of
+
+ non-table objects named fooTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20178 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3204883: Fix handling of
+
+ non-table objects named fooTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20178 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3204883: Fix handling of
+
+ non-table objects named fooTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20178 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3204883: Fix handling of
+
+ non-table objects named fooTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20178 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3211484: Support
+
+ enumerations in notification varbinds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20177 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3211484: Support
+
+ enumerations in notification varbinds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20177 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3211484: Support
+
+ enumerations in notification varbinds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20177 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3211484: Support
+
+ enumerations in notification varbinds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20177 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3211484: Support
+
+ enumerations in notification varbinds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20177 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: Add missing system oids to mib git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20176 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: Add missing system oids to mib git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20176 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: Add missing system oids to mib git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20176 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: Add missing system oids to mib git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20176 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: Add missing system oids to mib git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20176 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix for garbage output when agent presents more
+
+ columns in bulk response than our local MIB file  specified.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20175 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix for garbage output when agent presents more
+
+ columns in bulk response than our local MIB file  specified.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20175 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix for garbage output when agent presents more
+
+ columns in bulk response than our local MIB file  specified.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20175 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix for garbage output when agent presents more
+
+ columns in bulk response than our local MIB file  specified.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20175 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix for garbage output when agent presents more
+
+ columns in bulk response than our local MIB file  specified.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20175 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmptrapd.8.def: Fix wrong name for config token
+
+ 'doNotRetainNotificationLogs' git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20174 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmptrapd.8.def: Fix wrong name for config token
+
+ 'doNotRetainNotificationLogs' git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20174 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmptrapd.8.def: Fix wrong name for config token
+
+ 'doNotRetainNotificationLogs' git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20174 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmptrapd.8.def: Fix wrong name for config token
+
+ 'doNotRetainNotificationLogs' git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20174 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmptrapd.8.def: Fix wrong name for config token
+
+ 'doNotRetainNotificationLogs' git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20174 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/sctp-mib/sctpScalars_freebsd.c: Remove bogus
+
+ (Linux) defines git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20173 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/sctp-mib/sctpScalars_freebsd.c: Remove bogus
+
+ (Linux) defines git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20173 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/sctp-mib/sctpScalars_freebsd.c: Remove bogus
+
+ (Linux) defines git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20173 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/snmp-tc.c: HAVE_TM_TM_GMTOFF is HAVE_STRUCT_TM_TM_GMTOFF
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20172 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/snmp-tc.c: HAVE_TM_TM_GMTOFF is HAVE_STRUCT_TM_TM_GMTOFF
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20172 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/snmp-tc.c: HAVE_TM_TM_GMTOFF is HAVE_STRUCT_TM_TM_GMTOFF
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20172 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, configure, 
+      include/net-snmp/net-snmp-config.h.in: Bill Fenners patch to make
+
+ DISMAN PING and TRACEROUTE MIBS compile under Linux git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20171 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h, 
+      agent/mibgroup/sctp-mib/sctpScalars.h, 
+      agent/mibgroup/sctp-mib/sctpScalars_solaris2.c, 
+      agent/mibgroup/sctp-mib/sctpTables.h, 
+      agent/mibgroup/sctp-mib/sctpTables_solaris2.c: Solaris support for
+
+ SCTP-MIB git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20170 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h, 
+      agent/mibgroup/sctp-mib/sctpScalars.h, 
+      agent/mibgroup/sctp-mib/sctpScalars_solaris2.c, 
+      agent/mibgroup/sctp-mib/sctpTables.h, 
+      agent/mibgroup/sctp-mib/sctpTables_solaris2.c: Solaris support for
+
+ SCTP-MIB git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20170 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h, 
+      agent/mibgroup/sctp-mib/sctpScalars.h, 
+      agent/mibgroup/sctp-mib/sctpScalars_solaris2.c, 
+      agent/mibgroup/sctp-mib/sctpTables.h, 
+      agent/mibgroup/sctp-mib/sctpTables_solaris2.c: Solaris support for
+
+ SCTP-MIB git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20170 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: TZ is one hour off if HAVE_TM_TM_GMTOFF and
+
+ SYSV (such is Linux) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20169 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: TZ is one hour off if HAVE_TM_TM_GMTOFF and
+
+ SYSV (such is Linux) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20169 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: TZ is one hour off if HAVE_TM_TM_GMTOFF and
+
+ SYSV (such is Linux) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20169 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-01  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: CHANGES: snmplib: dtls:
+
+ overhaul of debug   - drastic reduction in number of messages and msg complexity     for basic dtlsudp token   - previous level of detail available by adding 9:dtlsdup token git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20168 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-01  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: CHANGES: snmplib: dtls:
+
+ overhaul of debug   - drastic reduction in number of messages and msg complexity     for basic dtlsudp token   - previous level of detail available by adding 9:dtlsdup token git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20168 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-01  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: CHANGES: snmplib: dtls:
+
+ clean up close; catch 'connect'/'disconnect'   connect = we get successfully decoded snmp data   disconnect = 0 byte read, ssh shutdown flag set   add bio_cache flags for connected/disconnected   check for null ptr before dereferencing   close handling:   -  only send queued data if we got to connected state   -  seriously reduce timeout to wait for junk read. i think      we shouldn't even bother   - return early if cachep is NULL, so we don't have to test it     repeatedly   - use correct nfds value in select call git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20167 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-01  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: CHANGES: snmplib: dtls:
+
+ clean up close; catch 'connect'/'disconnect'   connect = we get successfully decoded snmp data   disconnect = 0 byte read, ssh shutdown flag set   add bio_cache flags for connected/disconnected   check for null ptr before dereferencing   close handling:   -  only send queued data if we got to connected state   -  seriously reduce timeout to wait for junk read. i think      we shouldn't even bother   - return early if cachep is NULL, so we don't have to test it     repeatedly   - use correct nfds value in select call git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20167 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-31  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: make trunk and
+
+ v5-6-patches closely aligned   mostly changes in debug, cookie tracking git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20166 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-31  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: make trunk and
+
+ v5-6-patches closely aligned   mostly changes in debug, cookie tracking git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20166 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-31  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: add cookie handling;
+
+ remove ifdef'd code git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20165 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-27  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: Simplify array resizing somewhat
+
+ further git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20164 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-27  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: Do not assign new_data if the
+
+ value won't be used.  Reduce variable scopes.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20163 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-27  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: It is not necessary to clear a
+
+ chunk of memory if the next action on it is to fill it so use malloc
+ instead of calloc.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20162 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-27  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: ContainerBinaryArray really
+
+ can't hold anythng but pointers and that means the data_size field
+ is unnecessary so I removed it.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20161 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/memory/hw_mem.c, 
+      agent/mibgroup/header_complex.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/mibII/interfaces.c, 
+      agent/mibgroup/mibII/sysORTable.c, apps/snmptrapd.c, 
+      snmplib/int64.c, snmplib/snmp_openssl.c, snmplib/snmp_secmod.c, 
+      snmplib/snmpv3.c: Add missing include git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20160 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: Use the right feature
+
+ macro in order to make builds with --enable-ipv6
+ --with-out-transports=UDPIPv6 succeed.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20159 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: Remove duplicate copies of
+
+ functions git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20158 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   * local/net-snmp-cert: tweak debug message git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20157 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpTLSBaseDomain.c: CHANGES: snmplib: update
+
+ cert token handling  - remove defX509 cert tokens (should have been removed before 5.6)  - warnings for our/their tokens, recommend using local/peer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20156 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpUDPBaseDomain.c: merge netsnmp_dtlsudp6
+      into
+
+ netsnmp_dtlsudp    use addr size to tell them apart git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20155 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/snmp_transport.c: log (once) warning when deprecated
+
+ f_create_from_tstring transport function used git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20154 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpTCPDomain.c: reduce casting; make sure to
+
+ free the right pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20153 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpUDPBaseDomain.c: reduce casting git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20152 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-24  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Replace a variable with a
+
+ constant. Make one more oid const.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20151 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-18  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20147 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-18  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20146 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-18  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/snmpnetstat/Makefile.depend, 
+      snmplib/Makefile.depend: make depend git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20145 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-18  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3, 
+      man/netsnmp_agent_handler.h.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_container_iterator.3, 
+      man/netsnmp_container_iterator.h.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_monitor_callback_header_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_null_container.3, man/netsnmp_oid_stash.3, 
+      man/netsnmp_old_api.3, man/netsnmp_read_config.3, 
+      man/netsnmp_read_only.3, man/netsnmp_row_merge.3, 
+      man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3, 
+      man/netsnmp_serialize.3, man/netsnmp_snmp_agent.3, 
+      man/netsnmp_snmp_alarm.3, man/netsnmp_snmp_client.3, 
+      man/netsnmp_snmp_logging.3, man/netsnmp_snmp_pdu.3, 
+      man/netsnmp_snmp_session.3, man/netsnmp_stash_cache.3, 
+      man/netsnmp_stash_to_next.3, man/netsnmp_table.3, 
+      man/netsnmp_table_array.3, man/netsnmp_table_container.3, 
+      man/netsnmp_table_data.3, man/netsnmp_table_dataset.3, 
+      man/netsnmp_table_generic.3, man/netsnmp_table_indexes.3, 
+      man/netsnmp_table_iterator.3, man/netsnmp_table_iterator.h.3, 
+      man/netsnmp_table_maintenance.3, man/netsnmp_table_row.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, 
+      man/netsnmp_tools.h.3, man/netsnmp_util.3,
+      man/netsnmp_utilities.3,  man/netsnmp_variable_list.3,
+      man/netsnmp_watcher.3: documentation
+
+ update git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20144 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-18  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20143 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmpdelta.1.def: Formatting botch git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20142 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmpdelta.1.def: Formatting botch git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20142 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/Makefile.in: Install required mibs git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20141 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/Makefile.in: Install required mibs git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20141 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/rfclist: New RFC mibs git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20140 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/rfclist: New RFC mibs git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20140 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES, NEWS: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20138 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20137 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20136 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm, 
+      perl/SNMP/SNMP.pm, perl/TrapReceiver/TrapReceiver.pm, 
+      perl/agent/Support/Support.pm, perl/agent/agent.pm, 
+      perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm, snmplib/snmp_version.c:
+      Version
+
+ number update git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20135 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * Makefile.top: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20134 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  snmplib/cert_util.c: Spelling fix: reginerated -> regenerated. 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20133 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  snmplib/cert_util.c: Spelling fix: reginerated -> regenerated. 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20133 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  snmplib/cert_util.c: Simplified r19594 (leak-at-exit fix). 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20132 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_openssl.c: Fixed a compiler warning that was
+
+ introduced in r20113.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20131 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_openssl.c: Fixed a compiler warning that was
+
+ introduced in r20113.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20130 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES, NEWS: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20128 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20127 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20126 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20125 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm, 
+      perl/SNMP/SNMP.pm, perl/TrapReceiver/TrapReceiver.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm, snmplib/snmp_version.c:
+      Version
+
+ number update git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20124 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * Makefile.top: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20123 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/snmpd.c: Fix main agent select call to use the renamed API
+
+ routine.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20122 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/snmpd.c: Fix main agent select call to use the renamed API
+
+ routine.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20122 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-13  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ Bring the naming of the large_fd_set select call into line with the
+ rest of the API.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20121 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-13  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ Bring the naming of the large_fd_set select call into line with the
+ rest of the API.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20121 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-13  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ Bring the naming of the large_fd_set select call into line with the
+ rest of the API.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20121 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-13  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ CHANGES: snmplib: PATCH: 3203806: Add the function
+ netsnmp_large_select() (plus tweaks to netsnmp_large_fd_set_resize) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20120 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: CHANGES: snmplib: realloc+init
+
+ instead of calloc  inspired by patch 3195532 from Stephen Hemminger git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20119 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: CHANGES: snmplib: realloc+init
+
+ instead of calloc  inspired by patch 3195532 from Stephen Hemminger git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20119 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: CHANGES: snmplib: realloc+init
+
+ instead of calloc  inspired by patch 3195532 from Stephen Hemminger git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20119 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-forward-mib/data_access/route_common.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c, include/net-snmp/library/container_binary_array.h:
+
+ CHANGES: snmpd: PATCH: optimizations for large route tables from
+ Stephen Hemminger  applied parts 1-3 of 4 from him (msgs to coders on 2/28/11; subject  ip-forward-mib performance improvements; part 4 needs more work git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20118 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-forward-mib/data_access/route_common.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c: CHANGES: snmpd: PATCH: optimizations for large route
+
+ tables from Stephen Hemminger  applied parts 1-3 of 4 from him (msgs to coders on 2/28/11; subject  ip-forward-mib performance improvements; part 4 needs more work git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20118 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-forward-mib/data_access/route_common.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c: CHANGES: snmpd: PATCH: optimizations for large route
+
+ tables from Stephen Hemminger  applied parts 1-3 of 4 from him (msgs to coders on 2/28/11; subject  ip-forward-mib performance improvements; part 4 needs more work git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20118 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpTLSBaseDomain.c: CHANGES: snmplib: add more
+
+ openssl error cases where we check for local cert git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20117 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpTLSBaseDomain.c: CHANGES: snmplib: add more
+
+ openssl error cases where we check for local cert git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20117 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk.c: MinGW: dskTable: Report zero for
+
+ unimplemented fields instead of random data.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20116 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk.c: MinGW: dskTable: Report zero for
+
+ unimplemented fields instead of random data.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20116 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed race
+
+ condition in hrSWRunTable Treat the reads from /proc/<pid>/*
+ carefuly, processes can exit in the middle of processing.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20115 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed race
+
+ condition in hrSWRunTable Treat the reads from /proc/<pid>/*
+ carefuly, processes can exit in the middle of processing.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20115 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/disman/schedule/schedCore.c: CHANGES: snmpd: Builds
+
+ with most recent MinGW (having #define localtime_r).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20114 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/disman/schedule/schedCore.c: CHANGES: snmpd: Builds
+
+ with most recent MinGW (having #define localtime_r).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20114 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/cert_util.c, snmplib/snmp_openssl.c: CHANGES: snmplib:
+
+ refine cert debugging; remove unused function git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20113 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/cert_util.c, snmplib/snmp_openssl.c: CHANGES: snmplib:
+
+ refine cert debugging; remove unused function git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20113 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/cert_util.c: CHANGES: snmpd: BUG: 3205765: handle reconfig
+
+ for certSecName token git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20112 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/cert_util.c: CHANGES: snmpd: BUG: 3205765: handle reconfig
+
+ for certSecName token git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20112 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/snmpd.c: Spelling fix in a source code comment: messges ->
+
+ messages.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20111 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/snmpd.c: Spelling fix in a source code comment: messges ->
+
+ messages.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20111 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/large_fd_set.c: CHANGES: snmplib: PATCH: 3203806: Minor
+
+ performance optimization of netsnmp_large_fd_set_resize().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20110 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/large_fd_set.c: CHANGES: snmplib: PATCH: 3203806: Minor
+
+ performance optimization of netsnmp_large_fd_set_resize().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20110 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/snmpd.c: CHANGES: snmpd: PATCH: 3203806: Avoid that the main
+
+ agent processing loop - when using more than FD_SETSIZE file
+ descriptors - can cause memory corruption by invoking select().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20109 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/snmpd.c: CHANGES: snmpd: PATCH: 3203806: Avoid that the main
+
+ agent processing loop - when using more than FD_SETSIZE file
+ descriptors - can cause memory corruption by invoking select().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20109 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ CHANGES: snmplib: PATCH: 3203806: Add the function
+ netsnmp_large_select().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20108 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ CHANGES: snmplib: PATCH: 3203806: Add the function
+ netsnmp_large_select().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20108 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c: 
+
+ Fixed two compiler warnings (backported r20098 from the trunk).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20107 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  testing/fulltests/support/clib_build, 
+      testing/fulltests/unit-tests/T009large_fd_set_clib.c: Added a
+
+ minimal unit test for netsnmp_large_fd_set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20106 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  testing/fulltests/support/clib_build, 
+      testing/fulltests/unit-tests/T009large_fd_set_clib.c: Added a
+
+ minimal unit test for netsnmp_large_fd_set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20106 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/large_fd_set.c: CHANGES: snmplib: PATCH: 3203806: Make
+
+ netsnmp_large_fd_set_resize() clear all relevant file descriptors.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20105 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/large_fd_set.c: CHANGES: snmplib: PATCH: 3203806: Make
+
+ netsnmp_large_fd_set_resize() clear all relevant file descriptors.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20105 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: CHANGES: snmpd: BUG: 3178389: Fix inconsistent
+
+ handling of TZ offsets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20104 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: CHANGES: snmpd: BUG: 3178389: Fix inconsistent
+
+ handling of TZ offsets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20104 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: CHANGES: snmpd: BUG: 3178389: Fix inconsistent
+
+ handling of TZ offsets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20104 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: CHANGES: snmpd: BUG: 3178389: Fix inconsistent
+
+ handling of TZ offsets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20104 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: CHANGES: snmpd: BUG: 3178389: Fix inconsistent
+
+ handling of TZ offsets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20104 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * apps/Makefile.in, configure, configure.d/config_os_libs2: make
+
+ variable names match git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20099 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c: 
+
+ Fixed two compiler warnings.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20098 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure, configure.d/config_os_libs2: fixed installation
+
+ variables for the optional SET programs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20097 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/remove-unneeded-modules: chmod a+x git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20096 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/removeifdefcode.pl: print an error if the end of
+
+ a file was reached and we're not back into the state we can write;
+ otherwise a closing #ifdef is missing.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20095 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/transports/snmpUnixDomain.c: fix endif comment to match
+
+ the opening ifdef git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20094 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/removeifdefcode.pl: reset the canwrite flag for
+
+ every file git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20093 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/remove-unneeded-modules: temporarily leave in
+
+ header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20092 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure, configure.ac: change the unique file check to one that
+
+ is not in the mibgroup directory git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20091 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/read-only/T0141snmpv2csetfail_simple: a test for
+
+ ensuring the agent rejects SET requests with --enable-read-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20090 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/default/T0141snmpv2cset_simple: add back in the
+
+ stopagent command git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20089 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  testing/fulltests/unit-tests/T101pdu_type_clib.c, 
+      testing/fulltests/unit-tests/T102pdu_build_clib.c, 
+      testing/fulltests/unit-tests/T103pdu_parse_clib.c: unit tests
+      writen
+
+ for the read-only support converted to work with or without
+ read-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20088 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/default/T0141snmpv2cset_simple: don't run the
+
+ set test if no_write_support is turned on git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20087 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/default/T030snmpv3usercreation_simple: skip if
+
+ no_write_support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20086 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/default/T0141snmpv2cset_simple: A new test to
+
+ check whether SNMPv2c SETs to sysContact work as expected git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20085 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/default/Svanyconfig: allow for v2c SET support
+
+ testing git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20084 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/vacm_conf.c: Allow for single quotes for vacm
+
+ context name quoting too git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20083 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: fix the configure tests to include the word test in the
+
+ test git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20082 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure.d/config_os_libs2: fix the configure tests to include
+
+ the word test in the test git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20081 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/remove-unneeded-modules: Added an annoyingly long
+
+ list of exceptions that needs to be automated git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20080 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/remove-unneeded-modules: A quick perl script to
+
+ remove unneeded code modules from the modules directory git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20079 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/target/target.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+      snmplib/cert_util.c, snmplib/snmpusm.c, snmplib/vacm.c: more
+
+ improvements (removements) for featurization and read-only support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20078 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: CHANGES: snmplib: PATCH:
+
+ 3195537: Minor binary_array container sort optimization git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20077 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: CHANGES: snmplib: PATCH:
+
+ 3195537: Minor binary_array container sort optimization git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20077 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-06  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c: Tabs to spaces
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20076 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-06  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c: Tabs to spaces
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20076 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-06  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      configure.d/config_os_functions: Configure check for gethostname2
+
+ Use getaddrinfo if available. Now works for Solaris (and Windows?) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20075 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-06  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      configure.d/config_os_functions: Configure check for gethostname2
+
+ Use getaddrinfo if available. Now works for Solaris (and Windows?) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20075 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * apps/snmptest.c: Add dropped ||'s from r20072 git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20074 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h, 
+      agent/mibgroup/disman/nslookup/lookupResultsTable.c: Clean up, and
+
+ cosolidate result table row creation into a new function.  Saves 200
+ lines of code, with (hopefully) no functionality change git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20073 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h, 
+      agent/mibgroup/disman/nslookup/lookupResultsTable.c: Clean up, and
+
+ cosolidate result table row creation into a new function.  Saves 200
+ lines of code, with (hopefully) no functionality change git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20073 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  apps/Makefile.in, apps/snmptest.c, configure, 
+      configure.d/config_os_libs2: don't build SET related apps with
+
+ --enable-read-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20072 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/baby_steps.c, 
+      agent/mibgroup/disman/event/mteEvent.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c, 
+      agent/mibgroup/mibII/snmp_mib.c, agent/mibgroup/mibII/updates.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.c, agent/mibgroup/target/target.c, 
+      include/net-snmp/agent/baby_steps.h, 
+      include/net-snmp/agent/snmp_agent.h, snmplib/snmp_client.c: fix
+
+ issues with combining --enable-minimalist and --enable-read-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20071 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/find-unused-code: better output for finding
+
+ object symbols.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20070 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Mike Baer <baerm@susers.sourceforge.net>
+
+   * local/minimalist/removeifdefcode.pl: last commit: changes to allow
+
+ parsing of featuers files to get all minimalist tags which are then
+ processed for removal this commit: changed comments/white space git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20069 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Mike Baer <baerm@susers.sourceforge.net>
+
+   *  agent/mibgroup/agent/extend.c: added no_write support to extend.c
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20068 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Mike Baer <baerm@susers.sourceforge.net>
+
+   * agent/helpers/instance.c: Added missing #endif comment for remove
+
+ ifdef code support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20067 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Mike Baer <baerm@susers.sourceforge.net>
+
+   * local/minimalist/removeifdefcode.pl: added changes to allow code
+
+ removal in-place (i.e. does not require creating a new file) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20066 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Mike Baer <baerm@susers.sourceforge.net>
+
+   * local/minimalist/ignore.regexp: adding a ignore.regexp file that
+
+ can be used with removeifdefcode.pl git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20065 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: add a outgoing link to the
+
+ parent marking page git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20064 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  local/minimalist/feature-makedocs: Added a wiki output mode
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20063 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: Note that the org output is the
+
+ default in the help output git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20062 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/vmstat_linux.c: CHANGES: snmpd: fixed
+
+ 'truncating integer value > 32 bits' in UCD-SNMP-MIB::systemStats on
+ Linux git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20061 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/vmstat_linux.c: CHANGES: snmpd: fixed
+
+ 'truncating integer value > 32 bits' in UCD-SNMP-MIB::systemStats on
+ Linux git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20061 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/vmstat_linux.c: CHANGES: snmpd: fixed
+
+ 'truncating integer value > 32 bits' in UCD-SNMP-MIB::systemStats on
+ Linux git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20061 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/vmstat_linux.c: CHANGES: snmpd: fixed
+
+ 'truncating integer value > 32 bits' in UCD-SNMP-MIB::systemStats on
+ Linux git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20061 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/helpers/watcher.c, 
+      agent/mibgroup/agentx/master.c, agent/mibgroup/agentx/subagent.c, 
+      agent/mibgroup/header_complex.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c, agent/mibgroup/mibII/kernel_linux.c, 
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/var_route.c,
+       agent/mibgroup/notification-log-mib/notification_log.c, 
+      agent/mibgroup/snmpv3/snmpEngine.c, 
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/util_funcs.c, 
+      agent/mibgroup/utilities/iquery.c, snmplib/snmp_api.c:
+
+ reclassification of the remaining features into a hierarchy git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20060 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_openssl.c: don't double-declare cert_utils git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20059 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c: the
+
+ ipaddress_linux was incorrectly marked as needing cert_fingerprints git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20058 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/agent_registry.c: put the agent_registry feature in
+
+ libnetsnmpagent.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20057 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/libsnmp_dll/libsnmp.def: CHANGES: Win32: Deprecated
+
+ libsnmp.def - add NETSNMP_IMPORT to function declarations instead to
+ export a function from netsnmp.dll.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20056 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/libsnmp_dll/libsnmp.def: CHANGES: Win32: Deprecated
+
+ libsnmp.def - add NETSNMP_IMPORT to function declarations instead to
+ export a function from netsnmp.dll.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20056 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_debug.h: Moved a source code comment
+
+ such that it is again immediately above the function declarations it
+ applies to.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20055 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpIPv6BaseDomain.h, 
+      include/net-snmp/library/snmp_debug.h: Added missing
+      NETSNMP_IMPORT
+
+ declarations.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20054 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpIPv6BaseDomain.h, 
+      include/net-snmp/library/snmp_debug.h: Added missing
+      NETSNMP_IMPORT
+
+ declarations.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20054 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/libagent/libagent.def, win32/libucdmibs/libucdmibs.def: 
+
+ Removed two obsolete Win32 files.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20053 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/libagent/libagent.def, win32/libucdmibs/libucdmibs.def: 
+
+ Removed two obsolete Win32 files.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20053 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: Trivial comment fix:
+
+ snmpIPv6BaseDomain.c contains IPv6 base transport support functions
+ instead of IPv4.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20052 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: Trivial comment fix:
+
+ snmpIPv6BaseDomain.c contains IPv6 base transport support functions
+ instead of IPv4.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20052 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/config.h: Removed an obsolete file.  git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20050 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmp_secmod.h, win32/snmpsm_shutdown.h, 
+      win32/snmpv3-security-includes.h: Builds again with Visual Studio
+
+ after the introduction of the "feature" feature.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20049 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/snmpsm_init.h: Removed a misleading comment.  git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20048 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * configure, configure.d/config_os_libs2: Correct the check of
+
+ wether usm security is enabled.  Regenerate configure.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20047 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * include/net-snmp/net-snmp-config.h.in: Regenerate git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20046 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c: Add missing dependencies git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20045 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/snmpusm.c: Ignore the return value from
+
+ snmp_increment_statistic git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20044 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container.c: Split the container_compare_functions feature
+
+ into container_compare_mem, container_compare_long,
+ container_compare_ulong, container_compare_int32 and
+ container_compare_uint32 Unify the structure of the compare
+ functions further.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20043 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container.c: Change the spelling of the
+
+ container_compare_cstring feature to container_ncompare_cstring as
+ that is the function that is guarded by that attribute.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20042 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h: Add the missing replacement
+
+ macro for snmp_init_statistics git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20041 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h: snmp_increment_statistic_by
+
+ takes two arguments so let the replacement macro take two arguments
+ as well.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20040 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-27  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/disman/nslookup/lookupCtlTable.c: Fix typo in
+
+ r19990 git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20039 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * local/minimalist/feature-check: Remove lines starting with #define
+
+ in the output of the preprocessor When gcc -E is called with -ggdb3
+ (or -dD) then all the macro definitions are passed through the
+ preprocessor and that messes up our processing.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20038 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * Makefile.rules: Put the generated file in the build tree, not the
+
+ source tree.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20037 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/agent_trap.c, agent/helpers/table_dataset.c, 
+      agent/mibgroup/disman/event/mteEvent.c, 
+      agent/mibgroup/disman/event/mteTrigger.c, 
+      agent/mibgroup/disman/schedule/schedCore.c, 
+      agent/mibgroup/hardware/cpu/cpu.c, 
+      agent/mibgroup/hardware/memory/hw_mem.c, 
+      agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/host/data_access/swrun.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c, agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_inter
+       face.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_interface.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interf
+       ace.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.
+       c, agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c: moved a bunch of features into the libnetsnmpmibs feature set.
+       git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20036 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/agent_handler.c, agent/agent_index.c, 
+      agent/agent_registry.c, agent/agent_trap.c, 
+      agent/helpers/all_helpers.c, agent/helpers/cache_handler.c, 
+      agent/helpers/table.c, agent/helpers/table_array.c, 
+      agent/helpers/table_data.c, agent/helpers/table_dataset.c, 
+      agent/helpers/table_iterator.c, agent/helpers/table_row.c, 
+      agent/snmp_agent.c, local/minimalist/sizetests, snmplib/mib.c:
+
+ classified libnetsnmpagent features git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20035 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: reverse the order of the libraries
+
+ (snmplib first) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20034 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: output cleanup and added agent-mibs
+
+ and logging options git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20033 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: add a default set of arguments
+
+ calculate resulting sizes git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20032 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/dir_utils.c: Added a missing ; git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20031 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: prefix the output files with a number
+
+ to indicate order git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20030 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: save the results of the system
+
+ executions git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20029 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: enable building of the resulting
+
+ combinations Add a -n flag for dry-runs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20028 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  local/minimalist/sizetests: enable the -t tag for limiting types
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20027 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: Added argument parsing and arguments
+
+ for selecting and listing types git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20026 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: generate configure script arguments
+
+ from specs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20025 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: added a bunch of new feature options
+
+ and cleaned up a bit git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20024 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: added a new (not yet working) script
+
+ to test sizing of various argument sets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20023 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Simplify the code. Unify some
+
+ debug logs.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20022 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Reduce the scope of a few
+
+ variables git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20021 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   *  agent/mibgroup/ucd-snmp/dlmod.c: Remove some unused includes. 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20020 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Make it possible to
+
+ initialize/uninitialize modules with 64 character names and not
+ suffer wild writes.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20019 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Code restructuring - put the
+
+ managed routines before the managment code.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20018 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c, agent/mibgroup/ucd-snmp/dlmod.h: 
+
+ CHANGES: libnetsnmpmibs: Make all functions in the dlmod module that
+ don't have to be public static git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20017 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Rename deinit_dlmod to
+
+ shutdown_dlmod as that is what it really is about.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20016 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Mike Baer <baerm@susers.sourceforge.net>
+
+   * agent/mibgroup/agent/nsVacmAccessTable.c: adding minimalist ifdefs
+
+ to net-snmp-vacm mib git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20015 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: properly handle twin children;
+
+ also sort the child list alphabetically.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20014 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_logging.c: I suppose logging should probably default
+
+ to being a wanted option :-) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20013 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: org-link the files in the
+
+ output git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20012 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  Makefile.rules, agent/Makefile.in, agent/mibgroup/Makefile.in, 
+      apps/Makefile.in, apps/snmpnetstat/Makefile.in, 
+      local/minimalist/feature-check, snmplib/Makefile.in: make the
+
+ features-check script track the full source path git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20011 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: change the function names to
+
+ match that it's printing to org-mode at the moment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20010 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/file_utils.c, snmplib/mib.c, snmplib/oid_stash.c, 
+      snmplib/snmp_api.c, snmplib/snmp_logging.c, snmplib/tools.c: last
+      of
+
+ the feature classification in libnetsnmp git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20009 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/keytools.c, snmplib/lcd_time.c, snmplib/scapi.c: make the
+
+ usm_support utilities self-declare themselves as children to make
+ sure they're properly included during dependency ordering git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20008 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/callback.c, snmplib/cert_util.c, snmplib/check_varbind.c, 
+      snmplib/container.c, snmplib/data_list.c, snmplib/default_store.c,
+       snmplib/fd_event_manager.c, snmplib/file_utils.c, 
+      snmplib/keytools.c, snmplib/snmpusm.c: superstructuralizationizing
+
+ the features git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20007 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/read_config.c, snmplib/snmp-tc.c, snmplib/snmp_client.c, 
+      snmplib/snmp_enum.c, snmplib/snmp_transport.c, snmplib/system.c, 
+      snmplib/text_utils.c, snmplib/tools.c, 
+      snmplib/transports/snmpUnixDomain.c, snmplib/ucd_compat.c:
+
+ significant parent/child feature classification git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20006 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c, snmplib/snmpusm.c: classify a few components
+
+ into a top-level libnetsnmp component git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20005 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/keytools.c, snmplib/lcd_time.c, snmplib/scapi.c, 
+      snmplib/snmpusm.c: structurize the usm features git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20004 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/container.c, snmplib/container_iterator.c, 
+      snmplib/container_list_ssll.c, snmplib/container_null.c, 
+      snmplib/dir_utils.c: structure the container features into a
+
+ hierarchy git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20003 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_logging.c: group the logging handlers under a parent
+
+ feature git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20002 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  local/minimalist/feature-makedocs: fix the expect argument count
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20001 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: fix the name of the expected
+
+ input file git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20000 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: argument parsing and usage()
+
+ output git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19999 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/stash_cache.c, agent/helpers/stash_to_next.c, 
+      agent/helpers/table_dataset.c, agent/helpers/table_iterator.c, 
+      agent/mibgroup/examples/netSnmpHostsTable.c, 
+      agent/mibgroup/mibII/ipCidrRouteTable.c, snmplib/oid_stash.c: -
+      added two oid_stash functions as individual features - cleaned up
+      some warnings in the table_iterator code git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19998 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  dist/makerelease.xml: Fix the command to create a new SVN tag line
+      (Having brought the structure of the 5.5.x branch  into line with
+      the other branches, the previous  command is now wrong for *all*
+      branches, rather  than just most of them!) git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19997 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  dist/makerelease.xml: Fix the command to create a new SVN tag line
+      (Having brought the structure of the 5.5.x branch  into line with
+      the other branches, the previous  command is now wrong for *all*
+      branches, rather  than just most of them!) git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19997 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  dist/makerelease.xml: Fix the command to create a new SVN tag line
+      (Having brought the structure of the 5.5.x branch  into line with
+      the other branches, the previous  command is now wrong for *all*
+      branches, rather  than just most of them!) git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19997 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  dist/makerelease.xml: Fix the command to create a new SVN tag line
+      (Having brought the structure of the 5.5.x branch  into line with
+      the other branches, the previous  command is now wrong for *all*
+      branches, rather  than just most of them!) git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19997 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3, 
+      man/netsnmp_agent_handler.h.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_container_iterator.3, 
+      man/netsnmp_container_iterator.h.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_monitor_callback_header_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_null_container.3, man/netsnmp_oid_stash.3, 
+      man/netsnmp_old_api.3, man/netsnmp_read_config.3, 
+      man/netsnmp_read_only.3, man/netsnmp_row_merge.3, 
+      man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3, 
+      man/netsnmp_serialize.3, man/netsnmp_snmp_agent.3, 
+      man/netsnmp_snmp_alarm.3, man/netsnmp_snmp_client.3, 
+      man/netsnmp_snmp_logging.3, man/netsnmp_snmp_pdu.3, 
+      man/netsnmp_snmp_session.3, man/netsnmp_stash_cache.3, 
+      man/netsnmp_stash_to_next.3, man/netsnmp_table.3, 
+      man/netsnmp_table_array.3, man/netsnmp_table_container.3, 
+      man/netsnmp_table_data.3, man/netsnmp_table_dataset.3, 
+      man/netsnmp_table_generic.3, man/netsnmp_table_indexes.3, 
+      man/netsnmp_table_iterator.3, man/netsnmp_table_iterator.h.3, 
+      man/netsnmp_table_maintenance.3, man/netsnmp_table_row.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, 
+      man/netsnmp_tools.h.3, man/netsnmp_util.3,
+      man/netsnmp_utilities.3,  man/netsnmp_variable_list.3,
+      man/netsnmp_watcher.3: documentation
+
+ update git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19995 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec, perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm,
+       perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+      perl/TrapReceiver/TrapReceiver.pm, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm: Version number update
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19994 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19993 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec, perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm,
+       perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+      perl/TrapReceiver/TrapReceiver.pm, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm: Version number update
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19992 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpv3.c: Avoid a possible crash if the engineID is not
+
+ available or set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19991 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpv3.c: Avoid a possible crash if the engineID is not
+
+ available or set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19991 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpv3.c: Avoid a possible crash if the engineID is not
+
+ available or set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19991 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpv3.c: Avoid a possible crash if the engineID is not
+
+ available or set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19991 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpv3.c: Avoid a possible crash if the engineID is not
+
+ available or set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19991 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Mike Baer <baerm@susers.sourceforge.net>
+
+   *  agent/mibgroup/disman/event/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/event/mteEventSetTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/event/mteObjectsTable.c, 
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/event/mteTriggerTable.c, 
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/mteObjectsTable.c, 
+      agent/mibgroup/disman/mteObjectsTable.h, 
+      agent/mibgroup/disman/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/mteTriggerBooleanTable.h, 
+      agent/mibgroup/disman/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/mteTriggerDeltaTable.h, 
+      agent/mibgroup/disman/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/mteTriggerExistenceTable.h, 
+      agent/mibgroup/disman/mteTriggerTable.c, 
+      agent/mibgroup/disman/mteTriggerTable.h, 
+      agent/mibgroup/disman/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/mteTriggerThresholdTable.h, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h: adding ifdef code
+
+ for minimalist support of diffman mib git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19990 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Mike Baer <baerm@susers.sourceforge.net>
+
+   *  agent/mibgroup/host/hrSWRunTable.c, 
+      agent/mibgroup/host/hr_system.c, agent/mibgroup/host/hr_system.h:
+
+ Adding minimalist ifdefs to host resource mib git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19989 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_iterator.c, snmplib/data_list.c: mark the
+
+ data_list function that's only used in stach_caching as a feature git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19988 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_iterator.c: whoops.  git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19987 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/table_iterator.c: more missing stash references
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19986 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_iterator.c: ifdefed/featured out a missing
+
+ stash_cache section git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19985 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/util_funcs.c: make the prefix_info more
+
+ hierarchical and sub-feature the unused one git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19984 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/find-unused-code: do include the perl/python code
+
+ when searching for files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19983 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_tdata.c: make the semi-used table_tdata
+
+ functions children of table_tdata_all instead of just table_tdata git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19982 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/helpers/table_tdata.c: Correct typo git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19981 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/parse.c: Correct typo git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19980 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/snmp_vars.c: proper include of prototype git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19979 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  configure, configure.d/config_modules_agent, 
+      configure.d/config_modules_transports, 
+      configure.d/config_project_with_enable: compat some feature header
+
+ chicken and egg problems git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19978 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/snmp_vars.c: Include required prototype git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19977 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/snmpusm.c: unsigned juggling to remove warnings git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19976 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c,
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c:
+
+ unsigned juggling to remove warnings git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19975 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c,
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c:
+
+ unsigned juggling to remove warnings git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19975 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib.h: Enable (probably forgotten)
+
+ ipAddressPrefixTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19974 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib.h: Enable (probably forgotten)
+
+ ipAddressPrefixTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19974 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  local/minimalist/feature-check, 
+      local/minimalist/feature-makedocs,
+      local/minimalist/feature-remove, 
+      local/minimalist/find-unused-code, 
+      local/minimalist/removeifdefcode.pl: added other missing 'new'
+      files
+
+ not included in the minimalist patch file git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19973 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c: Loading
+
+ IPv6 data is a no-no when IPv6 not enabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19972 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c: Loading
+
+ IPv6 data is a no-no when IPv6 not enabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19972 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix bug 3118631: snmptable segfaults if index
+
+ contains : character git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19971 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix bug 3118631: snmptable segfaults if index
+
+ contains : character git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19971 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix bug 3118631: snmptable segfaults if index
+
+ contains : character git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19971 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix bug 3118631: snmptable segfaults if index
+
+ contains : character git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19971 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix bug 3118631: snmptable segfaults if index
+
+ contains : character git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19971 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * include/net-snmp/system/freebsd8.h: FreeBSD 8 support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19970 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * include/net-snmp/system/freebsd8.h: FreeBSD 8 support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19970 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * include/net-snmp/system/freebsd8.h: FreeBSD 8 support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19970 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * include/net-snmp/system/freebsd8.h: FreeBSD 8 support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19970 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/net-snmp-features.h: added missing
+
+ net-snmp-features.h git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19969 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  Makefile.in, Makefile.rules, Makefile.top, agent/Makefile.in, 
+      agent/agent_handler.c, agent/agent_index.c, 
+      agent/agent_read_config.c, agent/agent_registry.c, 
+      agent/agent_trap.c, agent/helpers/all_helpers.c, 
+      agent/helpers/baby_steps.c, agent/helpers/cache_handler.c, 
+      agent/helpers/instance.c, agent/helpers/mode_end_call.c, 
+      agent/helpers/multiplexer.c, agent/helpers/old_api.c, 
+      agent/helpers/read_only.c, agent/helpers/row_merge.c, 
+      agent/helpers/scalar.c, agent/helpers/scalar_group.c, 
+      agent/helpers/snmp_get_statistic.c, agent/helpers/stash_cache.c, 
+      agent/helpers/stash_to_next.c, agent/helpers/table.c, 
+      agent/helpers/table_array.c, agent/helpers/table_container.c, 
+      agent/helpers/table_data.c, agent/helpers/table_dataset.c, 
+      agent/helpers/table_iterator.c, agent/helpers/table_row.c, 
+      agent/helpers/table_tdata.c, agent/helpers/watcher.c, 
+      agent/mibgroup/Makefile.in, agent/mibgroup/Rmon/alarmTable.c, 
+      agent/mibgroup/agent/extend.c, agent/mibgroup/agent/nsCache.c, 
+      agent/mibgroup/agent/nsLogging.c, 
+      agent/mibgroup/agent/nsModuleTable.c, 
+      agent/mibgroup/agent/nsTransactionTable.c, 
+      agent/mibgroup/agent/nsVacmAccessTable.c, 
+      agent/mibgroup/agentx/agentx_config.c, 
+      agent/mibgroup/agentx/client.c, agent/mibgroup/agentx/master.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/subagent.c, 
+      agent/mibgroup/disman/event/mteEvent.c, 
+      agent/mibgroup/disman/event/mteEventConf.c, 
+      agent/mibgroup/disman/event/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/event/mteEventSetTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/event/mteObjectsTable.c, 
+      agent/mibgroup/disman/event/mteTrigger.c, 
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/event/mteTriggerConf.c, 
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/event/mteTriggerTable.c, 
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/expr/expErrorTable.c, 
+      agent/mibgroup/disman/expr/expExpressionConf.c, 
+      agent/mibgroup/disman/expr/expExpressionTable.c, 
+      agent/mibgroup/disman/expr/expObjectConf.c, 
+      agent/mibgroup/disman/expr/expObjectTable.c, 
+      agent/mibgroup/disman/expression/expExpressionTable.c, 
+      agent/mibgroup/disman/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/mteEventTable.c, 
+      agent/mibgroup/disman/mteTriggerTable.c, 
+      agent/mibgroup/disman/schedule/schedConf.c, 
+      agent/mibgroup/disman/schedule/schedCore.c, 
+      agent/mibgroup/disman/schedule/schedTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interfac
+       e.c, agent/mibgroup/examples/data_set.c, 
+      agent/mibgroup/examples/delayed_instance.c, 
+      agent/mibgroup/examples/netSnmpHostsTable.c, 
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns.c, 
+      agent/mibgroup/examples/scalar_int.c, 
+      agent/mibgroup/hardware/cpu/cpu.c, 
+      agent/mibgroup/hardware/cpu/cpu_kinfo.c, 
+      agent/mibgroup/hardware/cpu/cpu_nlist.c, 
+      agent/mibgroup/hardware/cpu/cpu_perfstat.c, 
+      agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/memory/hw_mem.c, 
+      agent/mibgroup/header_complex.c, 
+      agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/host/data_access/swinst_darwin.c, 
+      agent/mibgroup/host/data_access/swinst_pkginfo.c, 
+      agent/mibgroup/host/data_access/swinst_rpm.c, 
+      agent/mibgroup/host/data_access/swrun.c, 
+      agent/mibgroup/host/hr_filesys.c, agent/mibgroup/host/hr_swinst.c,
+       agent/mibgroup/host/hr_system.c,
+      agent/mibgroup/host/hrh_filesys.c, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       .c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c, agent/mibgroup/ip-mib/data_access/arp_common.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_
+       access.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_inter
+       face.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_int
+       erface.c, agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+       agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_access.c, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_int
+       erface.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interfa
+       ce.c, agent/mibgroup/ip-mib/ip_scalars.c, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_interface.c, agent/mibgroup/mibII/icmp.c, 
+      agent/mibgroup/mibII/interfaces.c, agent/mibgroup/mibII/ip.c, 
+      agent/mibgroup/mibII/ipCidrRouteTable.c, 
+      agent/mibgroup/mibII/ipv6.c, agent/mibgroup/mibII/kernel_linux.c, 
+      agent/mibgroup/mibII/setSerialNo.c, 
+      agent/mibgroup/mibII/snmp_mib_5_5.c, 
+      agent/mibgroup/mibII/sysORTable.c, 
+      agent/mibgroup/mibII/system_mib.c, agent/mibgroup/mibII/tcp.c, 
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udp.c, 
+      agent/mibgroup/mibII/vacm_conf.c, 
+      agent/mibgroup/mibII/vacm_context.c, 
+      agent/mibgroup/mibII/vacm_vars.c,
+      agent/mibgroup/mibII/vacm_vars.h, 
+      agent/mibgroup/mibII/var_route.c, 
+      agent/mibgroup/notification-log-mib/notification_log.c, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.h, 
+      agent/mibgroup/notification/snmpNotifyTable.c, 
+      agent/mibgroup/notification/snmpNotifyTable.h, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
+       , agent/mibgroup/sctp-mib/sctpTables_common.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_data_access.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_interface.c, agent/mibgroup/snmpv3/snmpEngine.c, 
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c, 
+      agent/mibgroup/snmpv3/usmStats.c, 
+      agent/mibgroup/snmpv3/usmStats_5_5.c, 
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/snmpv3/usmUser.h, 
+      agent/mibgroup/snmpv3mibs.h, 
+      agent/mibgroup/target/snmpTargetAddrEntry.c, 
+      agent/mibgroup/target/snmpTargetAddrEntry.h, 
+      agent/mibgroup/target/snmpTargetParamsEntry.c, 
+      agent/mibgroup/target/snmpTargetParamsEntry.h, 
+      agent/mibgroup/target/target.c, 
+      agent/mibgroup/target/target_counters.c, 
+      agent/mibgroup/target/target_counters.h, 
+      agent/mibgroup/target/target_counters_5_5.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_common.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interf
+       ace.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.
+       c, agent/mibgroup/testhandler.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSN
+       Table.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.
+       c, agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c, 
+      agent/mibgroup/ucd-snmp/dlmod.c, 
+      agent/mibgroup/ucd-snmp/extensible.c, 
+      agent/mibgroup/ucd-snmp/lmSensors.c, 
+      agent/mibgroup/ucd-snmp/pass.c, 
+      agent/mibgroup/ucd-snmp/pass_persist.c, 
+      agent/mibgroup/ucd-snmp/proc.c, agent/mibgroup/ucd-snmp/proxy.c, 
+      agent/mibgroup/ucd-snmp/versioninfo.c, 
+      agent/mibgroup/ucd-snmp/vmstat_linux.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c, agent/mibgroup/util_funcs.c,
+      agent/mibgroup/utilities/iquery.c,  agent/mibgroup/winExtDLL.c,
+      agent/snmp_agent.c, agent/snmp_vars.c,  agent/snmpd.c,
+      apps/Makefile.in, apps/agentxtrap.c, 
+      apps/snmpnetstat/Makefile.in, apps/snmpnetstat/main.c, 
+      apps/snmpnetstat/netstat.h, apps/snmpnetstat/route.c, 
+      apps/snmptest.c, apps/snmptranslate.c, apps/snmptrapd.c, 
+      apps/snmptrapd_handlers.c, apps/snmptrapd_sql.c, configure, 
+      configure.ac, configure.d/config_modules_agent, 
+      configure.d/config_modules_lib, 
+      configure.d/config_modules_security_modules, 
+      configure.d/config_modules_transports,
+      configure.d/config_os_libs2, 
+      configure.d/config_project_perl_python, 
+      configure.d/config_project_with_enable, 
+      include/net-snmp/agent/snmp_agent.h, 
+      include/net-snmp/library/libsnmp.h, 
+      include/net-snmp/library/snmp.h, 
+      include/net-snmp/library/snmp_api.h, 
+      include/net-snmp/library/snmp_client.h, 
+      include/net-snmp/library/snmp_secmod.h, 
+      include/net-snmp/library/snmpksm.h, 
+      include/net-snmp/library/snmptsm.h, 
+      include/net-snmp/library/snmpusm.h, 
+      include/net-snmp/library/snmpv3.h, 
+      include/net-snmp/net-snmp-config.h.in, perl/OID/OID.xs, 
+      perl/SNMP/SNMP.xs, perl/agent/agent.xs, snmplib/Makefile.in, 
+      snmplib/callback.c, snmplib/cert_util.c, snmplib/check_varbind.c, 
+      snmplib/container.c, snmplib/container_iterator.c, 
+      snmplib/container_list_ssll.c, snmplib/container_null.c, 
+      snmplib/data_list.c, snmplib/default_store.c, snmplib/dir_utils.c,
+       snmplib/fd_event_manager.c, snmplib/file_utils.c,
+      snmplib/int64.c,  snmplib/keytools.c, snmplib/lcd_time.c,
+      snmplib/mib.c,  snmplib/oid_stash.c, snmplib/parse.c,
+      snmplib/read_config.c,  snmplib/scapi.c, snmplib/snmp-tc.c,
+      snmplib/snmp_api.c,  snmplib/snmp_client.c, snmplib/snmp_enum.c,
+      snmplib/snmp_logging.c,  snmplib/snmp_openssl.c,
+      snmplib/snmp_parse_args.c,  snmplib/snmp_secmod.c,
+      snmplib/snmp_transport.c, snmplib/snmpksm.c,  snmplib/snmptsm.c,
+      snmplib/snmpusm.c, snmplib/snmpv3.c,  snmplib/system.c,
+      snmplib/text_utils.c, snmplib/tools.c, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpSSHDomain.c, 
+      snmplib/transports/snmpTLSBaseDomain.c, 
+      snmplib/transports/snmpTLSTCPDomain.c, 
+      snmplib/transports/snmpUnixDomain.c, snmplib/ucd_compat.c, 
+      testing/fulltests/default/Sv3config, 
+      testing/fulltests/default/Sv3usmconfigbase, 
+      testing/fulltests/default/Sv3vacmconfig, 
+      testing/fulltests/default/T049snmpv3inform_simple, 
+      testing/fulltests/default/T049snmpv3informauth_simple, 
+      testing/fulltests/default/T057trapdauthtest2_simple, 
+      testing/fulltests/default/T057trapdauthtest3_simple, 
+      testing/fulltests/default/T057trapdauthtest_simple, 
+      testing/fulltests/default/T060trapdperl_simple, 
+      testing/fulltests/default/T061agentperl_simple, 
+      testing/fulltests/default/T113agentxtrap_simple, 
+      testing/fulltests/default/T114agentxagentxtrap_simple: NEWS:
+
+ packaging: Enable micro-and-macro-feature management within
+ Net-SNMP; this adds a number of new flags to configure
+ (--enable-minimalist and --enable-read-only).  These changes are
+ designed to remove much of the inline code that isn't always
+ necessary or desired.  Scripts exist (and will be improved) to stip
+ out unused components from the code entirely to enable a shorter
+ review process for upgrading to new releases.  This work was done by
+ Wes Hardaker and Michael Baer from SPARTA, Inc. but is being checked
+ in as a large patch since converting the micro patches from git to
+ svn turend out to be impossible git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19968 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * FAQ: use the wiki URL instead of the tutorial-5 URL for the
+
+ snmptrap tutorial git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19967 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swinst.c: Revert a bogus change that crept
+
+ into the code.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19966 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-22  Dave Shield <dts12@users.sourceforge.net>
+
+   *  AGENT.txt, CHANGES, COPYING, ChangeLog, CodingStyle, 
+      EXAMPLE.conf.def, FAQ, INSTALL, Makefile.am, Makefile.in, 
+      Makefile.rules, Makefile.top, NEWS, PORTING, README, 
+      README.Panasonic_AM3X.txt, README.agent-mibs, README.agentx, 
+      README.aix, README.hpux11, README.irix, README.krb5, README.osX, 
+      README.snmpv3, README.solaris, README.sql, README.thread, 
+      README.tru64, README.win32, TODO, acconfig.h, aclocal.m4, 
+      agent/Makefile.depend, agent/Makefile.in, agent/agent_handler.c, 
+      agent/agent_index.c, agent/agent_read_config.c, 
+      agent/agent_registry.c, agent/agent_sysORTable.c, 
+      agent/agent_trap.c, agent/auto_nlist.c, agent/autonlist.h, 
+      agent/helpers/Makefile.depend, agent/helpers/Makefile.in, 
+      agent/helpers/all_helpers.c, agent/helpers/baby_steps.c, 
+      agent/helpers/bulk_to_next.c, agent/helpers/cache_handler.c, 
+      agent/helpers/debug_handler.c, agent/helpers/instance.c, 
+      agent/helpers/mode_end_call.c, agent/helpers/multiplexer.c, 
+      agent/helpers/null.c, agent/helpers/old_api.c, 
+      agent/helpers/read_only.c, agent/helpers/row_merge.c, 
+      agent/helpers/scalar.c, agent/helpers/scalar_group.c, 
+      agent/helpers/serialize.c, agent/helpers/stash_cache.c, 
+      agent/helpers/stash_to_next.c, agent/helpers/table.c, 
+      agent/helpers/table_array.c, agent/helpers/table_container.c, 
+      agent/helpers/table_data.c, agent/helpers/table_dataset.c, 
+      agent/helpers/table_generic.c, agent/helpers/table_iterator.c, 
+      agent/helpers/table_row.c, agent/helpers/table_tdata.c, 
+      agent/helpers/watcher.c, agent/kernel.c, agent/kernel.h, 
+      agent/m2m.h, agent/mib_modules.c, agent/mibgroup/Makefile.depend, 
+      agent/mibgroup/Makefile.in, agent/mibgroup/README, 
+      agent/mibgroup/README.smux, agent/mibgroup/Rmon.h, 
+      agent/mibgroup/Rmon/README, agent/mibgroup/Rmon/agutil.c, 
+      agent/mibgroup/Rmon/agutil.h, agent/mibgroup/Rmon/agutil_api.h, 
+      agent/mibgroup/Rmon/alarm.c, agent/mibgroup/Rmon/alarm.h, 
+      agent/mibgroup/Rmon/alarmTable.c,
+      agent/mibgroup/Rmon/alarmTable.h,  agent/mibgroup/Rmon/event.c,
+      agent/mibgroup/Rmon/event.h,  agent/mibgroup/Rmon/history.c,
+      agent/mibgroup/Rmon/history.h,  agent/mibgroup/Rmon/row_api.h,
+      agent/mibgroup/Rmon/rows.c,  agent/mibgroup/Rmon/rows.h,
+      agent/mibgroup/Rmon/statistics.c, 
+      agent/mibgroup/Rmon/statistics.h, 
+      agent/mibgroup/Rmon/test_alarm.sh, 
+      agent/mibgroup/Rmon/test_hist.sh, agent/mibgroup/agent/extend.c, 
+      agent/mibgroup/agent/extend.h, agent/mibgroup/agent/nsCache.c, 
+      agent/mibgroup/agent/nsCache.h, agent/mibgroup/agent/nsDebug.c, 
+      agent/mibgroup/agent/nsDebug.h, agent/mibgroup/agent/nsLogging.c, 
+      agent/mibgroup/agent/nsLogging.h, 
+      agent/mibgroup/agent/nsModuleTable.c, 
+      agent/mibgroup/agent/nsModuleTable.h, 
+      agent/mibgroup/agent/nsTransactionTable.c, 
+      agent/mibgroup/agent/nsTransactionTable.h, 
+      agent/mibgroup/agent/nsVacmAccessTable.c, 
+      agent/mibgroup/agent/nsVacmAccessTable.h, 
+      agent/mibgroup/agent_mibs.h, agent/mibgroup/agentx.h, 
+      agent/mibgroup/agentx/agentx_config.c, 
+      agent/mibgroup/agentx/agentx_config.h, 
+      agent/mibgroup/agentx/client.c, agent/mibgroup/agentx/client.h, 
+      agent/mibgroup/agentx/master.c, agent/mibgroup/agentx/master.h, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/master_admin.h, 
+      agent/mibgroup/agentx/protocol.c,
+      agent/mibgroup/agentx/protocol.h, 
+      agent/mibgroup/agentx/subagent.c,
+      agent/mibgroup/agentx/subagent.h, 
+      agent/mibgroup/default_modules.h, agent/mibgroup/disman.h, 
+      agent/mibgroup/disman/event-mib.h, agent/mibgroup/disman/event.h, 
+      agent/mibgroup/disman/event/mteEvent.c, 
+      agent/mibgroup/disman/event/mteEvent.h, 
+      agent/mibgroup/disman/event/mteEventConf.c, 
+      agent/mibgroup/disman/event/mteEventConf.h, 
+      agent/mibgroup/disman/event/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/event/mteEventNotificationTable.h, 
+      agent/mibgroup/disman/event/mteEventSetTable.c, 
+      agent/mibgroup/disman/event/mteEventSetTable.h, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.h, 
+      agent/mibgroup/disman/event/mteObjects.c, 
+      agent/mibgroup/disman/event/mteObjects.h, 
+      agent/mibgroup/disman/event/mteObjectsConf.c, 
+      agent/mibgroup/disman/event/mteObjectsConf.h, 
+      agent/mibgroup/disman/event/mteObjectsTable.c, 
+      agent/mibgroup/disman/event/mteObjectsTable.h, 
+      agent/mibgroup/disman/event/mteScalars.c, 
+      agent/mibgroup/disman/event/mteScalars.h, 
+      agent/mibgroup/disman/event/mteTrigger.c, 
+      agent/mibgroup/disman/event/mteTrigger.h, 
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.h, 
+      agent/mibgroup/disman/event/mteTriggerConf.c, 
+      agent/mibgroup/disman/event/mteTriggerConf.h, 
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.h, 
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.h, 
+      agent/mibgroup/disman/event/mteTriggerTable.c, 
+      agent/mibgroup/disman/event/mteTriggerTable.h, 
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.h, 
+      agent/mibgroup/disman/expr/expErrorTable.c, 
+      agent/mibgroup/disman/expr/expErrorTable.h, 
+      agent/mibgroup/disman/expr/expExpression.c, 
+      agent/mibgroup/disman/expr/expExpression.h, 
+      agent/mibgroup/disman/expr/expExpressionConf.c, 
+      agent/mibgroup/disman/expr/expExpressionConf.h, 
+      agent/mibgroup/disman/expr/expExpressionTable.c, 
+      agent/mibgroup/disman/expr/expExpressionTable.h, 
+      agent/mibgroup/disman/expr/expObject.c, 
+      agent/mibgroup/disman/expr/expObject.h, 
+      agent/mibgroup/disman/expr/expObjectConf.c, 
+      agent/mibgroup/disman/expr/expObjectConf.h, 
+      agent/mibgroup/disman/expr/expObjectTable.c, 
+      agent/mibgroup/disman/expr/expObjectTable.h, 
+      agent/mibgroup/disman/expr/expScalars.c, 
+      agent/mibgroup/disman/expr/expScalars.h, 
+      agent/mibgroup/disman/expr/expValue.c, 
+      agent/mibgroup/disman/expr/expValue.h, 
+      agent/mibgroup/disman/expr/expValueTable.c, 
+      agent/mibgroup/disman/expr/expValueTable.h, 
+      agent/mibgroup/disman/expr/exp_enum.h, 
+      agent/mibgroup/disman/expression-mib.h, 
+      agent/mibgroup/disman/expression.h, 
+      agent/mibgroup/disman/expression/expErrorTable.c, 
+      agent/mibgroup/disman/expression/expErrorTable.h, 
+      agent/mibgroup/disman/expression/expExpressionTable.c, 
+      agent/mibgroup/disman/expression/expExpressionTable.h, 
+      agent/mibgroup/disman/expression/expObjectTable.c, 
+      agent/mibgroup/disman/expression/expObjectTable.h, 
+      agent/mibgroup/disman/expression/expValueTable.c, 
+      agent/mibgroup/disman/expression/expValueTable.h, 
+      agent/mibgroup/disman/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/mteEventNotificationTable.h, 
+      agent/mibgroup/disman/mteEventTable.c, 
+      agent/mibgroup/disman/mteEventTable.h, 
+      agent/mibgroup/disman/mteObjectsTable.c, 
+      agent/mibgroup/disman/mteObjectsTable.h, 
+      agent/mibgroup/disman/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/mteTriggerBooleanTable.h, 
+      agent/mibgroup/disman/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/mteTriggerDeltaTable.h, 
+      agent/mibgroup/disman/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/mteTriggerExistenceTable.h, 
+      agent/mibgroup/disman/mteTriggerTable.c, 
+      agent/mibgroup/disman/mteTriggerTable.h, 
+      agent/mibgroup/disman/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/mteTriggerThresholdTable.h, 
+      agent/mibgroup/disman/nslookup-mib.h, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h, 
+      agent/mibgroup/disman/nslookup/lookupResultsTable.c, 
+      agent/mibgroup/disman/nslookup/lookupResultsTable.h, 
+      agent/mibgroup/disman/old-event-mib.h, 
+      agent/mibgroup/disman/ping-mib.h, 
+      agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.h, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.h, 
+      agent/mibgroup/disman/schedule.h, 
+      agent/mibgroup/disman/schedule/schedConf.c, 
+      agent/mibgroup/disman/schedule/schedConf.h, 
+      agent/mibgroup/disman/schedule/schedCore.c, 
+      agent/mibgroup/disman/schedule/schedCore.h, 
+      agent/mibgroup/disman/schedule/schedTable.c, 
+      agent/mibgroup/disman/schedule/schedTable.h, 
+      agent/mibgroup/disman/traceroute-mib.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.h, 
+      agent/mibgroup/etherlike-mib.h, 
+      agent/mibgroup/etherlike-mib/data_access/dot3stats.h, 
+      agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable.h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_acc
+       ess.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_acc
+       ess.h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get
+       .c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get
+       .h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set
+       .c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set
+       .h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_enums.h,
+      
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interfac
+       e.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interfac
+       e.h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_oids.h,
+       agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h, 
+      agent/mibgroup/examples.h, agent/mibgroup/examples/Makefile.dlmod,
+       agent/mibgroup/examples/data_set.c, 
+      agent/mibgroup/examples/data_set.h, 
+      agent/mibgroup/examples/delayed_instance.c, 
+      agent/mibgroup/examples/delayed_instance.h, 
+      agent/mibgroup/examples/example.c, 
+      agent/mibgroup/examples/example.h, 
+      agent/mibgroup/examples/netSnmpHostsTable.c, 
+      agent/mibgroup/examples/netSnmpHostsTable.h, 
+      agent/mibgroup/examples/netSnmpHostsTable_access.c, 
+      agent/mibgroup/examples/netSnmpHostsTable_access.h, 
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns.c, 
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns.h, 
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns_local.c, 
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns_local.h, 
+      agent/mibgroup/examples/netSnmpHostsTable_columns.h, 
+      agent/mibgroup/examples/netSnmpHostsTable_enums.h, 
+      agent/mibgroup/examples/notification.c, 
+      agent/mibgroup/examples/notification.h, 
+      agent/mibgroup/examples/scalar_int.c, 
+      agent/mibgroup/examples/scalar_int.h, 
+      agent/mibgroup/examples/ucdDemoPublic.c, 
+      agent/mibgroup/examples/ucdDemoPublic.cmds, 
+      agent/mibgroup/examples/ucdDemoPublic.conf, 
+      agent/mibgroup/examples/ucdDemoPublic.h, 
+      agent/mibgroup/examples/watched.c, 
+      agent/mibgroup/examples/watched.h, agent/mibgroup/hardware/cpu.h, 
+      agent/mibgroup/hardware/cpu/cpu.c, 
+      agent/mibgroup/hardware/cpu/cpu.h, 
+      agent/mibgroup/hardware/cpu/cpu_kerndata.c, 
+      agent/mibgroup/hardware/cpu/cpu_kerndata.h, 
+      agent/mibgroup/hardware/cpu/cpu_kinfo.c, 
+      agent/mibgroup/hardware/cpu/cpu_kinfo.h, 
+      agent/mibgroup/hardware/cpu/cpu_kstat.c, 
+      agent/mibgroup/hardware/cpu/cpu_kstat.h, 
+      agent/mibgroup/hardware/cpu/cpu_linux.c, 
+      agent/mibgroup/hardware/cpu/cpu_linux.h, 
+      agent/mibgroup/hardware/cpu/cpu_mach.c, 
+      agent/mibgroup/hardware/cpu/cpu_mach.h, 
+      agent/mibgroup/hardware/cpu/cpu_nlist.c, 
+      agent/mibgroup/hardware/cpu/cpu_nlist.h, 
+      agent/mibgroup/hardware/cpu/cpu_null.c, 
+      agent/mibgroup/hardware/cpu/cpu_null.h, 
+      agent/mibgroup/hardware/cpu/cpu_pcp.c, 
+      agent/mibgroup/hardware/cpu/cpu_pcp.h, 
+      agent/mibgroup/hardware/cpu/cpu_perfstat.c, 
+      agent/mibgroup/hardware/cpu/cpu_perfstat.h, 
+      agent/mibgroup/hardware/cpu/cpu_pstat.c, 
+      agent/mibgroup/hardware/cpu/cpu_pstat.h, 
+      agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/cpu/cpu_sysctl.h, 
+      agent/mibgroup/hardware/cpu/cpu_sysinfo.c, 
+      agent/mibgroup/hardware/cpu/cpu_sysinfo.h, 
+      agent/mibgroup/hardware/fsys.h, 
+      agent/mibgroup/hardware/fsys/fsys_getfsstats.c, 
+      agent/mibgroup/hardware/fsys/fsys_mntctl.c, 
+      agent/mibgroup/hardware/fsys/fsys_mntent.c, 
+      agent/mibgroup/hardware/fsys/hw_fsys.c, 
+      agent/mibgroup/hardware/fsys/hw_fsys.h, 
+      agent/mibgroup/hardware/fsys/mnttypes.h, 
+      agent/mibgroup/hardware/fsys/mounts.h, 
+      agent/mibgroup/hardware/memory.h, 
+      agent/mibgroup/hardware/memory/hw_mem.c, 
+      agent/mibgroup/hardware/memory/hw_mem.h, 
+      agent/mibgroup/hardware/memory/memory_aix.c, 
+      agent/mibgroup/hardware/memory/memory_darwin.c, 
+      agent/mibgroup/hardware/memory/memory_dynix.c, 
+      agent/mibgroup/hardware/memory/memory_freebsd.c, 
+      agent/mibgroup/hardware/memory/memory_hpux.c, 
+      agent/mibgroup/hardware/memory/memory_irix.c, 
+      agent/mibgroup/hardware/memory/memory_linux.c, 
+      agent/mibgroup/hardware/memory/memory_linux.h, 
+      agent/mibgroup/hardware/memory/memory_netbsd.c, 
+      agent/mibgroup/hardware/memory/memory_null.c, 
+      agent/mibgroup/hardware/memory/memory_solaris.c, 
+      agent/mibgroup/hardware/memory/memory_win.c, 
+      agent/mibgroup/hardware/sensors.h, 
+      agent/mibgroup/hardware/sensors/dummy_sensors.c, 
+      agent/mibgroup/hardware/sensors/dummy_sensors.h, 
+      agent/mibgroup/hardware/sensors/hw_sensors.c, 
+      agent/mibgroup/hardware/sensors/hw_sensors.h, 
+      agent/mibgroup/hardware/sensors/kstat_sensors.c, 
+      agent/mibgroup/hardware/sensors/kstat_sensors.h, 
+      agent/mibgroup/hardware/sensors/lmsensors_v2.c, 
+      agent/mibgroup/hardware/sensors/lmsensors_v2.h, 
+      agent/mibgroup/hardware/sensors/lmsensors_v3.c, 
+      agent/mibgroup/hardware/sensors/lmsensors_v3.h, 
+      agent/mibgroup/hardware/sensors/picld_sensors.c, 
+      agent/mibgroup/hardware/sensors/picld_sensors.h, 
+      agent/mibgroup/header_complex.c, agent/mibgroup/header_complex.h, 
+      agent/mibgroup/host.h, agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/host/data_access/swinst.h, 
+      agent/mibgroup/host/data_access/swinst_darwin.c, 
+      agent/mibgroup/host/data_access/swinst_null.c, 
+      agent/mibgroup/host/data_access/swinst_pkginfo.c, 
+      agent/mibgroup/host/data_access/swinst_rpm.c, 
+      agent/mibgroup/host/data_access/swrun.c, 
+      agent/mibgroup/host/data_access/swrun.h, 
+      agent/mibgroup/host/data_access/swrun_cygwin.c, 
+      agent/mibgroup/host/data_access/swrun_darwin.c, 
+      agent/mibgroup/host/data_access/swrun_kinfo.c, 
+      agent/mibgroup/host/data_access/swrun_kvm_proc.c, 
+      agent/mibgroup/host/data_access/swrun_nlist.c, 
+      agent/mibgroup/host/data_access/swrun_null.c, 
+      agent/mibgroup/host/data_access/swrun_procfs_psinfo.c, 
+      agent/mibgroup/host/data_access/swrun_procfs_status.c, 
+      agent/mibgroup/host/data_access/swrun_procinfo.c, 
+      agent/mibgroup/host/data_access/swrun_prpsinfo.c, 
+      agent/mibgroup/host/data_access/swrun_pstat.c, 
+      agent/mibgroup/host/hrSWInstalledTable.c, 
+      agent/mibgroup/host/hrSWInstalledTable.h, 
+      agent/mibgroup/host/hrSWRunPerfTable.c, 
+      agent/mibgroup/host/hrSWRunPerfTable.h, 
+      agent/mibgroup/host/hrSWRunTable.c, 
+      agent/mibgroup/host/hrSWRunTable.h, 
+      agent/mibgroup/host/hr_device.c, agent/mibgroup/host/hr_device.h, 
+      agent/mibgroup/host/hr_disk.c, agent/mibgroup/host/hr_disk.h, 
+      agent/mibgroup/host/hr_filesys.c,
+      agent/mibgroup/host/hr_filesys.h, 
+      agent/mibgroup/host/hr_network.c,
+      agent/mibgroup/host/hr_network.h,  agent/mibgroup/host/hr_other.c,
+      agent/mibgroup/host/hr_other.h, 
+      agent/mibgroup/host/hr_partition.c, 
+      agent/mibgroup/host/hr_partition.h,
+      agent/mibgroup/host/hr_print.c,  agent/mibgroup/host/hr_print.h,
+      agent/mibgroup/host/hr_proc.c,  agent/mibgroup/host/hr_proc.h,
+      agent/mibgroup/host/hr_storage.c, 
+      agent/mibgroup/host/hr_storage.h, agent/mibgroup/host/hr_swinst.c,
+       agent/mibgroup/host/hr_swinst.h, agent/mibgroup/host/hr_swrun.c, 
+      agent/mibgroup/host/hr_swrun.h, agent/mibgroup/host/hr_system.c, 
+      agent/mibgroup/host/hr_system.h,
+      agent/mibgroup/host/hrh_filesys.c, 
+      agent/mibgroup/host/hrh_filesys.h, 
+      agent/mibgroup/host/hrh_storage.c, 
+      agent/mibgroup/host/hrh_storage.h, agent/mibgroup/host_res.h, 
+      agent/mibgroup/if-mib.h, 
+      agent/mibgroup/if-mib/data_access/interface.c, 
+      agent/mibgroup/if-mib/data_access/interface.h, 
+      agent/mibgroup/if-mib/data_access/interface_ioctl.c, 
+      agent/mibgroup/if-mib/data_access/interface_ioctl.h, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/if-mib/data_access/interface_openbsd.c, 
+      agent/mibgroup/if-mib/data_access/interface_solaris2.c, 
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c, 
+      agent/mibgroup/if-mib/data_access/interface_sysctl.h, 
+      agent/mibgroup/if-mib/ifTable.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable_constants.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable_defs.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.h, 
+      agent/mibgroup/if-mib/ifXTable.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_data_access.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_data_access.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.h, 
+      agent/mibgroup/ip-forward-mib.h, 
+      agent/mibgroup/ip-forward-mib/data_access/route.h, 
+      agent/mibgroup/ip-forward-mib/data_access/route_common.c, 
+      agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c, 
+      agent/mibgroup/ip-forward-mib/data_access/route_ioctl.h, 
+      agent/mibgroup/ip-forward-mib/data_access/route_linux.c, 
+      agent/mibgroup/ip-forward-mib/data_access/route_linux.h, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable.h, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       .c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       .h, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _constants.h, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _data_access.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _data_access.h, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.h, agent/mibgroup/ip-forward-mib/ipCidrRouteTable.h, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c,
+      
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h,
+      
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_con
+       stants.h, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_dat
+       a_access.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_dat
+       a_access.h, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.h, agent/mibgroup/ip-mib.h, 
+      agent/mibgroup/ip-mib/data_access/arp.h, 
+      agent/mibgroup/ip-mib/data_access/arp_common.c, 
+      agent/mibgroup/ip-mib/data_access/arp_linux.c, 
+      agent/mibgroup/ip-mib/data_access/defaultrouter.h, 
+      agent/mibgroup/ip-mib/data_access/defaultrouter_common.c, 
+      agent/mibgroup/ip-mib/data_access/defaultrouter_linux.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress.h, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.h, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c, 
+      agent/mibgroup/ip-mib/data_access/ipv6scopezone.h, 
+      agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c, 
+      agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c, 
+      agent/mibgroup/ip-mib/data_access/scalars_common.h, 
+      agent/mibgroup/ip-mib/data_access/scalars_linux.c, 
+      agent/mibgroup/ip-mib/data_access/systemstats.h, 
+      agent/mibgroup/ip-mib/data_access/systemstats_common.c, 
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c, 
+      agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable.h, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_const
+       ants.h, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_
+       access.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_
+       access.h, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_inter
+       face.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_inter
+       face.h, agent/mibgroup/ip-mib/ipAddressPrefixTable.h, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_con
+       stants.h, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.h, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_int
+       erface.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_int
+       erface.h, agent/mibgroup/ip-mib/ipAddressTable.h, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_constants.h, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+      
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.h,
+       agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c,
+      
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h,
+      
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_access.c, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_access.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_get.c, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_get.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_enu
+       ms.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_int
+       erface.c, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_int
+       erface.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_oid
+       s.h, agent/mibgroup/ip-mib/ipIfStatsTable.h, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c,
+      
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.h,
+       agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_enums.h, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.h, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_oids.h, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable.h, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_constan
+       ts.h, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_ac
+       cess.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_ac
+       cess.h, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interfa
+       ce.h, agent/mibgroup/ip-mib/ip_scalars.c, 
+      agent/mibgroup/ip-mib/ip_scalars.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.c, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_constan
+       ts.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_data_ac
+       cess.c, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_data_ac
+       cess.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interfa
+       ce.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagen
+       t.c, agent/mibgroup/ip-mib/ipv6InterfaceTable.h, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_constan
+       ts.h, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_ac
+       cess.c, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_ac
+       cess.h, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interfa
+       ce.h, agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable.h, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le.h, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_data_access.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_data_access.h, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_enums.h, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_interface.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_interface.h, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_oids.h, agent/mibgroup/ipfwchains/README, 
+      agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h, 
+      agent/mibgroup/mibII.h, agent/mibgroup/mibII/at.c, 
+      agent/mibgroup/mibII/at.h, agent/mibgroup/mibII/icmp.c, 
+      agent/mibgroup/mibII/icmp.h, agent/mibgroup/mibII/ifTable.h, 
+      agent/mibgroup/mibII/interfaces.c, 
+      agent/mibgroup/mibII/interfaces.h, agent/mibgroup/mibII/ip.c, 
+      agent/mibgroup/mibII/ip.h, agent/mibgroup/mibII/ipAddr.c, 
+      agent/mibgroup/mibII/ipAddr.h, 
+      agent/mibgroup/mibII/ipCidrRouteTable.c, 
+      agent/mibgroup/mibII/ipCidrRouteTable.h, 
+      agent/mibgroup/mibII/ipCidrRouteTable_access.c, 
+      agent/mibgroup/mibII/ipCidrRouteTable_access.h, 
+      agent/mibgroup/mibII/ipCidrRouteTable_checkfns.c, 
+      agent/mibgroup/mibII/ipCidrRouteTable_checkfns.h, 
+      agent/mibgroup/mibII/ipCidrRouteTable_columns.h, 
+      agent/mibgroup/mibII/ipCidrRouteTable_enums.h, 
+      agent/mibgroup/mibII/ipv6.c, agent/mibgroup/mibII/ipv6.h, 
+      agent/mibgroup/mibII/kernel_linux.c, 
+      agent/mibgroup/mibII/kernel_linux.h, 
+      agent/mibgroup/mibII/kernel_netbsd.c, 
+      agent/mibgroup/mibII/kernel_netbsd.h, 
+      agent/mibgroup/mibII/mibII_common.h, 
+      agent/mibgroup/mibII/mta_sendmail.c, 
+      agent/mibgroup/mibII/mta_sendmail.h, 
+      agent/mibgroup/mibII/route_headers.h, 
+      agent/mibgroup/mibII/route_write.c, 
+      agent/mibgroup/mibII/route_write.h, 
+      agent/mibgroup/mibII/setSerialNo.c, 
+      agent/mibgroup/mibII/setSerialNo.h, 
+      agent/mibgroup/mibII/snmp_mib.c, agent/mibgroup/mibII/snmp_mib.h, 
+      agent/mibgroup/mibII/snmp_mib_5_5.c, 
+      agent/mibgroup/mibII/snmp_mib_5_5.h, 
+      agent/mibgroup/mibII/sysORTable.c, 
+      agent/mibgroup/mibII/sysORTable.h, 
+      agent/mibgroup/mibII/system_mib.c, 
+      agent/mibgroup/mibII/system_mib.h, agent/mibgroup/mibII/tcp.c, 
+      agent/mibgroup/mibII/tcp.h, agent/mibgroup/mibII/tcpTable.c, 
+      agent/mibgroup/mibII/tcpTable.h, agent/mibgroup/mibII/udp.c, 
+      agent/mibgroup/mibII/udp.h, agent/mibgroup/mibII/udpTable.c, 
+      agent/mibgroup/mibII/udpTable.h, agent/mibgroup/mibII/updates.c, 
+      agent/mibgroup/mibII/updates.h, agent/mibgroup/mibII/vacm_conf.c, 
+      agent/mibgroup/mibII/vacm_conf.h, 
+      agent/mibgroup/mibII/vacm_context.c, 
+      agent/mibgroup/mibII/vacm_context.h, 
+      agent/mibgroup/mibII/vacm_vars.c,
+      agent/mibgroup/mibII/vacm_vars.h, 
+      agent/mibgroup/mibII/var_route.c,
+      agent/mibgroup/mibII/var_route.h,  agent/mibgroup/mibdefs.h,
+      agent/mibgroup/mibincl.h,  agent/mibgroup/misc/ipfwacc.c,
+      agent/mibgroup/misc/ipfwacc.h, 
+      agent/mibgroup/notification-log-mib.h, 
+      agent/mibgroup/notification-log-mib/notification_log.c, 
+      agent/mibgroup/notification-log-mib/notification_log.h, 
+      agent/mibgroup/notification.h, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.h, 
+      agent/mibgroup/notification/snmpNotifyTable.c, 
+      agent/mibgroup/notification/snmpNotifyTable.h, 
+      agent/mibgroup/rmon-mib.h, 
+      agent/mibgroup/rmon-mib/data_access/etherstats.h, 
+      agent/mibgroup/rmon-mib/data_access/etherstats_linux.c, 
+      agent/mibgroup/rmon-mib/etherStatsTable.h, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.c, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.h, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access
+       .c, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access
+       .h, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.c,
+      
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.h,
+      
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.c,
+      
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.h,
+       agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_enums.h, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
+       , 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.h
+       , agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_oids.h,
+       agent/mibgroup/rmon-mib/etherStatsTable/ioctl_imp_common.h, 
+      agent/mibgroup/sctp-mib.h, 
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c, 
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h, 
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c, 
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h, 
+      agent/mibgroup/sctp-mib/sctpAssocTable.c, 
+      agent/mibgroup/sctp-mib/sctpAssocTable.h, 
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c, 
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h, 
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c, 
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h, 
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c, 
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h, 
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c, 
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h, 
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c, 
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h, 
+      agent/mibgroup/sctp-mib/sctpScalars.c, 
+      agent/mibgroup/sctp-mib/sctpScalars.h, 
+      agent/mibgroup/sctp-mib/sctpScalars_common.c, 
+      agent/mibgroup/sctp-mib/sctpScalars_common.h, 
+      agent/mibgroup/sctp-mib/sctpScalars_freebsd.c, 
+      agent/mibgroup/sctp-mib/sctpScalars_linux.c, 
+      agent/mibgroup/sctp-mib/sctpTables.h, 
+      agent/mibgroup/sctp-mib/sctpTables_common.c, 
+      agent/mibgroup/sctp-mib/sctpTables_common.h, 
+      agent/mibgroup/sctp-mib/sctpTables_freebsd.c, 
+      agent/mibgroup/sctp-mib/sctpTables_linux.c, agent/mibgroup/smux.h,
+       agent/mibgroup/smux/smux.c, agent/mibgroup/smux/smux.h, 
+      agent/mibgroup/smux/snmp_bgp.c, agent/mibgroup/smux/snmp_bgp.h, 
+      agent/mibgroup/smux/snmp_ospf.c, agent/mibgroup/smux/snmp_ospf.h, 
+      agent/mibgroup/smux/snmp_rip2.c, agent/mibgroup/smux/snmp_rip2.h, 
+      agent/mibgroup/smux_gated.h, 
+      agent/mibgroup/snmp-notification-mib.h, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable.h, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable.h, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_constants.h, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_data_access.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_data_access.h, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters/usmDHParamet
+       ers.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters/usmDHParamet
+       ers.h,
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_access.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_access.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_get.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_get.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_set.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_set.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_doxygen.conf, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_enums.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_interface.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_interface.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_oids.h, agent/mibgroup/snmpv3/snmpEngine.c, 
+      agent/mibgroup/snmpv3/snmpEngine.h, 
+      agent/mibgroup/snmpv3/snmpMPDStats.c, 
+      agent/mibgroup/snmpv3/snmpMPDStats.h, 
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c, 
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.h, 
+      agent/mibgroup/snmpv3/usmConf.c, agent/mibgroup/snmpv3/usmConf.h, 
+      agent/mibgroup/snmpv3/usmStats.c,
+      agent/mibgroup/snmpv3/usmStats.h, 
+      agent/mibgroup/snmpv3/usmStats_5_5.c, 
+      agent/mibgroup/snmpv3/usmStats_5_5.h, 
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/snmpv3/usmUser.h, 
+      agent/mibgroup/snmpv3mibs.h, agent/mibgroup/struct.h, 
+      agent/mibgroup/target.h, 
+      agent/mibgroup/target/snmpTargetAddrEntry.c, 
+      agent/mibgroup/target/snmpTargetAddrEntry.h, 
+      agent/mibgroup/target/snmpTargetParamsEntry.c, 
+      agent/mibgroup/target/snmpTargetParamsEntry.h, 
+      agent/mibgroup/target/target.c, agent/mibgroup/target/target.h, 
+      agent/mibgroup/target/target_counters.c, 
+      agent/mibgroup/target/target_counters.h, 
+      agent/mibgroup/target/target_counters_5_5.c, 
+      agent/mibgroup/target/target_counters_5_5.h, 
+      agent/mibgroup/tcp-mib.h, 
+      agent/mibgroup/tcp-mib/data_access/Makefile, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn.h, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_common.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_private.h, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c, 
+      agent/mibgroup/tcp-mib/tcpConnTable.h, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable.h, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_consta
+       nts.h, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.h, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interf
+       ace.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interf
+       ace.h, agent/mibgroup/tcp-mib/tcpListenerTable.h, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_constants.
+       h, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_acces
+       s.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_acces
+       s.h, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.
+       c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.
+       h, agent/mibgroup/testhandler.c, agent/mibgroup/testhandler.h, 
+      agent/mibgroup/tunnel.h, agent/mibgroup/tunnel/tunnel.c, 
+      agent/mibgroup/tunnel/tunnel.h, agent/mibgroup/ucd-snmp/disk.c, 
+      agent/mibgroup/ucd-snmp/disk.h, agent/mibgroup/ucd-snmp/diskio.c, 
+      agent/mibgroup/ucd-snmp/diskio.h, agent/mibgroup/ucd-snmp/dlmod.c,
+       agent/mibgroup/ucd-snmp/dlmod.h, 
+      agent/mibgroup/ucd-snmp/errormib.c, 
+      agent/mibgroup/ucd-snmp/errormib.h, 
+      agent/mibgroup/ucd-snmp/extensible.c, 
+      agent/mibgroup/ucd-snmp/extensible.h, 
+      agent/mibgroup/ucd-snmp/file.c, agent/mibgroup/ucd-snmp/file.h, 
+      agent/mibgroup/ucd-snmp/hpux.c, agent/mibgroup/ucd-snmp/hpux.h, 
+      agent/mibgroup/ucd-snmp/lmSensors.c, 
+      agent/mibgroup/ucd-snmp/lmSensors.h, 
+      agent/mibgroup/ucd-snmp/lmsensorsMib.c, 
+      agent/mibgroup/ucd-snmp/lmsensorsMib.h, 
+      agent/mibgroup/ucd-snmp/loadave.c, 
+      agent/mibgroup/ucd-snmp/loadave.h, 
+      agent/mibgroup/ucd-snmp/logmatch.c, 
+      agent/mibgroup/ucd-snmp/logmatch.h, 
+      agent/mibgroup/ucd-snmp/memory.c,
+      agent/mibgroup/ucd-snmp/memory.h, 
+      agent/mibgroup/ucd-snmp/memory_aix4.c, 
+      agent/mibgroup/ucd-snmp/memory_aix4.h, 
+      agent/mibgroup/ucd-snmp/memory_darwin7.c, 
+      agent/mibgroup/ucd-snmp/memory_darwin7.h, 
+      agent/mibgroup/ucd-snmp/memory_dynix.c, 
+      agent/mibgroup/ucd-snmp/memory_dynix.h, 
+      agent/mibgroup/ucd-snmp/memory_freebsd2.c, 
+      agent/mibgroup/ucd-snmp/memory_freebsd2.h, 
+      agent/mibgroup/ucd-snmp/memory_hpux.c, 
+      agent/mibgroup/ucd-snmp/memory_hpux.h, 
+      agent/mibgroup/ucd-snmp/memory_netbsd1.c, 
+      agent/mibgroup/ucd-snmp/memory_netbsd1.h, 
+      agent/mibgroup/ucd-snmp/memory_solaris2.c, 
+      agent/mibgroup/ucd-snmp/memory_solaris2.h, 
+      agent/mibgroup/ucd-snmp/pass.c, agent/mibgroup/ucd-snmp/pass.h, 
+      agent/mibgroup/ucd-snmp/pass_persist.c, 
+      agent/mibgroup/ucd-snmp/pass_persist.h, 
+      agent/mibgroup/ucd-snmp/proc.c, agent/mibgroup/ucd-snmp/proc.h, 
+      agent/mibgroup/ucd-snmp/proxy.c, agent/mibgroup/ucd-snmp/proxy.h, 
+      agent/mibgroup/ucd-snmp/versioninfo.c, 
+      agent/mibgroup/ucd-snmp/versioninfo.h, 
+      agent/mibgroup/ucd-snmp/vmstat.c,
+      agent/mibgroup/ucd-snmp/vmstat.h, 
+      agent/mibgroup/ucd-snmp/vmstat_aix4.c, 
+      agent/mibgroup/ucd-snmp/vmstat_aix4.h, 
+      agent/mibgroup/ucd-snmp/vmstat_bsdi4.c, 
+      agent/mibgroup/ucd-snmp/vmstat_bsdi4.h, 
+      agent/mibgroup/ucd-snmp/vmstat_darwin7.c, 
+      agent/mibgroup/ucd-snmp/vmstat_darwin7.h, 
+      agent/mibgroup/ucd-snmp/vmstat_dynix.c, 
+      agent/mibgroup/ucd-snmp/vmstat_dynix.h, 
+      agent/mibgroup/ucd-snmp/vmstat_freebsd2.c, 
+      agent/mibgroup/ucd-snmp/vmstat_freebsd2.h, 
+      agent/mibgroup/ucd-snmp/vmstat_hpux.c, 
+      agent/mibgroup/ucd-snmp/vmstat_hpux.h, 
+      agent/mibgroup/ucd-snmp/vmstat_linux.c, 
+      agent/mibgroup/ucd-snmp/vmstat_linux.h, 
+      agent/mibgroup/ucd-snmp/vmstat_netbsd1.c, 
+      agent/mibgroup/ucd-snmp/vmstat_netbsd1.h, 
+      agent/mibgroup/ucd-snmp/vmstat_solaris2.c, 
+      agent/mibgroup/ucd-snmp/vmstat_solaris2.h, 
+      agent/mibgroup/ucd_snmp.h, agent/mibgroup/udp-mib.h, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint.h, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_private.h, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable.h, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_constants.
+       h, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_acces
+       s.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_acces
+       s.h, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       h, agent/mibgroup/util_funcs.c, agent/mibgroup/util_funcs.h, 
+      agent/mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h, 
+      agent/mibgroup/util_funcs/get_pid_from_inode.c, 
+      agent/mibgroup/util_funcs/get_pid_from_inode.h, 
+      agent/mibgroup/util_funcs/header_generic.c, 
+      agent/mibgroup/util_funcs/header_generic.h, 
+      agent/mibgroup/util_funcs/header_simple_table.c, 
+      agent/mibgroup/util_funcs/header_simple_table.h, 
+      agent/mibgroup/utilities.h, agent/mibgroup/utilities/execute.c, 
+      agent/mibgroup/utilities/execute.h, 
+      agent/mibgroup/utilities/iquery.c, 
+      agent/mibgroup/utilities/iquery.h, 
+      agent/mibgroup/utilities/override.c, 
+      agent/mibgroup/utilities/override.h, 
+      agent/mibgroup/utilities/snmp_get_statistic.c, 
+      agent/mibgroup/utilities/snmp_get_statistic.h, 
+      agent/mibgroup/versiontag, agent/mibgroup/winExtDLL.c, 
+      agent/mibgroup/winExtDLL.h, agent/object_monitor.c, 
+      agent/snmp_agent.c, agent/snmp_perl.c, agent/snmp_perl.h, 
+      agent/snmp_perl.pl, agent/snmp_vars.c, agent/snmpd.c, 
+      agent/snmpd.h, apps/Makefile.depend, apps/Makefile.in, 
+      apps/encode_keychange.c, apps/snmp_perl_trapd.pl, 
+      apps/snmpbulkget.c, apps/snmpbulkwalk.c, apps/snmpdelta.c, 
+      apps/snmpdf.c, apps/snmpget.c, apps/snmpgetnext.c, 
+      apps/snmpnetstat/Makefile.depend, apps/snmpnetstat/Makefile.in, 
+      apps/snmpnetstat/ffs.c, apps/snmpnetstat/if.c, 
+      apps/snmpnetstat/inet.c, apps/snmpnetstat/inet6.c, 
+      apps/snmpnetstat/main.c, apps/snmpnetstat/main.h, 
+      apps/snmpnetstat/netstat.h, apps/snmpnetstat/route.c, 
+      apps/snmpnetstat/winstub.c, apps/snmpnetstat/winstub.h, 
+      apps/snmpset.c, apps/snmpstatus.c, apps/snmptable.c, 
+      apps/snmptest.c, apps/snmptranslate.c, apps/snmptrap.c, 
+      apps/snmptrapd.c, apps/snmptrapd_auth.c, apps/snmptrapd_auth.h, 
+      apps/snmptrapd_ds.h, apps/snmptrapd_handlers.c, 
+      apps/snmptrapd_handlers.h, apps/snmptrapd_log.c, 
+      apps/snmptrapd_log.h, apps/snmptrapd_sql.c, apps/snmpusm.c, 
+      apps/snmpvacm.c, apps/snmpwalk.c, apps/sshtosnmp.c, config.guess, 
+      config.sub, configure, configure.ac, 
+      configure.d/config_modules_agent, configure.d/config_modules_lib, 
+      configure.d/config_os_functions, configure.d/config_os_headers, 
+      configure.d/config_os_libs1, configure.d/config_os_libs2, 
+      configure.d/config_os_misc1, configure.d/config_os_misc2, 
+      configure.d/config_os_misc3, configure.d/config_os_misc4, 
+      configure.d/config_os_progs, configure.d/config_os_struct_members,
+       configure.d/config_project_ipv6_types, 
+      configure.d/config_project_manual, 
+      configure.d/config_project_paths, 
+      configure.d/config_project_perl_python, 
+      configure.d/config_project_types, 
+      configure.d/config_project_with_enable, dist/Makefile, 
+      dist/README.build-scripts, dist/RELEASE-INSTRUCTIONS, 
+      dist/autoconf-version, dist/changelogfix, dist/check-api-change, 
+      dist/cvsshow, dist/cvsup, dist/extractnews, dist/find-requires, 
+      dist/makerelease.xml, dist/net-snmp-solaris-build/DEVENV, 
+      dist/net-snmp-solaris-build/README, 
+      dist/net-snmp-solaris-build/buildpackage-solaris, 
+      dist/net-snmp-solaris-build/elfdepend.sh, dist/net-snmp.spec, 
+      dist/nsb-config, dist/nsb-functions, dist/nsb-nightly, 
+      dist/nsb-package, dist/nsb-platform, dist/patme, 
+      dist/schema-snmptrapd.sql, dist/snmpd-init.d, 
+      dist/snmptrapd-init.d, dist/svnup, doc/rfc/agentx/rfc2741.txt, 
+      doc/rfc/misc/rfc3512.txt, doc/rfc/misc/rfc3584.txt, 
+      doc/rfc/smiV2/rfc2578.txt, doc/rfc/smiV2/rfc2579.errata, 
+      doc/rfc/smiV2/rfc2579.txt, doc/rfc/smiV2/rfc2580.txt, 
+      doc/rfc/snmpV1/rfc1155.txt, doc/rfc/snmpV1/rfc1157.txt, 
+      doc/rfc/snmpV1/rfc1212.txt, doc/rfc/snmpV1/rfc1213.txt, 
+      doc/rfc/snmpV2/rfc1901.txt, doc/rfc/snmpV2/rfc1902.txt, 
+      doc/rfc/snmpV2/rfc1903.txt, doc/rfc/snmpV2/rfc1904.txt, 
+      doc/rfc/snmpV2/rfc1905.txt, doc/rfc/snmpV2/rfc1906.txt, 
+      doc/rfc/snmpV2/rfc1907.txt, doc/rfc/snmpV2/rfc1908.txt, 
+      doc/rfc/snmpV2/rfc2089.txt, doc/rfc/snmpV3/rfc3410.errata, 
+      doc/rfc/snmpV3/rfc3410.txt, doc/rfc/snmpV3/rfc3411.txt, 
+      doc/rfc/snmpV3/rfc3412.txt, doc/rfc/snmpV3/rfc3413.errata, 
+      doc/rfc/snmpV3/rfc3413.txt, doc/rfc/snmpV3/rfc3414.errata, 
+      doc/rfc/snmpV3/rfc3414.txt, doc/rfc/snmpV3/rfc3415.errata, 
+      doc/rfc/snmpV3/rfc3415.txt, doc/rfc/snmpV3/rfc3416.txt, 
+      doc/rfc/snmpV3/rfc3417.txt, doc/rfc/snmpV3/rfc3418.errata, 
+      doc/rfc/snmpV3/rfc3418.txt, dotgdbinit, doxygen.conf, 
+      include/net-snmp/agent/agent_callbacks.h, 
+      include/net-snmp/agent/agent_handler.h, 
+      include/net-snmp/agent/agent_index.h, 
+      include/net-snmp/agent/agent_read_config.h, 
+      include/net-snmp/agent/agent_registry.h, 
+      include/net-snmp/agent/agent_sysORTable.h, 
+      include/net-snmp/agent/agent_trap.h, 
+      include/net-snmp/agent/all_helpers.h, 
+      include/net-snmp/agent/auto_nlist.h, 
+      include/net-snmp/agent/baby_steps.h, 
+      include/net-snmp/agent/bulk_to_next.h, 
+      include/net-snmp/agent/cache_handler.h, 
+      include/net-snmp/agent/debug_handler.h, 
+      include/net-snmp/agent/ds_agent.h, 
+      include/net-snmp/agent/hardware/cpu.h, 
+      include/net-snmp/agent/hardware/fsys.h, 
+      include/net-snmp/agent/hardware/memory.h, 
+      include/net-snmp/agent/hardware/sensors.h, 
+      include/net-snmp/agent/instance.h, include/net-snmp/agent/mfd.h, 
+      include/net-snmp/agent/mib_modules.h, 
+      include/net-snmp/agent/mode_end_call.h, 
+      include/net-snmp/agent/multiplexer.h, 
+      include/net-snmp/agent/net-snmp-agent-includes.h, 
+      include/net-snmp/agent/null.h, 
+      include/net-snmp/agent/object_monitor.h, 
+      include/net-snmp/agent/old_api.h, 
+      include/net-snmp/agent/read_only.h, 
+      include/net-snmp/agent/row_merge.h, 
+      include/net-snmp/agent/scalar.h, 
+      include/net-snmp/agent/scalar_group.h, 
+      include/net-snmp/agent/serialize.h, 
+      include/net-snmp/agent/set_helper.h, 
+      include/net-snmp/agent/snmp_agent.h, 
+      include/net-snmp/agent/snmp_vars.h, 
+      include/net-snmp/agent/stash_cache.h, 
+      include/net-snmp/agent/stash_to_next.h, 
+      include/net-snmp/agent/sysORTable.h, 
+      include/net-snmp/agent/table.h, 
+      include/net-snmp/agent/table_array.h, 
+      include/net-snmp/agent/table_container.h, 
+      include/net-snmp/agent/table_data.h, 
+      include/net-snmp/agent/table_dataset.h, 
+      include/net-snmp/agent/table_iterator.h, 
+      include/net-snmp/agent/table_tdata.h, 
+      include/net-snmp/agent/var_struct.h, 
+      include/net-snmp/agent/watcher.h, include/net-snmp/config_api.h, 
+      include/net-snmp/data_access/arp.h, 
+      include/net-snmp/data_access/defaultrouter.h, 
+      include/net-snmp/data_access/interface.h, 
+      include/net-snmp/data_access/ip_scalars.h, 
+      include/net-snmp/data_access/ipaddress.h, 
+      include/net-snmp/data_access/ipstats.h, 
+      include/net-snmp/data_access/net-snmp-data-access-includes.h, 
+      include/net-snmp/data_access/route.h, 
+      include/net-snmp/data_access/scopezone.h, 
+      include/net-snmp/data_access/swinst.h, 
+      include/net-snmp/data_access/swrun.h, 
+      include/net-snmp/data_access/systemstats.h, 
+      include/net-snmp/data_access/tcpConn.h, 
+      include/net-snmp/data_access/udp_endpoint.h, 
+      include/net-snmp/definitions.h, include/net-snmp/library/README, 
+      include/net-snmp/library/asn1.h, 
+      include/net-snmp/library/callback.h, 
+      include/net-snmp/library/check_varbind.h, 
+      include/net-snmp/library/cmu_compat.h, 
+      include/net-snmp/library/container.h, 
+      include/net-snmp/library/container_binary_array.h, 
+      include/net-snmp/library/container_iterator.h, 
+      include/net-snmp/library/container_list_ssll.h, 
+      include/net-snmp/library/container_null.h, 
+      include/net-snmp/library/data_list.h, 
+      include/net-snmp/library/default_store.h, 
+      include/net-snmp/library/dir_utils.h, 
+      include/net-snmp/library/factory.h, 
+      include/net-snmp/library/fd_event_manager.h, 
+      include/net-snmp/library/file_utils.h, 
+      include/net-snmp/library/getopt.h, 
+      include/net-snmp/library/int64.h, 
+      include/net-snmp/library/keytools.h, 
+      include/net-snmp/library/large_fd_set.h, 
+      include/net-snmp/library/lcd_time.h, 
+      include/net-snmp/library/libsnmp.h,
+      include/net-snmp/library/md5.h,  include/net-snmp/library/mib.h, 
+      include/net-snmp/library/mt_support.h, 
+      include/net-snmp/library/oid_stash.h, 
+      include/net-snmp/library/parse.h, 
+      include/net-snmp/library/read_config.h, 
+      include/net-snmp/library/scapi.h, 
+      include/net-snmp/library/snmp-tc.h, 
+      include/net-snmp/library/snmp.h, 
+      include/net-snmp/library/snmpAAL5PVCDomain.h, 
+      include/net-snmp/library/snmpAliasDomain.h, 
+      include/net-snmp/library/snmpCallbackDomain.h, 
+      include/net-snmp/library/snmpDTLSUDPDomain.h, 
+      include/net-snmp/library/snmpIPXDomain.h, 
+      include/net-snmp/library/snmpSSHDomain.h, 
+      include/net-snmp/library/snmpSTDDomain.h, 
+      include/net-snmp/library/snmpTCPDomain.h, 
+      include/net-snmp/library/snmpTCPIPv6Domain.h, 
+      include/net-snmp/library/snmpUDPDomain.h, 
+      include/net-snmp/library/snmpUDPIPv6Domain.h, 
+      include/net-snmp/library/snmpUnixDomain.h, 
+      include/net-snmp/library/snmp_alarm.h, 
+      include/net-snmp/library/snmp_api.h, 
+      include/net-snmp/library/snmp_assert.h, 
+      include/net-snmp/library/snmp_client.h, 
+      include/net-snmp/library/snmp_debug.h, 
+      include/net-snmp/library/snmp_enum.h, 
+      include/net-snmp/library/snmp_impl.h, 
+      include/net-snmp/library/snmp_logging.h, 
+      include/net-snmp/library/snmp_openssl.h, 
+      include/net-snmp/library/snmp_parse_args.h, 
+      include/net-snmp/library/snmp_secmod.h, 
+      include/net-snmp/library/snmp_service.h, 
+      include/net-snmp/library/snmp_transport.h, 
+      include/net-snmp/library/snmpksm.h, 
+      include/net-snmp/library/snmptsm.h, 
+      include/net-snmp/library/snmpusm.h, 
+      include/net-snmp/library/snmpv3.h, 
+      include/net-snmp/library/system.h, 
+      include/net-snmp/library/text_utils.h, 
+      include/net-snmp/library/tools.h, 
+      include/net-snmp/library/transform_oids.h, 
+      include/net-snmp/library/types.h, 
+      include/net-snmp/library/ucd_compat.h, 
+      include/net-snmp/library/vacm.h, 
+      include/net-snmp/library/winpipe.h, 
+      include/net-snmp/library/winservice.h, 
+      include/net-snmp/machine/generic.h, include/net-snmp/mib_api.h, 
+      include/net-snmp/net-snmp-config.h.in, 
+      include/net-snmp/net-snmp-includes.h, 
+      include/net-snmp/output_api.h, include/net-snmp/pdu_api.h, 
+      include/net-snmp/session_api.h, include/net-snmp/snmpv3_api.h, 
+      include/net-snmp/system/aix.h, include/net-snmp/system/bsd.h, 
+      include/net-snmp/system/bsdi.h, include/net-snmp/system/bsdi3.h, 
+      include/net-snmp/system/bsdi4.h, include/net-snmp/system/cygwin.h,
+       include/net-snmp/system/darwin.h, 
+      include/net-snmp/system/darwin7.h, 
+      include/net-snmp/system/darwin8.h, 
+      include/net-snmp/system/darwin9.h, 
+      include/net-snmp/system/dragonfly.h, 
+      include/net-snmp/system/dynix.h,
+      include/net-snmp/system/freebsd.h, 
+      include/net-snmp/system/freebsd2.h, 
+      include/net-snmp/system/freebsd3.h, 
+      include/net-snmp/system/freebsd4.h, 
+      include/net-snmp/system/freebsd5.h, 
+      include/net-snmp/system/freebsd6.h, 
+      include/net-snmp/system/freebsd7.h, 
+      include/net-snmp/system/generic.h, include/net-snmp/system/hpux.h,
+       include/net-snmp/system/irix.h,
+      include/net-snmp/system/kfreebsd.h, 
+      include/net-snmp/system/linux.h,
+      include/net-snmp/system/mingw32.h, 
+      include/net-snmp/system/mingw32msvc.h, 
+      include/net-snmp/system/mips.h, include/net-snmp/system/netbsd.h, 
+      include/net-snmp/system/openbsd.h, include/net-snmp/system/osf5.h,
+       include/net-snmp/system/solaris.h, 
+      include/net-snmp/system/solaris2.3.h, 
+      include/net-snmp/system/solaris2.4.h, 
+      include/net-snmp/system/solaris2.5.h, 
+      include/net-snmp/system/solaris2.6.h, 
+      include/net-snmp/system/sunos.h, include/net-snmp/system/svr5.h, 
+      include/net-snmp/system/sysv.h, include/net-snmp/system/ultrix4.h,
+       include/net-snmp/types.h, include/net-snmp/utilities.h, 
+      include/net-snmp/varbind_api.h, include/net-snmp/version.h, 
+      include/ucd-snmp/README, include/ucd-snmp/agent_index.h, 
+      include/ucd-snmp/agent_read_config.h, 
+      include/ucd-snmp/agent_registry.h, include/ucd-snmp/agent_trap.h, 
+      include/ucd-snmp/asn1.h, include/ucd-snmp/auto_nlist.h, 
+      include/ucd-snmp/callback.h, include/ucd-snmp/default_store.h, 
+      include/ucd-snmp/ds_agent.h, include/ucd-snmp/header_complex.h, 
+      include/ucd-snmp/int64.h, include/ucd-snmp/keytools.h, 
+      include/ucd-snmp/mib.h, include/ucd-snmp/mib_module_config.h, 
+      include/ucd-snmp/mibincl.h, include/ucd-snmp/parse.h, 
+      include/ucd-snmp/read_config.h, include/ucd-snmp/scapi.h, 
+      include/ucd-snmp/snmp-tc.h, include/ucd-snmp/snmp.h, 
+      include/ucd-snmp/snmp_agent.h, include/ucd-snmp/snmp_alarm.h, 
+      include/ucd-snmp/snmp_api.h, include/ucd-snmp/snmp_client.h, 
+      include/ucd-snmp/snmp_debug.h, include/ucd-snmp/snmp_impl.h, 
+      include/ucd-snmp/snmp_logging.h, 
+      include/ucd-snmp/snmp_parse_args.h, include/ucd-snmp/snmp_vars.h, 
+      include/ucd-snmp/snmpusm.h, include/ucd-snmp/snmpv3.h, 
+      include/ucd-snmp/struct.h, include/ucd-snmp/system.h, 
+      include/ucd-snmp/tools.h, include/ucd-snmp/transform_oids.h, 
+      include/ucd-snmp/ucd-snmp-agent-includes.h, 
+      include/ucd-snmp/ucd-snmp-config.h, 
+      include/ucd-snmp/ucd-snmp-includes.h, 
+      include/ucd-snmp/util_funcs.h, include/ucd-snmp/var_struct.h, 
+      include/ucd-snmp/version.h, install-sh, local/FAQ2HTML, 
+      local/Makefile.in, local/README.mib2c, local/Version-Munge.pl, 
+      local/convertcode, local/fixproc, local/html-add-header-footer.pl,
+       local/html-textfile-fix.pl, local/ipf-mod.pl, local/mib2c, 
+      local/mib2c-conf.d/default-mfd-top.m2c, 
+      local/mib2c-conf.d/details-enums.m2i, 
+      local/mib2c-conf.d/details-node.m2i, 
+      local/mib2c-conf.d/details-table.m2i, 
+      local/mib2c-conf.d/generic-ctx-copy.m2i, 
+      local/mib2c-conf.d/generic-ctx-get.m2i, 
+      local/mib2c-conf.d/generic-ctx-set.m2i, 
+      local/mib2c-conf.d/generic-data-allocate.m2i, 
+      local/mib2c-conf.d/generic-data-context.m2i, 
+      local/mib2c-conf.d/generic-get-char.m2i, 
+      local/mib2c-conf.d/generic-get-decl-bot.m2i, 
+      local/mib2c-conf.d/generic-get-decl.m2i, 
+      local/mib2c-conf.d/generic-get-long.m2i, 
+      local/mib2c-conf.d/generic-get-oid.m2i, 
+      local/mib2c-conf.d/generic-header-bottom.m2i, 
+      local/mib2c-conf.d/generic-header-top.m2i, 
+      local/mib2c-conf.d/generic-source-includes.m2i, 
+      local/mib2c-conf.d/generic-table-constants.m2c, 
+      local/mib2c-conf.d/generic-table-enums.m2c, 
+      local/mib2c-conf.d/generic-table-indexes-from-oid.m2i, 
+      local/mib2c-conf.d/generic-table-indexes-set.m2i, 
+      local/mib2c-conf.d/generic-table-indexes-to-oid.m2i, 
+      local/mib2c-conf.d/generic-table-indexes-varbind-setup.m2i, 
+      local/mib2c-conf.d/generic-table-indexes.m2i, 
+      local/mib2c-conf.d/generic-table-oids.m2c, 
+      local/mib2c-conf.d/generic-value-map-func.m2i, 
+      local/mib2c-conf.d/generic-value-map-reverse.m2i, 
+      local/mib2c-conf.d/generic-value-map.m2i, 
+      local/mib2c-conf.d/m2c-internal-warning.m2i, 
+      local/mib2c-conf.d/m2c_setup_enum.m2i, 
+      local/mib2c-conf.d/m2c_setup_node.m2i, 
+      local/mib2c-conf.d/m2c_setup_table.m2i, 
+      local/mib2c-conf.d/m2c_table_save_defaults.m2i, 
+      local/mib2c-conf.d/mfd-access-container-cached-defines.m2i, 
+      local/mib2c-conf.d/mfd-access-unsorted-external-defines.m2i, 
+      local/mib2c-conf.d/mfd-data-access.m2c, 
+      local/mib2c-conf.d/mfd-data-get.m2c, 
+      local/mib2c-conf.d/mfd-data-set.m2c, 
+      local/mib2c-conf.d/mfd-doxygen.m2c, 
+      local/mib2c-conf.d/mfd-interactive-setup.m2c, 
+      local/mib2c-conf.d/mfd-interface.m2c, 
+      local/mib2c-conf.d/mfd-makefile.m2m, 
+      local/mib2c-conf.d/mfd-persistence.m2i, 
+      local/mib2c-conf.d/mfd-readme.m2c, local/mib2c-conf.d/mfd-top.m2c,
+       local/mib2c-conf.d/node-get.m2i, local/mib2c-conf.d/node-set.m2i,
+       local/mib2c-conf.d/node-storage.m2i, 
+      local/mib2c-conf.d/node-validate.m2i, 
+      local/mib2c-conf.d/node-varbind-validate.m2i, 
+      local/mib2c-conf.d/parent-dependencies.m2i, 
+      local/mib2c-conf.d/parent-set.m2i,
+      local/mib2c-conf.d/subagent.m2c, 
+      local/mib2c-conf.d/syntax-COUNTER64-get.m2i, 
+      local/mib2c-conf.d/syntax-DateAndTime-get.m2d, 
+      local/mib2c-conf.d/syntax-DateAndTime-get.m2i, 
+      local/mib2c-conf.d/syntax-DateAndTime-readme.m2i, 
+      local/mib2c-conf.d/syntax-InetAddress-get.m2i, 
+      local/mib2c-conf.d/syntax-InetAddress-set.m2i, 
+      local/mib2c-conf.d/syntax-InetAddressType-get.m2i, 
+      local/mib2c-conf.d/syntax-InetAddressType-set.m2i, 
+      local/mib2c-conf.d/syntax-RowStatus-dependencies.m2i, 
+      local/mib2c-conf.d/syntax-RowStatus-get.m2i, 
+      local/mib2c-conf.d/syntax-RowStatus-varbind-validate.m2i, 
+      local/mib2c-conf.d/syntax-StorageType-dependencies.m2i, 
+      local/mib2c-conf.d/syntax-TestAndIncr-get.m2i, local/mib2c-update,
+       local/mib2c.access_functions.conf, local/mib2c.array-user.conf, 
+      local/mib2c.check_values.conf,
+      local/mib2c.check_values_local.conf, 
+      local/mib2c.column_defines.conf, local/mib2c.column_enums.conf, 
+      local/mib2c.column_storage.conf, local/mib2c.conf, 
+      local/mib2c.container.conf, local/mib2c.create-dataset.conf, 
+      local/mib2c.emulation.conf, local/mib2c.genhtml.conf, 
+      local/mib2c.int_watch.conf, local/mib2c.iterate.conf, 
+      local/mib2c.iterate_access.conf, local/mib2c.mfd.conf, 
+      local/mib2c.notify.conf, local/mib2c.old-api.conf, 
+      local/mib2c.perl.conf, local/mib2c.raw-table.conf, 
+      local/mib2c.row.conf, local/mib2c.scalar.conf, 
+      local/mib2c.table_data.conf, local/pass_persisttest, 
+      local/passtest, local/passtest.pl, local/snmp-ucd.sh, 
+      local/snmpcheck.def, local/snmpconf, 
+      local/snmpconf.dir/snmp-data/authopts, 
+      local/snmpconf.dir/snmp-data/debugging, 
+      local/snmpconf.dir/snmp-data/mibs, 
+      local/snmpconf.dir/snmp-data/output, 
+      local/snmpconf.dir/snmp-data/snmpconf-config, 
+      local/snmpconf.dir/snmpd-data/acl, 
+      local/snmpconf.dir/snmpd-data/basic_setup, 
+      local/snmpconf.dir/snmpd-data/extending, 
+      local/snmpconf.dir/snmpd-data/monitor, 
+      local/snmpconf.dir/snmpd-data/operation, 
+      local/snmpconf.dir/snmpd-data/snmpconf-config, 
+      local/snmpconf.dir/snmpd-data/system, 
+      local/snmpconf.dir/snmpd-data/trapsinks, 
+      local/snmpconf.dir/snmptrapd-data/authentication, 
+      local/snmpconf.dir/snmptrapd-data/formatting, 
+      local/snmpconf.dir/snmptrapd-data/logging, 
+      local/snmpconf.dir/snmptrapd-data/runtime, 
+      local/snmpconf.dir/snmptrapd-data/snmpconf-config, 
+      local/snmpconf.dir/snmptrapd-data/traphandle, local/snmpdump.pl, 
+      local/tkmib, local/traptoemail, ltmain.sh, 
+      m4/ac_add_search_path.m4, m4/ac_msg_cache.m4, 
+      m4/ac_msg_module_dbg.m4, m4/ac_prompt_user.m4, m4/libtool.m4, 
+      m4/ltoptions.m4, m4/ltsugar.m4, m4/ltversion.m4,
+      m4/lt~obsolete.m4,  m4/netsnmp_arg.m4, m4/netsnmp_search_libs.m4,
+      makedepend.in,  makefileindepend.pl, makenosysdepend.pl,
+      maketarget,  man/Makefile.in, man/add_mibdir.3,
+      man/add_module_replacement.3,  man/config_api.3.def,
+      man/default_store.3.bot,  man/default_store.3.top,
+      man/encode_keychange.1.def,  man/fixproc.1.def,
+      man/get_module_node.3, man/init_mib.3,  man/init_mib_internals.3,
+      man/make_index.pl, man/man_sections.txt,  man/mib2c-update.1.def,
+      man/mib2c.1.def, man/mib2c.conf.5.in,  man/mib2c.extract.pl,
+      man/mib_api.3.def, man/net-snmp-config.1.def, 
+      man/net-snmp-create-v3-user.1.def, 
+      man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3, 
+      man/netsnmp_agent_handler.h.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_container_iterator.3, 
+      man/netsnmp_container_iterator.h.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_example_scalar_int.3, man/netsnmp_handler.3, 
+      man/netsnmp_instance.3, man/netsnmp_iterator_info_s.3, 
+      man/netsnmp_leaf.3, man/netsnmp_library.3, 
+      man/netsnmp_mib_handler_methods.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_monitor_callback_header_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_null_container.3, man/netsnmp_oid_stash.3, 
+      man/netsnmp_old_api.3, man/netsnmp_read_config.3, 
+      man/netsnmp_read_only.3, man/netsnmp_row_merge.3, 
+      man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3, 
+      man/netsnmp_serialize.3, man/netsnmp_set_data.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_row.3, man/netsnmp_table_rows.3, 
+      man/netsnmp_tdata.3, man/netsnmp_tools.h.3, man/netsnmp_util.3, 
+      man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3, man/pdu_api.3.def, man/print_description.3,
+       man/print_mib.3, man/print_objid.3, man/print_value.3, 
+      man/print_variable.3, man/read_all_mibs.3, man/read_mib.3, 
+      man/read_module.3, man/read_module_node.3, man/read_objid.3, 
+      man/session_api.3.def, man/shutdown_mib.3, man/snmp.conf.5.def, 
+      man/snmp_agent_api.3.def, man/snmp_alarm.3.def, 
+      man/snmp_api_errstring.3, man/snmp_close.3, man/snmp_config.5.def,
+       man/snmp_error.3, man/snmp_free_pdu.3, man/snmp_open.3, 
+      man/snmp_perror.3, man/snmp_read.3, man/snmp_select_info.3, 
+      man/snmp_send.3, man/snmp_sess_api.3.def, 
+      man/snmp_sess_async_send.3, man/snmp_sess_close.3, 
+      man/snmp_sess_error.3, man/snmp_sess_init.3, man/snmp_sess_open.3,
+       man/snmp_sess_perror.3, man/snmp_sess_read.3, 
+      man/snmp_sess_select_info.3, man/snmp_sess_send.3, 
+      man/snmp_sess_session.3, man/snmp_sess_timeout.3, 
+      man/snmp_set_mib_warnings.3, man/snmp_set_save_descriptions.3, 
+      man/snmp_timeout.3, man/snmp_trap_api.3.def,
+      man/snmpbulkget.1.def,  man/snmpbulkwalk.1.def, man/snmpcmd.1.def,
+      man/snmpconf.1.def,  man/snmpd.8.def, man/snmpd.conf.5.def,
+      man/snmpd.examples.5.def,  man/snmpd.internal.5.def,
+      man/snmpdelta.1.def, man/snmpdf.1.def,  man/snmpget.1.def,
+      man/snmpgetnext.1.def, man/snmpinform.1,  man/snmpnetstat.1.def,
+      man/snmpset.1.def, man/snmpstatus.1.def,  man/snmptable.1.def,
+      man/snmptest.1.def, man/snmptranslate.1.def,  man/snmptrap.1.def,
+      man/snmptrapd.8.def, man/snmptrapd.conf.5.def,  man/snmpusm.1.def,
+      man/snmpvacm.1.def, man/snmpwalk.1.def,  man/tkmib.1.def,
+      man/traptoemail.1.def, man/varbind_api.3.def, 
+      man/variables.5.def, mibs/AGENTX-MIB.txt, 
+      mibs/DISMAN-EVENT-MIB.txt, mibs/DISMAN-EXPRESSION-MIB.txt, 
+      mibs/DISMAN-NSLOOKUP-MIB.txt, mibs/DISMAN-PING-MIB.txt, 
+      mibs/DISMAN-SCHEDULE-MIB.txt, mibs/DISMAN-SCRIPT-MIB.txt, 
+      mibs/DISMAN-TRACEROUTE-MIB.txt, mibs/EtherLike-MIB.txt, 
+      mibs/HCNUM-TC.txt, mibs/HOST-RESOURCES-MIB.txt, 
+      mibs/HOST-RESOURCES-TYPES.txt, 
+      mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt, 
+      mibs/IANA-LANGUAGE-MIB.txt, mibs/IANA-RTPROTO-MIB.txt, 
+      mibs/IANAifType-MIB.txt, mibs/IF-INVERTED-STACK-MIB.txt, 
+      mibs/IF-MIB.txt, mibs/INET-ADDRESS-MIB.txt, 
+      mibs/IP-FORWARD-MIB.txt, mibs/IP-MIB.txt, 
+      mibs/IPV6-FLOW-LABEL-MIB.txt, mibs/IPV6-ICMP-MIB.txt, 
+      mibs/IPV6-MIB.txt, mibs/IPV6-TC.txt, mibs/IPV6-TCP-MIB.txt, 
+      mibs/IPV6-UDP-MIB.txt, mibs/LM-SENSORS-MIB.txt, mibs/MTA-MIB.txt, 
+      mibs/Makefile.in, mibs/Makefile.mib, mibs/NET-SNMP-AGENT-MIB.txt, 
+      mibs/NET-SNMP-EXAMPLES-MIB.txt, mibs/NET-SNMP-EXTEND-MIB.txt, 
+      mibs/NET-SNMP-MIB.txt, mibs/NET-SNMP-MONITOR-MIB.txt, 
+      mibs/NET-SNMP-PASS-MIB.txt, mibs/NET-SNMP-SYSTEM-MIB.txt, 
+      mibs/NET-SNMP-TC.txt, mibs/NET-SNMP-VACM-MIB.txt, 
+      mibs/NETWORK-SERVICES-MIB.txt, mibs/NOTIFICATION-LOG-MIB.txt, 
+      mibs/README.mibs, mibs/RFC-1215.txt, mibs/RFC1155-SMI.txt, 
+      mibs/RFC1213-MIB.txt, mibs/RMON-MIB.txt, mibs/SCTP-MIB.txt, 
+      mibs/SMUX-MIB.txt, mibs/SNMP-COMMUNITY-MIB.txt, 
+      mibs/SNMP-FRAMEWORK-MIB.txt, mibs/SNMP-MPD-MIB.txt, 
+      mibs/SNMP-NOTIFICATION-MIB.txt, mibs/SNMP-PROXY-MIB.txt, 
+      mibs/SNMP-TARGET-MIB.txt, mibs/SNMP-USER-BASED-SM-MIB.txt, 
+      mibs/SNMP-USM-AES-MIB.txt, mibs/SNMP-USM-DH-OBJECTS-MIB.txt, 
+      mibs/SNMP-VIEW-BASED-ACM-MIB.txt, mibs/SNMPv2-CONF.txt, 
+      mibs/SNMPv2-MIB.txt, mibs/SNMPv2-SMI.txt, mibs/SNMPv2-TC.txt, 
+      mibs/SNMPv2-TM.txt, mibs/TCP-MIB.txt, 
+      mibs/TRANSPORT-ADDRESS-MIB.txt, mibs/TUNNEL-MIB.txt, 
+      mibs/UCD-DEMO-MIB.inc, mibs/UCD-DEMO-MIB.txt, 
+      mibs/UCD-DISKIO-MIB.inc, mibs/UCD-DISKIO-MIB.txt, 
+      mibs/UCD-DLMOD-MIB.inc, mibs/UCD-DLMOD-MIB.txt, 
+      mibs/UCD-IPFILTER-MIB.inc, mibs/UCD-IPFILTER-MIB.txt, 
+      mibs/UCD-IPFWACC-MIB.inc, mibs/UCD-IPFWACC-MIB.txt, 
+      mibs/UCD-SNMP-MIB-OLD.txt, mibs/UCD-SNMP-MIB.inc, 
+      mibs/UCD-SNMP-MIB.txt, mibs/UDP-MIB.txt, mibs/ianalist, 
+      mibs/makehtml.pl, mibs/mibfetch, mibs/nodemap, mibs/rfclist, 
+      mibs/rfcmibs.diff, mibs/smistrip, mkinstalldirs, 
+      net-snmp-config.in, net-snmp-create-v3-user.in, ov/Makefile.in, 
+      ov/README, ov/UCD-Computer, ov/UCD-fields, ov/bitmaps/UCD.20.m, 
+      ov/bitmaps/UCD.20.p, ov/bitmaps/UCD.26.m, ov/bitmaps/UCD.26.p, 
+      ov/bitmaps/UCD.32.m, ov/bitmaps/UCD.32.p, ov/bitmaps/UCD.38.m, 
+      ov/bitmaps/UCD.38.p, ov/bitmaps/UCD.44.m, ov/bitmaps/UCD.44.p, 
+      ov/bitmaps/UCD.50.m, ov/bitmaps/UCD.50.p, ov/bitmaps/UCD.fields, 
+      ov/oid_to_sym.in, ov/oid_to_type.in, perl/ASN/ASN.pm, 
+      perl/ASN/ASN.xs, perl/ASN/Changes, perl/ASN/MANIFEST, 
+      perl/ASN/Makefile.PL, perl/ASN/test.pl, perl/AnyData_SNMP/Changes,
+       perl/AnyData_SNMP/DBD_AnyData.patch, perl/AnyData_SNMP/Format.pm,
+       perl/AnyData_SNMP/INSTALL, perl/AnyData_SNMP/MANIFEST, 
+      perl/AnyData_SNMP/Makefile.PL, perl/AnyData_SNMP/README, 
+      perl/AnyData_SNMP/Storage.pm, perl/AnyData_SNMP/configs/scli, 
+      perl/AnyData_SNMP/configs/unix, perl/AnyData_SNMP/netsh, 
+      perl/Makefile.PL, perl/Makefile.makefiles, perl/Makefile.subs.pl, 
+      perl/OID/Changes, perl/OID/MANIFEST, perl/OID/Makefile.PL, 
+      perl/OID/OID.pm, perl/OID/OID.xs, perl/OID/README, 
+      perl/OID/test.pl, perl/OID/typemap, perl/SNMP/BUG, 
+      perl/SNMP/MANIFEST, perl/SNMP/MANIFEST.SKIP,
+      perl/SNMP/Makefile.PL,  perl/SNMP/README, perl/SNMP/SNMP.pm,
+      perl/SNMP/SNMP.xs,  perl/SNMP/TODO, perl/SNMP/examples/async1.pl, 
+      perl/SNMP/examples/async2.pl, perl/SNMP/examples/bulkwalk.pl, 
+      perl/SNMP/examples/ipforward.pl, perl/SNMP/examples/mibtree.pl, 
+      perl/SNMP/examples/mibwalk.pl, perl/SNMP/examples/pingmib.pl, 
+      perl/SNMP/examples/tablewalk.pl, perl/SNMP/examples/testleak.pl, 
+      perl/SNMP/examples/trap-example.pl, perl/SNMP/hints/irix.pl, 
+      perl/SNMP/hints/solaris.pl, perl/SNMP/perlsnmp.h, 
+      perl/SNMP/t/README, perl/SNMP/t/async.t, perl/SNMP/t/bulkwalk.t, 
+      perl/SNMP/t/conf.t, perl/SNMP/t/conftest.conf, perl/SNMP/t/get.t, 
+      perl/SNMP/t/getnext.t, perl/SNMP/t/mib.t, perl/SNMP/t/mib.txt, 
+      perl/SNMP/t/mibload.t, perl/SNMP/t/notify.t,
+      perl/SNMP/t/session.t,  perl/SNMP/t/set.t,
+      perl/SNMP/t/snmptest.conf,  perl/SNMP/t/startagent.pl,
+      perl/SNMP/typemap,  perl/TrapReceiver/Changes,
+      perl/TrapReceiver/MANIFEST,  perl/TrapReceiver/Makefile.PL,
+      perl/TrapReceiver/README,  perl/TrapReceiver/TrapReceiver.pm, 
+      perl/TrapReceiver/TrapReceiver.xs, perl/TrapReceiver/const-c.inc, 
+      perl/TrapReceiver/const-xs.inc, 
+      perl/TrapReceiver/fallback/const-c.inc, 
+      perl/TrapReceiver/fallback/const-xs.inc, 
+      perl/TrapReceiver/perl_snmptrapd.h, perl/TrapReceiver/ppport.h, 
+      perl/TrapReceiver/t/1.t, perl/TrapReceiver/typemap, 
+      perl/agent/Changes, perl/agent/MANIFEST, perl/agent/Makefile.PL, 
+      perl/agent/Support/Makefile.PL, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/agent.xs, 
+      perl/agent/default_store/Makefile.PL, 
+      perl/agent/default_store/default_store.pm, 
+      perl/agent/default_store/default_store.xs, 
+      perl/agent/default_store/gen, perl/agent/default_store/test.pl, 
+      perl/agent/netsnmp_request_infoPtr.pm, perl/agent/test.pl, 
+      perl/agent/typemap, perl/default_store/Changes, 
+      perl/default_store/MANIFEST, perl/default_store/Makefile.PL, 
+      perl/default_store/README, perl/default_store/default_store.pm, 
+      perl/default_store/default_store.xs, perl/default_store/gen, 
+      perl/default_store/test.pl, perl/default_store/typemap, 
+      perl/make-perl-makefiles, perl/manager/INSTALL, 
+      perl/manager/Makefile.PL, perl/manager/displaytable.pm, 
+      perl/manager/getValues.pm, perl/manager/manager.pm, 
+      perl/manager/setupauth, perl/manager/setupdb, 
+      perl/manager/setupuser, perl/manager/snmptosql, python/LICENSE, 
+      python/README, python/netsnmp/__init__.py, 
+      python/netsnmp/client.py, python/netsnmp/client_intf.c, 
+      python/netsnmp/tests/__init__.py, python/netsnmp/tests/snmpd.conf,
+       python/netsnmp/tests/test.py, python/setup.py, remove-files, 
+      sedscript.in, snmplib/Makefile.depend, snmplib/Makefile.in, 
+      snmplib/asn1.c, snmplib/callback.c, snmplib/check_varbind.c, 
+      snmplib/cmu_compat.c, snmplib/container.c, 
+      snmplib/container_binary_array.c, snmplib/container_iterator.c, 
+      snmplib/container_list_ssll.c, snmplib/container_null.c, 
+      snmplib/data_list.c, snmplib/default_store.c, snmplib/dir_utils.c,
+       snmplib/fd_event_manager.c, snmplib/file_utils.c,
+      snmplib/getopt.c,  snmplib/inet_ntop.c, snmplib/inet_pton.c,
+      snmplib/int64.c,  snmplib/keytools.c, snmplib/large_fd_set.c,
+      snmplib/lcd_time.c,  snmplib/md5.c, snmplib/mib.c,
+      snmplib/mt_support.c,  snmplib/oid_stash.c, snmplib/parse.c,
+      snmplib/pkcs.c,  snmplib/read_config.c, snmplib/scapi.c,
+      snmplib/snmp-tc.c,  snmplib/snmp.c, snmplib/snmpAAL5PVCDomain.c, 
+      snmplib/snmpAliasDomain.c, snmplib/snmpCallbackDomain.c, 
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpIPXDomain.c, 
+      snmplib/snmpSSHDomain.c, snmplib/snmpSTDDomain.c, 
+      snmplib/snmpTCPDomain.c, snmplib/snmpTCPIPv6Domain.c, 
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c, 
+      snmplib/snmpUnixDomain.c, snmplib/snmp_alarm.c,
+      snmplib/snmp_api.c,  snmplib/snmp_auth.c, snmplib/snmp_client.c,
+      snmplib/snmp_debug.c,  snmplib/snmp_enum.c,
+      snmplib/snmp_logging.c,  snmplib/snmp_openssl.c,
+      snmplib/snmp_parse_args.c,  snmplib/snmp_secmod.c,
+      snmplib/snmp_service.c,  snmplib/snmp_transport.c,
+      snmplib/snmp_version.c,  snmplib/snmpksm.c, snmplib/snmptsm.c,
+      snmplib/snmpusm.c,  snmplib/snmpv3.c, snmplib/snprintf.c,
+      snmplib/strlcpy.c,  snmplib/strtok_r.c, snmplib/strtol.c,
+      snmplib/strtoul.c,  snmplib/strtoull.c, snmplib/system.c,
+      snmplib/test_binary_array.c,  snmplib/text_utils.c,
+      snmplib/tools.c, snmplib/ucd-snmp-includes.h, 
+      snmplib/ucd_compat.c, snmplib/vacm.c, snmplib/winpipe.c, 
+      snmplib/winservice.c, snmplib/winservice.mc,
+      snmplib/winservice.rc,  snmplib/winservicerc.rc, stamp-h,
+      stamp-h.in, testing/Makefile.in,  testing/README,
+      testing/RUNTESTS, testing/T.c, testing/T2.sh, 
+      testing/TESTCONF.sh, testing/data.keychange-md5, 
+      testing/data.keychange-sha1, testing/data.keychange-sha1-des, 
+      testing/data.kul-md5, testing/data.kul-sha1, testing/etimetest.c, 
+      testing/eval_oneprogram.sh, testing/eval_onescript.sh, 
+      testing/eval_suite.sh, testing/eval_testlist, 
+      testing/eval_tools.sh, testing/keymanagetest.c,
+      testing/misctest.c,  testing/rfc1213/README, testing/rfc1213/run, 
+      testing/rfc1213/snmpfun.sh, testing/rfc1213/test_fun, 
+      testing/rfc1213/testmib1.sh, testing/rfc1213/testmib2.sh, 
+      testing/rfc1213/testmib3.sh, testing/scapitest.c, 
+      testing/test_keychange.sh, testing/test_kul.sh, 
+      testing/tests/Stransport, testing/tests/Sv1config, 
+      testing/tests/Sv2cconfig, testing/tests/Sv3config, 
+      testing/tests/Sv3usmconfigagent, testing/tests/Sv3usmconfigbase, 
+      testing/tests/Sv3usmconfigtrapd, testing/tests/Sv3vacmconfig, 
+      testing/tests/Svacmconfig, testing/tests/Svanyconfig, 
+      testing/tests/T000configure, testing/tests/T001snmpv1get, 
+      testing/tests/T014snmpv2cget, testing/tests/T015snmpv2cgetnext, 
+      testing/tests/T0160snmpv2cbulkget, 
+      testing/tests/T016snmpv2cgetfail, 
+      testing/tests/T017snmpv2ctov1getfail, 
+      testing/tests/T018snmpv1tov2cgetfail, 
+      testing/tests/T019snmpv2cnosuch, testing/tests/T020snmpv3get, 
+      testing/tests/T021snmpv3getnext, testing/tests/T0220snmpv3bulkget,
+       testing/tests/T022snmpv3getMD5,
+      testing/tests/T023snmpv3getMD5AES, 
+      testing/tests/T023snmpv3getMD5DES,
+      testing/tests/T024snmpv3getSHA1, 
+      testing/tests/T025snmpv3getSHADES, 
+      testing/tests/T026snmpv3getSHAAES,
+      testing/tests/T028snmpv3getfail, 
+      testing/tests/T030snmpv3usercreation, 
+      testing/tests/T035snmpv3trapdusermgmt, 
+      testing/tests/T049snmpv3inform,
+      testing/tests/T049snmpv3informauth, 
+      testing/tests/T049snmpv3informpriv, testing/tests/T050snmpv3trap, 
+      testing/tests/T051snmpv2ctrap, testing/tests/T052snmpv2cinform, 
+      testing/tests/T053agentv1trap, testing/tests/T054agentv2ctrap, 
+      testing/tests/T055agentv1mintrap, 
+      testing/tests/T056agentv2cmintrap,
+      testing/tests/T057trapdauthtest, 
+      testing/tests/T057trapdauthtest2,
+      testing/tests/T057trapdauthtest3, 
+      testing/tests/T058agentauthtrap,
+      testing/tests/T059trapdtraphandle,  testing/tests/T060trapdperl,
+      testing/tests/T061agentperl,  testing/tests/T065agentextend,
+      testing/tests/T100agenthup,  testing/tests/T110agentxget,
+      testing/tests/T111agentxset,  testing/tests/T112agentxsetfail,
+      testing/tests/T113agentxtrap,  testing/tests/T115agentxperl,
+      testing/tests/T120proxyget,  testing/tests/T121proxyset,
+      testing/tests/T122proxysetfail,  testing/tests/T130snmpv1vacmget,
+      testing/tests/T131snmpv2cvacmget, 
+      testing/tests/T132snmpv3vacmget, 
+      testing/tests/T140snmpv1vacmgetfail, 
+      testing/tests/T141snmpv2cvacmgetfail, 
+      testing/tests/T142snmpv3vacmgetfail, 
+      testing/tests/T150solarishostcpu, 
+      testing/tests/T151solarishostdisk, testing/tests/T152hostuptime, 
+      testing/tests/T153solarisswap, testing/tests/T160snmpnetstat, 
+      testing/tests/T200snmpv2cwalkall, testing/tests/T300udp, 
+      testing/tests/T310tcp, testing/tests/T320udpv6, 
+      testing/tests/T330tcpv6, testing/tests/T350unix, 
+      testing/tests/T360dtlsudp, testing/tests/T399alias, 
+      testing/tests/test-localhost.cert, 
+      testing/tests/test-localhost.priv, testing/tests/test-user.cert, 
+      testing/tests/test-user.priv, win32/Configure, 
+      win32/EXAMPLE.conf.win32, win32/Makefile-apps.in, 
+      win32/Makefile.in, win32/MgmtApi-winExtDLL.h, 
+      win32/Snmp-winExtDLL.h, win32/agent_module_dot_conf.h, 
+      win32/agent_module_includes.h, win32/agent_module_inits.h, 
+      win32/build.bat, win32/build.pl, win32/config.h, 
+      win32/config.h.borland, win32/dist/README.build.win32.txt, 
+      win32/dist/README.txt, win32/dist/build-binary.bat, 
+      win32/dist/build-binary.pl, 
+      win32/dist/htmlhelp/Configuration_Overview.html, 
+      win32/dist/htmlhelp/Developer_FAQ.html, 
+      win32/dist/htmlhelp/FAQ.html, 
+      win32/dist/htmlhelp/Help_Caveats.html, 
+      win32/dist/htmlhelp/Introduction.html, 
+      win32/dist/htmlhelp/Net-SNMP.hhc,
+      win32/dist/htmlhelp/Net-SNMP.hhp, 
+      win32/dist/htmlhelp/snmp.conf.win32.html, 
+      win32/dist/htmlhelp/snmpd.conf.win32.html, 
+      win32/dist/htmlhelp/snmptrapd.conf.win32.html, 
+      win32/dist/installer/Add2Path.nsi, 
+      win32/dist/installer/SetEnVar.nsi, 
+      win32/dist/installer/net-snmp.nsi, win32/dist/scripts/create-toc, 
+      win32/dist/scripts/mandir2html, 
+      win32/dist/scripts/net-snmp-perl-test.pl, 
+      win32/dist/scripts/poddir2html, win32/dist/scripts/readme2html, 
+      win32/dist/scripts/txt2html, win32/dist/tosock1.sh, 
+      win32/encode_keychange/encode_keychange.dsp, 
+      win32/install-net-snmp.bat, win32/libagent/Makefile.in, 
+      win32/libagent/libagent.def, win32/libagent/libagent.dsp, 
+      win32/libhelpers/Makefile.in, win32/libhelpers/libhelpers.dsp, 
+      win32/libnetsnmptrapd/Makefile.in, 
+      win32/libnetsnmptrapd/libnetsnmptrapd.dsp, 
+      win32/libsnmp/Makefile.in, win32/libsnmp/libsnmp.dsp, 
+      win32/libsnmp_dll/Makefile.in, win32/libsnmp_dll/libsnmp.def, 
+      win32/libsnmp_dll/libsnmp_dll.dsp,
+      win32/libucdmibs/libucdmibs.def,  win32/local/Makefile.in,
+      win32/local/mib2c.bat,  win32/local/snmpconf.bat,
+      win32/local/traptoemail.bat,  win32/mib_module_dot_conf.h,
+      win32/mib_module_includes.h,  win32/mib_module_inits.h,
+      win32/mib_module_shutdown.h, 
+      win32/net-snmp/agent/agent_module_config.h, 
+      win32/net-snmp/agent/mib_module_config.h, 
+      win32/net-snmp/library/snmpv3-security-includes.h, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in,
+      win32/netsnmpmibs/Makefile.in,  win32/netsnmpmibs/netsnmpmibs.dsp,
+      win32/nmakeperl.bat,  win32/snmpbulkget/snmpbulkget.dsp, 
+      win32/snmpbulkwalk/snmpbulkwalk.dsp, win32/snmpd/Makefile.in, 
+      win32/snmpd/snmpd.dsp, win32/snmpdelta/snmpdelta.dsp, 
+      win32/snmpdf/snmpdf.dsp, win32/snmpget/snmpget.dsp, 
+      win32/snmpgetnext/snmpgetnext.dsp, win32/snmpnetstat/Makefile.in, 
+      win32/snmpnetstat/snmpnetstat.dsp, win32/snmpset/snmpset.dsp, 
+      win32/snmpsm_init.h, win32/snmpstatus/snmpstatus.dsp, 
+      win32/snmptable/snmptable.dsp, win32/snmptest/snmptest.dsp, 
+      win32/snmptranslate/snmptranslate.dsp,
+      win32/snmptrap/snmptrap.dsp,  win32/snmptrapd/Makefile.in,
+      win32/snmptrapd/snmptrapd.dsp,  win32/snmpusm/snmpusm.dsp,
+      win32/snmpvacm/snmpvacm.dsp,  win32/snmpwalk/snmpwalk.dsp,
+      win32/win32.dsw, win32/win32dll.dsw:
+
+ Fix 5.5.x branch structure (part 2) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19965 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swrun_kinfo.c: proper process
+
+ status values for netbsd git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19962 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swrun_kinfo.c: proper process
+
+ status values for netbsd git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19962 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/scapi.c: conditionalize variable git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19961 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/scapi.c: conditionalize variable git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19961 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn.h: tcp-mib/udp-mib
+
+ support for the *bsds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19960 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn.h: tcp-mib/udp-mib
+
+ support for the *bsds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19960 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/mibII.h, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint.h, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c: tcp-mib/udp-mib support for the *bsds git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19959 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/mibII.h, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint.h, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c: tcp-mib/udp-mib support for the *bsds git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19959 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c: Properly end debug message with newline git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19958 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c: Properly end debug message with newline git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19958 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c: remove var
+
+ that shadows the useful one git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19957 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c: remove var
+
+ that shadows the useful one git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19957 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipv6.c: major fiddling to get things working
+
+ for openbsd too. This should really be reworked to use the
+ tcp-mib/udp-mib/data_access git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19956 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipv6.c: major fiddling to get things working
+
+ for openbsd too. This should really be reworked to use the
+ tcp-mib/udp-mib/data_access git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19956 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/mibII/tcpTable.c: fix tcp states for dragonflybsd
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19955 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/mibII/tcpTable.c: fix tcp states for dragonflybsd
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19955 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/mibII.h: enable new tcp/udp mibs for solaris
+      git-svn-id:
+
+
+
+----------------------------------------------------------------------
+
+Changes: V5.7 -> V5.7.1.pre1
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/snmpd.c: fix C++ comments
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec, perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm,
+       perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+      perl/TrapReceiver/TrapReceiver.pm, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm: Version number update:
+
+ 5.7.1.pre1
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.top: version update for 5.7.1.pre1
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit cf4cce4c189cf47f4c489db43b7fa510f8906a1a Merge: df91a9f
+
+ 93e97dc Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon
+ Aug 8 22:15:28 2011 +0100
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : Merge remote-tracking branch 'origin/V5-6-patches' into
+
+ V5-6-patches
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   *  win32/Makefile-apps.in, win32/dist/README.build.win32.txt, 
+      win32/libagent/Makefile.in, win32/libnetsnmptrapd/Makefile.in, 
+      win32/libsnmp/Makefile.in, win32/libsnmp_dll/Makefile.in, 
+      win32/netsnmpmibs/Makefile.in, win32/snmpd/Makefile.in, 
+      win32/snmpnetstat/Makefile.in, win32/snmptrapd/Makefile.in: Define
+
+ _BIND_TO_CURRENT_VCLIBS_VERSION token (as per Alex' build
+ instructions)
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit df16dc2221e993dd3c66650d5e872577ffe6c01b Merge: 714bc82
+
+ 8e5a28d Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 13:56:43 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ffa05b051ac3e2b197195a9989cc7a91fe8d9282 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Mon Aug 8 13:55:38
+ 2011 -0700
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit 714bc82fa01e21a3655824963fa54e9b8042ffb0 Merge: 6fe8fe5
+
+ 3ef1db5 Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon
+ Aug 8 21:21:46 2011 +0100
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit b451607dca015c111e96fdfeb2ddb0661fb4f724 Author: Dave
+
+ Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon Aug 8 21:20:32 2011
+ +0100
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 6fe8fe5294a45bc7e4ea3751a1ad7aa47b5cabb2 Merge: 364f8ff
+
+ f69abe3 Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 22:02:38 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit c94813044a4c4a608e98e80223075c6faf04ee11 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 21:56:15 2011 +0200
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 364f8ffaeb90b4eb0165fc855688cd0626632794 Merge: 3287295
+
+ 7abb926 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 11:24:26 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-6-patches' into
+
+ V5-6-patches
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: display the branch we'll commit to
+
+
+2011-08-08  Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk_hw.c: CHANGES: snmpd: PATCH 3386633:
+
+ from wulf2001: fix integer overflow in disk percent calculations Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 84a775d0557fea97570e41715a3164970b4c03a2 Merge: 6fff1c1
+
+ d373c4f Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 20:12:32 2011 +0200
+
+2011-08-08  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * agent/agent_trap.c: CHANGES: libnetsnmp: PATCH 3387139: from
+
+ yaberauneya: Avoid segfault if trapsess transport element cant be
+ parsed Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: nssfpatchapply: split the
+
+ displayed git commit command into multiple segments
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/helpers/scalar_group.c: CHANGES: snmplib: PATCH: 3386961:
+
+ Make SNMP GET work in an AgentX subagent if write support is
+ disabled via NETSNMP_NO_WRITE_SUPPORT (Mark Rusk).
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/mib.c: CHANGES: snmplib: Fix a crash that could be
+
+ triggered by calling _mibindex_add() with the second argument not
+ equal to -1.
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 6fff1c1ae51b06c9d80faf15373a963d173f14e8 Merge: 837c52e
+
+ 8cc9004 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:58:59 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 8ca7ff1e692caec4186b788c9ae2d27be213290f Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Mon Aug 8 10:33:56
+ 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b8f529cba27c0114b4cb7340cfd449504fa07506 Merge: 0822f2d
+
+ 556e938 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:05:36 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: fix function name typo
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 29882a078a959a0f78b03e01968f1d17b7f6a299 Merge: 5e9bd2f
+
+ 0409c0a Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:03:34 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge of pull/push
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: make nspull/nspush check for a
+
+ clean repo
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: new function "nsmakeall" to test
+
+ building on every branch
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: default to merge
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-7-patches' into
+
+ V5-7-patches
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/tools.h: CHANGES: Windows: Avoid that if
+
+ the Net-SNMP Perl modules have been built with another version of
+ Microsoft Visual Studio than ActivePerl that using one of these Perl
+ modules triggers a "Free to wrong pool" crash. This regression was
+ caused by commit 3b14c59cf8278d410207ff42debda2636426a468 (the
+ netsnmp_free() into SNMP_FREE() changes in the *.xs files).
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit e109539930703cb3052d5241b18ac6fc062faaca Merge: 0c9b6cb
+
+ e46b170 Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 18:34:11 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/mib.c: CHANGES: snmplib: Fix a crash that could be
+
+ triggered by calling _mibindex_add() with the second argument not
+ equal to -1.
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7f42d0d93320484152271427cc9808cbda49bbd0 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 09:50:51 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0c9b6cbe9dbe2ec5217a95b6781fd7dc1f6ebda7 Merge: fa6cef5
+
+ 963320f Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 18:14:36 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a3b8654a232c563bc97cc9925cd98590a30c5bc5 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 17:24:18 2011 +0200
+
+2011-08-07  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit fa6cef5ca91df3a0b03455b68559d2bee248101c Merge: f5fe536
+
+ 8add0da Author: Bart Van Assche <bvanassche@acm.org> Date:   Sun Aug
+ 7 10:18:54 2011 +0200
+
+2011-08-07  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a0dd3caf25926e43465718bf417a464c2fb36366 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Sun Aug 7 10:17:01 2011 +0200
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: 32 is too limited for
+
+ bigger tables; increase the max msg count to 128
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: make rollup and sync support
+
+ --rebase and change the default back to merge
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Win32: Documented how to use build.bat with
+
+ OpenSSL enabled
+
+2011-07-15  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Windows: Remove outdated instructions about
+
+ editing win32\libsnmp_dll\libsnmp.def from README.win32
+
+2011-07-15  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Win32: Document how to build 64-bit
+
+ executables for the x64/amd64 architecture
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit f5fe536e8fd6c48fe243decd31fac9cf1c92f4cc Merge: 7850ea1
+
+ 80928a8 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 15:13:27 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 80928a8909cfab37f01b39a071a3e8ad85956222 Merge: f16a094
+
+ 0dbc869 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 13:57:30 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0dbc869fec07d8e90dbd1c95493ee7cbc623c95c Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 12:40:31 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add
+
+ perl/agent/default_store/default_store.def and perl/SNMP/t
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 86c1e2b9679fec2cd799ba76005c3d60e9d47634 Merge: bcd8635
+
+ f16a094 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 12:20:50 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 2f8d4f5796cbc1c7e967acdaa8019b24f1520a36 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 12:02:51 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/parse.c: Unbreak the V5-4-patches - revert commit
+
+ d2c4768bd2efb48664434a831425c2dda85d7133 (CHANGES: libnetsnmp: PATCH
+ 3362233: from yaberauneya: Mute unnecessary cannot find module
+ noise).
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/mibII/snmp_mib.c, agent/mibgroup/mibII/snmp_mib.h: 
+
+ Unbreak the V5-4-patches branch - was broken by commit
+ bf7178b0b22587d43d1a80c269cd216bd5930214 (agent: change type of
+ snmp_enableauthentraps to long)
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/snmpusm.h: Unbreak the V5-4-patches
+
+ branch - was broken by commit
+ 0e6842fe080cec853b08cd2323015ababc381ce1 (CHANGES: snmptrapd: PATCH
+ 3383441: from sachinsurendran: Fix crash on 5.4.4 due to access of
+ freed memory).
+
+2011-08-05  Thomas Anders <tanders@users.sourceforge.net>
+
+   * NEWS: minor NEWS polish
+
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit bcd86350713822963d376eff582a92f43e426d6c Merge: 9c810a3
+
+ 7a20f71 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 10:28:55 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 3aa949fbdfc1a94a8340ad8baf8b314756a0bb9d Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 10:26:15 2011 +0200
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 9c810a3b37b68573c40337e246e2faf299b77d31 Merge: 71cb2e8
+
+ 610d63f Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 10:42:08 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 943930e1e124385fd94738b6dcda37d29dc7ac7f Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Thu Aug 4 10:41:41
+ 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 4edcb88dae8b2e59dc683e80d414fa7ecec36885 Merge: 65f3eef
+
+ 2dd9ed0 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 10:24:11 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-5-patches' into
+
+ V5-5-patches
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit bc5ca03a04ab19c634a34d060b0b16b7484cb520 Merge: 88fddb7
+
+ 90c0e75 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 19:13:07 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmp_client.c, snmplib/snmpusm.c: snmpusm: Fix recently
+
+ introduced compiler warnings
+
+2011-08-04  Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/memory/memory_netbsd.c: CHANGES: openbsd:
+
+ PATCH 3357932: from t0jw2fu0kmg: Cleaning in memory_netbsd.c Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/fsys/fsys_getfsstats.c: CHANGES: agent:
+
+ PATCH 3386147: from wulf2001: fix UCD-SNMP-MIB::dskUsed Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 473d7e5cd4d411bba20eb85359d8728063301cbd Merge: a4e8b62
+
+ 88fddb7 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:28:22 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 2101bb2d7ad6db038c755aa9193c8ace0dbd4f58 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Thu Aug 4 09:28:06
+ 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * .gitignore: ignore *.orig and *.rej
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: help output describes rebase vs
+
+ merge better
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit f126a17c6a3063455a511940b023047abd9b48ee Merge: ad765f4
+
+ 77a4784 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:25:16 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 452e1707f209ec45e7c7f2a3040ef595fb9d1af6 Merge: dc755a6
+
+ b372e5a Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:25:03 2011 -0700
+
+2011-08-04  Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
+
+   *  Makefile.in, acconfig.h, agent/mibgroup/hardware/cpu.h, 
+      agent/mibgroup/hardware/memory.h, 
+      agent/mibgroup/if-mib/data_access/interface.h, 
+      include/net-snmp/net-snmp-config.h.in, 
+      include/net-snmp/system/openbsd.h, 
+      include/net-snmp/system/openbsd4.h, 
+      include/net-snmp/system/openbsd5.h: CHANGES: openbsd: PATCH
+      3357927:
+
+ from t0jw2fu0kmg: Recognise openbsd5 Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: fix where arguments are set
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: split nssfpatchapply into two
+
+ parts: apply and commiting
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: patch using -N
+
+
+2011-08-04  David Arnold <dja@users.sourceforge.net>
+
+   *  man/default_store.3.bot, man/encode_keychange.1.def, 
+      man/fixproc.1.def, man/mib2c.conf.5.in, man/net-snmp-config.1.def,
+       man/netsnmp_agent_api.3.def, man/netsnmp_mib_api.3.def, 
+      man/snmp.conf.5.def, man/snmpbulkget.1.def,
+      man/snmpbulkwalk.1.def,  man/snmpcmd.1.def, man/snmpconf.1.def,
+      man/snmpd.8.def,  man/snmpd.conf.5.def, man/snmpd.examples.5.def, 
+      man/snmpdelta.1.def, man/snmpdf.1.def, man/snmpget.1.def, 
+      man/snmpgetnext.1.def, man/snmpnetstat.1.def, man/snmpset.1.def, 
+      man/snmpstatus.1.def, man/snmptable.1.def, man/snmptest.1.def, 
+      man/snmptranslate.1.def, man/snmptrap.1.def, man/snmptrapd.8.def, 
+      man/snmptrapd.conf.5.def, man/snmpusm.1.def, man/snmpvacm.1.def, 
+      man/snmpwalk.1.def: CHANGES: man: PATCH 3312861: from dja: Man
+      pages
+
+ hyphen-vs-minus cleanup Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Detect (and reject) OpenSSL
+
+ 1.0.0
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Command-line options for silent
+
+ install
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Ensure Windows package
+
+ uninstalls completely.
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 81c63fb5c5e4abb9c29aca89bf9d694410086e97 Merge: 4a6920a
+
+ dc755a6 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 08:33:34 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_client.c: added spacing to match the later branches
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_client.c: removed accidentially duplicated code
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * Makefile.in: CHANGES: freebsd: PATCH 3363328: from yaberauneya:
+
+ Add FreeBSD 9.x to supported OSes list Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * Makefile.in: CHANGES: freebsd: PATCH 3363328: from yaberauneya:
+
+ Add FreeBSD 9.x to supported OSes list Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/memory/memory_freebsd.c, 
+      agent/mibgroup/mibII/ipAddr.c, snmplib/keytools.c,
+      snmplib/scapi.c:
+
+ CHANGES: building: PATCH 3383951: from yaberauneya: Fix -Wunused
+ compile warnings with FreeBSD/NetBSD Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/memory/memory_freebsd.c, 
+      agent/mibgroup/mibII/ipAddr.c, snmplib/keytools.c,
+      snmplib/scapi.c:
+
+ CHANGES: building: PATCH 3383951: from yaberauneya: Fix -Wunused
+ compile warnings with FreeBSD/NetBSD Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit e878abbdb1808ef83e0a8074536fb54e13219a8b Merge: 403de42
+
+ 878fbf4 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:55:00 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 250afa06892fd897ac31e3836a7ffc9e2b4cf7b9 Merge: 2c14c1c
+
+ 3afc5e0 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:51:33 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 578cd7cce351ae8d904ec3d80be9ba6d1d48a712 Merge: 25988be
+
+ f3bc551 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:50:56 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : autoconf
+
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * configure.d/config_os_struct_members: CHANGES: building: PATCH
+
+ 3383949: from yaberauneya: Fix autoconf tests for sys/mbuf.h Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: prompt for patch and an area, and
+
+ use the proper CHANGES line format
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: Use fetch --all and rebase as
+
+ suggested by Bart for speed improvements
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit d6a1a89e6f648951a9b831932d3cc230821f2d37 Merge: dcb712f
+
+ 872e013 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 12:06:18 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 44969b4e57c27194e5bd357bc45275feb8695d22 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 8 20:52:25 2011 +0200
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/winExtDLL.c: CHANGES: Win32: winExtDLL: Invoke
+
+ SnmpUtilOidFree() before SnmpUtilOidCpy(). It's not clear yet why
+ the original code did not make snmpwalk trigger a memory leak.
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit dcb712ffc86b33583000ef4ae9a51ced25cd15bf Merge: e85cfa5
+
+ 98623ef Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 11:36:17 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 8a01ec6423d400c4a13ccac68a3791d0218a0885 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Aug 4 11:19:17 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit e85cfa599b23b76d97913c96b5d703bff6ba4944 Merge: b056ee6
+
+ e21eef2 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 08:44:43 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/host/data_access/swinst_pkginfo.c: CHANGES: agent:
+
+ Avoid that a MIB walk on the host resources MIB triggers a crash on
+ Fedora 15
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit b056ee6eb53909ad04f16ec26d2690d7a083192a Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Aug 4 07:59:04 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/agent_trap.c, agent/helpers/table_array.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/protocol.c, 
+      agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_acc
+       ess.c, agent/mibgroup/host/data_access/swinst_pkginfo.c, 
+      agent/mibgroup/host/data_access/swrun_procfs_status.c, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c, 
+      agent/mibgroup/mibII/kernel_linux.c, 
+      agent/mibgroup/rmon-mib/data_access/etherstats_linux.c, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access
+       .c, agent/mibgroup/smux/smux.c, agent/mibgroup/snmpv3/usmUser.c, 
+      agent/mibgroup/ucd-snmp/versioninfo.c, agent/snmp_agent.c, 
+      apps/snmpbulkget.c, apps/snmptls.c, apps/snmptrapd_log.c, 
+      perl/SNMP/SNMP.xs, snmplib/container_iterator.c, 
+      snmplib/dir_utils.c, snmplib/snmp_api.c, snmplib/snmp_client.c, 
+      snmplib/snmp_enum.c, snmplib/snmp_openssl.c, snmplib/snmpusm.c, 
+      snmplib/transports/snmpTLSTCPDomain.c: CHANGES: snmplib, snmpd:
+
+ perl: Eliminate dead variables
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ae8e3ecd2df4cf37625944aded1dfe4735d44eea Merge: 73187ce
+
+ 9335e19 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Wed Aug 3 14:37:36 2011 -0700
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 794f9a69d7eb642268200b0a4b199151def66ed0 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Aug 3 14:36:25
+ 2011 -0700
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib.h: Reenable IP-MIB::ipDefaultRouterTable
+      Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib.h: Reenable IP-MIB::ipDefaultRouterTable
+      Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-07-18  Ilya Yanok <yanok@emcraft.com>
+
+   * agent/agent_trap.c, agent/mibgroup/mibII/snmp_mib.c: agent: change
+
+ type of snmp_enableauthentraps to long Type of snmp_enableauthentraps variable is changed from int to long.
+ This fixes the bug with writing to snmpEnableAuthenTraps if server
+ is compiled for 64bit (snmpset reports wrong length). This bug was
+ introduced a long time ago (by faeecd0 commit).  Actually this is a 'less effort' type of fix but I wonder why we
+ need a long to store an INTEGER in the first place? Signed-off-by: Ilya Yanok <yanok@emcraft.com> Signed-off-by: Wes
+ Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 6ad7e28ff9e5e4ebc1358ee39cc9796a44a1bee7 Merge: f2832e3
+
+ 1e154ce Author: Bart Van Assche <bvanassche@acm.org> Date:   Wed Aug
+ 3 19:15:24 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 61b178f1ee8952aa03aa3b1ba51f4a6655e47f01 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Wed Aug 3 18:09:47 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/types.h: Whitespace-only change: fix indentation
+
+ of an #include directive
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * perl/NetSNMP.xs: CHANGES: Perl: Remove file perl/NetSNMP.xs
+
+ because it breaks the Windows build.  To Wes: if you can tell me how to reproduce the problem you observed
+ I'll try to find a portable fix.  This reverts commit d54871f5293675c8058ecce88fed5b646c836323 ("Added
+ a bogus empty .xs file for bundling on newer perl that wants
+ "something"").
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0f489b199adab48b1633ebcaf5ff5a7c22c4cb89 Merge: f4eaa02
+
+ 72a59bc Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Aug
+ 2 10:11:53 2011 +0200
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7fcc0b8032f8da5b7bc30059af0ba656eae71091 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 1 14:11:28 2011 +0200
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_access.c: Fix a compiler warning in
+
+
+ agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
+
+2011-08-01  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add file names and patterns for output
+
+ files generated during the Windows build
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Sort alphabetically
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add apps/sshtosnmp
+
+
+2011-08-01  Bart Van Assche <bvanassche@acm.org>
+
+   *  .gitignore, perl/TrapReceiver/const-c.inc, 
+      perl/TrapReceiver/const-xs.inc: Remove two generated Perl files.
+
+
+2011-08-02  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit f4eaa02d9b076a67d7272de7eef8e9dfbf189bbf Merge: 40125d8
+
+ adadcb9 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Tue Aug 2 00:57:51 2011 +0200
+
+2011-08-02  Thomas Anders <tanders@users.sourceforge.net>
+
+   * dist/nsb-functions: suppress "ok" test output in nsb
+
+
+2011-08-01  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 40125d8539cd89f952fbc24588c5e81e9cd821fe Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Mon Aug 1
+ 13:58:33 2011 +0200
+
+2011-08-01  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 5acf0d2ceb3977964ed39f003073ba64138c2ebd Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Jul 31 23:57:41
+ 2011 +0200
+
+2011-07-31  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a7722a81f9cb7aa8670e7c238601362a31087acc Merge: 242e179
+
+ ae9ac6c Author: Bart Van Assche <bvanassche@acm.org> Date:   Sun Jul
+ 31 09:11:45 2011 +0200
+
+2011-07-31  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/sshtosnmp.c: Fix an incorrect source code comment: there is
+
+ no requirement in the ANSI C standard that stack variables should be
+ initialized to zero.
+
+2011-07-31  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 242e1797b2694a0689856ae36d05d3413aaf8d77 Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Jul 31 01:44:09
+ 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * snmplib/system.c: CHANGES: building: build fix for systems lacking
+
+ getaddrinfo() and EAI_FAIL (e.g. HP-UX 10.20/11.00)
+
+2011-07-30  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 18df759f19b975c449d010bb0a162119bb68360d Merge: 54a44cb
+
+ 7050718 Author: Bart Van Assche <bvanassche@acm.org> Date:   Sat Jul
+ 30 16:39:13 2011 +0200
+
+2011-07-30  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 82d73fb11be3ae31f39c9d618d5388dc9b1006d7 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 29 20:51:27 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, include/net-snmp/net-snmp-config.h.in, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: autoreconf
+
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, include/net-snmp/net-snmp-config.h.in, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: autoreconf
+
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 109f6694d788f48ebd9fc0a1e90c45abc37bea20 Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sat Jul 30 14:22:19
+ 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 7d8100eed459a1ff1a20c067364fa6cb47491309 Merge: 116c24f
+
+ 9e47ac4 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Sat Jul 30 00:20:01 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * dist/nsb-functions, dist/nsb-nightly, dist/nsb-package: minor nsb
+
+ fixes/enhancements from my old svn tree
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 116c24f0f7fb3f99ba646730f61c56d1ae23ba41 Merge: 982fb7f
+
+ 4fc0b8b Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Jul
+ 29 11:31:20 2011 +0200
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit c48173c06a9eaadbf81e6b4962d55ef0a54db251 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 29 10:27:39 2011 +0200
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, ltmain.sh, m4/libtool.m4: Rerun autoreconf
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Sort alphabetically
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add apps/sshtosnmp
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/mibgroup/host/hr_storage.h, 
+      agent/mibgroup/host/hrh_storage.c: Fix two filenames in host mib
+
+ source code comments.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 982fb7fd8bab25c4322aa62c50437036ce296e3e Merge: 1eda675
+
+ 3458128 Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Thu Jul 28 16:24:03 2011 +0200
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Fix potential
+
+ sigsegv when an ifTable entry is removed as result of both
+ interface_replace_old and interface_fadeout at the same time.
+
+2011-07-28  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/sshtosnmp.c: Make apps/sshtosnmp.c build again (was broken by
+
+ commit 612247cdf14c1e745c384cefe1f3fde3e445b347 that changed
+ MSG_NOSIGNAL into NETSNMP_NOSIGNAL)
+
+2011-07-28  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 1eda6753b7fe7d3b3f217c09254ec02d0ee1d0ce Merge: db8b860
+
+ a2f9ece Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Jul
+ 28 15:32:28 2011 +0200
+
+2011-07-28  Niels Baggesen <nba@users.sourceforge.net>
+
+   * configure.d/config_os_functions, configure.d/config_os_libs1: 
+
+ CHANGES: snmpd: Restore storage tables on Linux
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document interface_replace_old option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_replace_old' option to remove old entries in
+ ifTable when an interface with the same name as already exising one
+ appears.  E.g. remove old ppp0 interface when new ppp0 shows up.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document the interface_fadeout option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Allow ifTable
+
+ entries to be deleted immediately when appropriate interface
+ disappears (i.e. interface_fadeout = 0 works as expected).
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_fadeout' configuration option to set
+ lifetime of ifTable entries of removed interfaces.  Previous lifetime was hardcoded 5 minutes, now it's configurable.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit d62a0eb9070b4d8d9fe2bcfdb4d53d37ef814f9b Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Thu Jul 28
+ 14:49:08 2011 +0200
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_replace_old' option to remove old entries in
+ ifTable when an interface with the same name as already exising one
+ appears.  E.g. remove old ppp0 interface when new ppp0 shows up.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document the interface_fadeout option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Allow ifTable
+
+ entries to be deleted immediately when appropriate interface
+ disappears (i.e. interface_fadeout = 0 works as expected).
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_fadeout' configuration option to set
+ lifetime of ifTable entries of removed interfaces.  Previous lifetime was hardcoded 5 minutes, now it's configurable.
+
+2011-07-28  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  apps/sshtosnmp.c, include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h, 
+      snmplib/transports/snmpUDPBaseDomain.c: CHANGES: building: build
+      fix
+
+ for systems lacking MSG_DONTWAIT
+
+2011-07-27  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/mibII/tcp.c: CHANGES: snmpd: Make
+
+ TCP-MIB::tcpCurrEstab work again. Was broken in 5.7 by the
+ introduction of the "features" feature.
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit fb88074fbbc268c7f0509491535aec5fecb05684 Merge: a743ae5
+
+ 3821273 Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Wed Jul 27 14:47:25 2011 +0200
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 31fa07cd9ffde46d41d2b5838c3fc4d01548bfb5 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Wed Jul 27
+ 14:45:47 2011 +0200
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/snmpd.c: CHANGES: snmpd: run signal handlers when select()
+
+ is interrupted.  This behavior is indicated in comment on line 1244, but it was not
+ actually done.
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 2e9466d7f59d65d050277735e4ed9d30719ff752 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 26 13:10:04 2011 +0200
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7708296760eaf5a80d8540746c9c249826fd1bfe Merge: ea11e5e
+
+ cd6e382 Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 26 16:21:41 2011 +0200
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmpUDPIPv6Domain.c: Clarify an IPv6 source code comment
+
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/agent_handler.c, man/netsnmp_handler.3: Spelling fix:
+
+ definedy -> defined
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/helpers/stash_cache.c, man/netsnmp_stash_cache.3: Spelling
+
+ fix: aleviate -> alleviate
+
+2011-07-26  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit dd2c47133493d5a00de6b3cdbcfac7e9d44b6ffe Merge: f9ccbc7
+
+ ea11e5e Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Tue Jul 26 14:25:28 2011 +0200
+
+2011-07-26  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit c5a8464c42a94c250ee2dfa2a473109a734203d8 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Tue Jul 26
+ 14:24:55 2011 +0200
+
+2011-07-25  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit f9ccbc772666134d1d178b505af9ddcdd9ed4244 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Mon Jul 25
+ 15:02:15 2011 +0200
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b0c0a355d5f601a11be4914fbf713716abd30a29 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Jul 19
+ 18:36:11 2011 -0700
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c14fc38614baf10d517136f0480907b7f03d8d74 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Jul 20
+ 13:44:59 2011 -0700
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/testhandler.c: remove broken whitespace lines that
+
+ leads to reading confusion
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ebdd216c074bf41cd3a084bd14689cf01c887b31 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Jul 19
+ 18:36:11 2011 -0700
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * .gitignore: updated gitignore to ignore a number of auto-generated
+
+ files
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/testhandler.c: remove broken whitespace lines that
+
+ leads to reading confusion
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit df5f70055cf9be33f05fb50abe2f5a81eac092ad Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 19 11:07:19 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit f596f18242dcdfd6cf49c88da1d836c16e260cac Merge: 0f309b4
+
+ 70dee4b Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 19 11:33:28 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/agent_trap.c, agent/mibgroup/mibII/snmp_mib.c, 
+      agent/mibgroup/mibII/snmp_mib_5_5.c: CHANGES: snmpd: PATCH:
+      3369680:
+
+ from Ilya Yanok: change snmp_enableauthentraps from int to long such
+ that modifying the corresponding MIB object does not overwrite
+ memory in 64-bit builds.
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/agentx/subagent.c: CHANGES: snmpd: PATCH: 3370645:
+
+ from Bill Fenner: Fix AgentX subagent four byte leak
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness: do
+
+ not invoke ISRUNNING() on MinGW.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness:
+
+ cleanup - remove code that became superfluous.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: MinGW: Do not
+
+ assume that kill.exe reports via its exit status whether the
+ signalled process still exists.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Remove the function WAITORDIE() from simple_eval_tools.sh since it
+ is never invoked.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Simplify WAITFOR() in simple_eval_tools.sh. The code that handled
+ invocation of WAITFOR() with zero or one arguments has been dropped
+ since WAITFOR() is always invoked with two arguments.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness:
+
+ minor simplification.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/default/T059trapdtraphandle_simple: CHANGES:
+
+ testing: Skip test 59 if SIGHUP is not supported. Makes test 59 pass
+ on MinGW.
+
+2011-07-06  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: MinGW fix
+
+
+2011-07-06  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test framework
+
+ refactoring: Introduce WAITFORNOTCOND().
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Make STOPPROG send SIGTERM repeatedly. This fixes a race where
+ SIGTERM could be sent before the SIGTERM signal handler was set up,
+ especially when running the regression tests under Valgrind.
+ CHANGES: testing: Make the SNMP_VERBOSE=1 output even more verbose.
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness
+
+ refactoring: introduce ECHOSENDSIGTERM() and ECHOSENDSIGKILL()
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Fix a bug in
+
+ testing/fulltests/support/simple_eval_tools.sh that was introduced
+ in commit 938d75c.
+
+2011-07-01  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Ignore *.exe files generated by the Win32
+
+ build
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Test only once during a test whether the shell supports sub-second
+ sleeping instead of repeatedly.
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_run: CHANGES: testing: Changed
+
+ default timeout from 1s to 10s when the regression tests are run
+ under Valgrind
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ After having sent SIGTERM to snmpd or snmptrapd, wait until the
+ process has stopped before sending SIGKILL. This race condition was
+ hit most easily when running the regression tests under Valgrind.
+ CHANGES: testing: Check PID file existence after having read it
+ instead of before. This fixes the race condition where the PID file
+ disappeared after the existence check and before it was read.
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+
+ introduced by patch 3310250 / r20494: use %ld to print a value of
+ type oid instead of %d.  This patch is a combination of the following to V5.6 SVN patches: git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20511 06827809-a52a-0410-b366-d66718629dedgit-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0f309b493c21d3c6914487514b41560754ffcdf9 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 19 08:37:50 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 1b7454bc281568470a1300476d2edb4f411e6029 Merge: 8d9dcc8
+
+ 690ea7d Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 19 08:31:28 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/snmptrapd.c: CHANGES: snmptrapd: Add missing newline
+
+ character in a log message
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/snmptrapd.c: CHANGES: snmptrapd: Invoke shutdown_perl() when
+
+ shutting down
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmpUDPIPv6Domain.c: Spelling fix: branket -> bracket
+
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, include/net-snmp/net-snmp-config.h.in: Run autoreconf.
+
+ Fixes build breakage caused by patch
+ d588ec853bd0531f212fcbf51b962b96c6828b59 (RPM 4.9 support)
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit d617d84f83fa69ed9fa9f98efc4afaf880d121f2 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Jul 14 16:43:47 2011 +0200
+
+2011-07-14  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: CHANGES: snmplib: Make
+
+ netsnmp_ipv6_fmtaddr() show the IPv6 scope ID
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   *  configure, configure.d/config_os_functions, 
+      include/net-snmp/net-snmp-config.h.in, 
+      snmplib/transports/snmpIPv6BaseDomain.c, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: Add support
+      for
+
+ IPv6 address scope ID
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, include/net-snmp/net-snmp-config.h.in: Run autoreconf
+
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a56721a3e7754e389daa7e8a3d5792899edc9de3 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Jul 14 16:18:32 2011 +0200
+
+2011-07-15  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 844d4ce867bf3abe7b7536c5dbfba401937a8d4a Merge: eed0198
+
+ 61036a8 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Fri Jul 15 15:33:10 2011 -0700
+
+2011-07-15  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 851bcf53fcd13cdf0ba9f12e5d603e73f8bb9611 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Fri Jul 15
+ 15:32:49 2011 -0700
+
+2011-07-14  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/cache_handler.c: fix a typo
+
+
+2011-07-13  Robert Story <rstory@localhost>
+
+   * snmplib/parse.c: CHANGES: snmplib:  tweak patch 3044888 to restore
+
+ proper non-error return during mib loading
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : added 5.7 patches to the branch list and fix the release file
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : added 5.7 patches to the branch list
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/release: a copy of the release file applied to the older
+
+ branches
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added 5.7 patches
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c431231e8f0a39d1950bc72c32e3402f90fa8030 Merge: 56fee40
+
+ a2ac24d Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Jul 11 19:33:17 2011 -0700
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a copy of the
+
+ shell-functions to the older branch
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/release: a copy of the release file applied to the older
+
+ branches
+
+----------------------------------------------------------------------
+
+Changes: V5.7.rc3 -> V5.7
+
+2011-07-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7
+
+
+2011-07-01  Robert Story <rstory@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPv4BaseDomain.c, 
+      snmplib/transports/snmpTLSBaseDomain.c: Revert "fix dtlsudp
+
+ transport address format function" This reverts commit 2ab3a6e6f2fcc1ff3e5f0fb5dc5d05e498820d89.   - for some reason I saw 'rc' and my brain interpreted it as    'pre-release'. What can I say, it was late. :-/
+
+2011-07-01  Robert Story <rstory@localhost>
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPv4BaseDomain.c, 
+      snmplib/transports/snmpTLSBaseDomain.c: fix dtlsudp transport
+
+ address format function  - update ipv4 fmtaddr to handle sockaddr and to check    size before assuming data is addr pair  - move dtlsudp functions to extract addr(s) to tlsbase
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: fix tag pushing
+
+----------------------------------------------------------------------
+
+Changes: V5.7.rc2 -> V5.7.rc3
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* FAQ, README, configure, configure.ac, dist/Makefile,
+	dist/net-snmp.spec: Version number update: 5.7.rc3
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: remove unneeded comment
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: misc publication fixes found while
+	publishing
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* include/net-snmp/net-snmp-config.h.in: ran autoheader to add the
+	missing template ifdefs
+
+----------------------------------------------------------------------
+
+Changes: V5.7.rc1 -> V5.7.rc2
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: use the new run-autoconf script
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/run-autoconf: A script to invoke the correct version of the
+	autoconf tool
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: remaining command line changes for svn ->
+	git
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: make the branch echo output and svn update
+	converted to git equivalents
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: pull the branch info from git
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/release: noted that the master branch is in rc state
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+	* FAQ: Mention the Git wiki page
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+	* local/gittools/shell-functions: use git merge with the --log
+	option
+
+2011-06-28  Bart Van Assche <bvanassche@acm.org>
+
+	* .gitignore: Add .gitignore
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+	* FAQ: We're now using git!
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: use rebase to put local changes at
+	the top of the remote branches git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20533 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: added a feature to not roll
+	branches currenly in rc phase git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20532 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: added a nsrollup function for
+	rolling branches upward.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20531 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: created an nspatchapply function
+	to apply a previously tested patch git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20530 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: added a nstrypatch function to
+	test patch application against various branches git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20529 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: added verbose output git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20528 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: more prefix changes and better
+	setting of default values git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20527 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: use ns prefixes instead of generic
+	snmp prefixes git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20526 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+	* ChangeLog: version update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20524 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+	* configure, configure.in, include/net-snmp/net-snmp-config.h.in: 
+	Missing check for rpmts.h git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20523 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+	* configure: Version number update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20522 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+	* man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
+	man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
+	man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
+	man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
+	man/netsnmp_container.3, man/netsnmp_data_list.3,
+	man/netsnmp_debug.3, man/netsnmp_default_store.3,
+	man/netsnmp_handler.3, man/netsnmp_instance.3,
+	man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
+	man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
+	man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
+	man/netsnmp_multiplexer.3,
+	man/netsnmp_netsnmp_agent_request_info_s.3,
+	man/netsnmp_netsnmp_column_info_t.3,
+	man/netsnmp_netsnmp_data_list_s.3,
+	man/netsnmp_netsnmp_handler_registration_s.3,
+	man/netsnmp_netsnmp_iterator_info_s.3,
+	man/netsnmp_netsnmp_mib_handler_access_methods.3,
+	man/netsnmp_netsnmp_mib_handler_methods.3,
+	man/netsnmp_netsnmp_mib_handler_s.3,
+	man/netsnmp_netsnmp_request_info_s.3,
+	man/netsnmp_netsnmp_table_registration_info_s.3,
+	man/netsnmp_netsnmp_table_request_info_s.3,
+	man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
+	man/netsnmp_read_config.3, man/netsnmp_read_only.3,
+	man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
+	man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
+	man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
+	man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
+	man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
+	man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
+	man/netsnmp_table.3, man/netsnmp_table_array.3,
+	man/netsnmp_table_container.3, man/netsnmp_table_data.3,
+	man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
+	man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
+	man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
+	man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+	man/netsnmp_utilities.3, man/netsnmp_variable_list.3,
+	man/netsnmp_watcher.3: documentation update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20521 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+	* FAQ, README, configure, configure.in, dist/net-snmp.spec,
+	snmplib/snmp_version.c: Version number update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20520 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-23  Dave Shield <dts12@users.sourceforge.net>
+
+	* agent/mibgroup/host/hr_swinst.c, configure, configure.in,
+	include/net-snmp/net-snmp-config.h.in: Tweak RPM handling to work
+	with library version 4.9 Based on a patch by Jan Safranek git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20519 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+	* agent/mibgroup/host/hr_swinst.c: Provide a framework for reading
+	RPM package information from a cache directory (rather than querying
+	the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+	functionality.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20518 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+	* ChangeLog: version update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20516 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+	* configure: Version number update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20515 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+	* FAQ, README, configure, configure.in, dist/net-snmp.spec,
+	snmplib/snmp_version.c: Version number update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20514 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+	* agent/mibgroup/host/data_access/swinst.h,
+	agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+	framework for reading RPM package information from a cache directory
+	(rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+	functionality.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+	* agent/mibgroup/host/data_access/swinst.h,
+	agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+	framework for reading RPM package information from a cache directory
+	(rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+	functionality.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+	* agent/mibgroup/host/data_access/swinst.h,
+	agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+	framework for reading RPM package information from a cache directory
+	(rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+	functionality.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/mibgroup/agentx/protocol.c: Follow-up for r20511: really use
+	the proper format specification.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/mibgroup/agentx/protocol.c: Follow-up for r20511: really use
+	the proper format specification.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+	introduced by patch 3310250 / r20494: use %ld to print a value of
+	type oid instead of %d.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20511 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+	introduced by patch 3310250 / r20494: use %ld to print a value of
+	type oid instead of %d.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20511 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/helpers/cache_handler.c: Use %p to print a pointer instead
+	of %ld git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20510 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/helpers/cache_handler.c: Use %p to print a pointer instead
+	of %ld git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20510 06827809-a52a-0410-b366-d66718629ded
+
+----------------------------------------------------------------------
+
+Changes: V5.7.pre2 -> V5.7.rc1
+
+2011-06-13 16:11  hardaker
 
    * configure:
 
-   autoconf using the right version
+   run correct version of autoconf
 
-2010-12-29 01:40  hardaker
+2011-06-13 16:10  hardaker
 
    *  FAQ, README, configure, configure.ac, dist/Makefile,   
       dist/net-snmp.spec:
 
    Version number update
 
+2011-06-13 16:04  hardaker
+
+   * configure:
+
+   ran autoconf
+
+2011-06-10 06:03  nba
+
+   * configure.d/config_modules_security_modules:
+
+   Fix build of snmpusm when additional sec modules requested
+
+2011-06-09 21:13  nba
+
+   * snmplib/cert_util.c:
+
+   Include std爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´õ€’‘b.h to make dmalloc happy
+
+2011-06-09 14:35  rstory
+
+   * snmplib/snmp_transport.c:
+
+   CHANGES: BUG: 3151845: fix multiple registrations of snmp
+   transport handler
+
+2011-06-08 16:34  rstory
+
+   *  include/net-snmp/library/default_store.h, snmplib/snmp_api.c,   
+      snmplib/system.c:
+
+   more dnssec tweaks
+   
+   - create an app-global validator context for use with all
+   validation routines. mainly useful for long-lived apps.
+   - use the apptype as the validator 'scope', allowing
+   for app-specific configuration of validation via libval's
+   dnsval.conf
+
+2011-06-07 16:48  rstory
+
+   * include/net-snmp/library/default_store.h:
+
+   add a max define for each default store type
+   
+   not actually used, just a helpful reminder for those adding
+   new ids who might not think to check NETSNMP_DS_MAX_SUBIDS.
+   (the bool list is rapidly approaching the current limit.)
+
+2011-06-07 16:46  rstory
+
+   * testing/fulltests/support/simple_run:
+
+   mention builddir when complaining about not being run from source
+   tree
+
+2011-06-01 22:24  hardaker
+
+   *  agent/mibgroup/agentx/master.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/protocol.c,   
+      agent/mibgroup/agentx/subagent.c:
+
+   CHANGES: snmpd: patch 3310250: from fenner: misc fixes for
+   debugging output of agentx
+
+
+
+----------------------------------------------------------------------
+
+Changes: V5.6 -> V5.7.pre2
+
+2011-05-10 00:20  hardaker
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
+2011-05-10 00:20  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/hardware/cpu/cpu_linux.c,   
+      agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   C++ -> C comments
+
+2011-05-10 00:17  hardaker
+
+   * NEWS:
+
+   NEWS update for 5.7
+
+2011-05-09 23:14  hardaker
+
+   * include/net-snmp/library/oid.h:
+
+   revert the oid typedef resizing from r17809 because it broke
+   backwards compat, as pointed out by users on the -coders list
+
+2011-05-09 22:51  hardaker
+
+   * configure:
+
+   use proper autoconf version
+
+2011-05-09 22:38  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec, perl/ASN/ASN.pm,   
+      perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+        perl/TrapReceiver/TrapReceiver.pm,
+      perl/agent/Support/Support.pm,    perl/agent/agent.pm,
+      perl/agent/default_store/default_store.pm,   
+      perl/default_store/default_store.pm:
+
+   Version number update
+
+2011-05-09 22:38  hardaker
+
+   * Makefile.top:
+
+   version update
+
+2011-05-09 22:10  hardaker
+
+   * mibs/UCD-SNMP-MIB.txt:
+
+   added a missing 0 in the revision date
+
+2011-05-09 20:52  nba
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c:
+
+   Use symbolic named for ifType values
+
+2011-05-09 20:43  nba
+
+   * mibs/rfcmibs.diff:
+
+   IANA has fixed the IANA-IPPM-METRICS-REGISTRY-MIB
+
+2011-05-09 15:24  hardaker
+
+   * mibs/UCD-SNMP-MIB.txt:
+
+   added a new REVISION clause to list the changes in the the recent
+   update
+
+2011-05-09 14:19  hardaker
+
+   * NEWS:
+
+   added ping/traceroute mibs note
+
+2011-05-09 14:19  hardaker
+
+   * agent/mibgroup/ucd-snmp/proxy.c:
+
+   we actually want to use the base OID as the starting point, not
+   the reg OID.
+
+2011-05-09 14:18  hardaker
+
+   * agent/mibgroup/ucd-snmp/proxy.c:
+
+   fixed the proxy support to do a proper OID less than OID compare.
+   We actually don't care about the length of the original request,
+   only
+   that it was before the registered rebase
+
+2011-05-09 14:18  hardaker
+
+   * agent/mibgroup/ucd-snmp/proxy.c:
+
+   CHANGES: patch 3140833: from jsafranek: fix proxy GETNEXT
+   requests
+   When OIDs requested are below the proxy request remap, we need to
+   not
+   include any OIDs that might be in the space between the original
+   OID
+   and the remapped OID. This patch fudges the request so that it
+   fixes
+   the request OID so it's just before the remapped proxy range.
+
+2011-05-09 14:18  hardaker
+
+   *  agent/mibgroup/hardware/cpu/cpu.c,   
+      agent/mibgroup/hardware/cpu/cpu_linux.c,   
+      agent/mibgroup/ucd-snmp/vmstat.c,   
+      agent/mibgroup/ucd-snmp/vmstat.h,   
+      include/net-snmp/agent/hardware/cpu.h, mibs/UCD-SNMP-MIB.txt:
+
+   NEWS: PATCH 3167325: from krisztoforo: UCD-SNMP/SystemStats: add
+   variables
+   to report cpusteal, cpuguest, cpuguestnice
+
+2011-05-09 14:17  hardaker
+
+   * agent/mibgroup/if-mib/data_access/interface.c:
+
+   CHANGES: patch 3184026: from eivnaes: Avoid constant refresh of
+   interface statistics
+
+2011-05-09 10:44  bvassche
+
+   *  agent/snmp_agent.c, apps/snmpdelta.c, snmplib/scapi.c,   
+      snmplib/snmp_api.c, snmplib/system.c, snmplib/tools.c:
+
+   Fixed several compiler warnings reported by the MSVC compiler.
+
+2011-05-09 10:35  bvassche
+
+   * snmplib/gettimeofday.c:
+
+   Win32/MSVC: Fixed a compiler warning.
+
+2011-05-09 10:33  bvassche
+
+   * agent/mibgroup/mibII/var_route.c:
+
+   CHANGES: agent: Fixed a year-2038 bug in the implementation of
+   ipRouteTable.
+
+2011-05-08 20:01  nba
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c,   
+      agent/mibgroup/disman/ping/pingCtlTable.h,   
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c,   
+      agent/mibgroup/disman/ping/pingResultsTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h,   
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c:
+
+   Fix warnings and data format for DateAndTime objects.
+   These modules work, but:
+   - They are Linux only
+   - Rows must be created with rowStatus createAndWait before they
+   are populated
+   - Agent must run as root
+   - Agent is blocked while tests run
+   - Data format for InetAddress objects is wrong. It is ASCII, not
+   binary
+   (making it easier to use from the command line, but ...)
+
+2011-05-07 15:22  bvassche
+
+   * perl/SNMP/SNMP.xs:
+
+   Removed an unused label from perl/SNMP/SNMP.xs.
+
+2011-05-07 14:48  bvassche
+
+   *  agent/agent_registry.c, agent/helpers/old_api.c,   
+      include/net-snmp/agent/agent_registry.h,   
+      include/net-snmp/agent/old_api.h:
+
+   CHANGES: snmpd: Declare the OID argument type of MIB registration
+   functions as 'const oid *' instead of 'oid *' since these
+   functions do not modify the OID.
+
+2011-05-07 14:44  bvassche
+
+   *  agent/mibgroup/ip-mib/data_access/arp_linux.c,   
+      agent/mibgroup/ip-mib/data_access/arp_netlink.c,   
+      include/net-snmp/data_access/arp.h:
+
+   Use the correct data type for the 'cache expired' variable: char
+   instead of int.
+
+2011-05-07 14:43  bvassche
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Fixed a compiler warning that was introduced in r20151.
+
+2011-05-07 13:15  bvassche
+
+   * snmplib/winservice.c:
+
+   Win32: improved source code consistency by using LPCTSTR instead
+   of LPCSTR. Note: this does not mean that Unicode builds are
+   supported.
+
+2011-05-07 13:14  nba
+
+   * agent/mibgroup/ip-mib/data_access/arp_netlink.c:
+
+   Add file forgotten in r20353
+
+2011-05-06 23:32  hardaker
+
+   *  agent/helpers/cache_handler.c,   
+      agent/mibgroup/ip-mib/data_access/arp.h,   
+      agent/mibgroup/ip-mib/data_access/arp_common.c,   
+      agent/mibgroup/ip-mib/data_access/arp_linux.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h,  
+      
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+         include/net-snmp/agent/cache_handler.h,   
+      include/net-snmp/data_access/arp.h:
+
+   CHANGES: snmpd: PATCH 312596: from fabled80: listen for netlink
+   change events for the arp-related tables
+
+2011-05-06 18:36  rstory
+
+   * snmplib/system.c:
+
+   NEWS: snmplib: add optional support for local DNSSEC validation
+   of hostnames
+   
+   - optional at configure time: --with-local-dnssec-validation
+   - requires DNSSEC-Tool validation libraries
+   - initial support, for systems with getaddrinfo. support for
+   additional
+   resolver interfaces coming soon.
+   - also TODO: flag for ignoring validatoin errors (log & continue)
+
+2011-05-06 18:36  rstory
+
+   * include/net-snmp/library/parse.h:
+
+   move unused (and too generic) token within UCD_COMPATIBLE ifdef
+   
+   - MAXLABEL conflicts with <arpa/nameser.h>
+   - added NETSNMP_MAXLABEL
+
+2011-05-06 18:36  rstory
+
+   *  agent/Makefile.in, apps/Makefile.in,   
+      apps/snmpnetstat/Makefile.in, configure,   
+      configure.d/config_os_misc2,   
+      configure.d/config_project_with_enable,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   update configure/Makefiles for DNSSEC local validation option
+
+2011-05-06 14:38  hardaker
+
+   * agent/mibgroup/if-mib/data_access/interface_sysctl.c:
+
+   removed the accidental broken feature require line that got half
+   inserted
+
+2011-05-06 13:50  dts12
+
+   * win32/dist/installer/net-snmp.nsi:
+
+   Fix incomplete uninstall configuration:
+   - broken removal of Microsoft DLL
+   - remove assorted new MIBs and header files
+
+2011-05-06 12:58  dts12
+
+   * win32/dist/build-binary.pl:
+
+   Support Tar/GZip command paths containing spaces
+
+2011-05-06 12:57  dts12
+
+   * win32/dist/build-binary.pl:
+
+   Report GZip command correctly
+
+2011-05-05 21:48  nba
+
+   *  snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c:
+
+   Fix for DragonFly BSD (does not define IP_SENDSRCADDR)
+
+2011-05-05 20:29  nba
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h:
+
+   Fix spelling of SO_RECVDSTADDR
+
+2011-05-05 18:54  rstory
+
+   *  include/net-snmp/library/default_store.h, man/snmp.conf.5.def,   
+      snmplib/snmp_api.c:
+
+   NEWS: apps: add snmp.conf tokens for timeouts and retries
+
+2011-05-05 06:07  bvassche
+
+   * snmplib/tools.c, testing/fulltests/support/simple_TESTCONF.sh:
+
+   CHANGES: MinGW: Made regression test output independent of the
+   Net-SNMP variables defined in the Windows registry. Some tests
+   that failed previously after the Net-SNMP binaries (MSVC build)
+   had been installed do now pass.
+
+2011-05-05 05:57  bvassche
+
+   *  win32/encode_keychange/encode_keychange.vcproj,   
+      win32/libagent/libagent.vcproj,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj,   
+      win32/libsnmp/libsnmp.vcproj,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+        win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj,   
+      win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.vcproj,   
+      win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.vcproj, 
+        win32/snmptable/snmptable.vcproj,
+      win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+        win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32.sln,   
+      win32/win32dll.sln:
+
+   Removed Visual Studio 2005 solution and project files again since
+   Visual Studio 2010 refuses to load these.
+
+2011-05-04 23:43  hardaker
+
+   * Makefile.in:
+
+   clean the perl/python feature leftovers
+
+2011-05-04 23:42  hardaker
+
+   * local/minimalist/sizetests:
+
+   fix mib module invocation
+
+2011-05-04 20:57  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
+
+   fix ifdef typo
+
+2011-05-04 20:56  hardaker
+
+   * Makefile.in:
+
+   fix perl/python feature dependencies
+
+2011-05-04 20:56  hardaker
+
+   * agent/auto_nlist.c:
+
+   reverted auto_nlist macro usage; the function is used in headers
+
+2011-05-04 20:56  hardaker
+
+   * local/minimalist/sizetests:
+
+   Add a -T option to run 'make test'
+
+2011-05-04 20:56  hardaker
+
+   * apps/Makefile.in:
+
+   fix the encode_keychange .ft filename
+
+2011-05-04 16:20  hardaker
+
+   * perl/TrapReceiver/netsnmp-feature-definitions.h, snmplib/tools.c:
+
+   fix the features required by the TrapReceiver module
+
+2011-05-04 16:20  hardaker
+
+   * Makefile.in:
+
+   Add the TrapReceiver to the list of perl modules
+
+2011-05-04 14:42  hardaker
+
+   * perl/SNMP/SNMP.xs:
+
+   use the newer Net-SNMP APIs, rather than the older UCD ones
+
+2011-05-04 14:41  hardaker
+
+   * perl/SNMP/SNMP.xs:
+
+   remove SET code when under --read-only mode
+
+2011-05-04 14:41  hardaker
+
+   * agent/mibgroup/disman/event/mteTriggerTable.c:
+
+   require check_vb_uint
+
+2011-05-04 14:41  hardaker
+
+   * 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c,
+         agent/snmp_agent.c, local/mib2c-conf.d/subagent.m2c,   
+      python/netsnmp/netsnmp-feature-definitions.h,   
+      snmplib/snmp_logging.c:
+
+   last of the perl-used feature functions
+
+2011-05-04 14:40  hardaker
+
+   *  agent/mibgroup/Rmon/event.c, agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c,
+         agent/mibgroup/smux/smux.c, apps/snmptrapd_handlers.c,   
+      local/mib2c-conf.d/subagent.m2c, snmplib/mib.c, snmplib/parse.c:
+
+   started the final set of function removals for features required
+   by perl/python
+
+2011-05-04 14:39  hardaker
+
+   * local/mib2c-conf.d/generic-source-includes.m2i:
+
+   added the net-snmp-features.h header
+
+2011-05-04 14:39  hardaker
+
+   *  perl/OID/netsnmp-feature-definitions.h,   
+      perl/SNMP/netsnmp-feature-definitions.h,   
+      perl/TrapReceiver/netsnmp-feature-definitions.h,   
+      perl/agent/netsnmp-feature-definitions.h:
+
+   Added perl feature requirements
+
+2011-05-04 14:39  hardaker
+
+   *  Makefile.in, Makefile.rules, configure,   
+      configure.d/config_project_perl_python,   
+      perl/ASN/netsnmp-feature-definitions.h,   
+      perl/OID/netsnmp-feature-definitions.h,   
+      perl/SNMP/netsnmp-feature-definitions.h,   
+      perl/agent/netsnmp-feature-definitions.h,   
+      perl/default_store/netsnmp-feature-definitions.h:
+
+   hopefully working rules to apply feature requirements to perl and
+   python
+
+2011-05-04 14:38  hardaker
+
+   *  agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_ioctl.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c,   
+      agent/snmp_agent.c:
+
+   more changes to remove unneeded functions primarily when write
+   mode is turned off
+
+2011-05-04 14:37  hardaker
+
+   * snmplib/snmp_logging.c:
+
+   change the want invocation to only default to exclude external
+   hooks
+
+2011-05-04 14:37  hardaker
+
+   * local/minimalist/find-unused-code:
+
+   search through .xs files for function invocations
+
+2011-05-04 14:37  hardaker
+
+   * agent/auto_nlist.c:
+
+   forgot a semicolon
+
+2011-05-04 14:37  hardaker
+
+   *  agent/mibgroup/Rmon/alarmTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/expr/expExpressionTable.c:
+
+   iquery pdu sessions are only needed in write mode.
+
+2011-05-04 14:36  hardaker
+
+   * apps/Makefile.in:
+
+   fix feature detection of sometimes-built applications
+
+2011-05-04 14:36  hardaker
+
+   * agent/auto_nlist.c:
+
+   use the feature_unused macro for making an empty file for
+   consistency
+
+2011-05-04 14:36  hardaker
+
+   *  agent/helpers/table_dataset.c, agent/mibgroup/Rmon/alarmTable.c,  
+       agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/schedule/schedTable.c,   
+      agent/mibgroup/hardware/fsys/hw_fsys.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/host/hr_network.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/if-mib/data_access/interface_openbsd.c,   
+      agent/mibgroup/if-mib/data_access/interface_solaris2.c,   
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c,
+         agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+         agent/mibgroup/mibII/interfaces.c,
+      agent/mibgroup/mibII/ipAddr.c,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+         agent/mibgroup/ucd-snmp/proc.c,   
+      agent/mibgroup/utilities/iquery.c, apps/snmptls.c,   
+      snmplib/cert_util.c, snmplib/mib.c, snmplib/snmp_openssl.c,   
+      snmplib/transports/snmpDTLSUDPDomain.c:
+
+   Another sweep for unused functions when read_only mode is turned
+   on
+
+2011-05-04 14:34  hardaker
+
+   *  agent/helpers/table_tdata.c, agent/mibgroup/Rmon/alarmTable.c,   
+      agent/mibgroup/agent/extend.c, agent/mibgroup/agent/nsLogging.c,  
+       agent/mibgroup/agent/nsVacmAccessTable.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/disman/event/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/event/mteEventSetTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteTrigger.c,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c,   
+      agent/mibgroup/disman/expr/expExpressionTable.c,   
+      agent/mibgroup/disman/expr/expObjectTable.c,   
+      agent/mibgroup/disman/expression/expExpressionTable.c,   
+      agent/mibgroup/disman/expression/expObjectTable.c,   
+      agent/mibgroup/disman/mteObjectsTable.c,   
+      agent/mibgroup/disman/mteTriggerTable.c,   
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      agent/mibgroup/disman/ping/pingCtlTable.c,   
+      agent/mibgroup/disman/schedule/schedTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/mibgroup/header_complex.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/mibII/snmp_mib.c,   
+      agent/mibgroup/mibII/snmp_mib_5_5.c,   
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+         snmplib/check_varbind.c:
+
+   mark a slew of functions as features that are only needed with
+   write_support
+
+2011-05-04 14:32  hardaker
+
+   * local/minimalist/find-unused-code:
+
+   run grep with -n
+
+2011-05-04 14:32  hardaker
+
+   * snmplib/snmp_transport.c, snmplib/transports/snmpDTLSUDPDomain.c:
+
+   featurize netsnmp_sockaddr_size
+
+2011-05-04 14:32  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c:
+
+   remove a feature_require not actually needed.
+
+2011-05-04 14:31  hardaker
+
+   * snmplib/cert_util.c, snmplib/container.c:
+
+   mark SUBCONTAINER_FIND as a feature
+
+2011-05-04 14:31  hardaker
+
+   * snmplib/snmp_client.c, snmplib/snmptsm.c:
+
+   the row creation API is only used in the TSM implementation
+
+2011-05-04 14:31  hardaker
+
+   * snmplib/snmp_api.c, snmplib/snmptsm.c:
+
+   the newer context engineID probing is only needed iff TSM is in
+   use
+
+2011-05-04 14:30  hardaker
+
+   * snmplib/dir_utils.c:
+
+   fix an ifdef typo
+
+2011-05-04 14:30  hardaker
+
+   * snmplib/snmp_openssl.c:
+
+   moved fetaure child_of statements to the top of the file
+
+2011-05-04 14:30  hardaker
+
+   *  snmplib/cert_util.c, snmplib/container.c, snmplib/dir_utils.c,   
+      snmplib/snmp_openssl.c:
+
+   marked a couple of rarely used container functions.
+
+2011-05-04 14:29  hardaker
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/util_funcs.c:
+
+   split out the prefix_info feature into sub-features
+
+2011-05-04 14:29  hardaker
+
+   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c:
+
+   mark the accessor functions as unneeded
+
+2011-05-04 14:29  hardaker
+
+   * agent/mibgroup/host/data_access/swinst.c:
+
+   fix a child_of statement with a copy/paste error
+
+2011-05-04 14:28  hardaker
+
+   * agent/helpers/table_tdata.c:
+
+   the container row-remove is only needed if the tdata remove_row
+   is needed
+
+2011-05-04 14:28  hardaker
+
+   *  agent/helpers/table_tdata.c, agent/mibgroup/Rmon/alarmTable.c,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   feature marking of unused tdata functions
+   table_tdata_delete_table
+   table_tdata_extract_table
+   table_tdata_remove_row
+
+2011-05-04 14:27  hardaker
+
+   *  agent/helpers/table_dataset.c,   
+      agent/mibgroup/disman/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/mteEventTable.c,   
+      agent/mibgroup/examples/data_set.c:
+
+   removal of some rarely used functions
+   table_set_multi_add_default_row
+   table_dataset_unregister_auto_data_table
+
+2011-05-04 14:27  hardaker
+
+   * local/minimalist/sizetests:
+
+   Added a definition to incorporate read_only/notify_only
+
+2011-05-04 14:27  hardaker
+
+   * agent/helpers/table_data.c:
+
+   added a missing feature definition line
+
+2011-05-04 14:26  hardaker
+
+   * agent/Makefile.in:
+
+   added back in missing mibgroup feature definition list
+
+2011-05-04 14:26  hardaker
+
+   * local/minimalist/sizetests:
+
+   Include the original base flags to ensure --with-defaults gets
+   picked up
+
+2011-05-04 14:26  hardaker
+
+   * local/minimalist/sizetests:
+
+   fix usage
+
+2011-05-04 14:26  hardaker
+
+   * local/minimalist/sizetests:
+
+   Added a -b flag for base arguments to start from
+
+2011-05-04 14:25  hardaker
+
+   * local/minimalist/sizetests:
+
+   default to a linear seach of size tests, rather than exponential
+
+2011-05-03 18:55  bvassche
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c:
+
+   CHANGES: snmplib: Guard netsnmp_udp_recvfrom() etc. declarations
+   consistently.
+   CHANGES: Win32: Builds with Visual Studio 2010.
+
+2011-05-03 15:29  bvassche
+
+   * snmplib/winservice.c:
+
+   CHANGES: Win32: PATCH: 3293842: Eliminate registry argument limit
+   of 127 characters (this limitation was reported by Sylvain Dery).
+
+2011-05-02 11:22  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: Win32: header file <net-snmp/net-snmp-config.h> can now
+   be used in the MinGW environment.
+
+2011-04-29 11:17  bvassche
+
+   * snmplib/winservice.c:
+
+   Spelling and grammar fixes for the source code comments in
+   snmplib/winservice.c.
+
+2011-04-29 00:23  hardaker
+
+   * NEWS:
+
+   added note about the new timing function
+
+2011-04-29 00:14  hardaker
+
+   * man/snmpd.conf.5.def:
+
+   Update the manual page to reflect the new timing options
+
+2011-04-29 00:14  hardaker
+
+   * snmplib/tools.c:
+
+   better documentation
+
+2011-04-29 00:14  hardaker
+
+   *  agent/mibgroup/agentx/agentx_config.c,   
+      agent/mibgroup/disman/mteTriggerTable.c,   
+      agent/mibgroup/disman/schedule/schedConf.c:
+
+   use the netsnmp_string_time_to_secs() for parsing
+   frequencies/time
+
+2011-04-29 00:13  hardaker
+
+   * testing/fulltests/unit-tests/T102pdu_build_clib.c:
+
+   fix pdu building tests under various disabled modes
+
+2011-04-29 00:13  hardaker
+
+   * testing/fulltests/unit-tests/T102pdu_build_clib.c:
+
+   don't try to build the GET pdu under notify_only
+
+2011-04-29 00:12  hardaker
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c:
+
+   fix a bug with no-suffix strings and use a const input string
+
+2011-04-29 00:12  hardaker
+
+   * testing/fulltests/unit-tests/T010netsnmp_string_time_to_secs_clib.c:
+
+   A new unit test for the time conversion routine
+
+2011-04-29 00:12  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   use the netsnmp_string_time_to_secs() function for computing
+   interval periods
+
+2011-04-29 00:11  hardaker
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c:
+
+   Added a netsnmp_string_time_to_secs() functions to convert, e.g.,
+   1h to 3600
+
+2011-04-29 00:11  hardaker
+
+   * snmplib/snmp_api.c:
+
+   remove code to build/parse GET/etc requests when NOTIFY_ONLY is
+   turned on.
+
+2011-04-27 21:33  hardaker
+
+   * NEWS:
+
+   update the NEWS to reflect the new --enable-read-only and
+   --enable-notify-only
+
+2011-04-27 21:33  hardaker
+
+   *  agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c:
+
+   minor improvements for ronly vs rwrite handling
+
+2011-04-27 21:32  hardaker
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_interface.c:
+
+   still enable RONLY when RWRITE isn't possible
+
+2011-04-27 21:32  hardaker
+
+   * agent/helpers/cache_handler.c:
+
+   fix GET support when no_write is enabled
+
+2011-04-27 21:32  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   mark a future modification need in a comment
+
+2011-04-27 21:31  hardaker
+
+   * agent/helpers/old_api.c:
+
+   fix handling of no_write support
+
+2011-04-27 21:31  hardaker
+
+   * agent/agent_read_config.c, agent/snmp_agent.c, agent/snmpd.c:
+
+   don't open any listening transports when notify-only is specified
+
+2011-04-27 21:31  hardaker
+
+   * configure, configure.d/config_project_with_enable:
+
+   set the no-listen and read-only flags when --enable-notify-only
+   is set
+
+2011-04-27 21:30  hardaker
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   ran autoheader
+
+2011-04-27 21:30  hardaker
+
+   *  snmplib/transports/snmpAAL5PVCDomain.c,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpIPXDomain.c,   
+      snmplib/transports/snmpSSHDomain.c,   
+      snmplib/transports/snmpTCPDomain.c,   
+      snmplib/transports/snmpTCPIPv6Domain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c,   
+      snmplib/transports/snmpUDPIPv6Domain.c,   
+      snmplib/transports/snmpUnixDomain.c:
+
+   implement the NETSNMP_NO_LISTEN_SUPPORT in these transports
+
+2011-04-27 21:30  hardaker
+
+   * configure:
+
+   run autoconf
+
+2011-04-27 21:29  hardaker
+
+   * configure.d/config_project_with_enable:
+
+   move the read-only flag definition below the notify-only, since
+   notify-only needs to imply read-only
+
+2011-04-27 21:29  hardaker
+
+   * configure, configure.d/config_project_with_enable:
+
+   Defined a new --enable-notify-only flag for building a toolset
+   that only allows for notifications with no read/write support
+
+2011-04-27 21:29  hardaker
+
+   * configure, configure.d/config_project_with_enable:
+
+   Defined a new --no-listen flag to remove listening support
+
+2011-04-27 21:28  hardaker
+
+   * agent/mibgroup/default_modules.h:
+
+   the disman schedule mib is only useful when SETs are turned on
+
+2011-04-27 21:28  hardaker
+
+   * agent/mibgroup/disman.h:
+
+   the disman schedule mib is only useful when SETs are turned on
+
+2011-04-27 21:28  hardaker
+
+   * 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c,  
+       agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+       
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+        
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c:
+
+   finished no_write support for common included tables
+
+2011-04-27 21:27  hardaker
+
+   * agent/helpers/table_dataset.c:
+
+   Add back in 'netsnmp_set_row_column' when no_write support is
+   enabled
+   This function is a generic data manipulation function, not SET
+   specific
+
+2011-04-27 21:27  hardaker
+
+   * agent/helpers/table_dataset.c:
+
+   don't use mark_row_column_writable when read-only support is
+   enabled
+
+2011-04-27 21:26  hardaker
+
+   *  agent/mibgroup/agent/nsCache.c, agent/mibgroup/agent/nsDebug.c,   
+      agent/mibgroup/agent/nsLogging.c,   
+      agent/mibgroup/ip-mib/ip_scalars.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udpTable.c, 
+        agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/ucd-snmp/proxy.c,   
+      agent/mibgroup/utilities/override.c:
+
+   fix no_write support
+
+2011-04-27 21:26  hardaker
+
+   * agent/mibgroup/agent/extend.c:
+
+   fix no_write support
+
+2011-04-27 21:16  hardaker
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c:
+
+   Don't free the ifXTable row found on load failure as we don't own
+   it
+
+2011-04-26 18:16  hardaker
+
+   * local/gittools, local/gittools/shell-functions:
+
+   git bash-shell functions to enable branch switching and external
+   building
+   These local shell functions (snmpconfigure and snmpmake) let you
+   configure and build the Net-SNMP source code in external
+   directories
+   that are auto-calculated based on the existing branch name (with
+   an
+   optional suffix). This lets you run 'snmpmake' from within the
+   source
+   directory and have it actually externally keep track of modified
+   files, etc, so building in multiple branches can be done from a
+   single
+   git checkout.
+
+2011-04-25 20:57  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   clean up the iterators
+
+2011-04-25 20:57  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   free varbinds after sending
+
+2011-04-25 18:48  bvassche
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   Commented out an unused function because the compiler complained
+   about it.
+
+2011-04-25 18:46  bvassche
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   Fixed two compiler warnings.
+
+2011-04-23 14:31  magfr
+
+   * agent/helpers/table_data.c:
+
+   Remove unnecessary null check
+
+2011-04-23 14:05  magfr
+
+   * agent/helpers/table_container.c:
+
+   Move pointer dereference to after the check for successful
+   allocation of the pointer
+
+2011-04-23 08:20  magfr
+
+   * agent/agent_registry.c:
+
+   Reduce variable scope
+
+2011-04-23 08:16  magfr
+
+   * agent/agent_registry.c:
+
+   Remove an unused variable
+
+2011-04-23 08:06  magfr
+
+   * agent/agent_registry.c:
+
+   Reduce variable scope
+
+2011-04-23 07:55  magfr
+
+   * agent/agent_registry.c:
+
+   Reduce variable scope
+
+2011-04-22 19:35  magfr
+
+   * agent/agent_trap.c:
+
+   Reduce variable scope
+
+2011-04-22 19:30  magfr
+
+   * agent/agent_trap.c:
+
+   Remove unused variable
+
+2011-04-22 17:29  hardaker
+
+   * man/snmpd.conf.5.def:
+
+   mention which module is required when building to get the deliver
+   support
+
+2011-04-22 16:33  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   deleted an unneeded debugging statement
+
+2011-04-22 16:33  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   properly update the max count in the outgoing notifications
+
+2011-04-22 16:32  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   better packet estimation to ensure we don't overrun.
+
+2011-04-22 16:32  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   estimate the packet size and break the notification up based on
+   it
+
+2011-04-22 16:31  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   transform the notification sending into a larger loop for later
+   multi-notifs
+
+2011-04-22 16:31  hardaker
+
+   * NEWS:
+
+   further information about feature marking/selection
+
+2011-04-22 16:31  hardaker
+
+   * NEWS:
+
+   mention the new delivery by notifications
+
+2011-04-22 16:31  hardaker
+
+   * NEWS:
+
+   document the minimalist support
+
+2011-04-22 16:30  hardaker
+
+   * man/snmpd.conf.5.def:
+
+   document the new deliverByNotify config tokens
+
+2011-04-22 16:30  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   allow run time modifications of the OIDs to use
+
+2011-04-22 16:30  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/deliver/deliverByNotify.h:
+
+   add config flags to not include the period config and msg count
+   values
+
+2011-04-22 16:29  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   include the periodic count, the message number and the max
+   message number
+
+2011-04-22 16:29  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   deleted debugging comment
+
+2011-04-22 16:29  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt:
+
+   Move the notification definition to within the sub-mib
+
+2011-04-22 16:28  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   delete an unused variable
+
+2011-04-22 16:28  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.h:
+
+   load the MIB into the default set
+
+2011-04-22 16:28  hardaker
+
+   * mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt:
+
+   A new mib to hold the periodic notify objects
+
+2011-04-22 16:28  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   fill out the config free routine
+
+2011-04-22 16:27  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   properly monitor the whole container
+
+2011-04-22 16:27  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/deliver/deliverByNotify.h:
+
+   parse the conf files and create and insert objects into the
+   container
+
+2011-04-22 16:27  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   defined a container to store a list of deliver objects in
+
+2011-04-22 16:27  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.h:
+
+   added a next_run timestamp
+
+2011-04-22 16:26  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   actually send a notification with the results
+
+2011-04-22 16:26  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   make the walk on the test object function.
+
+2011-04-22 16:26  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   create a max packet size config token and parse it
+
+2011-04-22 16:25  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/deliver/deliverByNotify.h:
+
+   minimal starting test object
+
+2011-04-22 16:25  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/deliver/deliverByNotify.h:
+
+   added a function to calculate the time until the next run
+
+2011-04-22 16:25  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   remove left in template line
+
+2011-04-22 16:25  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/deliver/deliverByNotify.h:
+
+   use an alarm callback prototype for execute
+
+2011-04-22 16:24  hardaker
+
+   *  agent/mibgroup/deliver, agent/mibgroup/deliver/deliverByNotify.c, 
+        agent/mibgroup/deliver/deliverByNotify.h:
+
+   beginning template code for delivery of data by notifications
+
+2011-04-22 09:13  magfr
+
+   * agent/snmp_agent.c:
+
+   Reduce variable scope
+
+2011-04-22 09:07  magfr
+
+   * agent/snmp_agent.c:
+
+   Reduce variable scopes
+
+2011-04-22 09:03  magfr
+
+   * agent/snmp_agent.c:
+
+   Remove unused variable
+
+2011-04-19 08:38  bvassche
+
+   * win32/libsnmp/libsnmp.vcproj, win32/win32.sln:
+
+   Added Visual Studio 2005 project and solution file for building
+   the Net-SNMP library as a static library. Both the Win32 and the
+   x64 configurations are included.
+
+2011-04-19 07:57  bvassche
+
+   * win32/libsnmp:
+
+   Updated Subversion ignore list.
+
+2011-04-19 07:39  bvassche
+
+   *  win32/encode_keychange/encode_keychange.vcproj,   
+      win32/libagent/libagent.vcproj,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+        win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj,   
+      win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.vcproj,   
+      win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.vcproj, 
+        win32/snmptable/snmptable.vcproj,
+      win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+        win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.vcproj:
+
+   More Visual Studio 2005 project file cleanup.
+
+2011-04-19 06:57  bvassche
+
+   * win32/bin:
+
+   Updated Subversion ignore list.
+
+2011-04-18 15:34  bvassche
+
+   *  win32/encode_keychange/encode_keychange.vcproj,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+        win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj,   
+      win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.vcproj,   
+      win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.vcproj, 
+        win32/snmptable/snmptable.vcproj,
+      win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+        win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.vcproj:
+
+   Cleaned up Win32 VS2005 project files - removed superfluous
+   library references.
+
+2011-04-18 15:25  bvassche
+
+   *  win32/encode_keychange/encode_keychange.vcproj,   
+      win32/libagent/libagent.vcproj,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+        win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj,   
+      win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.vcproj,   
+      win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.vcproj, 
+        win32/snmptable/snmptable.vcproj,
+      win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+        win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32dll.sln:
+
+   Added x64 configurations.
+
+2011-04-18 15:14  bvassche
+
+   * win32/lib:
+
+   Another Win32-related Subversion ignore list update.
+
+2011-04-18 15:13  bvassche
+
+   *  win32/encode_keychange/encode_keychange.vcproj,   
+      win32/libagent/libagent.vcproj,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+        win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj,   
+      win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.vcproj,   
+      win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.vcproj, 
+        win32/snmptable/snmptable.vcproj,
+      win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+        win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32dll.sln:
+
+   Added win32dll-related Visual Studio 2005 project and solution
+   files.
+
+2011-04-18 13:37  bvassche
+
+   *  win32, win32/encode_keychange, win32/lib, win32/libagent,   
+      win32/libnetsnmptrapd, win32/libsnmp, win32/libsnmp_dll,   
+      win32/libucdmibs, win32/net-snmp, win32/netsnmpmibs,   
+      win32/snmpbulkget, win32/snmpbulkwalk, win32/snmpd,   
+      win32/snmpdelta, win32/snmpdf, win32/snmpget, win32/snmpgetnext,  
+       win32/snmpnetstat, win32/snmpset, win32/snmpstatus,   
+      win32/snmptable, win32/snmptest, win32/snmptranslate,   
+      win32/snmptrap, win32/snmptrapd, win32/snmpusm, win32/snmpvacm,   
+      win32/snmpwalk:
+
+   Added *.vcproj.*.user and x64 to the win32 Subversion ignore
+   lists. Ran these through LC_ALL=C sort -fu too.
+
+2011-04-18 12:10  bvassche
+
+   *  include/net-snmp/library/getopt.h,   
+      include/net-snmp/library/large_fd_set.h,   
+      include/net-snmp/net-snmp-includes.h:
+
+   Win32 DLL build fixes.
+
+2011-04-17 20:56  dts12
+
+   *  snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c:
+
+   CHANGES: snmpd: PATCHES: 3175640: Use IP_RECVDSTADDR sockopt
+   where available (*BSD)
+
+2011-04-15 13:42  dts12
+
+   * snmplib/snmp_api.c:
+
+   CHANGES: snmplib: PATCHES: 3183000: Fix calculation of common OID
+   prefix length
+   CHANGES: snmplib: BUGS: 3182985: Fix calculation of common OID
+   prefix length
+
+2011-04-15 13:17  dts12
+
+   *  agent/mibgroup/ucd-snmp/diskio.c, apps/snmptrapd_ds.h,   
+      include/net-snmp/agent/ds_agent.h, man/snmpd.conf.5.def:
+
+   CHANGES: Linux: PATCHES: 3205811: Option to skip fd/loop/ram
+   devices in diskIOTable
+
+2011-04-14 21:31  dts12
+
+   * python/netsnmp/client_intf.c:
+
+   CHANGES: python: PATCHES: 3185085: Fix segfault on 64-bit systems
+
+2011-04-14 21:10  dts12
+
+   * local/mib2c:
+
+   CHANGES: mib2c: PATCHES: 3175323: Fix handling of 'while (false)'
+   blocks
+
+2011-04-14 20:52  dts12
+
+   * local/mib2c:
+
+   CHANGES: mib2c: PATCHES: 3204883: Fix handling of non-table
+   objects named fooTable
+
+2011-04-14 20:44  dts12
+
+   * local/mib2c:
+
+   CHANGES: mib2c: PATCHES: 3211484: Support enumerations in
+   notification varbinds
+
+2011-04-12 20:01  nba
+
+   * mibs/UCD-SNMP-MIB.txt:
+
+   Add missing system oids to mib
+
+2011-04-12 19:53  nba
+
+   * apps/snmptable.c:
+
+   Fix for garbage output when agent presents more columns in bulk
+   response than our local MIB file specified.
+
+2011-04-12 19:50  nba
+
+   * man/snmptrapd.8.def:
+
+   Fix wrong name for config token 'doNotRetainNotificationLogs'
+
+2011-04-09 21:59  nba
+
+   * agent/mibgroup/sctp-mib/sctpScalars_freebsd.c:
+
+   Remove bogus (Linux) defines
+
+2011-04-09 21:56  nba
+
+   * snmplib/snmp-tc.c:
+
+   HAVE_TM_TM_GMTOFF is HAVE_STRUCT_TM_TM_GMTOFF
+
+2011-04-09 20:08  nba
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c,   
+      agent/mibgroup/disman/ping/pingCtlTable.h,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, configure, 
+        include/net-snmp/net-snmp-config.h.in:
+
+   Bill Fenners patch to make DISMAN PING and TRACEROUTE MIBS
+   compile under Linux
+
+2011-04-09 20:04  nba
+
+   *  agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h,   
+      agent/mibgroup/sctp-mib/sctpScalars.h,   
+      agent/mibgroup/sctp-mib/sctpScalars_solaris2.c,   
+      agent/mibgroup/sctp-mib/sctpTables.h,   
+      agent/mibgroup/sctp-mib/sctpTables_solaris2.c:
+
+   Solaris support for SCTP-MIB
+
+2011-04-09 19:50  nba
+
+   * snmplib/snmp-tc.c:
+
+   TZ is one hour off if HAVE_TM_TM_GMTOFF and SYSV (such is Linux)
+
+2011-04-01 01:11  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   CHANGES: snmplib: dtls: overhaul of debug
+   
+   - drastic reduction in number of messages and msg complexity
+   for basic dtlsudp token
+   - previous level of detail available by adding 9:dtlsdup token
+
+2011-04-01 00:53  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   CHANGES: snmplib: dtls: clean up close; catch
+   'connect'/'disconnect'
+   
+   connect = we get successfully decoded snmp data
+   disconnect = 0 byte read, ssh shutdown flag set
+   add bio_cache flags for connected/disconnected
+   check for null ptr before dereferencing
+   close handling:
+   - only send queued data if we got to connected state
+   - seriously reduce timeout to wait for junk read. i think
+   we shouldn't even bother
+   - return early if cachep is NULL, so we don't have to test it
+   repeatedly
+   - use correct nfds value in select call
+
+2011-03-31 05:17  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   make trunk and v5-6-patches closely aligned
+   
+   mostly changes in debug, cookie tracking
+
+2011-03-27 11:08  magfr
+
+   * snmplib/container_binary_array.c:
+
+   Simplify array resizing somewhat further
+
+2011-03-27 10:21  magfr
+
+   * snmplib/container_binary_array.c:
+
+   Do not assign new_data if the value won't be used.
+   Reduce variable scopes.
+
+2011-03-27 10:14  magfr
+
+   * snmplib/container_binary_array.c:
+
+   It is not necessary to clear a chunk of memory if the next action
+   on it is to
+   fill it so use malloc instead of calloc.
+
+2011-03-27 10:09  magfr
+
+   * snmplib/container_binary_array.c:
+
+   ContainerBinaryArray really can't hold anythng but pointers and
+   that means the
+   data_size field is unnecessary so I removed it.
+
+2011-03-26 19:55  magfr
+
+   *  agent/mibgroup/hardware/memory/hw_mem.c,   
+      agent/mibgroup/header_complex.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/sysORTable.c, apps/snmptrapd.c,   
+      snmplib/int64.c, snmplib/snmp_openssl.c, snmplib/snmp_secmod.c,   
+      snmplib/snmpv3.c:
+
+   Add missing include
+
+2011-03-26 08:07  magfr
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   Use the right feature macro in order to make builds with
+   --enable-ipv6 --with-out-transports=UDPIPv6 succeed.
+
+2011-03-26 08:02  magfr
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   Remove duplicate copies of functions
+
+2011-03-25 20:35  rstory
+
+   * local/net-snmp-cert:
+
+   tweak debug message
+
+2011-03-25 20:32  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   CHANGES: snmplib: update cert token handling
+   
+   - remove defX509 cert tokens (should have been removed before
+   5.6)
+   - warnings for our/their tokens, recommend using local/peer
+
+2011-03-25 20:31  rstory
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c:
+
+   merge netsnmp_dtlsudp6 into netsnmp_dtlsudp
+   
+   use addr size to tell them apart
+
+2011-03-25 20:31  rstory
+
+   * snmplib/snmp_transport.c:
+
+   log (once) warning when deprecated f_create_from_tstring
+   transport function used
+
+2011-03-25 20:30  rstory
+
+   * snmplib/transports/snmpTCPDomain.c:
+
+   reduce casting; make sure to free the right pointer
+
+2011-03-25 20:29  rstory
+
+   * snmplib/transports/snmpUDPBaseDomain.c:
+
+   reduce casting
+
+2011-03-24 06:19  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Replace a variable with a constant. Make one more oid const.
+
+2011-03-17 21:09  nba
+
+   * man/snmpdelta.1.def:
+
+   Formatting botch
+
+2011-03-17 21:07  nba
+
+   * mibs/Makefile.in:
+
+   Install required mibs
+
+2011-03-17 21:05  nba
+
+   * mibs/rfclist:
+
+   New RFC mibs
+
+2011-03-15 10:31  bvassche
+
+   * snmplib/cert_util.c:
+
+   Spelling fix: reginerated -> regenerated.
+
+2011-03-15 10:19  bvassche
+
+   * snmplib/cert_util.c:
+
+   Simplified r19594 (leak-at-exit fix).
+
+2011-03-15 09:59  bvassche
+
+   * snmplib/snmp_openssl.c:
+
+   Fixed a compiler warning that was introduced in r20113.
+
+2011-03-14 09:31  dts12
+
+   * agent/snmpd.c:
+
+   Fix main agent select call to use the renamed API routine.
+
+2011-03-13 20:09  dts12
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c:
+
+   Bring the naming of the large_fd_set select call into
+   line with the rest of the API.
+
+2011-03-12 06:59  rstory
+
+   * snmplib/container_binary_array.c:
+
+   CHANGES: snmplib: realloc+init instead of calloc
+   
+   inspired by patch 3195532 from Stephen Hemminger
+
+2011-03-12 05:47  rstory
+
+   *  agent/mibgroup/ip-forward-mib/data_access/route_common.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c:
+
+   CHANGES: snmpd: PATCH: optimizations for large route tables from
+   Stephen Hemminger
+   
+   applied parts 1-3 of 4 from him (msgs to coders on 2/28/11;
+   subject
+   ip-forward-mib performance improvements; part 4 needs more work
+
+2011-03-11 14:43  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   CHANGES: snmplib: add more openssl error cases where we check for
+   local cert
+
+2011-03-11 12:01  bvassche
+
+   * agent/mibgroup/ucd-snmp/disk.c:
+
+   MinGW: dskTable: Report zero for unimplemented fields instead of
+   random data.
+
+2011-03-11 08:42  bvassche
+
+   * agent/mibgroup/disman/schedule/schedCore.c:
+
+   CHANGES: snmpd: Builds with most recent MinGW (having #define
+   localtime_r).
+
+2011-03-11 03:08  rstory
+
+   * snmplib/cert_util.c, snmplib/snmp_openssl.c:
+
+   CHANGES: snmplib: refine cert debugging; remove unused function
+
+2011-03-10 21:21  rstory
+
+   * snmplib/cert_util.c:
+
+   CHANGES: snmpd: BUG: 3205765: handle reconfig for certSecName
+   token
+
+2011-03-10 20:01  bvassche
+
+   * agent/snmpd.c:
+
+   Spelling fix in a source code comment: messges -> messages.
+
+2011-03-10 19:55  bvassche
+
+   * snmplib/large_fd_set.c:
+
+   CHANGES: snmplib: PATCH: 3203806: Minor performance optimization
+   of netsnmp_large_fd_set_resize().
+
+2011-03-10 19:48  bvassche
+
+   * agent/snmpd.c:
+
+   CHANGES: snmpd: PATCH: 3203806: Avoid that the main agent
+   processing loop - when using more than FD_SETSIZE file
+   descriptors - can cause memory corruption by invoking select().
+
+2011-03-10 19:43  bvassche
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c:
+
+   CHANGES: snmplib: PATCH: 3203806: Add the function
+   netsnmp_large_select().
+
+2011-03-10 18:55  bvassche
+
+   *  testing/fulltests/support/clib_build,   
+      testing/fulltests/unit-tests/T009large_fd_set_clib.c:
+
+   Added a minimal unit test for netsnmp_large_fd_set.
+
+2011-03-10 18:52  bvassche
+
+   * snmplib/large_fd_set.c:
+
+   CHANGES: snmplib: PATCH: 3203806: Make
+   netsnmp_large_fd_set_resize() clear all relevant file
+   descriptors.
+
+2011-03-10 15:51  dts12
+
+   * snmplib/snmp-tc.c:
+
+   CHANGES: snmpd: BUG: 3178389: Fix inconsistent handling of TZ
+   offsets
+
+2011-03-10 15:40  dts12
+
+   *  agent/mibgroup/hardware/fsys,   
+      agent/mibgroup/ip-mib/ipAddressPrefixTable,   
+      agent/mibgroup/ip-mib/ipIfStatsTable:
+
+   Ignore object files and libraries
+
+2011-03-10 15:05  dts12
+
+   * snmplib/transports:
+
+   Ignore object files and libraries
+
+2011-03-10 14:32  hardaker
+
+   * apps/Makefile.in, configure, configure.d/config_os_libs2:
+
+   make variable names match
+
+2011-03-10 14:28  bvassche
+
+   * agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c:
+
+   Fixed two compiler warnings.
+
+2011-03-10 14:24  hardaker
+
+   * configure, configure.d/config_os_libs2:
+
+   fixed installation variables for the optional SET programs
+
+2011-03-08 00:53  hardaker
+
+   * local/minimalist/remove-unneeded-modules:
+
+   chmod a+x
+
+2011-03-08 00:15  hardaker
+
+   * local/minimalist/removeifdefcode.pl:
+
+   print an error if the end of a file was reached and we're not
+   back
+   into the state we can write; otherwise a closing #ifdef is
+   missing.
+
+2011-03-08 00:15  hardaker
+
+   * snmplib/transports/snmpUnixDomain.c:
+
+   fix endif comment to match the opening ifdef
+
+2011-03-08 00:15  hardaker
+
+   * local/minimalist/removeifdefcode.pl:
+
+   reset the canwrite flag for every file
+
+2011-03-08 00:15  hardaker
+
+   * local/minimalist/remove-unneeded-modules:
+
+   temporarily leave in header files
+
+2011-03-08 00:14  hardaker
+
+   * configure, configure.ac:
+
+   change the unique file check to one that is not in the mibgroup
+   directory
+
+2011-03-08 00:14  hardaker
+
+   *  testing/fulltests/read-only,   
+      testing/fulltests/read-only/T0141snmpv2csetfail_simple:
+
+   a test for ensuring the agent rejects SET requests with
+   --enable-read-only
+
+2011-03-08 00:14  hardaker
+
+   * testing/fulltests/default/T0141snmpv2cset_simple:
+
+   add back in the stopagent command
+
+2011-03-08 00:14  hardaker
+
+   *  testing/fulltests/unit-tests/T101pdu_type_clib.c,   
+      testing/fulltests/unit-tests/T102pdu_build_clib.c,   
+      testing/fulltests/unit-tests/T103pdu_parse_clib.c:
+
+   unit tests writen for the read-only support converted to work
+   with or without read-only
+
+2011-03-08 00:13  hardaker
+
+   * testing/fulltests/default/T0141snmpv2cset_simple:
+
+   don't run the set test if no_write_support is turned on
+
+2011-03-08 00:13  hardaker
+
+   * testing/fulltests/default/T030snmpv3usercreation_simple:
+
+   skip if no_write_support
+
+2011-03-08 00:13  hardaker
+
+   * testing/fulltests/default/T0141snmpv2cset_simple:
+
+   A new test to check whether SNMPv2c SETs to sysContact work as
+   expected
+
+2011-03-08 00:13  hardaker
+
+   * testing/fulltests/default/Svanyconfig:
+
+   allow for v2c SET support testing
+
+2011-03-08 00:12  hardaker
+
+   * agent/mibgroup/mibII/vacm_conf.c:
+
+   Allow for single quotes for vacm context name quoting too
+
+2011-03-07 19:19  hardaker
+
+   * configure:
+
+   fix the configure tests to include the word test in the test
+
+2011-03-07 19:18  hardaker
+
+   * configure.d/config_os_libs2:
+
+   fix the configure tests to include the word test in the test
+
+2011-03-07 19:18  hardaker
+
+   * local/minimalist/remove-unneeded-modules:
+
+   Added an annoyingly long list of exceptions that needs to be
+   automated
+
+2011-03-07 19:18  hardaker
+
+   * local/minimalist/remove-unneeded-modules:
+
+   A quick perl script to remove unneeded code modules from the
+   modules directory
+
+2011-03-07 19:18  hardaker
+
+   *  agent/mibgroup/target/target.c,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+        snmplib/cert_util.c, snmplib/snmpusm.c, snmplib/vacm.c:
+
+   more improvements (removements) for featurization and read-only
+   support
+
+2011-03-07 17:19  bvassche
+
+   * snmplib/container_binary_array.c:
+
+   CHANGES: snmplib: PATCH: 3195537: Minor binary_array container
+   sort optimization
+
+2011-03-06 19:47  nba
+
+   * agent/mibgroup/disman/nslookup/lookupCtlTable.c:
+
+   Tabs to spaces
+
+2011-03-06 11:28  nba
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      configure.d/config_os_functions:
+
+   Configure check for gethostname2
+   Use getaddrinfo if available. Now works for Solaris (and
+   Windows?)
+
+2011-03-05 19:16  magfr
+
+   * apps/snmptest.c:
+
+   Add dropped ||'s from r20072
+
+2011-03-05 12:50  nba
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h,   
+      agent/mibgroup/disman/nslookup/lookupResultsTable.c:
+
+   Clean up, and cosolidate result table row creation into a new
+   function.
+   Saves 200 lines of code, with (hopefully) no functionality change
+
+2011-03-05 06:17  hardaker
+
+   *  apps/Makefile.in, apps/snmptest.c, configure,   
+      configure.d/config_os_libs2:
+
+   don't build SET related apps with --enable-read-only
+
+2011-03-05 06:16  hardaker
+
+   *  agent/helpers/baby_steps.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/mibII/snmp_mib.c, agent/mibgroup/mibII/updates.c,  
+      
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         agent/mibgroup/target/target.c,   
+      include/net-snmp/agent/baby_steps.h,   
+      include/net-snmp/agent/snmp_agent.h, snmplib/snmp_client.c:
+
+   fix issues with combining --enable-minimalist and
+   --enable-read-only
+
+2011-03-05 06:16  hardaker
+
+   * local/minimalist/find-unused-code:
+
+   better output for finding object symbols.
+
+2011-03-04 21:56  baerm
+
+   * local/minimalist/removeifdefcode.pl:
+
+   last commit: changes to allow parsing of featuers files to get
+   all minimalist tags which are then processed for removal
+   
+   this commit: changed comments/white space
+
+2011-03-04 19:27  baerm
+
+   * agent/mibgroup/agent/extend.c:
+
+   added no_write support to extend.c
+
+2011-03-04 19:26  baerm
+
+   * agent/helpers/instance.c:
+
+   Added missing #endif comment for remove ifdef code support
+
+2011-03-04 19:24  baerm
+
+   * local/minimalist/removeifdefcode.pl:
+
+   added changes to allow code removal in-place
+   (i.e. does not require creating a new file)
+
+2011-03-04 19:23  baerm
+
+   * local/minimalist/ignore.regexp:
+
+   adding a ignore.regexp file that can be used with
+   removeifdefcode.pl
+
+2011-03-04 19:20  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   add a outgoing link to the parent marking page
+
+2011-03-04 19:19  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   Added a wiki output mode
+
+2011-03-04 19:19  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   Note that the org output is the default in the help output
+
+2011-03-04 15:09  jsafranek
+
+   * agent/mibgroup/ucd-snmp/vmstat_linux.c:
+
+   CHANGES: snmpd: fixed 'truncating integer value > 32 bits' in
+   UCD-SNMP-MIB::systemStats on Linux
+
+2011-03-04 14:49  hardaker
+
+   *  agent/agent_read_config.c, agent/helpers/watcher.c,   
+      agent/mibgroup/agentx/master.c, agent/mibgroup/agentx/subagent.c, 
+        agent/mibgroup/header_complex.c,   
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c,
+         agent/mibgroup/mibII/kernel_linux.c,   
+      agent/mibgroup/mibII/tcpTable.c,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/util_funcs.c,   
+      agent/mibgroup/utilities/iquery.c, snmplib/snmp_api.c:
+
+   reclassification of the remaining features into a hierarchy
+
+2011-03-04 14:49  hardaker
+
+   * snmplib/snmp_openssl.c:
+
+   don't double-declare cert_utils
+
+2011-03-04 14:49  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c:
+
+   the ipaddress_linux was incorrectly marked as needing
+   cert_fingerprints
+
+2011-03-04 14:48  hardaker
+
+   * agent/agent_registry.c:
+
+   put the agent_registry feature in libnetsnmpagent.
+
+2011-03-03 10:56  bvassche
+
+   * win32/libsnmp_dll/libsnmp.def:
+
+   CHANGES: Win32: Deprecated libsnmp.def - add NETSNMP_IMPORT to
+   function declarations instead to export a function from
+   netsnmp.dll.
+
+2011-03-03 10:48  bvassche
+
+   *  include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmp_debug.h:
+
+   Added missing NETSNMP_IMPORT declarations.
+
+2011-03-03 10:24  bvassche
+
+   * win32/libagent/libagent.def, win32/libucdmibs/libucdmibs.def:
+
+   Removed two obsolete Win32 files.
+
+2011-03-03 10:09  bvassche
+
+   * snmplib/transports/snmpIPv6BaseDomain.c:
+
+   Trivial comment fix: snmpIPv6BaseDomain.c contains IPv6 base
+   transport support functions instead of IPv4.
+
+2011-03-02 19:10  bvassche
+
+   * snmplib:
+
+   Added snmpsm_shutdown.h to the Subversion ignore list because
+   it's a generated file.
+
+2011-03-02 15:58  bvassche
+
+   * win32/config.h:
+
+   Removed an obsolete file.
+
+2011-03-02 15:52  bvassche
+
+   *  include/net-snmp/library/snmp_secmod.h, win32/snmpsm_shutdown.h,  
+       win32/snmpv3-security-includes.h:
+
+   Builds again with Visual Studio after the introduction of the
+   "feature" feature.
+
+2011-03-02 15:48  bvassche
+
+   * win32/snmpsm_init.h:
+
+   Removed a misleading comment.
+
+2011-03-02 08:40  magfr
+
+   * configure, configure.d/config_os_libs2:
+
+   Correct the check of wether usm security is enabled.
+   Regenerate configure.
+
+2011-03-02 08:39  magfr
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   Regenerate
+
+2011-03-02 08:21  magfr
+
+   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c:
+
+   Add missing dependencies
+
+2011-03-02 07:19  magfr
+
+   * snmplib/snmpusm.c:
+
+   Ignore the return value from snmp_increment_statistic
+
+2011-03-02 07:19  magfr
+
+   * snmplib/container.c:
+
+   Split the container_compare_functions feature into
+   container_compare_mem,
+   container_compare_long, container_compare_ulong,
+   container_compare_int32 and
+   container_compare_uint32
+   Unify the structure of the compare functions further.
+
+2011-03-02 07:19  magfr
+
+   * snmplib/container.c:
+
+   Change the spelling of the container_compare_cstring feature to
+   container_ncompare_cstring as that is the function that is
+   guarded by that
+   attribute.
+
+2011-03-02 07:17  magfr
+
+   * include/net-snmp/library/snmp_api.h:
+
+   Add the missing replacement macro for snmp_init_statistics
+
+2011-03-02 07:16  magfr
+
+   * include/net-snmp/library/snmp_api.h:
+
+   snmp_increment_statistic_by takes two arguments so let the
+   replacement macro
+   take two arguments as well.
+
+2011-02-27 13:55  nba
+
+   * agent/mibgroup/disman/nslookup/lookupCtlTable.c:
+
+   Fix typo in r19990
+
+2011-02-26 10:53  magfr
+
+   * local/minimalist/feature-check:
+
+   Remove lines starting with #define in the output of the
+   preprocessor
+   When gcc -E is called with -ggdb3 (or -dD) then all the macro
+   definitions are
+   passed through the preprocessor and that messes up our
+   processing.
+
+2011-02-26 10:52  magfr
+
+   * Makefile.rules:
+
+   Put the generated file in the build tree, not the source tree.
+
+2011-02-26 01:23  hardaker
+
+   *  agent/agent_trap.c, agent/helpers/table_dataset.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/disman/event/mteTrigger.c,   
+      agent/mibgroup/disman/schedule/schedCore.c,   
+      agent/mibgroup/hardware/cpu/cpu.c,   
+      agent/mibgroup/hardware/memory/hw_mem.c,   
+      agent/mibgroup/host/data_access/swinst.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+         agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c,  
+       agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+       
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+         agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c:
+
+   moved a bunch of features into the libnetsnmpmibs feature set.
+
+2011-02-26 01:22  hardaker
+
+   *  agent/agent_handler.c, agent/agent_index.c,   
+      agent/agent_registry.c, agent/agent_trap.c,   
+      agent/helpers/all_helpers.c, agent/helpers/cache_handler.c,   
+      agent/helpers/table.c, agent/helpers/table_array.c,   
+      agent/helpers/table_data.c, agent/helpers/table_dataset.c,   
+      agent/helpers/table_iterator.c, agent/helpers/table_row.c,   
+      agent/snmp_agent.c, local/minimalist/sizetests, snmplib/mib.c:
+
+   classified libnetsnmpagent features
+
+2011-02-26 01:21  hardaker
+
+   * local/minimalist/sizetests:
+
+   reverse the order of the libraries (snmplib first)
+
+2011-02-26 01:21  hardaker
+
+   * local/minimalist/sizetests:
+
+   output cleanup and added agent-mibs and logging options
+
+2011-02-26 01:21  hardaker
+
+   * local/minimalist/sizetests:
+
+   add a default set of arguments
+   calculate resulting sizes
+
+2011-02-26 01:21  hardaker
+
+   * snmplib/dir_utils.c:
+
+   Added a missing ;
+
+2011-02-26 01:20  hardaker
+
+   * local/minimalist/sizetests:
+
+   prefix the output files with a number to indicate order
+
+2011-02-26 01:20  hardaker
+
+   * local/minimalist/sizetests:
+
+   save the results of the system executions
+
+2011-02-26 01:20  hardaker
+
+   * local/minimalist/sizetests:
+
+   enable building of the resulting combinations
+   Add a -n flag for dry-runs
+
+2011-02-26 01:20  hardaker
+
+   * local/minimalist/sizetests:
+
+   enable the -t tag for limiting types
+
+2011-02-26 01:19  hardaker
+
+   * local/minimalist/sizetests:
+
+   Added argument parsing and arguments for selecting and listing
+   types
+
+2011-02-26 01:19  hardaker
+
+   * local/minimalist/sizetests:
+
+   generate configure script arguments from specs
+
+2011-02-26 01:19  hardaker
+
+   * local/minimalist/sizetests:
+
+   added a bunch of new feature options and cleaned up a bit
+
+2011-02-26 01:19  hardaker
+
+   * local/minimalist/sizetests:
+
+   added a new (not yet working) script to test sizing of various
+   argument sets
+
+2011-02-26 00:26  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Simplify the code. Unify some debug logs.
+
+2011-02-26 00:19  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Reduce the scope of a few variables
+
+2011-02-26 00:16  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Remove some unused includes.
+
+2011-02-26 00:15  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Make it possible to initialize/uninitialize modules with 64
+   character names and not suffer wild writes.
+
+2011-02-26 00:12  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Code restructuring - put the managed routines before the
+   managment code.
+
+2011-02-26 00:11  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c, agent/mibgroup/ucd-snmp/dlmod.h:
+
+   CHANGES: libnetsnmpmibs: Make all functions in the dlmod module
+   that don't have to be public static
+
+2011-02-26 00:07  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Rename deinit_dlmod to shutdown_dlmod as that is what it really
+   is about.
+
+2011-02-25 18:24  baerm
+
+   * agent/mibgroup/agent/nsVacmAccessTable.c:
+
+   adding minimalist ifdefs to net-snmp-vacm mib
+
+2011-02-25 16:09  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   properly handle twin children; also sort the child list
+   alphabetically.
+
+2011-02-25 16:09  hardaker
+
+   * snmplib/snmp_logging.c:
+
+   I suppose logging should probably default to being a wanted
+   option :-)
+
+2011-02-25 16:09  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   org-link the files in the output
+
+2011-02-25 16:08  hardaker
+
+   *  Makefile.rules, agent/Makefile.in, agent/mibgroup/Makefile.in,   
+      apps/Makefile.in, apps/snmpnetstat/Makefile.in,   
+      local/minimalist/feature-check, snmplib/Makefile.in:
+
+   make the features-check script track the full source path
+
+2011-02-25 16:08  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   change the function names to match that it's printing to org-mode
+   at the moment.
+
+2011-02-25 16:08  hardaker
+
+   *  snmplib/file_utils.c, snmplib/mib.c, snmplib/oid_stash.c,   
+      snmplib/snmp_api.c, snmplib/snmp_logging.c, snmplib/tools.c:
+
+   last of the feature classification in libnetsnmp
+
+2011-02-25 16:07  hardaker
+
+   * snmplib/keytools.c, snmplib/lcd_time.c, snmplib/scapi.c:
+
+   make the usm_support utilities self-declare themselves as
+   children to
+   make sure they're properly included during dependency ordering
+
+2011-02-25 16:07  hardaker
+
+   *  snmplib/callback.c, snmplib/cert_util.c, snmplib/check_varbind.c, 
+        snmplib/container.c, snmplib/data_list.c,   
+      snmplib/default_store.c, snmplib/fd_event_manager.c,   
+      snmplib/file_utils.c, snmplib/keytools.c, snmplib/snmpusm.c:
+
+   superstructuralizationizing the features
+
+2011-02-25 16:07  hardaker
+
+   *  snmplib/read_config.c, snmplib/snmp-tc.c, snmplib/snmp_client.c,  
+       snmplib/snmp_enum.c, snmplib/snmp_transport.c, snmplib/system.c, 
+        snmplib/text_utils.c, snmplib/tools.c,   
+      snmplib/transports/snmpUnixDomain.c, snmplib/ucd_compat.c:
+
+   significant parent/child feature classification
+
+2011-02-25 16:06  hardaker
+
+   * snmplib/snmp_api.c, snmplib/snmpusm.c:
+
+   classify a few components into a top-level libnetsnmp component
+
+2011-02-25 16:06  hardaker
+
+   *  snmplib/keytools.c, snmplib/lcd_time.c, snmplib/scapi.c,   
+      snmplib/snmpusm.c:
+
+   structurize the usm features
+
+2011-02-25 16:06  hardaker
+
+   *  snmplib/container.c, snmplib/container_iterator.c,   
+      snmplib/container_list_ssll.c, snmplib/container_null.c,   
+      snmplib/dir_utils.c:
+
+   structure the container features into a hierarchy
+
+2011-02-25 16:05  hardaker
+
+   * snmplib/snmp_logging.c:
+
+   group the logging handlers under a parent feature
+
+2011-02-25 16:05  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   fix the expect argument count
+
+2011-02-25 16:05  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   fix the name of the expected input file
+
+2011-02-25 16:05  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   argument parsing and usage() output
+
+2011-02-25 16:04  hardaker
+
+   *  agent/helpers/stash_cache.c, agent/helpers/stash_to_next.c,   
+      agent/helpers/table_dataset.c, agent/helpers/table_iterator.c,   
+      agent/mibgroup/examples/netSnmpHostsTable.c,   
+      agent/mibgroup/mibII/ipCidrRouteTable.c, snmplib/oid_stash.c:
+
+   - added two oid_stash functions as individual features
+   - cleaned up some warnings in the table_iterator code
+
+2011-02-25 12:55  dts12
+
+   * dist/makerelease.xml:
+
+   Fix the command to create a new SVN tag line
+   
+   (Having brought the structure of the 5.5.x branch
+   into line with the other branches, the previous
+   command is now wrong for *all* branches, rather
+   than just most of them!)
+
+2011-02-25 11:10  dts12
+
+   * snmplib/snmpv3.c:
+
+   Avoid a possible crash if the engineID is not available or set.
+
+2011-02-25 00:40  baerm
+
+   *  agent/mibgroup/disman/event/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/event/mteEventSetTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c,   
+      agent/mibgroup/disman/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/mteObjectsTable.c,   
+      agent/mibgroup/disman/mteObjectsTable.h,   
+      agent/mibgroup/disman/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/mteTriggerBooleanTable.h,   
+      agent/mibgroup/disman/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/mteTriggerDeltaTable.h,   
+      agent/mibgroup/disman/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/mteTriggerExistenceTable.h,   
+      agent/mibgroup/disman/mteTriggerTable.c,   
+      agent/mibgroup/disman/mteTriggerTable.h,   
+      agent/mibgroup/disman/mteTriggerThresholdTable.c,   
+      agent/mibgroup/disman/mteTriggerThresholdTable.h,   
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h:
+
+   adding ifdef code for minimalist support of diffman mib
+
+2011-02-24 19:21  baerm
+
+   *  agent/mibgroup/host/hrSWRunTable.c,   
+      agent/mibgroup/host/hr_system.c, agent/mibgroup/host/hr_system.h:
+
+   Adding minimalist ifdefs to host resource mib
+
+2011-02-24 05:46  hardaker
+
+   * agent/helpers/table_iterator.c, snmplib/data_list.c:
+
+   mark the data_list function that's only used in stach_caching as
+   a feature
+
+2011-02-24 05:46  hardaker
+
+   * agent/helpers/table_iterator.c:
+
+   whoops.
+
+2011-02-24 05:46  hardaker
+
+   * agent/helpers/table_iterator.c:
+
+   more missing stash references
+
+2011-02-24 05:45  hardaker
+
+   * agent/helpers/table_iterator.c:
+
+   ifdefed/featured out a missing stash_cache section
+
+2011-02-24 05:45  hardaker
+
+   * agent/mibgroup/util_funcs.c:
+
+   make the prefix_info more hierarchical and sub-feature the unused
+   one
+
+2011-02-24 05:45  hardaker
+
+   * local/minimalist/find-unused-code:
+
+   do include the perl/python code when searching for files
+
+2011-02-24 05:45  hardaker
+
+   * agent/helpers/table_tdata.c:
+
+   make the semi-used table_tdata functions children of
+   table_tdata_all
+   instead of just table_tdata
+
+2011-02-23 22:00  magfr
+
+   * agent/helpers/table_tdata.c:
+
+   Correct typo
+
+2011-02-23 21:54  magfr
+
+   * snmplib/parse.c:
+
+   Correct typo
+
+2011-02-23 21:10  nba
+
+   * agent/snmp_vars.c:
+
+   proper include of prototype
+
+2011-02-23 21:07  hardaker
+
+   *  configure, configure.d/config_modules_agent,   
+      configure.d/config_modules_transports,   
+      configure.d/config_project_with_enable:
+
+   compat some feature header chicken and egg problems
+
+2011-02-23 15:27  nba
+
+   * snmplib/snmpusm.c:
+
+   unsigned juggling to remove warnings
+
+2011-02-23 15:23  nba
+
+   *  agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c,
+         agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c:
+
+   unsigned juggling to remove warnings
+
+2011-02-23 15:20  nba
+
+   * agent/mibgroup/ip-mib.h:
+
+   Enable (probably forgotten) ipAddressPrefixTable
+
+2011-02-23 14:30  hardaker
+
+   *  local/minimalist, local/minimalist/feature-check,   
+      local/minimalist/feature-makedocs,   
+      local/minimalist/feature-remove,   
+      local/minimalist/find-unused-code,   
+      local/minimalist/removeifdefcode.pl:
+
+   added other missing 'new' files not included in the minimalist
+   patch file
+
+2011-02-23 09:54  nba
+
+   *  agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c:
+
+   Loading IPv6 data is a no-no when IPv6 not enabled
+
+2011-02-23 09:36  nba
+
+   * apps/snmptable.c:
+
+   Fix bug 3118631: snmptable segfaults if index contains :
+   character
+
+2011-02-23 09:30  nba
+
+   * include/net-snmp/system/freebsd8.h:
+
+   FreeBSD 8 support
+
+2011-02-23 01:48  hardaker
+
+   * include/net-snmp/net-snmp-features.h:
+
+   added missing net-snmp-features.h
+
+2011-02-23 00:01  hardaker
+
+   *  Makefile.in, Makefile.rules, Makefile.top, agent/Makefile.in,   
+      agent/agent_handler.c, agent/agent_index.c,   
+      agent/agent_read_config.c, agent/agent_registry.c,   
+      agent/agent_trap.c, agent/helpers/all_helpers.c,   
+      agent/helpers/baby_steps.c, agent/helpers/cache_handler.c,   
+      agent/helpers/instance.c, agent/helpers/mode_end_call.c,   
+      agent/helpers/multiplexer.c, agent/helpers/old_api.c,   
+      agent/helpers/read_only.c, agent/helpers/row_merge.c,   
+      agent/helpers/scalar.c, agent/helpers/scalar_group.c,   
+      agent/helpers/snmp_get_statistic.c, agent/helpers/stash_cache.c,  
+       agent/helpers/stash_to_next.c, agent/helpers/table.c,   
+      agent/helpers/table_array.c, agent/helpers/table_container.c,   
+      agent/helpers/table_data.c, agent/helpers/table_dataset.c,   
+      agent/helpers/table_iterator.c, agent/helpers/table_row.c,   
+      agent/helpers/table_tdata.c, agent/helpers/watcher.c,   
+      agent/mibgroup/Makefile.in, agent/mibgroup/Rmon/alarmTable.c,   
+      agent/mibgroup/agent/extend.c, agent/mibgroup/agent/nsCache.c,   
+      agent/mibgroup/agent/nsLogging.c,   
+      agent/mibgroup/agent/nsModuleTable.c,   
+      agent/mibgroup/agent/nsTransactionTable.c,   
+      agent/mibgroup/agent/nsVacmAccessTable.c,   
+      agent/mibgroup/agentx/agentx_config.c,   
+      agent/mibgroup/agentx/client.c, agent/mibgroup/agentx/master.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/disman/event/mteEventConf.c,   
+      agent/mibgroup/disman/event/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/event/mteEventSetTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteTrigger.c,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/event/mteTriggerConf.c,   
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c,   
+      agent/mibgroup/disman/expr/expErrorTable.c,   
+      agent/mibgroup/disman/expr/expExpressionConf.c,   
+      agent/mibgroup/disman/expr/expExpressionTable.c,   
+      agent/mibgroup/disman/expr/expObjectConf.c,   
+      agent/mibgroup/disman/expr/expObjectTable.c,   
+      agent/mibgroup/disman/expression/expExpressionTable.c,   
+      agent/mibgroup/disman/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/mteEventTable.c,   
+      agent/mibgroup/disman/mteTriggerTable.c,   
+      agent/mibgroup/disman/schedule/schedConf.c,   
+      agent/mibgroup/disman/schedule/schedCore.c,   
+      agent/mibgroup/disman/schedule/schedTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c,
+         agent/mibgroup/examples/data_set.c,   
+      agent/mibgroup/examples/delayed_instance.c,   
+      agent/mibgroup/examples/netSnmpHostsTable.c,   
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns.c,   
+      agent/mibgroup/examples/scalar_int.c,   
+      agent/mibgroup/hardware/cpu/cpu.c,   
+      agent/mibgroup/hardware/cpu/cpu_kinfo.c,   
+      agent/mibgroup/hardware/cpu/cpu_nlist.c,   
+      agent/mibgroup/hardware/cpu/cpu_perfstat.c,   
+      agent/mibgroup/hardware/cpu/cpu_sysctl.c,   
+      agent/mibgroup/hardware/memory/hw_mem.c,   
+      agent/mibgroup/header_complex.c,   
+      agent/mibgroup/host/data_access/swinst.c,   
+      agent/mibgroup/host/data_access/swinst_darwin.c,   
+      agent/mibgroup/host/data_access/swinst_pkginfo.c,   
+      agent/mibgroup/host/data_access/swinst_rpm.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/host/hr_swinst.c, agent/mibgroup/host/hr_system.c, 
+        agent/mibgroup/host/hrh_filesys.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.h,   
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.h,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c,
+        
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+         agent/mibgroup/ip-mib/data_access/arp_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c,
+         agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+         agent/mibgroup/ip-mib/ip_scalars.c,   
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+         agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/interfaces.c,
+         agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/ipCidrRouteTable.c,   
+      agent/mibgroup/mibII/ipv6.c, agent/mibgroup/mibII/kernel_linux.c, 
+        agent/mibgroup/mibII/setSerialNo.c,   
+      agent/mibgroup/mibII/snmp_mib_5_5.c,   
+      agent/mibgroup/mibII/sysORTable.c,   
+      agent/mibgroup/mibII/system_mib.c, agent/mibgroup/mibII/tcp.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udp.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/mibII/vacm_context.c,   
+      agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/mibII/vacm_vars.h,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.h,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.h,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c,
+         agent/mibgroup/sctp-mib/sctpTables_common.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c,
+         agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c,   
+      agent/mibgroup/snmpv3/usmStats.c,   
+      agent/mibgroup/snmpv3/usmStats_5_5.c,   
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/snmpv3/usmUser.h, 
+        agent/mibgroup/snmpv3mibs.h,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.h,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.h,   
+      agent/mibgroup/target/target.c,   
+      agent/mibgroup/target/target_counters.c,   
+      agent/mibgroup/target/target_counters.h,   
+      agent/mibgroup/target/target_counters_5_5.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_common.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+         agent/mibgroup/testhandler.c,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+         agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c,   
+      agent/mibgroup/ucd-snmp/dlmod.c,   
+      agent/mibgroup/ucd-snmp/extensible.c,   
+      agent/mibgroup/ucd-snmp/lmSensors.c,   
+      agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c,   
+      agent/mibgroup/ucd-snmp/proc.c, agent/mibgroup/ucd-snmp/proxy.c,  
+       agent/mibgroup/ucd-snmp/versioninfo.c,   
+      agent/mibgroup/ucd-snmp/vmstat_linux.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c,
+         agent/mibgroup/util_funcs.c, agent/mibgroup/utilities/iquery.c,
+         agent/mibgroup/winExtDLL.c, agent/snmp_agent.c,   
+      agent/snmp_vars.c, agent/snmpd.c, apps/Makefile.in,   
+      apps/agentxtrap.c, apps/snmpnetstat/Makefile.in,   
+      apps/snmpnetstat/main.c, apps/snmpnetstat/netstat.h,   
+      apps/snmpnetstat/route.c, apps/snmptest.c, apps/snmptranslate.c,  
+       apps/snmptrapd.c, apps/snmptrapd_handlers.c,   
+      apps/snmptrapd_sql.c, configure, configure.ac,   
+      configure.d/config_modules_agent, configure.d/config_modules_lib, 
+        configure.d/config_modules_security_modules,   
+      configure.d/config_modules_transports,   
+      configure.d/config_os_libs2,   
+      configure.d/config_project_perl_python,   
+      configure.d/config_project_with_enable,   
+      include/net-snmp/agent/snmp_agent.h,   
+      include/net-snmp/library/libsnmp.h,   
+      include/net-snmp/library/snmp.h,   
+      include/net-snmp/library/snmp_api.h,   
+      include/net-snmp/library/snmp_client.h,   
+      include/net-snmp/library/snmp_secmod.h,   
+      include/net-snmp/library/snmpksm.h,   
+      include/net-snmp/library/snmptsm.h,   
+      include/net-snmp/library/snmpusm.h,   
+      include/net-snmp/library/snmpv3.h,   
+      include/net-snmp/net-snmp-config.h.in, perl/OID/OID.xs,   
+      perl/SNMP/SNMP.xs, perl/agent/agent.xs, snmplib/Makefile.in,   
+      snmplib/callback.c, snmplib/cert_util.c, snmplib/check_varbind.c, 
+        snmplib/container.c, snmplib/container_iterator.c,   
+      snmplib/container_list_ssll.c, snmplib/container_null.c,   
+      snmplib/data_list.c, snmplib/default_store.c,   
+      snmplib/dir_utils.c, snmplib/fd_event_manager.c,   
+      snmplib/file_utils.c, snmplib/int64.c, snmplib/keytools.c,   
+      snmplib/lcd_time.c, snmplib/mib.c, snmplib/oid_stash.c,   
+      snmplib/parse.c, snmplib/read_config.c, snmplib/scapi.c,   
+      snmplib/snmp-tc.c, snmplib/snmp_api.c, snmplib/snmp_client.c,   
+      snmplib/snmp_enum.c, snmplib/snmp_logging.c,   
+      snmplib/snmp_openssl.c, snmplib/snmp_parse_args.c,   
+      snmplib/snmp_secmod.c, snmplib/snmp_transport.c,   
+      snmplib/snmpksm.c, snmplib/snmptsm.c, snmplib/snmpusm.c,   
+      snmplib/snmpv3.c, snmplib/system.c, snmplib/text_utils.c,   
+      snmplib/tools.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpSSHDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      snmplib/transports/snmpUnixDomain.c, snmplib/ucd_compat.c,   
+      testing/fulltests/default/Sv3config,   
+      testing/fulltests/default/Sv3usmconfigbase,   
+      testing/fulltests/default/Sv3vacmconfig,   
+      testing/fulltests/default/T049snmpv3inform_simple,   
+      testing/fulltests/default/T049snmpv3informauth_simple,   
+      testing/fulltests/default/T057trapdauthtest2_simple,   
+      testing/fulltests/default/T057trapdauthtest3_simple,   
+      testing/fulltests/default/T057trapdauthtest_simple,   
+      testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T113agentxtrap_simple,   
+      testing/fulltests/default/T114agentxagentxtrap_simple:
+
+   NEWS: packaging: Enable micro-and-macro-feature management within
+   Net-SNMP; this adds a number of new flags to configure
+   (--enable-minimalist and --enable-read-only). These changes are
+   designed to remove much of the inline code that isn't always
+   necessary or desired. Scripts exist (and will be improved) to
+   stip out unused components from the code entirely to enable a
+   shorter review process for upgrading to new releases. This work
+   was done by Wes Hardaker and Michael Baer from SPARTA, Inc. but
+   is being checked in as a large patch since converting the micro
+   patches from git to svn turend out to be impossible
+
+2011-02-22 23:55  hardaker
+
+   * FAQ:
+
+   use the wiki URL instead of the tutorial-5 URL for the snmptrap
+   tutorial
+
+2011-02-21 22:40  nba
+
+   * agent/mibgroup/host/data_access/swrun_kinfo.c:
+
+   proper process status values for netbsd
+
+2011-02-21 22:39  nba
+
+   * snmplib/scapi.c:
+
+   conditionalize variable
+
+2011-02-21 22:20  nba
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn.h:
+
+   tcp-mib/udp-mib support for the *bsds
+
+2011-02-21 22:16  nba
+
+   *  agent/mibgroup/mibII.h,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint.h,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c:
+
+   tcp-mib/udp-mib support for the *bsds
+
+2011-02-21 22:05  nba
+
+   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c:
+
+   Properly end debug message with newline
+
+2011-02-21 22:04  nba
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c:
+
+   remove var that shadows the useful one
+
+2011-02-21 22:02  nba
+
+   * agent/mibgroup/mibII/ipv6.c:
+
+   major fiddling to get things working for openbsd too. This should
+   really be reworked to use the tcp-mib/udp-mib/data_access
+
+2011-02-21 21:59  nba
+
+   * agent/mibgroup/mibII/tcpTable.c:
+
+   fix tcp states for dragonflybsd
+
+2011-02-21 21:57  nba
+
+   * agent/mibgroup/mibII.h:
+
+   enable new tcp/udp mibs for solaris
+
+2011-02-21 21:53  magfr
+
+   * agent/mibgroup/hardware/sensors/lmsensors_v3.c:
+
+   Do not use c99
+
+2011-02-21 19:08  hardaker
+
+   * dist/makerelease.xml:
+
+   Updated comment about where makerelease comes from (now github)
+
+2011-02-20 09:24  bvassche
+
+   * agent/snmp_agent.c:
+
+   CHANGES: snmpd: BUG: 3185528: shutdown_master_agent doesn't close
+   UDP socket
+   (Fixes a bug introduced in r19511.)
+
+2011-02-18 14:43  jsafranek
+
+   *  agent/mibgroup/hardware/fsys/fsys_getfsstats.c,   
+      agent/mibgroup/hardware/fsys/fsys_mntctl.c,   
+      agent/mibgroup/hardware/fsys/fsys_mntent.c,   
+      agent/mibgroup/hardware/fsys/hw_fsys.c,   
+      agent/mibgroup/host/hrh_storage.c,   
+      include/net-snmp/agent/ds_agent.h,   
+      include/net-snmp/agent/hardware/fsys.h, man/snmpd.conf.5.def:
+
+   CHANGES: snmpd: reworked hrStorageTable to support large
+   filesystems.
+   
+   The hrStorageAllocationUnits does not report real allocation unit
+   size,
+   but some calculated value so hrStorageAllocationUnits *
+   hrStorageSize
+   gives real size of the filesystem.
+   
+   This calculation happens only when hrStorageSize is too small
+   (32bits)
+   for filesystem size, e.g. filesystems larger than 8TB with 4096
+   bytes
+   block size.
+   
+   This calculation can be turned off by 'realStorageUnits' config
+   option.
+
+2011-02-18 14:29  jsafranek
+
+   *  agent/mibgroup/hardware/fsys/fsys_mntent.c,   
+      agent/mibgroup/hardware/fsys/mnttypes.h:
+
+   Add JFS and XFS to list of known filesustems
+
+2011-02-17 11:28  jsafranek
+
+   * local/snmp-bridge-mib:
+
+   Fixed snmp-bridge-mib in standalone (agentx) version.
+   Don't declare local variables inside block. Patch provided by
+   Jens Osterkamp.
+
+2011-02-16 14:56  jsafranek
+
+   * local/snmp-bridge-mib:
+
+   Fixed snmp-bridge-mib when working in the embedded perl.
+
+2011-02-16 13:16  jsafranek
+
+   * local/snmp-bridge-mib:
+
+   Fixed GETNEXT processing in snmp-bridge-mib.
+
+2011-02-15 22:24  nba
+
+   * agent/mibgroup/mibII/udpTable.c:
+
+   Properly save entries for NetBSD and DragonFly
+
+2011-02-15 22:18  nba
+
+   * agent/mibgroup/mibII/udp.c:
+
+   remove redundant includes
+
+2011-02-15 21:46  nba
+
+   * configure:
+
+   rerun autoheader/autoconf
+
+2011-02-15 21:33  nba
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   include sys/types.h before sys/socket.h
+
+2011-02-15 21:26  nba
+
+   * m4/netsnmp_search_libs.m4:
+
+   Too much quoting is bad
+
+2011-02-15 21:11  nba
+
+   *  agent/mibgroup/mibII.h, agent/mibgroup/mibII/ipv6.c,   
+      agent/mibgroup/mibII/ipv6.h:
+
+   Fix IPv6 TCP and UDP tables, *BSD support
+
+2011-02-15 20:45  nba
+
+   *  agent/mibgroup/disman/expr/expObjectConf.c,   
+      agent/mibgroup/disman/expr/expValue.c,   
+      agent/mibgroup/disman/nslookup/lookupResultsTable.c:
+
+   Kill compiler warnings
+
+2011-02-15 20:44  nba
+
+   * agent/mibgroup/mibII/tcpTable.c:
+
+   Filter IPv6 entries from IPv4 table
+
+2011-02-15 20:42  nba
+
+   *  agent/mibgroup/host/data_access/swrun.h,   
+      agent/mibgroup/host/data_access/swrun_kinfo.c:
+
+   Proper use of getproc2 and dragonfly support
+
+2011-02-15 20:41  nba
+
+   * agent/mibgroup/hardware/fsys/fsys_getfsstats.c:
+
+   getvfsstat is only for NetBSD
+
+2011-02-15 20:39  nba
+
+   * configure.d/config_os_libs1, configure.d/config_os_libs2:
+
+   Detect need for -lkvm in proper time
+
+2011-02-15 19:42  hardaker
+
+   * snmplib/snmp_logging.c:
+
+   remove the statement about enabling stderr by default.
+
+2011-02-15 19:42  hardaker
+
+   * agent/mibgroup/mibII/vacm_vars.c:
+
+   remove 3 functions that as far as I can tell have possibly never
+   been used
+
+2011-02-14 14:38  bvassche
+
+   * agent/snmpd.c:
+
+   Fixed a MinGW-specific compiler warning.
+
+2011-02-13 16:28  magfr
+
+   * net-snmp-config.in:
+
+   CHANGES: Make it possible to build static applications using
+   net-snmp-config and the -*libs flags once more.
+
+2011-02-10 15:13  dts12
+
+   * snmplib/mib.c:
+
+   CHANGES: snmplib: PATCHES: 3165878: Catch buffer overrun on
+   64-bit systems
+
+2011-02-10 15:06  dts12
+
+   *  agent/mibgroup/hardware/cpu/cpu_linux.c,   
+      agent/mibgroup/ucd-snmp/vmstat_linux.c:
+
+   CHANGES: snmpd: PATCHES: 3152412: Handle (and report) problems
+   reading /proc/vmstat
+
+2011-02-09 07:34  bvassche
+
+   * include/net-snmp/library/container.h:
+
+   Building DLL and Perl modules with win32/build.bat works again.
+
+2011-02-08 19:38  hardaker
+
+   * agent/helpers/instance.c, include/net-snmp/agent/instance.h:
+
+   Remove the functions marked as deprecated and safe for removal in
+   5.6.
+
+2011-02-08 17:41  hardaker
+
+   * perl/SNMP/SNMP.xs, perl/agent/agent.pm:
+
+   CHANGES: perl: patch from Martin Buck: don't always open stderr
+   as the calls to snmp_log already do this and it messes up the
+   agent when embedded
+
+2011-02-08 17:37  hardaker
+
+   * agent/mibgroup/if-mib/data_access/interface_linux.c:
+
+   CHANGES: snmpd: Fix a strlen calculation as pointed out by
+   Konstantin Baydarov
+
+2011-02-07 20:07  hardaker
+
+   * man/snmp.conf.5.def:
+
+   document the 3 new SSH config tokens
+
+2011-02-07 20:07  hardaker
+
+   * snmplib/transports/snmpSSHDomain.c:
+
+   CHANGES: libnetsnmp: made the SSH transport configurable as it
+   should be.
+
+2011-02-07 20:07  hardaker
+
+   * include/net-snmp/library/default_store.h:
+
+   Added default_store strings for ssh: username, pubkey, privkey
+
+2011-02-06 06:34  magfr
+
+   * agent/mibgroup/mibII/system_mib.c:
+
+   Simplify the control flow to allow for more optimization.
+
+2011-02-03 22:42  tanders
+
+   * snmplib/snmp_api.c:
+
+   CHANGES: snmplib: BUG: 3171878: Using SNMPv3 context does not
+   work
+
+2011-02-02 07:09  magfr
+
+   * agent/snmpd.c:
+
+   Include the USING_ variables from the agent library as well, in
+   particular the
+   USING_AGENTX_* variables.
+
+2011-02-01 13:07  jsafranek
+
+   * agent/mibgroup/ip-mib/data_access/systemstats_common.c:
+
+   Don't check for 32/64bit wrap in calculated entries.
+
+2011-02-01 09:41  jsafranek
+
+   * agent/mibgroup/ip-mib/data_access/systemstats_common.c:
+
+   CHANGES: snmpd: fixed the agent writing 'looks like a 64bit wrap,
+   but prev!=new' in syslog when computing ipSystemStats
+   
+   Without the memcpy, prev_vals->stats and new_vals->stats could
+   get different,
+   which could much much later (when a counter gets bigger than 32
+   bits) result
+   in 'prev!=new' message in syslog. Typically this happens after
+   long time of
+   uptime and it is very hard to reproduce.
+
+2011-02-01 07:19  magfr
+
+   * agent/snmpd.c:
+
+   Remove some unused includes
+
+2011-01-31 22:39  nba
+
+   * agent/mibgroup/disman/nslookup/lookupCtlTable.c:
+
+   addprototypes and remove unused vars
+
+2011-01-31 22:37  nba
+
+   *  agent/mibgroup/disman/expr/expExpression.c,   
+      agent/mibgroup/disman/expr/expExpression.h,   
+      agent/mibgroup/disman/expr/expObject.c,   
+      agent/mibgroup/disman/expr/expObject.h,   
+      agent/mibgroup/disman/expr/expValueTable.c,   
+      apps/snmpnetstat/inet6.c:
+
+   const juggling to remove warnings
+
+2011-01-31 22:30  nba
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   diskio for dragonfly
+
+2011-01-31 22:28  nba
+
+   * agent/mibgroup/hardware/cpu/cpu_kinfo.c:
+
+   properly name initalizer function for cpu_kinfo
+
+2011-01-30 15:21  magfr
+
+   * apps/agentxtrap.c:
+
+   Reduce the number of used include files.
+
+2011-01-30 09:35  magfr
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h:
+
+   CHANGES: snmpd: Add missing function declaration
+
+2011-01-30 01:06  tanders
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   CHANGES: snmpd: BUG: 3151897: fd leak w/ /proc/partitions
+   read in diskio
+
+2011-01-29 23:36  tanders
+
+   * agent/mibgroup/host/hr_system.c:
+
+   NEWS: snmpd: BUG: 3166568: hrSystemProcesses missing in 5.6/5.6.1
+
+2011-01-27 09:35  dts12
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c:
+
+   After ten years intensive use, an "experimental"
+   feature can probably be released for general use.
+
+2011-01-26 16:50  hardaker
+
+   * local/mib2c:
+
+   CHANGES: mib2c: make the mib2c foreach ranges work as advertised
+   in the comments.
+
+2011-01-26 16:49  hardaker
+
+   * testing/fulltests/default/T027snmpv3Defaults_simple:
+
+   a test to ensure v3/USM snmp.conf settings work
+
+2011-01-26 16:49  hardaker
+
+   * dist/makerelease.xml:
+
+   remove testopts
+
+2011-01-26 09:12  jsafranek
+
+   * agent/mibgroup/ucd-snmp/proc.c:
+
+   CHANGES: snmpd: fixed rare race condition when counting processes
+   for UCD-SNMP-MIB::prTable
+   
+   The XX process can exit after fopen(/proc/XX/status) and before
+   fgets() from it. snmpd should continue with other processes and
+   not to stop.
+
+2011-01-19 13:57  jsafranek
+
+   * configure, configure.d/config_os_libs1:
+
+   Make us compatible with rpm-4.9, rpmGetFilesystemList does not
+   exist anymore, so the configure script should not check it.
+
+2011-01-19 06:31  nba
+
+   * configure.d/config_os_libs1:
+
+   diskIOLAx requires exp which may require -lm
+
+2011-01-18 22:39  nba
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   autoheader
+
+2011-01-18 22:37  nba
+
+   * agent/mibgroup/if-mib/data_access/interface.h:
+
+   Find proper if-mib interface for NetBSD
+
+2011-01-18 22:36  nba
+
+   * agent/mibgroup/host/hr_swrun.c:
+
+   typo
+
+2011-01-18 22:35  nba
+
+   * acconfig.h:
+
+   define dragonflyid
+
+2011-01-14 13:24  jsafranek
+
+   *  agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c:
+
+   Add IPv6 support for creating rows in ipAddresstable.
+   
+   Using SNMP SET, it is now possible to create and destroy IPv6
+   addresses on an interface.
+
+2011-01-14 12:28  jsafranek
+
+   * agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c:
+
+   CHANGES: snmpd: from Robert Story: fixed adding new addresses to
+   ipAddressTable
+   
+   Long time ago, there was a bugreport[1] regarding ipAddressTable
+   on
+   net-snmp-coders list and rstory's experimental patch without any
+   feedback.
+   Now I've got few complaints that SNMP SET on ipAddressTable
+   produces the
+   same errors and guess what, the patch fixes them.
+   
+   [1]:
+   http://sourceforge.net/mailarchive/forum.php?thread_name=20060920134935.35b36ed6%40dev.futz.org&forum_name=net-snmp-coders
+
+2011-01-14 06:25  rstory
+
+   * agent/mibgroup/agentx/protocol.c:
+
+   remove completely useless and nonsensical code
+
+2011-01-13 17:24  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   allocate space for array NULL termination
+
+2011-01-13 15:56  dts12
+
+   * dist/makerelease.xml:
+
+   Ensure releases are installed to the correct path within the
+   /tags SVN tree
+
+2011-01-13 15:15  dts12
+
+   * agent/mibgroup/mibII/kernel_netbsd.c:
+
+   Remove C++ comments
+
+2011-01-13 13:17  dts12
+
+   * agent/auto_nlist.c:
+
+   Fix broken patch
+
+2011-01-13 12:14  dts12
+
+   *  configure, configure.d/config_os_headers,   
+      configure.d/config_os_libs1:
+
+   Configure fixes for DragonFly support
+
+2011-01-13 12:04  dts12
+
+   *  agent/auto_nlist.c, agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/if-mib/data_access/interface.h,   
+      agent/mibgroup/mibII/ip.c, agent/mibgroup/mibII/ip.h,   
+      agent/mibgroup/mibII/tcp.c, include/net-snmp/system/dragonfly.h:
+
+   Code fixes for DragonFly support
+
+2011-01-13 11:33  dts12
+
+   * agent/mibgroup/hardware/memory/memory_netbsd.c:
+
+   Fix typo
+
+2011-01-12 21:23  rstory
+
+   * agent/mibgroup/notification/snmpNotifyTable.c:
+
+   merge duplicated shutdown functions
+
+2011-01-12 20:11  bvassche
+
+   *  agent/helpers/table_iterator.c,   
+      include/net-snmp/agent/table_iterator.h:
+
+   Reimplement netsnmp_register_table_iterator2() by adding the flag
+   NETSNMP_ITERATOR_OWNS_IINFO for
+   netsnmp_iterator_info. Remove
+   netsnmp_get_table_iterator_handler2() because it is now
+   superfluous.
+
+2011-01-12 19:22  bvassche
+
+   * agent/snmp_vars.c:
+
+   Avoid that the compiler complains about a missing declaration for
+   netsnmp_certs_agent_init().
+
+2011-01-12 19:20  bvassche
+
+   * 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters/usmDHParameters.c:
+
+   Get rid of a compiler warning in
+   agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters/usmDHParameters.c.
+
+2011-01-12 19:04  bvassche
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   Fixed a compiler warning (format specification mismatch) that was
+   introduced
+   in r19808 ("snmpd: PATCHES: 2975254: Avoid callback re-use of
+   closed sessions").
+
+2011-01-12 15:03  rstory
+
+   *  agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c:
+
+   CHANGES: snmp: patch: 3096725: sysORTable registation for
+   notification log mib
+   
+   original patch fixed several issues, other parts applied earlier
+
+2011-01-11 17:27  rstory
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   do not include ipv6 struct if ipv6 is not enabled
+
+2011-01-11 16:04  dts12
+
+   * ov/UCD-fields, ov/oid_to_sym.in, ov/oid_to_type.in:
+
+   Recognise Agent OID for DragonFly systems (and general tidying
+   up)
+   [From NetBSD patch archive]
+   
+   Qn: Should these be updated to refer to Net-SNMP (rather than
+   UCD)?
+
+2011-01-11 16:01  dts12
+
+   *  include/net-snmp/net-snmp-config.h.in, mibs/NET-SNMP-TC.txt,   
+      mibs/UCD-SNMP-MIB.txt, sedscript.in:
+
+   Define Agent OID for DragonFly systems
+   (and general tidying up)
+   [From NetBSD patch archive]
+
+2011-01-11 15:27  dts12
+
+   * agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udpTable.c:
+
+   NetBSD DragonFly support for UDP & TCP tables
+   [From NetBSD patch archive]
+
+2011-01-11 14:41  dts12
+
+   *  agent/mibgroup/hardware/cpu.h,   
+      agent/mibgroup/hardware/cpu/cpu_kinfo.c,   
+      agent/mibgroup/hardware/cpu/cpu_kinfo.h,   
+      agent/mibgroup/host/hr_swrun.c, agent/mibgroup/ucd-snmp/disk.c,   
+      agent/mibgroup/ucd-snmp/errormib.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/ucd-snmp/memory_freebsd2.c,   
+      agent/mibgroup/ucd-snmp/vmstat_freebsd2.c:
+
+   CHANGES: NetBSD: DragonFly support
+   [From NetBSD patch archive]
+
+2011-01-11 14:36  dts12
+
+   * configure, configure.d/config_os_struct_members:
+
+   NetBSD/DragonFly 'struct ifnet' requires KERNEL, but not _KERNEL
+   [From NetBSD patch archive]
+   (I hope I've got this one right!)
+
+2011-01-11 13:34  jsafranek
+
+   * snmplib/transports/snmpUDPBaseDomain.c:
+
+   CHANGES: snmplib: from Bill Fenner: fix sending of UDP responses
+   from multihomed agents.
+   
+   Try to send the response as it was before Net-SNMP 5.6 (assuming
+   the appropriate request was unicast) and only if it fails try to
+   set if_index (the request must be broadcast).
+
+2011-01-11 13:22  dts12
+
+   * agent/mibgroup/mibII/interfaces.c:
+
+   Really handle systems with 'struct timespec ifnet.if_lastchange'
+   (missing element from SVN revision 19841)
+
+2011-01-11 12:24  dts12
+
+   * configure, configure.d/config_os_headers:
+
+   Additional headers when testing for IPv6 headers
+   [From NetBSD patch archive]
+
+2011-01-11 12:14  dts12
+
+   * snmplib/transports/snmpUDPIPv6Domain.c:
+
+   Missing type under darwin
+   [From NetBSD patch archive]
+
+2011-01-11 12:10  dts12
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   NetBSD support for Disk I/O stats
+   [From NetBSD patch archive]
+
+2011-01-11 12:01  dts12
+
+   *  configure, configure.d/config_os_struct_members,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Handle systems with 'struct timespec ifnet.if_lastchange' (rather
+   than struct timeval)
+   [From NetBSD patch archive]
+
+2011-01-11 11:27  dts12
+
+   *  agent/mibgroup/mibII/icmp.h, agent/mibgroup/mibII/ip.h,   
+      agent/mibgroup/mibII/tcp.h, agent/mibgroup/mibII/udp.h:
+
+   Pull in kernel_netbsd module when required
+   [Based on fix from NetBSD patch archive]
+
+2011-01-11 10:36  dts12
+
+   *  agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/kernel_netbsd.c,   
+      agent/mibgroup/mibII/kernel_netbsd.h,   
+      agent/mibgroup/mibII/mibII_common.h, agent/mibgroup/mibII/tcp.c,  
+       agent/mibgroup/mibII/udp.c, include/net-snmp/system/netbsd.h:
+
+   CHANGES: NetBSD: Retrieve MIB-II network statistics via sysctl
+   [From NetBSD patch archive]
+
+2011-01-11 07:04  nba
+
+   * agent/mibgroup/if-mib/data_access/interface_linux.c:
+
+   Fix for pci_lookup_name and RHEL4
+
+2011-01-10 16:56  dts12
+
+   * agent/mibgroup/mibII/route_write.c:
+
+   Add support for darwin
+   (The patch from the NetBSD archive appears to be essentially the
+   same as the equivalent code from the OpenBSD patch archive)
+
+2011-01-10 16:54  dts12
+
+   * agent/mibgroup/host/hr_network.c:
+
+   Add support for darwin
+   [From NetBSD patch archive]
+
+2011-01-10 14:55  dts12
+
+   *  agent/mibgroup/hardware/cpu/cpu_sysctl.c,   
+      agent/mibgroup/hardware/memory/memory_netbsd.c:
+
+   CHANGES: NetBSD: Update memory and CPU statistics handling
+   [From NetBSD patch archive]
+
+2011-01-10 14:22  dts12
+
+   * agent/mibgroup/ucd-snmp/vmstat.c:
+
+   Fix divide-by-zero error in CPU performance statistics
+   [From NetBSD patch archive]
+
+2011-01-09 22:54  dts12
+
+   *  agent/mibgroup/host/data_access/swrun_kinfo.c,   
+      agent/mibgroup/host/hr_swrun.c, configure,   
+      configure.d/config_os_libs2:
+
+   CHANGES: OpenBSD: Update SWRun code to use kvm_getproc2
+   [From OpenBSD patch archive]
+
+2011-01-09 21:30  dts12
+
+   * configure, configure.d/config_os_headers:
+
+   CHANGES: build: OpenBSD: Fix order of headers when checking
+   <netinet/in_pcb.h>
+   [From OpenBSD patch archive]
+
+2011-01-09 19:44  dts12
+
+   * agent/mibgroup/hardware/cpu/cpu_sysctl.c:
+
+   Amend how multi-CPU statistics are retreived using sysctl on
+   OpenBSD systems
+   (if this block was active, which it isn't, but that's not
+   important right not)
+   [Based on OpenBSD patch archive, amended (probably wrongly) by
+   DTS]
+
+2011-01-09 18:13  dts12
+
+   *  agent/mibgroup/host/hr_system.c,   
+      agent/mibgroup/ucd-snmp/diskio.c, agent/mibgroup/ucd-snmp/proc.c, 
+        agent/mibgroup/ucd-snmp/vmstat_bsdi4.c,   
+      agent/mibgroup/ucd-snmp/vmstat_netbsd1.c:
+
+   sysctl takes a 'size_t' variable for the size parameter
+
+2011-01-09 18:11  dts12
+
+   *  agent/mibgroup/hardware/cpu/cpu_nlist.c,   
+      agent/mibgroup/hardware/cpu/cpu_sysctl.c,   
+      agent/mibgroup/hardware/memory/memory_netbsd.c,   
+      agent/mibgroup/host/data_access/swrun_kinfo.c:
+
+   sysctl takes a 'size_t' variable for the size parameter
+
+2011-01-08 08:30  magfr
+
+   * configure, configure.d/config_modules_security_modules:
+
+   CHANGES: building: Fix --with-security-modules handling
+   Allow repeated modules (tsm,tsm) as well as defailt modules (usm)
+   Move the generation of the files after the checking
+
+2011-01-08 00:47  magfr
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in:
+
+   Update acconfig.h with changes from r19819.
+   Rerun autoheader.
+
+2011-01-07 20:56  dts12
+
+   * agent/mibgroup/mibII/route_write.c:
+
+   CHANGES: OpenBSD: Support updating the routing table
+   [From OpenBSD patch archive]
+
+2011-01-07 20:29  dts12
+
+   * agent/mibgroup/mibII/udpTable.c:
+
+   Set 'next' field for udp entry linked list on OpenBSD4
+   [From OpenBSD patch archive]
+   
+   This should probably be set in <net-snmp/system/openbsd.h>
+
+2011-01-07 20:12  dts12
+
+   * agent/mibgroup/mibII/mta_sendmail.c:
+
+   Use a suitable constant for CWD buffer size
+   [Based on OpenBSD patch archive]
+
+2011-01-07 20:07  dts12
+
+   * agent/mibgroup/mibII/interfaces.c:
+
+   Move global variable into the method where it's used.
+   [From OpenBSD patch archive]
+
+2011-01-07 16:48  dts12
+
+   * agent/mibgroup/if-mib/data_access/interface_sysctl.c:
+
+   Handle systems without IFM_TOKEN
+   [From OpenBSD patch archive]
+
+2011-01-07 14:38  dts12
+
+   * agent/mibgroup/hardware/memory/memory_freebsd.c:
+
+   Update retrieval of cache usage statistics on FreeBSD
+   [From FreeBSD patch archive]
+
+2011-01-07 14:20  dts12
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   Increase maximum size of execute output cache
+   [From FreeBSD patch archive]
+
+2011-01-07 14:09  dts12
+
+   *  agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c:
+
+   Remove duplicate include directives
+   [From FreeBSD patches archive]
+
+2011-01-07 13:47  dts12
+
+   * agent/mibgroup/mibII/at.c:
+
+   Handle systems where RTF_LLINFO is not defined
+   [From FreeBSD patch archive]
+
+2011-01-07 13:40  dts12
+
+   * agent/mibgroup/ucd-snmp/disk.c:
+
+   Include zfs mount points for disk reports under FreeBSD
+   [From FreeBSD patch archive]
+
+2011-01-07 13:34  dts12
+
+   * include/net-snmp/system/generic.h:
+
+   Protect against multiple-inclusion
+   [From FreeBSD patches archive]
+
+2011-01-07 13:24  dts12
+
+   *  snmplib/callback.c, snmplib/default_store.c, snmplib/keytools.c,  
+       snmplib/lcd_time.c, snmplib/mib.c, snmplib/parse.c,   
+      snmplib/scapi.c, snmplib/snmp_auth.c, snmplib/snmp_debug.c,   
+      snmplib/snmp_logging.c, snmplib/snmp_transport.c,   
+      snmplib/snmpusm.c, snmplib/tools.c:
+
+   Include <unistd.h>
+   [From BSD patches archive]
+
+2011-01-07 13:21  dts12
+
+   * snmplib/snmp_api.c:
+
+   Avoid callback re-use of closed sessions.
+   (Part of patch #2975254 - see SVN revision 19808)
+
+2011-01-07 12:55  dts12
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c:
+
+   FreeBSD uses a slightly different naming scheme for struct ifreq
+   [From FreeBSD patches archive]
+
+2011-01-07 12:22  dts12
+
+   * agent/mibgroup/mibII/tcpTable.c:
+
+   Ensure TCP table information is loaded before counting
+   connections
+   [From FreeBSD patch archive]
+
+2011-01-06 19:35  hardaker
+
+   * perl/agent/agent.pm:
+
+   Fix documentation bug pointed out in cpan bug #52618
+
+2011-01-06 14:11  dts12
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   CHANGES: snmpd: PATCHES: 2975254: Avoid callback re-use of closed
+   sessions
+   
+   Qn: Should this also be applied when main session is NULL?
+
+2011-01-06 13:21  dts12
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   Fix misleading indentation
+   
+   Qn: Should this call 'subagent_startup' rather than
+   'agentx_reopen_session'?
+   Qn: Why doesn't this attempt to re-open the session if it was
+   originally NULL?
+
+2011-01-06 12:46  dts12
+
+   * agent/snmp_agent.c:
+
+   CHANGES: snmpd: PATCHES: 2941811: Handle successful requests with
+   reqID 0
+
+2011-01-06 09:38  bvassche
+
+   *  agent/mibgroup/agent/nsModuleTable.c,   
+      agent/mibgroup/agent/nsTransactionTable.c:
+
+   Spelling fix: Initialzies -> Initializes.
+
+2011-01-06 09:35  bvassche
+
+   *  agent/helpers/table_iterator.c, agent/mibgroup/agent/nsCache.c,   
+      agent/mibgroup/agent/nsDebug.c, agent/mibgroup/agent/nsLogging.c, 
+        agent/mibgroup/agent/nsModuleTable.c,   
+      agent/mibgroup/agent/nsTransactionTable.c,   
+      agent/mibgroup/agent/nsVacmAccessTable.c,   
+      agent/mibgroup/examples/netSnmpHostsTable.c,   
+      agent/mibgroup/mibII/icmp.c,   
+      agent/mibgroup/mibII/ipCidrRouteTable.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udpTable.c, 
+        agent/mibgroup/mibII/vacm_context.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.h,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.h,   
+      include/net-snmp/agent/table_iterator.h:
+
+   CHANGES: agent: Added netsnmp_get_table_iterator2().
+   CHANGES: agent: Added netsnmp_register_table_iterator2().
+   CHANGES: agent: Added netsnmp_handler_owns_iterator_info().
+   CHANGES: agent: Fixed leak-at-exit triggered by snmpNotifyTable.
+   CHANGES: agent: Fixed leak-at-exit triggered by
+   snmpTargetAddrTable.
+   Also, restored backwards compatibility of
+   netsnmp_register_table_iterator().
+
+2011-01-06 04:45  rstory
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   include sys/socket.h if available
+
+2011-01-05 14:06  dts12
+
+   * snmplib/snmp_api.c:
+
+   CHANGES: snmplib: BUGS: 3134323: Fix crash when comparing invalid
+   OIDs
+
+2011-01-05 14:04  dts12
+
+   * apps/snmptrapd_handlers.c:
+
+   CHANGES: snmptrapd: BUGS: 3151254: Fix crash with invalid
+   traphandle directive
+
+2011-01-05 09:55  dts12
+
+   * apps/snmpwalk.c:
+
+   Expand tab characters
+
+2011-01-04 22:06  magfr
+
+   * snmplib/snmp_transport.c:
+
+   CHANGES: snmplib: Check that the argument to
+   netsnmp_transport_copy is non-NULL
+
+2011-01-04 18:24  hardaker
+
+   * COPYING:
+
+   Copyright update for 2011
+
+2011-01-04 12:01  bvassche
+
+   * agent/mibgroup/mibII/var_route.c:
+
+   Fix compiler warnings triggered by the Win32 MIB-II
+   implementation.
+
+2011-01-03 19:48  bvassche
+
+   * agent/mibgroup/sctp-mib/sctpScalars.c:
+
+   Removed two unused variables.
+
+2011-01-03 19:47  bvassche
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   Fixed a recently introduced mismatch between format specification
+   and argument list.
+
+2011-01-03 19:47  bvassche
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   Get rid of recently introduced compiler warnings by adding two
+   #include directives and commenting out two unused functions.
+
+2011-01-02 05:48  rstory
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   don't free callers ptr
+
+2011-01-02 05:48  rstory
+
+   *  agent/agent_registry.c, agent/helpers/table.c,   
+      agent/helpers/table_data.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/disman/event/mteObjects.c,   
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      agent/mibgroup/disman/ping/pingCtlTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/mibgroup/hardware/cpu/cpu.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/ip-forward-mib/data_access/route_common.c,   
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c,   
+      agent/mibgroup/snmpv3/usmUser.c, agent/snmp_agent.c,   
+      apps/snmpnetstat/if.c, snmplib/container_binary_array.c,   
+      snmplib/keytools.c, snmplib/mib.c, snmplib/snmp_api.c,   
+      snmplib/snmpv3.c, snmplib/tools.c,   
+      snmplib/transports/snmpCallbackDomain.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c:
+
+   clean up SNMP_FREE usage
+
+2011-01-02 05:47  rstory
+
+   * snmplib/transports/snmpIPv6BaseDomain.c:
+
+   fix cut-n-paste error in debug token
+
+2011-01-02 05:47  rstory
+
+   * include/net-snmp/library/snmpUDPIPv6Domain.h:
+
+   fix function name in prototype
+
+2011-01-02 05:46  rstory
+
+   * agent/helpers/cache_handler.c:
+
+   fix compiler warning
+
+2011-01-02 05:46  rstory
+
+   * include/net-snmp/library/container.h, snmplib/container.c:
+
+   CHANGES: snmplib: remove inline versions of container funcs
+
+2011-01-02 05:46  rstory
+
+   * snmplib/cert_util.c:
+
+   CHANGES: snmplib: dont return empty array
+
+2011-01-02 05:46  rstory
+
+   * man/snmpd.conf.5.def, snmplib/transports/snmpUDPIPv6Domain.c:
+
+   fix typos/grammar in man pages/comments (no code changes)
+
+2011-01-02 05:45  rstory
+
+   *  agent/mibgroup/target/target.c, python/netsnmp/client_intf.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   NEWS: snmplib: add new transport config tokens
+   localCert/peerCert,
+   deprecate our_identity, their_identity
+
+2011-01-02 05:45  rstory
+
+   *  include/net-snmp/library/default_store.h, man/snmpcmd.1.def,   
+      man/snmpd.conf.5.def, snmplib/cert_util.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   NEWS: snmplib: introduce new localCert/peerCert, deprecate
+   serverCert, clientCert, defX509ServerPub, defX509ClientPub
+
+2011-01-02 05:44  rstory
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      snmplib/snmp_transport.c, snmplib/transports/snmpDTLSUDPDomain.c, 
+        snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpTCPIPv6Domain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPIPv6Domain.c:
+
+   NEWS: snmplib: add IPv6 support to DTLSUDP transport
+   CHANGES: snmplib: use new netsnmp_sockaddr_storage in
+   netsnmp_addr_pair
+   CHANGES: snmplib: add base_transport ptr for tunneled transports
+
+2011-01-02 05:42  rstory
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
+
+   CHANGES: snmpd: skip non-AF_INET interfaces when loading ipv4
+   addrs
+
 2010-12-29 01:37  hardaker
 
    * agent/mibgroup/agentx/protocol.c:
@@ -9397,37 +34343,6 @@
 
    NEWS: snmpd: Patch from Niels to fix VACM persistant storage.
 
-2010-12-21 16:33  hardaker
-
-   * CHANGES:
-
-   fixed the NEWS file to mention 5.6.1 instead of 5.7
-
-2010-12-21 16:32  hardaker
-
-   * NEWS:
-
-   fixed the NEWS file to mention 5.6.1 instead of 5.7
-
-2010-12-21 15:50  hardaker
-
-   * CHANGES:
-
-   version update
-
-2010-12-21 15:08  hardaker
-
-   * configure:
-
-   fixed autoconf version
-
-2010-12-21 15:07  hardaker
-
-   *  FAQ, README, configure, configure.ac, dist/Makefile,   
-      dist/net-snmp.spec:
-
-   Version number update
-
 2010-12-21 11:29  dts12
 
    * dist/makerelease.xml:
@@ -9461,12 +34376,6 @@
    CHANGES: snmpd: Patch from Claus Klein to fix engineid generation
    on outgoing v3 traps from the agent
 
-2010-12-10 05:19  hardaker
-
-   * dist/makerelease.xml:
-
-   fix make test options
-
 2010-12-08 13:17  jsafranek
 
    * agent/mibgroup/mibII/ipv6.c:
@@ -9480,25 +34389,6 @@
    the loading
    of the list a bit.
 
-2010-12-08 06:17  hardaker
-
-   * CHANGES, ChangeLog:
-
-   update for 5.6.1.pre2
-
-2010-12-08 06:01  hardaker
-
-   * configure:
-
-   Version number update
-
-2010-12-06 23:27  hardaker
-
-   *  FAQ, README, configure, configure.ac, dist/Makefile,   
-      dist/net-snmp.spec:
-
-   Version number update
-
 2010-12-06 23:23  hardaker
 
    * agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c:
@@ -9527,18 +34417,17 @@
    fix contextEngineIDs for outgoing informs from snmpinform to be
    the local engineID
 
-2010-12-01 14:30  hardaker
+2010-12-01 21:18  nba
 
-   * configure:
+   * agent/mibgroup/if-mib/data_access/interface_linux.c:
 
-   generate with the proper autoconf
+   Fix conflicting declarations
 
-2010-12-01 01:06  hardaker
+2010-12-01 01:23  hardaker
 
-   *  agent/Makefile.depend, agent/mibgroup/Makefile.depend,   
-      apps/Makefile.depend, snmplib/Makefile.depend:
+   * agent/snmp_vars.c:
 
-   make depend
+   Patch from magfr to fix building without openssl
 
 2010-12-01 01:06  hardaker
 
@@ -9546,23 +34435,12 @@
 
    use netsnmp_assert instead of assert
 
-2010-12-01 00:46  hardaker
+2010-11-30 23:43  hardaker
 
-   *  FAQ, README, configure, configure.ac, dist/Makefile,   
-      dist/net-snmp.spec, perl/ASN/ASN.pm,   
-      perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
-        perl/TrapReceiver/TrapReceiver.pm,
-      perl/agent/Support/Support.pm,    perl/agent/agent.pm,
-      perl/agent/default_store/default_store.pm,   
-      perl/default_store/default_store.pm:
+   * snmplib/transports/snmpDTLSUDPDomain.c:
 
-   Version number update
-
-2010-12-01 00:46  hardaker
-
-   * Makefile.top:
-
-   version update
+   implement DTLS cookies semi-properly (state is still saved, which
+   still needs to change)
 
 2010-11-30 23:27  hardaker
 
@@ -9587,6 +34465,14 @@
    CHANGES: snmpd: PATCH: 3053436: from: takevos: fix:
    tcpListenerTable_data_access invalid memory access
 
+2010-11-30 22:18  hardaker
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c, configure,   
+      configure.d/config_os_struct_members,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   reverted 19701 (ethtool) as it broke things
+
 2010-11-30 21:08  nba
 
    * apps/snmptls.c, apps/snmptrapd_sql.c:
@@ -9605,6 +34491,13 @@
 
    error check the right pointer after attempting allocation
 
+2010-11-30 05:58  hardaker
+
+   * apps/snmpwalk.c:
+
+   NEWS: apps: PATCH 3054817: from nightcoding: Adds per-variable
+   timed output support to snmpwalk using -CT
+
 2010-11-30 05:56  hardaker
 
    *  agent/mibgroup/if-mib/data_access/interface_linux.c, configure,   
@@ -9614,6 +34507,15 @@
    CHANGES: snmpd: PATCH: 3057090: from shemminger: make ethtool
    support on linux use the high speed struct info for 100G+.
 
+2010-11-30 05:47  hardaker
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c, configure,   
+      configure.d/config_os_libs2,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   NEWS: snmpd: PATCH 3057093: from shemminger: allow linux to use
+   libpci for creating useful ifDescr strings
+
 2010-11-30 04:58  hardaker
 
    * agent/mibgroup/ip-mib/data_access/systemstats_linux.c:
@@ -9644,18 +34546,6 @@
    CHANGES: snmpd: BUG: enforce max length on TLS secName maps
    CHANGES: snmpd: add priority to secname debugging
 
-2010-11-30 04:04  rstory
-
-   *  agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/ip.c,   
-      agent/mibgroup/mibII/tcp.c, agent/mibgroup/mibII/udp.c,   
-      agent/mibgroup/sctp-mib/sctpScalars.c:
-
-   CHANGES: agent: don't second-guess cache handler
-   
-   (waves hand) this is not the function you are looking for.
-   
-   netsnmp_cache_is_valid() is not meant for mib modules
-
 2010-11-29 22:20  rstory
 
    * snmplib/transports/snmpTLSBaseDomain.c:
@@ -9663,7 +34553,7 @@
    CHANGES: snmpd: add debug for ssl ciphers, clarify fingerprint
    match debug
 
-2010-11-29 22:14  rstory
+2010-11-29 22:18  rstory
 
    * agent/helpers/cache_handler.c:
 
@@ -9680,21 +34570,24 @@
    changes to a
    patch and then commit it without testing :-(
 
-2010-11-18 10:55  bvassche
+2010-11-18 11:04  bvassche
 
-   *  ., include/net-snmp/library/snmpTLSBaseDomain.h,   
-      snmplib/transports/snmpTLSBaseDomain.c:
-
-   Compiler warning fixes for the TLS transport code: backported
-   r19546 from the trunk.
-
-2010-11-18 10:53  bvassche
-
-   * 
+   *  .,   
       agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c:
 
-   Fixed what was broken by r19685: dividing the return value of
-   snmp_log() does not make sense.
+   Applied r19688 on the trunk too (follow-up for r19685).
+
+2010-11-18 03:49  rstory
+
+   *  agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/tcp.c, agent/mibgroup/mibII/udp.c,   
+      agent/mibgroup/sctp-mib/sctpScalars.c:
+
+   CHANGES: agent: don't second-guess cache handler
+   
+   (waves hand) this is not the function you are looking for.
+   
+   netsnmp_cache_is_valid() is not meant for mib modules
 
 2010-11-17 19:59  nba
 
@@ -9733,28 +34626,6 @@
 
    CHANGES: snmpd: fix double free in TLS error handling
 
-2010-11-16 12:43  bvassche
-
-   * win32/Makefile-apps.in:
-
-   Follow-up for r19422.
-
-2010-11-16 12:38  bvassche
-
-   * win32/mib_module_shutdown.h:
-
-   CHANGES: Win32: shutdown_snmpNotifyFilterTable() and
-   shutdown_winExtDLL() are now invoked when the Net-SNMP service is
-   stopped.
-   (Partially backported r19515 from the trunk.)
-
-2010-11-16 10:41  bvassche
-
-   *  testing/fulltests/support/simple_TESTCONF.sh,   
-      testing/fulltests/support/simple_eval_tools.sh:
-
-   Backported test infrastructure changes from the trunk.
-
 2010-11-16 10:39  bvassche
 
    * testing/fulltests/default/T065agentextend_simple:
@@ -9771,39 +34642,6 @@
    such information (NUD_NOARP), e.g. tunnels. Reported by Stephen
    Hemminger. See also patch #3107003.
 
-2010-11-16 08:49  bvassche
-
-   * configure, configure.d/config_os_functions:
-
-   MinGW: Backported r19652 from the trunk.
-
-2010-11-16 08:01  bvassche
-
-   *  configure, configure.d/config_os_functions,   
-      configure.d/config_os_progs:
-
-   CHANGES: MinGW: configure: Detection of the functions
-   gai_strerror(), getaddrinfo(), gethostname() and gethostname()
-   does now succeed.
-   (Backported r19646 from the trunk.)
-
-2010-11-16 07:55  bvassche
-
-   * snmplib/transports/snmpUDPIPv6Domain.c:
-
-   CHANGES: agent: com2sec6 directive: If configure has not found
-   getaddrinfo(), non-numeric IPv6 addresses do now trigger an error
-   message.
-   (Backported r19650.)
-
-2010-11-16 07:51  bvassche
-
-   * include/net-snmp/output_api.h, snmplib/snmp_debug.c:
-
-   CHANGES: snmplib: Changed the argument type of
-   debug_register_tokens() from char * into const char *.
-   (Backported r19665 and r19666 from the trunk.)
-
 2010-11-15 14:15  bvassche
 
    * snmplib/asn1.c:
@@ -9813,18 +34651,38 @@
    asn_build_signed_int64(). Most but not all of these bugs were
    specific to 64-bit systems. Fixes bug #3093199.
 
-2010-11-15 14:09  bvassche
+2010-11-15 13:32  bvassche
 
-   *  testing/fulltests/unit-tests/T007inet_pton_clib.c,   
-      testing/fulltests/unit-tests/T008asn1_clib.c:
+   * testing/fulltests/unit-tests/T008asn1_clib.c:
 
-   Copied two unit-tests from the trunk.
+   Avoid triggering truncation warnings.
 
-2010-11-15 14:09  bvassche
+2010-11-15 13:16  bvassche
 
-   * testing/fulltests/support/clib_build:
+   * testing/fulltests/unit-tests/T008asn1_clib.c:
 
-   Merged recent clib_build changes from the trunk.
+   Restricted all constants to 32 bits.
+
+2010-11-15 12:35  bvassche
+
+   * snmplib/snmp_debug.c:
+
+   Follow-up for r19665.
+
+2010-11-15 12:33  bvassche
+
+   * include/net-snmp/output_api.h, snmplib/snmp_debug.c:
+
+   CHANGES: snmplib: Changed the argument type of
+   debug_register_tokens() from char * into const char *.
+
+2010-11-15 10:56  bvassche
+
+   * testing/fulltests/unit-tests/T008asn1_clib.c:
+
+   Added unit test for ASN.1 encoding and decoding (only 32-bit and
+   64-bit
+   integers so far).
 
 2010-11-11 22:48  nba
 
@@ -9841,6 +34699,30 @@
    Cleanup: Removed superfluous references to the POSIX threads
    library.
 
+2010-11-11 08:20  bvassche
+
+   * agent/mibgroup/util_funcs.h:
+
+   Follow-up for r19660: Use pid_t consistently.
+
+2010-11-10 16:36  bvassche
+
+   *  agent/mibgroup/struct.h, agent/mibgroup/ucd-snmp/pass_persist.c,  
+       agent/mibgroup/util_funcs.c, agent/mibgroup/util_funcs.h,   
+      include/net-snmp/types.h:
+
+   CHANGES: agent: Introduced netsnmp_pid_t.
+   CHANGES: Win32: Eliminated casts between int and HANDLE in
+   agent/mibgroup/util_funcs.c and
+   agent/mibgroup/ucd-snmp/pass_persist.c.
+
+2010-11-10 15:49  bvassche
+
+   *  win32/libsnmp/Makefile.in, win32/libsnmp/libsnmp.dsp,   
+      win32/libsnmp_dll/Makefile.in, win32/libsnmp_dll/libsnmp_dll.dsp:
+
+   Follow-up for r19606: cmu_compat removal.
+
 2010-11-10 12:31  bvassche
 
    * configure, configure.d/config_os_progs:
@@ -9866,7 +34748,13 @@
 
    * testing/fulltests/default/T160snmpnetstat_simple:
 
-   Backported r19653.
+   Passes now on MinGW too.
+
+2010-11-09 11:31  bvassche
+
+   * configure, configure.d/config_os_functions:
+
+   Follow-up for r19646.
 
 2010-11-09 11:30  bvassche
 
@@ -9875,13 +34763,48 @@
    CHANGES: MinGW: testing: If the agent has been asked to stop,
    wait until the snmpd process disappeared before proceeding.
 
-2010-11-08 15:39  bvassche
+2010-11-09 10:02  bvassche
+
+   * snmplib/transports/snmpUDPIPv6Domain.c:
+
+   CHANGES: agent: com2sec6 directive: If configure has not found
+   getaddrinfo(), non-numeric IPv6 addresses do now trigger an error
+   message.
+
+2010-11-08 15:36  bvassche
 
    * testing/fulltests/default/T071com2sec6_simple:
 
    CHANGES: testing: Test 71 (com2sec6_simple) does now succeed even
    if IPv6 DNS resolution is not available.
-   (Backported r19648.)
+
+2010-11-08 15:02  bvassche
+
+   * testing/fulltests/support/clib_build:
+
+   MinGW, testing: clib tests build again without warnings.
+
+2010-11-08 14:52  bvassche
+
+   *  configure, configure.d/config_os_functions,   
+      configure.d/config_os_progs:
+
+   CHANGES: MinGW: configure: Detection of the functions
+   gai_strerror(), getaddrinfo(), gethostbyname() and gethostname()
+   does now succeed.
+
+2010-11-08 14:48  bvassche
+
+   * testing/fulltests/unit-tests/T007inet_pton_clib.c:
+
+   CHANGES: testing: Added inet_ntop() and inet_pton() unit test.
+
+2010-11-08 14:47  bvassche
+
+   * testing/fulltests/support/clib_build:
+
+   testing: clib_build: Added #include directives (<arpa/inet.h> and
+   <netinet/ip6.h>).
 
 2010-11-08 08:46  bvassche
 
@@ -9889,6 +34812,21 @@
 
    Win32: agent: eliminated casts from/to int for thread handles.
 
+2010-11-08 07:58  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   Removed NETSNMP_STATIC_INLINE from the declaration of
+   _build_cache_name - at least gcc is better than a human at
+   deciding which functions should be inlined and which ones not.
+
+2010-11-08 07:56  bvassche
+
+   * agent/helpers/table_data.c:
+
+   netsnmp_table_data_clone_row(): Added missing free() statement in
+   an error path.
+
 2010-11-07 21:15  dts12
 
    * agent/mibgroup/host/hr_storage.c:
@@ -9937,40 +34875,29 @@
 
    Made sure that rpmGetPath() can be found by configure.
 
-2010-11-05 14:58  bvassche
+2010-11-05 14:50  bvassche
 
-   * configure, configure.d/config_os_libs2:
+   * configure, configure.d/config_os_libs1:
 
-   Removed more code that was accidentially inserted by the patch
-   tool.
+   Removed superfluous -I/usr/include/rpm.
 
-2010-11-05 14:57  bvassche
-
-   * include/net-snmp/net-snmp-config.h.in:
-
-   Reverted r19622.
-
-2010-11-05 14:52  bvassche
-
-   *  configure, configure.d/config_os_libs1,   
-      configure.d/config_os_libs2:
-
-   Cleaned up r19624: removed garbage added by the patch tool.
-
-2010-11-05 13:55  bvassche
+2010-11-05 12:18  bvassche
 
    *  Makefile.in, configure, configure.ac,   
       configure.d/config_os_headers, configure.d/config_os_libs,   
       configure.d/config_os_libs1, configure.d/config_os_libs2:
 
-   CHANGES: agent: Fixed order of rpmlib detection and agent module
-   configuration (backported r19621 from trunk).
+   CHANGES: agent: Find out whether librpm is available before
+   configuring the agent modules because host/data/access/swinst
+   needs symbol HAVE_LIBRPM. As a result, configure has to be run
+   only once instead of twice to enable the hrSWInstalled table on
+   systems that have librpm.
 
-2010-11-05 13:37  bvassche
+2010-11-05 12:11  bvassche
 
-   * include/net-snmp/net-snmp-config.h.in:
+   * agent/mibgroup/disman/expression/expErrorTable.c:
 
-   Regenerated include/net-snmp/net-snmp-config.h.in.
+   Suppress a compiler warning.
 
 2010-11-05 10:00  bvassche
 
@@ -9988,12 +34915,35 @@
    CHANGES: agent: host/data_access/swinst_rpm: Log an error message
    if rpmdbOpen() fails.
 
+2010-11-05 08:50  bvassche
+
+   *  agent/mibgroup/Rmon/alarmTable.c, agent/mibgroup/Rmon/event.c,   
+      agent/mibgroup/Rmon/history.c, agent/mibgroup/Rmon/row_api.h,   
+      agent/mibgroup/Rmon/rows.c, agent/mibgroup/Rmon/statistics.c,   
+      agent/mibgroup/disman/expression/expExpressionTable.c,   
+      agent/mibgroup/disman/expression/expObjectTable.c,   
+      agent/mibgroup/disman/expression/expValueTable.c:
+
+   Rmon / disman compiler warning fixes.
+
 2010-11-05 08:48  bvassche
 
    * include/net-snmp/library/snmp_assert.h:
 
    CHANGES: snmplib: Added macro netsnmp_static_assert().
 
+2010-11-05 08:40  bvassche
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   Follow-up for r19566.
+
+2010-11-05 08:37  bvassche
+
+   * agent/mibgroup/host/data_access/swinst.h:
+
+   Removed a (harmless ?) circular reference.
+
 2010-11-04 13:09  dts12
 
    * dist/net-snmp.spec:
@@ -10001,20 +34951,24 @@
    CHANGES: Linux: PATCHES: 3083027: Fix RPM spec file to support
    CentOS
 
-2010-11-04 12:45  bvassche
-
-   * agent/snmpd.c:
-
-   Reverted r19601 and thereby reenabled the invocation of
-   shutdown_master_agent() and shutdown_agent() during
-   snmp_shutdown().
-
 2010-11-03 13:22  rstory
 
    * testing/fulltests/tls/T200TlsIpv6_simple:
 
    skip tlsipv6 test if not tlstcp/tcpipv6 domains
 
+2010-11-01 23:03  magfr
+
+   *  acconfig.h, include/net-snmp/library/cmu_compat.h,   
+      include/net-snmp/library/libsnmp.h,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/net-snmp-includes.h, snmplib/Makefile.in,   
+      snmplib/cmu_compat.c, snmplib/mib.c,   
+      win32/net-snmp/net-snmp-config.h:
+
+   NEWS: snmplib: Remove the support for CMU compatibility since
+   there is no way to enable it and nobody have missed it.
+
 2010-11-01 16:50  dts12
 
    * man/variables.5.def:
@@ -10028,80 +34982,6 @@
 
    Document -Cf in the two man pages separately.
 
-2010-11-01 16:30  dts12
-
-   *  man/netsnmp_session_api.3.def, man/snmpbulkwalk.1.def,   
-      man/snmpget.1.def, man/snmpgetnext.1.def, man/snmpset.1.def,   
-      man/snmptrap.1.def, man/snmptrapd.8.def, man/snmpwalk.1.def:
-
-   Remove CMU copyright notice from man pages that
-   were not inherited from CMU-SNMP
-   (and qualify the copyright for those that were).
-
-2010-11-01 16:23  bvassche
-
-   * agent/helpers/table.c:
-
-   Partially reverted r19485 because it triggered double frees
-   during snmpd exit (this change is already present on the trunk).
-   An example:
-   
-   ==18709== Invalid read of size 8
-   ==18709== at 0x4E76D54: netsnmp_table_registration_info_free
-   (table.c:1008)
-   ==18709== by 0x50DBEB2: shutdown_sysORTable (sysORTable.c:286)
-   ==18709== by 0x518E37C: _shutdown_mib_modules
-   (mib_module_shutdown.h:3)
-   ==18709== by 0x603CA7C: snmp_call_callbacks (callback.c:338)
-   ==18709== by 0x600EAE4: snmp_shutdown (snmp_api.c:898)
-   ==18709== by 0x40517F: main (snmpd.c:1066)
-   ==18709== Address 0x7322960 is 0 bytes inside a block of size 32
-   free'd
-   ==18709== at 0x4C26496: free (vg_replace_malloc.c:366)
-   ==18709== by 0x4E767C7:
-   netsnmp_free_netsnmp_table_registration_info (table.c:74)
-   ==18709== by 0x4E4416B: netsnmp_handler_free
-   (agent_handler.c:685)
-   ==18709== by 0x4E4414F: netsnmp_handler_free
-   (agent_handler.c:680)
-   ==18709== by 0x4E442AF: netsnmp_handler_registration_free
-   (agent_handler.c:742)
-   ==18709== by 0x4E46F7C: netsnmp_subtree_free
-   (agent_registry.c:468)
-   ==18709== by 0x4E486B9: unregister_mib_context
-   (agent_registry.c:1745)
-   ==18709== by 0x4E430FC: netsnmp_unregister_handler
-   (agent_handler.c:326)
-   ==18709== by 0x4E76891: netsnmp_unregister_table (table.c:137)
-   ==18709== by 0x4E7B124: netsnmp_container_table_unregister
-   (table_container.c:334)
-   ==18709== by 0x50DBE90: shutdown_sysORTable (sysORTable.c:283)
-   ==18709== by 0x518E37C: _shutdown_mib_modules
-   (mib_module_shutdown.h:3)
-
-2010-11-01 15:27  bvassche
-
-   * agent/snmpd.c:
-
-   Partially reverted r19511: disabled invocation of
-   shutdown_master_agent() and shutdown_agent() during
-   snmp_shutdown() again.
-
-2010-11-01 13:55  dts12
-
-   * man/tkmib.1.def:
-
-   Suppress forcing of "Berkeley Distribution" footer
-   (Allows Net-SNMP version information to be displayed in the man
-   page)
-
-2010-11-01 13:42  dts12
-
-   * man/snmptable.1.def, man/snmptest.1.def:
-
-   Update man page datestamps to match the latest (non-trivial)
-   content change.
-
 2010-10-29 22:31  rstory
 
    * snmplib/transports/snmpDTLSUDPDomain.c:
@@ -10109,17 +34989,177 @@
    null out bio pointers after being freed; bail on connection
    with no ssl pointer
 
+2010-10-29 14:35  bvassche
+
+   *  agent/mibgroup/host/hrSWInstalledTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c:
+
+   Reverted incorrect changes from r19575.
+
+2010-10-29 14:21  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   Fixed a bug that was introduced in r19515.
+
+2010-10-29 14:00  bvassche
+
+   * 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c,
+         agent/mibgroup/host/data_access/swinst.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+        
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c:
+
+   Reverted the incorrect changes from r19593.
+
+2010-10-29 13:38  bvassche
+
+   * snmplib/cert_util.c:
+
+   Reduced number of leak-at-exit complaints triggered by
+   snmplib/cert_util.c.
+
+2010-10-29 13:37  bvassche
+
+   * 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c,
+         agent/mibgroup/host/data_access/swinst.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c,
+         agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.h,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+        
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c:
+
+   More leak-at-exit fixes.
+
+2010-10-29 13:35  bvassche
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/agent/extend.h:
+
+   More leak-at-exit fixes.
+
 2010-10-29 12:18  bvassche
 
    * snmplib/cert_util.c, snmplib/container_binary_array.c:
 
    Spelling fix in log texts: containter -> container.
 
-2010-10-29 11:34  bvassche
+2010-10-29 09:58  bvassche
 
    * agent/mibgroup/ip-mib/data_access/arp_linux.c:
 
-   Backported r19588 and r19589 from the trunk.
+   Ran fillup_entry_info() through indent.
+
+2010-10-29 09:56  bvassche
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   Netlink IPv6 prefix processing: Added more debug statements.
+
+2010-10-29 09:54  bvassche
+
+   * agent/helpers/table.c:
+
+   Made argument checking of netsnmp_handler_owns_table_info() more
+   strict.
+
+2010-10-29 09:52  bvassche
+
+   *  agent/mibgroup/agent/extend.c,   
+      agent/mibgroup/disman/event/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/event/mteEventNotificationTable.h,   
+      agent/mibgroup/disman/event/mteEventSetTable.c,   
+      agent/mibgroup/disman/event/mteEventSetTable.h,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.h,   
+      agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteObjectsTable.h,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.h,   
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.h,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.h,   
+      agent/mibgroup/disman/schedule/schedTable.c,   
+      agent/mibgroup/disman/schedule/schedTable.h,   
+      agent/mibgroup/host/hrSWRunPerfTable.c,   
+      agent/mibgroup/host/hrSWRunPerfTable.h,   
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h,   
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h,   
+      agent/mibgroup/sctp-mib/sctpAssocTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h:
+
+   More MIB-specific leak-at-exit fixes.
 
 2010-10-29 07:56  bvassche
 
@@ -10178,6 +35218,38 @@
    Untangle picl from kstat access so it compiles on x86 Solrais
    10/OpenSolaris
 
+2010-10-28 15:15  bvassche
+
+   *  agent/helpers/instance.c, agent/mibgroup/agent/extend.c,   
+      agent/mibgroup/host/hrSWInstalledTable.c,   
+      agent/mibgroup/host/hrSWInstalledTable.h,   
+      agent/mibgroup/host/hrSWRunTable.c,   
+      agent/mibgroup/host/hrSWRunTable.h,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   More leak-at-exit fixes.
+
+2010-10-28 15:13  bvassche
+
+   * agent/helpers/watcher.c, include/net-snmp/agent/watcher.h:
+
+   CHANGES: agent: Added netsnmp_register_watched_instance2(),
+   netsnmp_register_watched_scalar2(), netsnmp_clone_watcher_info()
+   and netsnmp_owns_watcher_info(). See also the Doxygen comments
+   for more info.
+
 2010-10-28 14:02  dts12
 
    * local/mib2c.check_values.conf:
@@ -10199,6 +35271,13 @@
    Fixed a compiler warning (mismatch between format specification
    and argument) that was introduced in r6562.
 
+2010-10-28 11:43  bvassche
+
+   *  agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c:
+
+   Get rid of recently introduced memdup() compiler warnings.
+
 2010-10-28 11:41  bvassche
 
    * agent/mibgroup/mibII/vacm_conf.c:
@@ -10212,6 +35291,23 @@
    Reverted r19565 because it caused gcc to report more warnings
    instead of less.
 
+2010-10-28 11:18  bvassche
+
+   * 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c:
+
+   Fixed a compiler warning that was introduced in r19566.
+
+2010-10-28 10:40  bvassche
+
+   *  agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         include/net-snmp/library/callback.h, snmplib/callback.c:
+
+   Partially reverted r19515: removed the newly introduced functions
+   and data members again, but without reintroducing the
+   leak-at-exit.
+
 2010-10-28 10:32  bvassche
 
    * include/net-snmp/library/tools.h, snmplib/tools.c:
@@ -10226,6 +35322,13 @@
 
    Fixed yet another crash in netsnmp_cache_remove().
 
+2010-10-28 08:44  bvassche
+
+   * agent/snmpd.c:
+
+   Made it easier to enable the memory leak checker built-in in
+   MSVC's C runtime library.
+
 2010-10-27 20:37  nba
 
    * agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c:
@@ -10344,11 +35447,14 @@
    CHANGES: agent: PATCH: 2959811: from Jan Safranek: Reimplement
    Linux Netlink IPv6 prefix listener.
 
-2010-10-25 07:42  bvassche
+2010-10-25 07:15  bvassche
 
-   * include/net-snmp/net-snmp-config.h.in:
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
 
-   Regenerated include/net-snmp/net-snmp-config.h.in.
+   Avoid that the compiler complains about casting away the 'const'
+   attribute for the first argument of sslctx_client_setup() and
+   sslctx_server_setup().
 
 2010-10-25 06:28  nba
 
@@ -10395,6 +35501,14 @@
 
    const-juggling - we dont like warnings
 
+2010-10-23 11:56  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   Reenabled cache removal and freeing / moved cache refcount
+   incrementing to netsnmp_cache_owns_cache() / converted tabs to
+   spaces.
+
 2010-10-23 11:04  bvassche
 
    * agent/helpers/cache_handler.c:
@@ -10408,21 +35522,201 @@
    CHANGES: agent: Removing the last cache via
    netsnmp_cache_remove() does no longer trigger a crash.
 
-2010-10-22 09:20  bvassche
+2010-10-23 10:57  bvassche
+
+   * 
+      testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c:
+
+   T006snmp_handler_registration_cagentlib: Introduced
+   netsnmp_cache_create().
+
+2010-10-22 15:24  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   Disabled cache deallocation because it makes two unit tests fail
+   - to be analyzed further.
+
+2010-10-22 15:03  bvassche
+
+   * 
+      testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c:
+
+   Builds again.
+
+2010-10-22 14:49  bvassche
+
+   *  agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.c,  
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+         agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c,
+         agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c,   
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c,   
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.c,   
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c,   
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c,
+         agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocTable.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c,
+         agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c:
+
+   CHANGES: agent: MIB-specific leak-at-exit fixes.
+
+2010-10-22 14:42  bvassche
+
+   *  agent/mibgroup/examples/data_set.c,   
+      agent/mibgroup/examples/data_set.h:
+
+   CHANGES: agent: example MIB: Added shutdown function that frees
+   all memory owned by this MIB implementation.
+
+2010-10-22 14:40  bvassche
+
+   * agent/helpers/table_container.c:
+
+   CHANGES: agent: Automatically free the private data structure
+   allocated by netsnmp_container_table_handler_get().
+
+2010-10-22 14:38  bvassche
+
+   *  agent/helpers/cache_handler.c,   
+      include/net-snmp/agent/cache_handler.h:
+
+   CHANGES: agent: Count the number of users of a netsnmp_cache data
+   structure instead of duplicating it.
+
+2010-10-22 14:36  bvassche
+
+   * agent/helpers/baby_steps.c, include/net-snmp/agent/baby_steps.h:
+
+   CHANGES: agent: Added reference count in the
+   netsnmp_baby_steps_modes data structure and made sure that this
+   data structure is automatically freed when the handler that owns
+   it is unregistered.
+
+2010-10-22 14:34  bvassche
+
+   *  agent/helpers/table_dataset.c,   
+      include/net-snmp/agent/table_dataset.h:
+
+   CHANGES: agent: Added netsnmp_unregister_auto_data_table().
+
+2010-10-22 08:51  bvassche
+
+   * agent/agent_registry.c:
+
+   Follow-up for r19511: made sure that clean_subtree() deallocates
+   all context cache nodes.
+
+2010-10-22 08:49  bvassche
 
    * agent/helpers/cache_handler.c:
 
    CHANGES: agent: netsnmp_cache_free(): A more detailed message is
    now logged when attempting to free a cache that is still in the
    cache list.
-   (Backported r19524.)
 
-2010-10-22 09:19  bvassche
+2010-10-22 06:39  bvassche
 
-   * agent/agent_registry.c:
+   * ltmain.sh:
 
-   Backported r19525: made sure that clean_subtree() deallocates all
-   context cache nodes.
+   Reverted ltmain.sh changes from r19522.
+
+2010-10-22 06:34  bvassche
+
+   * configure, include/net-snmp/net-snmp-config.h.in, ltmain.sh:
+
+   Regenerated autoconf/automake/libtool-generated files by running
+   autoreconf -f.
+
+2010-10-21 07:51  bvassche
+
+   * ltmain.sh:
+
+   Reapplied r18726+r18766: make libtool support -fstack-protector*.
+   See also
+   http://blog.gmane.org/gmane.comp.gnu.libtool.bugs/month=20100601
+   for the confirmation that this is a libtool bug.
+
+2010-10-20 20:16  bvassche
+
+   * snmplib/tools.c:
+
+   Avoid that netsnmp_check_definedness() triggers a build failure
+   when compiled against old Valgrind headers. Note: the introduced
+   check is stricter than necessary - VALGRIND_PRINTF_BACKTRACE()
+   was introduced in Valgrind 3.5.0 or before (not sure which
+   version).
+
+2010-10-20 17:13  hardaker
+
+   * snmplib/tools.c:
+
+   added a comment in code note that this requires a fairly recent
+   valgrind
+
+2010-10-20 17:00  hardaker
+
+   * configure:
+
+   reran autoconf after updating libtool
+
+2010-10-20 16:59  hardaker
+
+   *  config.guess, config.sub, install-sh, ltmain.sh, m4/libtool.m4,   
+      m4/ltoptions.m4, m4/ltversion.m4, m4/lt~obsolete.m4:
+
+   update to libtool 2.4
+
+2010-10-20 16:59  hardaker
+
+   * configure, dist/autoconf-version:
+
+   updated to autoconf 2.68
+
+2010-10-20 14:26  bvassche
+
+   *  agent/helpers/cache_handler.c, agent/helpers/old_api.c,   
+      agent/helpers/stash_cache.c, agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         include/net-snmp/agent/cache_handler.h,   
+      include/net-snmp/agent/snmp_vars.h,   
+      include/net-snmp/library/callback.h, snmplib/callback.c,   
+      win32/mib_module_shutdown.h:
+
+   CHANGES: agent: Added the functions netsnmp_duplicate_variable()
+   and netsnmp_cache_handler_owns_cache().
+   CHANGES: agent: Memory allocated by netsnmp_register_old_api()
+   for storing SNMP variables is now freed when the associated
+   handler is unregistered.
+   CHANGES: agent: Callback function data deallocation does no
+   longer free the memory allocated for the AgentX session - the
+   memory that was allocated for AgentX sessions is now deallocated
+   just as that for any other session. This fixes a leak-at-exit.
+   CHANGES: agent: Notify filter table: Callback function data
+   deallocation does no longer free the data in
+   *     *snmpNotifyFilterTable_if_ctx.container - this is now done by  
+       shutdown_snmpNotifyFilterTable().    CHANGES: Win32:
+      shutdown_snmpNotifyFilterTable() and
+
+   shutdown_winExtDLL() are now invoked when the Net-SNMP service is
+   stopped.
+
+2010-10-20 13:47  bvassche
+
+   * testing/fulltests/unit-tests/T005table_dataset_cagentlib.c:
+
+   Unit-testing, T005table_dataset_cagentlib: added init_agent() and
+   shutdown_agent() calls.
 
 2010-10-20 13:12  nba
 
@@ -10430,6 +35724,12 @@
 
    Fix non-ANSI function heading
 
+2010-10-20 12:51  rstory
+
+   * agent/mibgroup/ip-forward-mib/data_access/route_linux.c:
+
+   fix ipCidrRouteTable (mask) for little endian systems
+
 2010-10-20 10:34  bvassche
 
    *  agent/agent_handler.c, agent/agent_registry.c,   
@@ -10450,6 +35750,27 @@
    is for this change that it was necessary to introduce the new
    function snmp_sess_session_lookup().
 
+2010-10-19 23:49  magfr
+
+   *  testing/fulltests/default/T016snmpv2cgetfail_simple,   
+      testing/fulltests/default/T051snmpv2ctrap_simple,   
+      testing/fulltests/default/T052snmpv2cinform_simple,   
+      testing/fulltests/default/T141snmpv2cvacmgetfail_simple:
+
+   CHANGES: testing: Add missing preconditions
+
+2010-10-19 22:11  hardaker
+
+   * dist/patme:
+
+   don't default to applying to 5.2
+
+2010-10-19 22:10  hardaker
+
+   * dist/patme:
+
+   added the 5.6 branch
+
 2010-10-19 21:13  nba
 
    * snmplib/parse.c:
@@ -10522,11 +35843,57 @@
    redefinition of the malloc() macro during building the Net-SNMP
    source code.
 
-2010-10-18 10:35  bvassche
+2010-10-19 07:04  magfr
+
+   * agent/mibgroup/default_modules.h:
+
+   CHANGES: agent: Factor out common config_add_mib statments
+
+2010-10-18 14:22  bvassche
+
+   * agent/helpers/table_dataset.c:
+
+   Mark the proper handler that owns the table registration
+   information.
+
+2010-10-18 10:54  bvassche
+
+   *  agent/helpers/table.c, agent/helpers/table_dataset.c,   
+      agent/helpers/table_iterator.c,   
+      agent/mibgroup/disman/event/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/event/mteEventSetTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c,   
+      agent/mibgroup/mibII/sysORTable.c,   
+      include/net-snmp/agent/table.h,   
+      include/net-snmp/agent/table_iterator.h:
+
+   CHANGES: agent: Added functions netsnmp_handler_owns_tabreq(),
+   netsnmp_registration_owns_tabreq(), netsnmp_iterator_clone().
+   Exported netsnmp_table_registration_info_clone().
+   CHANGES: agent: Modified netsnmp_iterator_delete_table() such
+   that it frees the table registration information stored in a
+   table iterator too.
+   CHANGES: agent: Modified netsnmp_get_table_iterator_handler()
+   such that the table iterator passed to this function is freed
+   when the associated handler is freed.
+   
+   Restored the behavior of netsnmp_get_table_handler() to that of
+   r19449, that is, not setting up the data_free pointer because not
+   all callers of netsnmp_get_table_handler() expect that table
+   registration information is freed when the associated handler is
+   freed.
+
+2010-10-18 10:34  bvassche
 
    * snmplib/transports/snmpTLSTCPDomain.c:
 
-   Backported r19491 to the V5.6 branch (compiler warning fix).
+   Fixed a compiler warning about casting away constness.
 
 2010-10-18 08:52  bvassche
 
@@ -10629,6 +35996,14 @@
    CHANGES: testing: It is again possible to run an individual test
    via the script testing/RUNTESTS.
 
+2010-10-17 14:28  bvassche
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c:
+
+   CHANGES: snmplib: Added the function netsnmp_check_definedness(),
+   which helps to find the cause of undefined value errors as
+   reported by Valgrind.
+
 2010-10-17 14:24  bvassche
 
    * agent/mibgroup/agentx/protocol.h:
@@ -10636,6 +36011,13 @@
    Removed an obsolete declaration: the function agentx_build() has
    been removed a long time ago.
 
+2010-10-17 14:05  bvassche
+
+   *  configure, configure.d/config_os_headers,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Added configure test for the Valgrind header files.
+
 2010-10-17 12:01  bvassche
 
    * snmplib/snmp_openssl.c:
@@ -10651,7 +36033,8 @@
 
 2010-10-17 09:36  bvassche
 
-   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+   *  agent/helpers/scalar_group.c, agent/helpers/watcher.c,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
       snmplib/snmp_openssl.c, snmplib/transports/snmpTLSBaseDomain.c:
 
    Fixed a few compiler warnings by inserting appropriate casts.
@@ -10664,6 +36047,56 @@
 
    NETSNMP_REMOVE_CONST()-related cleanup.
 
+2010-10-17 01:41  magfr
+
+   *  agent/mibgroup/default_modules.h, agent/mibgroup/util_funcs.h,   
+      agent/snmpd.c:
+
+   NEWS: snmpd: Remove util_funcs/Exit from the requirement sets of
+   util_funcs and default_modules.
+   NEWS: snmpd: Never use Exit to terminate the agent.
+
+2010-10-16 22:32  magfr
+
+   *  agent/mibgroup/default_modules.h,   
+      agent/mibgroup/ucd-snmp/versioninfo.c,   
+      agent/mibgroup/ucd-snmp/versioninfo.h,   
+      agent/mibgroup/util_funcs.h, agent/snmpd.c:
+
+   CHANGES: snmpd: Make the setting of the argvrestart* variables
+   optional on USING_UTIL_FUNCS_RESTART_MODULE.
+   NEWS: snmpd: Remove util_funcs/restart from the requirement sets
+   of util_funcs and default_modules.
+   CHANGES: snmpd: Add util_funcs/restart to the requirement set of
+   ucd-snmp/versioninfo.
+
+2010-10-16 22:05  magfr
+
+   * include/net-snmp/agent/agent_handler.h:
+
+   CHANGES: snmpd: Extend the documentation for data_clone and
+   data_free
+
+2010-10-16 22:03  magfr
+
+   * agent/helpers/watcher.c:
+
+   CHANGES: snmpd: Make it possible to copy watched data items
+   without memory leaks.
+
+2010-10-16 22:01  magfr
+
+   * agent/helpers/watcher.c:
+
+   CHANGES: snmpd: Remove unused variable cmp
+
+2010-10-16 19:44  magfr
+
+   * agent/helpers/scalar_group.c:
+
+   CHANGES: snmpd: Do not leak the limits of scalar_group objects on
+   shutdown.
+
 2010-10-16 08:37  bvassche
 
    *  agent/agent_handler.c, configure,   
@@ -10671,10 +36104,26 @@
 
    Spelling fix: dulpicate -> duplicate.
 
+2010-10-16 08:34  bvassche
+
+   * 
+      testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c:
+
+   Added more test code.
+
+2010-10-16 08:33  bvassche
+
+   *  agent/agent_handler.c, agent/helpers/cache_handler.c,   
+      agent/helpers/table.c:
+
+   Follow-up for r19465: handle out-of-memory properly / removed a
+   duplicate function.
+
 2010-10-15 19:17  bvassche
 
    *  testing/fulltests/support/cagentlib_build,   
       testing/fulltests/support/cagentlib_run,   
+      testing/fulltests/support/clib_build,   
       testing/fulltests/unit-tests/T005table_dataset_cagentlib.c,   
       testing/fulltests/unit-tests/T005table_dataset_clib.c,   
       testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c,
@@ -10684,36 +36133,32 @@
    CHANGES: testing: Introduced new test type next to capp and clib:
    cagentlib.
 
+2010-10-15 18:56  bvassche
+
+   *  agent/agent_handler.c, agent/helpers/cache_handler.c,   
+      agent/helpers/stash_cache.c, agent/helpers/table.c,   
+      agent/mibgroup/mibII/sysORTable.c,   
+      include/net-snmp/agent/agent_handler.h,   
+      include/net-snmp/agent/cache_handler.h,   
+      testing/fulltests/unit-tests/T006snmp_handler_registration_clib.c:
+
+   NEWS: snmplib: Added netsnmp_mib_handler.data_clone, a function
+   pointer that defines how to clone netsnmp_mib_handler.myvoid.
+   Must be defined if and only if data_free is set. The function
+   netsnmp_handler_dup() does now clone MIB handler private data if
+   data_clone() is set. Previously after duplicating a MIB handler
+   and unregistering one of the two MIB handlers, the private data
+   pointer (myvoid) of the other became a dangling pointer. Note:
+   addition of netsnmp_mib_handler.data_clone is an ABI change.
+   CHANGES: testing: added more test cases to the handler
+   registration test.
+
 2010-10-15 18:32  bvassche
 
    * agent/mibgroup/ucd-snmp/loadave.c:
 
    Fixed a compiler warning.
 
-2010-10-15 12:54  bvassche
-
-   *  testing/fulltests/support/clib_build,   
-      testing/fulltests/unit-tests/T005table_dataset_clib.c:
-
-   CHANGES: testing: Unit tests can now invoke functions from
-   libagent.
-   CHANGES: testing: Added unit test for table_dataset.
-   (Backported from r19450 from the trunk.)
-
-2010-10-15 12:53  bvassche
-
-   *  agent/helpers/table.c, agent/helpers/table_data.c,   
-      agent/helpers/table_dataset.c,   
-      include/net-snmp/agent/table_data.h,   
-      include/net-snmp/agent/table_dataset.h:
-
-   CHANGES: snmplib: Added function netsnmp_delete_table_data_set().
-   CHANGES: snmplib: Added declaration for the function
-   netsnmp_table_data_delete_table() in a public agent header file.
-   CHANGES: snmplib: Fixed memory leak in
-   netsnmp_table_data_delete_table().
-   (Backported r19450 and r19454 from trunk.)
-
 2010-10-15 12:30  bvassche
 
    *  agent/agent_handler.c,   
@@ -10748,6 +36193,30 @@
    CHANGES: Win32: building: Builds now correctly with a 64-bit
    compiler.
 
+2010-10-15 09:45  bvassche
+
+   * snmplib/snmp_api.c:
+
+   CHANGES: snmplib: snmp_shutdown(): added call to
+   netsnmp_certs_shutdown().
+
+2010-10-15 06:45  bvassche
+
+   * agent/helpers/table_dataset.c:
+
+   Follow-up for r19450: let netsnmp_delete_table_data_set() free
+   all table_dataset-related memory.
+
+2010-10-14 23:15  magfr
+
+   *  configure, configure.d/config_modules_agent,   
+      configure.d/config_modules_transports,   
+      configure.d/config_os_functions,   
+      configure.d/config_os_struct_members:
+
+   CHANGES: building: Make it possible to regenerate using autoconf
+   2.68.
+
 2010-10-14 23:01  magfr
 
    *  snmplib/snmp_logging.c, snmplib/snmp_transport.c,   
@@ -10755,12 +36224,25 @@
 
    CHANGES: snmplib: Be const correct over calls to str* functions.
 
-2010-10-14 22:57  magfr
+2010-10-14 15:19  bvassche
 
-   * testing/fulltests/support/clib_build:
+   *  agent/helpers/table.c, agent/helpers/table_data.c,   
+      agent/helpers/table_dataset.c,   
+      include/net-snmp/agent/table_data.h,   
+      include/net-snmp/agent/table_dataset.h,   
+      testing/fulltests/support/clib_build,   
+      testing/fulltests/unit-tests/T005table_dataset_clib.c:
 
-   CHANGES: testing: Generate a normal #line directive as per C99
-   instead of the compiler-specific #<n>-directive.
+   CHANGES: snmplib: Added function netsnmp_delete_table_data_set().
+   CHANGES: snmplib: Added declaration for the function
+   netsnmp_table_data_delete_table() in a public agent header file.
+   CHANGES: snmplib: Fixed memory leak in
+   netsnmp_table_data_delete_table().
+   CHANGES: snmplib: Fixed memory leak triggered by unregistering a
+   table handler.
+   CHANGES: testing: Unit tests can now invoke functions from
+   libagent.
+   CHANGES: testing: Added unit test for table_dataset.
 
 2010-10-14 14:05  bvassche
 
@@ -10821,12 +36303,60 @@
    Made sure that the variable $SNMP_BASEDIR is available in the
    T000configure test.
 
+2010-10-14 06:19  magfr
+
+   * configure, include/net-snmp/net-snmp-config.h.in:
+
+   Regenerated
+
 2010-10-14 05:36  nba
 
    * agent/mibgroup/ucd-snmp/lmSensors.c:
 
    Quell warnings
 
+2010-10-14 03:50  rstory
+
+   *  configure.d/config_os_libs,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/system/darwin.h,   
+      include/net-snmp/system/darwin10.h,   
+      include/net-snmp/system/darwin7.h,   
+      include/net-snmp/system/darwin8.h,   
+      include/net-snmp/system/darwin9.h, snmplib/snmp_openssl.c:
+
+   test for openssl sha 224/256/385/512 support instead of
+   hardcoding
+
+2010-10-14 03:50  rstory
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   add OUTPUTENVVARS to save important environment variables; when
+   SNMP_VERBOSE
+   is set, save env vars and command to individual invoked file for
+   each test;
+   save env vars and command for each STARTPROG
+
+2010-10-14 03:50  rstory
+
+   * testing/fulltests/support/simple_TESTCONF.sh:
+
+   CHANGES: testing: auto-create user specified SNMP_TMPDIR and
+   SNMP_TMP_PERSISTENTDIR too; default SNMP_TMP_PERSISTENDIR based
+   on SNMP_TMPDIR
+   for user specified SNMP_TMPDIR
+
+2010-10-14 03:49  rstory
+
+   *  acconfig.h, configure.d/config_os_misc4,   
+      include/net-snmp/system/darwin10.h,   
+      include/net-snmp/system/darwin8.h,   
+      include/net-snmp/system/darwin9.h:
+
+   CHANGES: building: check for /dev/kmem instead of assuming it
+   exists and hardcoding when it is not there
+
 2010-10-14 03:28  rstory
 
    *  snmplib/snmptsm.c, snmplib/transports/snmpDTLSUDPDomain.c,   
@@ -10871,7 +36401,14 @@
 
    check for null before deref
 
-2010-10-13 16:55  hardaker
+2010-10-13 20:12  magfr
+
+   * testing/fulltests/support/clib_build:
+
+   CHANGES: testing: Generate a normal #line directive as per C99
+   instead of the compiler-specific #<n>-directive.
+
+2010-10-13 16:53  hardaker
 
    * dist/autoconf-version, testing/fulltests/default/T000configure:
 
@@ -10895,8 +36432,9 @@
 
 2010-10-13 11:53  bvassche
 
-   *  win32/libsnmp_dll/Makefile.in, win32/snmpd/Makefile.in,   
-      win32/snmpnetstat/Makefile.in, win32/snmptrapd/Makefile.in:
+   *  win32/Makefile-apps.in, win32/libsnmp_dll/Makefile.in,   
+      win32/snmpd/Makefile.in, win32/snmpnetstat/Makefile.in,   
+      win32/snmptrapd/Makefile.in:
 
    CHANGES: Win32: building: batch build with OpenSSL enabled and
    with recent OpenSSL development files works again.
@@ -11055,12 +36593,6 @@
    support the -E flag to grep, use autoconf to find the right egrep
    at all times.
 
-2010-10-11 14:11  hardaker
-
-   * .:
-
-   create patch branch copy
-
 ----------------------------------------------------------------------
 
 Changes: V5.6.RC3 -> V5.6
@@ -24281,7 +49813,7 @@
 
    * agent/mibgroup/ip-mib/data_access/systemstats_common.c:
 
-   CHANGES: snmpd: from "Marcus Rückert": fix possible crash when
+   CHANGES: snmpd: from "Marcus R爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´æž‹kert": fix possible crash when
    64-bit counters in ipSystemStatsTable get bigger than 2^32
 
 2009-08-03 19:27  magfr
@@ -37874,7 +63406,7 @@
 
    * agent/mibgroup/ip-mib/data_access/systemstats_common.c:
 
-   CHANGES: snmpd: from "Marcus Rückert": fix possible crash when
+   CHANGES: snmpd: from "Marcus R爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´æž‹kert": fix possible crash when
    64-bit counters in ipSystemStatsTable get bigger than 2^32
 
 2009-08-03 19:27  magfr
@@ -40334,14 +65866,14 @@
    * snmplib/snmpUDPDomain.c:
 
    Fix src/dst confusion
-   Patch provided by Krzysztof Olędzki
+   Patch provided by Krzysztof Ol爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œ¶å›˜zki
 
 2009-01-28 09:29  dts12
 
    * agent/mibgroup/smux/smux.c:
 
    CHANGES: Fix two bugs with smux password support.
-   Patch supplied by Krzysztof Olędzki
+   Patch supplied by Krzysztof Ol爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œ¶å›˜zki
 
 2009-01-23 14:53  jsafranek
 
@@ -54254,7 +79786,7 @@
 
    * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c:
 
-   Handle full-length IPv6 addresses.  Fix supplied by Radek Vokál
+   Handle full-length IPv6 addresses.  Fix supplied by Radek Vok爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´ã€•
 
 2006-01-30 01:52  dts12
 
@@ -54301,7 +79833,7 @@
 , snmplib/snmp_api.c, perl/SNMP/SNMP.pm:
 
    Handle non-increasing OIDs during a (perl) bulkwalk.
-   Patch #1364650 from Ole Bjørn Hessen
+   Patch #1364650 from Ole Bj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´å—·n Hessen
 
 2006-01-27 03:07  dts12
 
@@ -70040,7 +95572,7 @@
 
    * agent/mibgroup/ucd-snmp/disk.c:
 
-   fix float calc in var_extensible_disk per Harald Straßberger <hs@syslog.at>
+   fix float calc in var_extensible_disk per Harald Stra爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµãƒƒerger <hs@syslog.at>
 
 2004-08-31 14:02  hardaker
 
@@ -72627,7 +98159,7 @@
    * configure.in, configure:
 
    Fix handling of --enable-local-smux option
-   (Patch #949808 from Erik Änggård)
+   (Patch #949808 from Erik 爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œ¶ngg爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµè„šd)
 
 2004-06-18 06:46  dts12
 
@@ -103593,7 +129125,7 @@
    * agent/mibgroup/host/: hr_swrun.c (V4-2-patches.5), hr_swrun.c
 :
 
-   Fix Linux file descriptor leak (reported by Oliver Fänger)
+   Fix Linux file descriptor leak (reported by Oliver F爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµç©«ger)
    
 2001-03-14 05:22  jbpn
 
@@ -108118,7 +133650,7 @@
 
    * agent/mibgroup/ucd-snmp/memory.c:
 
-   - (memory.c): Patch from Ragnar Kjørstad:
+   - (memory.c): Patch from Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
      - fixed linux problem: wrong params getting returned.
    
 2000-05-25 05:38  mslifcak
@@ -109898,7 +135430,7 @@
 
    - (configure* ucd-snmp/vmstat_solaris2.c):
      - Provide missing 'getpagesize' routine for Solaris 2.4
-       (Thanks to Ragnar Kjørstad)
+       (Thanks to Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad)
    
 2000-02-16 20:17  mslifcak
 
@@ -117226,7 +142758,7 @@
      loadave.c, memory_solaris2.c, pass.c, pass_persist.c, proc.c,
      versioninfo.c, alarm.c, event.c, Makefile.in, parse.c, snmp.c,
      snmp_debug.c, snmp_logging.c, snmp_logging.h): Patch from Ragnar
-     Kjørstad:
+     Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
      - do file, stderr, and syslog support.
    
 1999-07-15 08:45  hardaker
@@ -117369,7 +142901,7 @@
 
    * agent/snmpd.c:
 
-   - (snmpd.c): Patch from Ragnar Kjørstad:
+   - (snmpd.c): Patch from Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
      - Add options for switching to a given uid and gid.
    
 1999-07-08 15:16  hardaker
@@ -134138,7 +159670,7 @@
 
    * snmplib/mib.c:
 
-   Fix a C precedence botch-up, thanks to Fabrício Las Casas <Fabricio@atan.com.br>
+   Fix a C precedence botch-up, thanks to Fabr爭õ€‘‹ï½¤õ€‘‹ï½¤æ­»â€²cio Las Casas <Fabricio@atan.com.br>
    
 2003-02-26 14:14  nba
 
@@ -150921,7 +176453,7 @@
 
    * agent/mibgroup/host/: hr_swrun.c (V4-2-patches.5), hr_swrun.c:
 
-   Fix Linux file descriptor leak (reported by Oliver Fänger)
+   Fix Linux file descriptor leak (reported by Oliver F爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµç©«ger)
    
 2001-03-14 05:22  jbpn
 
@@ -155166,7 +180698,7 @@
 
    * agent/mibgroup/host/hr_swrun.c:
 
-   Fix Linux file descriptor leak (reported by Oliver Fänger)
+   Fix Linux file descriptor leak (reported by Oliver F爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµç©«ger)
    
 2001-03-13 13:20  hardaker
 
@@ -158412,7 +183944,7 @@
 	
 2000-05-25 10:07  hardaker
 
-	- (memory.c): Patch from Ragnar Kjørstad:
+	- (memory.c): Patch from Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
 	  - fixed linux problem: wrong params getting returned.
 	
 2000-05-25 05:38  mslifcak
@@ -159601,7 +185133,7 @@
 
 	- (configure* ucd-snmp/vmstat_solaris2.c):
 	  - Provide missing 'getpagesize' routine for Solaris 2.4
-	    (Thanks to Ragnar Kjørstad)
+	    (Thanks to Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad)
 	
 2000-02-16 20:17  mslifcak
 
@@ -164935,7 +190467,7 @@
     - (snmpdelta.c, int64.c, int64.h): minimal c64 support for snmpdelta. Untested.
 
 hardaker  8 Jul 99 16:02:58
-    - (snmpd.c): Patch from Ragnar Kjørstad:
+    - (snmpd.c): Patch from Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
       - Add options for switching to a given uid and gid.
 
 daves  9 Jul 99 01:49:49
@@ -164982,7 +190514,7 @@
       loadave.c, memory_solaris2.c, pass.c, pass_persist.c, proc.c,
       versioninfo.c, alarm.c, event.c, Makefile.in, parse.c, snmp.c,
       snmp_debug.c, snmp_logging.c, snmp_logging.h): Patch from Ragnar
-      Kjørstad:
+      Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
       - do file, stderr, and syslog support.
 
 hardaker 20 Jul 99 17:06:53
diff --git a/FAQ b/FAQ
index a2bd68a..5deba19 100644
--- a/FAQ
+++ b/FAQ
@@ -1,7 +1,7 @@
       Frequently Asked Questions (FAQ) for the UCD/Net-SNMP package
       =============================================================
 		       FAQ Author: Dave Shield
-			Net-SNMP Version: 5.6.2
+			Net-SNMP Version: 5.7.3.pre5
 	    Net-SNMP/UCD-SNMP Project Leader: Wes Hardaker
 	     Email: net-snmp-coders@lists.sourceforge.net
 
@@ -1314,7 +1314,7 @@
   covered in the AGENT and CODING sections.
 
   You should also read the snmptrap tutorial at
-	http://www.net-snmp.org/tutorial-5/commands/snmptrap.html
+        http://www.net-snmp.org/wiki/index.php/TUT:snmptrap
   which will help you understand everything you need to know about traps.
 
 
@@ -1351,7 +1351,7 @@
         forward default                  10.0.0.2
 
   There's a tutorial with more details on the web site at
-	http://www.net-snmp.org/tutorial-5/commands/snmptrap.html
+        http://www.net-snmp.org/wiki/index.php/TUT:snmptrap
 
 
 
diff --git a/Makefile.in b/Makefile.in
index 174d61c..cfcdf73 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -7,6 +7,7 @@
 VPATH		= @srcdir@
 
 SUBDIRS		= snmplib @MAINSUBS@
+FTSUBDIRS	= @FTMAINSUBS@ snmplib
 TESTDIRS	= testing
 
 CPP		= @CPP@ 					        \
@@ -14,7 +15,7 @@
 		-DDONT_INC_STRUCTS -DBINDIR=$(bindir) 		        \
 		$(EXTRACPPFLAGS)
 
-INSTALLHEADERS=version.h
+INSTALLHEADERS=version.h net-snmp-features.h
 INCLUDESUBDIR=system
 INCLUDESUBDIRHEADERS= aix.h bsd.h bsdi3.h bsdi4.h bsdi.h cygwin.h \
 	darwin.h darwin7.h darwin8.h darwin9.h darwin10.h dragonfly.h dynix.h \
@@ -29,6 +30,7 @@
 INCLUDESUBDIR2=machine
 INCLUDESUBDIRHEADERS2=generic.h
 INSTALLBUILTHEADERS=include/net-snmp/net-snmp-config.h
+INSTALLBUILTINCLUDEHEADERS=@FEATUREHEADERS@
 INSTALLBINSCRIPTS=net-snmp-config net-snmp-create-v3-user
 INSTALLUCDHEADERS=ucd-snmp-config.h version.h mib_module_config.h
 
@@ -45,13 +47,20 @@
 # perl specific
 #
 # yes, order matters here.  default_store must occur before anything else
-PERLMODULES=default_store SNMP ASN OID agent
+PERLMODULES=default_store SNMP ASN OID agent TrapReceiver
+PERLMODULEFTS=perl/default_store/netsnmp-feature-definitions.ft \
+	perl/SNMP/netsnmp-feature-definitions.ft \
+	perl/ASN/netsnmp-feature-definitions.ft \
+	perl/OID/netsnmp-feature-definitions.ft \
+	perl/agent/netsnmp-feature-definitions.ft \
+	perl/TrapReceiver/netsnmp-feature-definitions.ft
 PERLARGS=@PERLARGS@
 
 #
 # python specific
 #
 PYTHONARGS=@PYTHONARGS@
+PYTHONMODULEFTS=python/netsnmp/netsnmp-feature-definitions.ft
 
 #
 # libtool
@@ -59,9 +68,14 @@
 LIBTOOL_DEPS = @LIBTOOL_DEPS@
 
 #
+# feature checks for optional components
+#
+FTOTHERTARGS=@PERLFEATURES@ @PYTHONFEATURES@
+
+#
 # targets
 #
-all:    sedscript EXAMPLE.conf standardall net-snmp-config-x net-snmp-create-v3-user @PERLTARGS@ @PYTHONTARGS@
+all:    sedscript EXAMPLE.conf  @FEATURETARGS@ standardall net-snmp-config-x net-snmp-create-v3-user @PERLTARGS@ @PYTHONTARGS@
 
 start-flag:
 	@touch build-in-progress-flag
@@ -73,23 +87,23 @@
 	$(SHELL) ./config.status --recheck
 
 
-snmplib:
+snmplib: @FEATURETARGS@
 	@(cd snmplib; $(MAKE) )
 
-agent:
+agent: @FEATURETARGS@
 	@(cd snmplib; $(MAKE) )
 	@(cd agent; $(MAKE) )
 
-apps:
+apps: @FEATURETARGS@
 	@(cd snmplib; $(MAKE) )
 	@(cd agent; $(MAKE) libs)
 	@(cd apps; $(MAKE) )
 
-snmpget snmpbulkget snmpwalk snmpbulkwalk snmptranslate snmpstatus snmpdelta snmptable snmptest snmpset snmpusm snmpvacm snmpgetnext encode_keychange snmpdf snmptrap snmptls:
+snmpget snmpbulkget snmpwalk snmpbulkwalk snmptranslate snmpstatus snmpdelta snmptable snmptest snmpset snmpusm snmpvacm snmpgetnext encode_keychange snmpdf snmptrap snmptls: @FEATURETARGS@
 	@(cd snmplib; $(MAKE) )
 	@(cd apps; $(MAKE) $@ )
 
-agentxtrap snmptrapd:
+agentxtrap snmptrapd: @FEATURETARGS@
 	@(cd snmplib; $(MAKE) )
 	@(cd agent; $(MAKE) libs)
 	@(cd apps; $(MAKE) $@ )
@@ -150,7 +164,7 @@
 distall: ${srcdir}/configure ${srcdir}/include/net-snmp/net-snmp-config.h 
 
 OTHERCLEANTARGETS=EXAMPLE.conf sedscript
-OTHERCLEANTODOS=perlclean @PYTHONCLEANTARGS@
+OTHERCLEANTODOS=perlclean @PYTHONCLEANTARGS@ cleanfeatures perlcleanfeatures pythoncleanfeatures
 
 #
 # perl specific build rules
@@ -191,13 +205,21 @@
 	@if test -f perl/Makefile; then \
 	   ( cd perl ; $(MAKE) clean ) ; \
 	fi
+
 perlrealclean:
 	@if test -f perl/Makefile; then \
 	   ( cd perl ; $(MAKE) realclean ) ; \
 	fi
 
+.h.ft:
+	$(FEATURECHECK) --feature-global $(top_builddir)/include/net-snmp/feature-details.h `dirname $<` $< $@ $(CC) -I $(top_builddir)/include -I $(top_srcdir)/include -E $(CPPFLAGS) $(CFLAGS) -c
 
-#
+perlfeatures: $(PERLMODULEFTS)
+
+perlcleanfeatures:
+	$(RM) $(PERLMODULEFTS)
+
+
 # python specific build rules
 #
 PYMAKE=$(PYTHON) setup.py $(PYTHONARGS)
@@ -225,6 +247,10 @@
 pythonclean:
 	@(dir=`pwd`; cd python; $(PYMAKE) clean --basedir=$$dir)
 
+pythonfeatures: $(PYTHONMODULEFTS)
+
+pythoncleanfeatures:
+	$(RM) $(PYTHONMODULEFTS)
 
 #
 # make distclean completely removes all traces of building including
@@ -249,7 +275,8 @@
 	rm -f include/net-snmp/agent/mib_module_config.h		\
 		include/net-snmp/agent/agent_module_config.h		\
 		include/net-snmp/library/snmpv3-security-includes.h \
-		snmplib/snmpsm_init.h                               \
+		include/net-snmp/feature-details.h                  \
+		snmplib/snmpsm_init.h snmplib/snmpsm_shutdown.h     \
                 snmplib/transports/snmp_transport_inits.h           \
 		agent/mibgroup/agent_module_includes.h 	\
 		agent/mibgroup/agent_module_inits.h 	\
@@ -258,7 +285,8 @@
 		agent/mibgroup/mib_module_includes.h 	\
 		agent/mibgroup/mib_module_inits.h 	\
 		agent/mibgroup/mib_module_shutdown.h 	\
-		agent/mibgroup/mib_module_dot_conf.h
+		agent/mibgroup/mib_module_dot_conf.h    \
+		local/snmpconf
 	rm -rf mk
 	rm -f *.core
 
@@ -430,3 +458,4 @@
 	snmpget snmpbulkget snmpwalk snmpbulkwalk snmptranslate snmpstatus \
 	snmpdelta snmptable snmptest snmpset snmpusm snmpvacm snmpgetnext \
 	encode_keychange snmpdf snmptrap snmptrapd
+.PHONY: perlfeatures pythonfeatures
diff --git a/Makefile.rules b/Makefile.rules
index 65687ef..9e9e900 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -14,6 +14,62 @@
 
 objs: ${OBJS} ${LOBJS}
 
+# features require that subdirs be made *first* to get dependency
+# collection processed in the right order
+.PHONY: features ftobjs ftsubdirs
+features: $(FTOTHERTARGS) ftsubdirs ftobjs $(FEATUREFILE)
+ftobjs: $(FTOBJS)
+$(FEATUREFILE): $(FTOBJS) $(top_builddir)/include/net-snmp/feature-details.h
+	cat $(FTOBJS) > $(FEATUREFILE).in
+	$(FEATUREPROCESS) $(FEATUREFILE) $(top_builddir)/include/net-snmp/feature-details.h @FEATURE_REMOVE_FLAGS@ @FEATURE_ADD_FLAGS@
+ftsubdirs:
+	@if test "$(FTSUBDIRS)" != ""; then \
+	    SUBDIRS="$(FTSUBDIRS)" ;        \
+        else 			 	    \
+            SUBDIRS="$(SUBDIRS)" ;          \
+        fi ;                                \
+	if test "$$SUBDIRS" != ""; then \
+		it="$$SUBDIRS" ; \
+		for i in $$it ; do \
+			echo "making features in `pwd`/$$i"; \
+			( cd $$i ; $(MAKE) features ) ; \
+			if test $$? != 0 ; then \
+				exit 1 ; \
+			fi  \
+		done \
+	fi
+
+.PHONY: cleanfeatures cleanfeaturessubdirs
+cleanfeatures: cleanfeaturessubdirs
+	       rm -f $(FTOBJS)
+	       rm -f $(FEATUREFILE)
+	       rm -f $(top_builddir)/include/net-snmp/feature-details.h
+
+cleanfeaturessubdirs:
+	@if test "$(FTSUBDIRS)" != ""; then \
+	    SUBDIRS="$(FTSUBDIRS)" ;        \
+        else 			 	    \
+            SUBDIRS="$(SUBDIRS)" ;          \
+        fi ;                                \
+	if test "$$SUBDIRS" != ""; then \
+		it="$$SUBDIRS" ; \
+		for i in $$it ; do \
+			echo "making cleanfeatures in `pwd`/$$i"; \
+			( cd $$i ; $(MAKE) cleanfeatures ) ; \
+			if test $$? != 0 ; then \
+				exit 1 ; \
+			fi  \
+		done \
+	fi
+
+# feature-check definitions
+.SUFFIXES: .ft
+.c.ft:
+	@test -f $(top_builddir)/include/net-snmp/feature-details.h || \
+	    echo "/* Generated by make. Do not modify directly */" \
+		> $(top_builddir)/include/net-snmp/feature-details.h
+	$(FEATURECHECK) --feature-global $(top_builddir)/include/net-snmp/feature-details.h $(mysubdir) $< $@ $(CC) -E $(CPPFLAGS) $(CFLAGS) -c
+
 subdirs:
 	@if test "$(SUBDIRS)" != ""; then \
 		it="$(SUBDIRS)" ; \
@@ -42,6 +98,7 @@
 # headers
 #
 # set INSTALLHEADERS to a list of things to install in each makefile.
+# set INSTALLBUILTINCLUDEHEADERS a list built and placed into include/net-snmp/
 # set INSTALLBUILTHEADERS to a list of things to install from builddir
 # set INSTALLSUBDIRHEADERS and INSTALLSUBDIR to subdirectory headers
 # set INSTALLSUBDIRHEADERS2 and INSTALLSUBDIR2 to more subdirectory headers
@@ -50,6 +107,16 @@
 installheaders: installlocalheaders @installucdheaders@ installsubdirheaders
 
 installlocalheaders:
+	@if test "$(INSTALLBUILTINCLUDEHEADERS)" != "" ; then \
+		echo creating directory $(INSTALL_PREFIX)$(includedir) ; \
+		it="$(INSTALLBUILTINCLUDEHEADERS)" ; \
+		$(SHELL) $(top_srcdir)/mkinstalldirs $(INSTALL_PREFIX)$(includedir)/library ; \
+		$(SHELL) $(top_srcdir)/mkinstalldirs $(INSTALL_PREFIX)$(includedir)/agent ; \
+		for i in $$it ; do \
+			$(INSTALL_DATA) include/net-snmp/$$i $(INSTALL_PREFIX)$(includedir)/$$i ; \
+			echo "installing $$i in $(INSTALL_PREFIX)$(includedir)/$$i" ; \
+		done \
+	fi
 	@if test "$(INSTALLHEADERS)" != "" ; then \
 		echo creating directory $(INSTALL_PREFIX)$(includedir) ; \
 		it="$(INSTALLHEADERS)" ; \
@@ -327,7 +394,7 @@
 # cleaning targets
 #
 clean: cleansubdirs $(OTHERCLEANTODOS)
-	$(LIBTOOLCLEAN) ${OBJS} ${LOBJS} core $(STANDARDCLEANTARGETS) $(OTHERCLEANTARGETS)
+	$(LIBTOOLCLEAN) ${OBJS} ${LOBJS}  ${FTOBJS} core $(STANDARDCLEANTARGETS) $(OTHERCLEANTARGETS)
 
 cleansubdirs:
 	@if test "$(SUBDIRS)" != ""; then \
@@ -404,5 +471,5 @@
 .PHONY: clean cleansubdirs lint \
 	install installprogs installheaders installlibs \
 	installbin installsbin installsubdirs \
-	all subdirs standardall objs \
+	all subdirs standardall objs features \
 	depend nosysdepend distdepend dependdirs nosysdependdirs distdependdirs
diff --git a/Makefile.top b/Makefile.top
index 334fbb8..503f61e 100644
--- a/Makefile.top
+++ b/Makefile.top
@@ -36,6 +36,8 @@
 INSTALL		= $(LIBTOOL) --mode=install @INSTALL@
 UNINSTALL	= $(LIBTOOL) --mode=uninstall rm -f
 LIBTOOLCLEAN	= $(LIBTOOL) --mode=clean rm -f
+FEATURECHECK	= $(top_srcdir)/local/minimalist/feature-check
+FEATUREPROCESS	= $(top_srcdir)/local/minimalist/feature-remove
 INSTALL_DATA    = @INSTALL_DATA@
 SED		= @SED@
 LN_S		= @LN_S@
@@ -44,6 +46,7 @@
 PERL            = @PERLPROG@
 PYTHON          = @PYTHONPROG@
 FIND            = @FIND@
+EGREP           = @EGREP@
 
 #
 # Compiler arguments
@@ -77,14 +80,14 @@
 # 5.3 was at 10, 5.4 is at 15, ...  This leaves some room for needed
 # changes for past releases if absolutely necessary.
 #
-LIBCURRENT  = 25
+LIBCURRENT  = 30
 LIBAGE      = 0
-LIBREVISION = 2
+LIBREVISION = 3
 
 LIB_LD_CMD      = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) -o
 LIB_EXTENSION   = la
 LIB_VERSION     =
-LIB_LDCONFIG_CMD = $(LIBTOOL) --mode=finish $(libdir)
+LIB_LDCONFIG_CMD = $(LIBTOOL) --mode=finish $(INSTALL_PREFIX)$(libdir)
 LINK		= $(LIBTOOL) --mode=link $(LINKCC)
 # RANLIB 	= @RANLIB@
 RANLIB		= :
diff --git a/NEWS b/NEWS
index baace21..9396aee 100644
--- a/NEWS
+++ b/NEWS
@@ -3,30 +3,132 @@
 that have been fixed/applied, and the ChangeLog file for a comprehensive
 listing of all changes made to the code.
 
-*5.6.2*
+*5.7.3*
+    Many many bug fixes and minor improvements
+
+    snmpd, snmptrapd and apps:
+      - Patch 2525: from Ryan Steinmetz: Fix argument length parsing of the
+	host resources mib
+      - Make ENV_SEPARATOR_CHAR configurable
+      - SECURITY: a denial of service attack vector was discovered on
+        the linux implementation of the ICMP-MIB.  This release fixes
+        this bug and all users are encouraged to update their SNMP
+        agent if they make use of the ICMP-MIB table objects.
+
+    perl:
+      - BUG: 2402: Add support for SNMPv3 traps
+
+    Windows:
+      - Port batch build infrastructure to Visual Studio 2010 and later
+	From Visual Studio 2010 on it is no longer possible to specify
+	include or library directories globally - these have to be
+	specified per project. Hence two additional menu entries in
+	build.bat that allow to specify these directories.
+
+*5.7.2*
+    snmp:
+      - BUG: 3526549: CVE-2012-2141 Array index error leading to crash
 
     snmpd:
-      - [PATCH 3198781]: Fix compilation of disman/{ping,traceroute} modules
-      - [BUG 3166568]: Fix missing hrSystemProcesses values
-      - [BUG 3526549]: CVE-2012-2141 Array index error leading to crash
-      - [BUG 3532090]: Fix high ifIndex values crashing hrDeviceDescr
-              Note that this will affect the indexing of *all* entries in
-              the hrDeviceTable.  Assumptions as to what index a given device
-              will use, are no longer valid.
+      - BUG: 3532090: Fix high ifIndex values crashing hrDeviceDescr
 
     building:
-      - [PATCH 2091156]: Fix parallel builds (using 'make -j <N>')
+      - PATCH: 2091156: correctly declare dependencies in Makefile. 'make
+        -j <N>' should work now. Backport this to V5-4 as it is needed for
+        correct operation in the single threaded case of make miblib as
+        well.
 
-*5.6.1*
+    Many other miscellaneous minor bug fixes
 
-    General:
-      - The DTLS and TLS transports and the TSM security model are no
-        longer "beta" (they've undergone rigorous interoperability testing).
-      - Many Bug Fixes (see the CHANGES and ChangeLog files for full details)
+*5.7.1*
 
-    snmpd:
-      - [PATCH 3141462]: Fix multi-opbject AgentX subagent requests
-      - Fix VACM persistant storage.
+  libnetsnmp:
+      - Fixed the mib-parsing-bug introduced shortly before 5.7
+
+  agent:
+      - fixed rounding errors for disk percentage calculations
+
+  openbsd:
+      - better support for recent openbsd releases
+
+  features:
+      - bug fixes with minimalist support after additional user feedback
+
+  Many other miscellaneous minor bug fixes
+
+*5.7*
+
+  snmpd:
+      - Delivery of data via regularily scheduled notifications.
+        (see "Data Delivery via Notfications" in snmpd.conf)
+      - Many time-based config options can take (m)ins, (h)ours, ... arguments
+        (see the snmpd.conf manual page)
+      - The PING and TRACEROUTE MIBs now compile and work-ish on linux
+        http://www.net-snmp.org/wiki/index.php/DISMAN
+      - Mib handlers can now implement a data_clone function for
+        cloning the myvoid structure variable to avoid dangling pointers
+      - Fixed persistent storage of VACM MIB configuration
+      - Multi-homed agents send UDP responses from the proper IP address
+      - The hrStorageTable implementation now supports large filesystems better
+      - optimizations for large route tables
+      - Added a deliveryByNotify config token for regular data delivery
+        (see the snmpd.conf manual page and the NET-SNMP-PERIODIC-NOTIFY-MIB)
+      - [PATCH 3141462]: fix agentx subagent issues with multiple-object requests
+      - [PATCH 3057093]: linux uses libpci for creating useful ifDescr strings
+      - [PATCH 3131397]: huge speedups of the TCP/UDP Tables
+
+  libnetsnmp:
+      - Removed the older CMU compatibility support
+      - The SSH transport is now configurable
+
+  TLS/DTLS support:
+      - The SNMP over DTLS transport now properly supports IPv6
+      - Introduced new configuration tokens: localCert/peerCert
+        (deprecating serverCert, clientCert, defX509ServerPub, defX509ClientPub)
+      - Various fixes for the TLS/DTLS transports
+
+  apps:
+      - Added a per-variable timed output support to snmpwalk using -CT
+      - snmpinform now correctly uses the local engineID for informs
+      - A number of mib2c bug fixes
+      - New snmp.conf tokens for timeouts and retries
+
+  building:
+      - New flags to reduce the amount of compiled code to bare minimums.
+        This is provided by a new generic feature marking/selection mechanism.
+        http://www.net-snmp.org/wiki/index.php/Feature_Marking_and_Selection
+      - It's now possible to build without SNMPv3/USM
+        (e.g., if you only want TLS/DTLS with SNMPv3/TSM)
+      - It's possible to build the suite with no SET support
+        configure using --enable-read-only
+      - It's possible to build the agent as a notify-only agent
+        configure using --enable-notify-only
+      - Added a script to test memory usage with various config options
+        (see the local/minimalist/sizetests script)
+      - Net-SNMP can now be built to perform local DNSSEC validation
+        (install DNSSEC-Tools' libval and use --with-local-dnssec-validation)
+
+  testing:
+      - a number of new API unit-tests have been added to the suite
+        (to run the tests: cd testing && ./RUNFULLTESTS -g unit-tests)
+      - The unit tests can be more easily run under valgrind
+        (See http://bit.ly/jsgRnv for details)
+
+  openbsd:
+      - Support for updating the routing table via SNMP
+
+  win32:
+      - The testing suite works better under win32 environments
+      - Many building fixes for the win32 environment(s)
+
+  solaris:
+      - Net-SNMP now supports the SCTP-MIB
+
+  DragonFlyBSD, FreeBSD8:
+      - Net-SNMP should now work on DragonFlyBSD and FreeBSD8
+
+  And of course:
+      - Many other bug fixes.  See the CHANGES and ChangeLog for details.
 
 *5.6*
 
diff --git a/README b/README
index 28b666b..81c38a9 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-	       README file for net-snmp Version: 5.6.2
+	       README file for net-snmp Version: 5.7.3.pre5
 
 DISCLAIMER
 
@@ -352,6 +352,9 @@
     Anders Persson <apersson@users.sourceforge.net>
     Rojer <rojer@users.sourceforge.net>
     Bart Van Assche <bart.vanassche@gmail.com>
+    Pablo Carboni <pcarboni@users.sourceforge.net>
+    Bill Fenner <fenner@gmail.com>
+    Brian Sipos <bsiposrkf@users.sourceforge.net>
 
   We've probably forgotten people on this list.  Let us know if you've
   contributed code and we've left you out.
diff --git a/README.win32 b/README.win32
index a8b6bf0..e49243b 100644
--- a/README.win32
+++ b/README.win32
@@ -4,12 +4,11 @@
 *
 ***************************************************************************
 
-This guide describes building with Microsoft Visual C++ 6.0 and higher, with
-the gcc compiler from MinGW / MSYS, and with the gcc compiler from Cygwin.
-As developers build with other Win32 environments, their notes will be 
-included here.
+This guide describes how to build Net-SNMP with Microsoft Visual C++, the
+MinGW gcc compiler or the Cygwin gcc compiler.  As developers build with other
+Win32 environments, their notes will be included here.
 
-The remainder of this guide has the following sections :
+The sections in this guide are:
 
 Current Status for Win32 platforms
 Interactions with Other Vendor's Products
@@ -39,13 +38,14 @@
 
 ***************************************************************************
 *
-* Status as of 21-Sep-2010 for Win32 platforms
+* Net-SNMP status for Win32 platforms
 *
 ***************************************************************************
 
 All applications build with Microsoft Visual C++ 6.0, Microsoft Development
 Environment 2003 (MSVC 7.0/7.1), Microsoft Visual Studio 2005, Microsoft
-Visual Studio 2008, gcc under Cygwin and gcc under MinGW.  
+Visual Studio 2008, Microsoft Visual Studio 2010, gcc under Cygwin and gcc
+under MinGW.
 
   -  All of the applications work (snmpwalk, snmpget, snmpset, snmptrap, ...).
   -  The system, snmp, ip, tcp, udp and icmp MIB-groups work (requires the
@@ -80,6 +80,11 @@
   -  Both building via the interactive development environment and via the
      command line (nmake) is supported.
 
+  -  With Visual Studio 2005 and later, the Net-SNMP source code can be
+     compiled into either 32-bit or 64-bit executables (the amd64/x64
+     architecture). Previous Visual Studio versions support 32-bit executables
+     only.
+
 
 ***************************************************************************
 *
@@ -473,8 +478,8 @@
 the Debug and Release versions of an application can be built and tested
 separately.
 
-VC++ 6.0, 7.1, 8.0 (2005) and 9.0 (2008) have been tested.  Building with
-earlier Microsoft compiler versions is no longer supported.
+VC++ 6.0, 7.1, 8.0 (2005), 9.0 (2008) and 10.0 (2010) have been tested.
+Building with earlier Microsoft compiler versions is no longer supported.
 
 Note: if you want to distribute the generated executable, you will also need
 to distribute the Microsoft Visual Studio Redistributable Package. Check the
@@ -532,12 +537,22 @@
 
 1.  Open a command prompt
 
-2.  Initialize the Visual Studio build environment by running VCVARS32.bat
+2.  When building with OpenSSL, set the environment variables INCLUDE and LIB
+    such that these point at the proper OpenSSL directories. An example:
+
+    set INCLUDE=C:\OpenSSL-Win32\include
+    set LIB=C:\OpenSSL-Win32\lib\VC\static
+
+3.  Initialize the Visual Studio build environment by running vcvarsall.bat
     which can be found in the bin folder of your Visual Studio install folder.
+    If you want to generate 64-bit binaries instead of 32-bit binaries, run
+    vcvarsall.bat with the amd64 argument. See also "How to: Enable a 64-Bit
+    Visual C++ Toolset at the Command Line" for more information
+    (http://msdn.microsoft.com/en-us/library/x4d2c09s%28v=vs.80%29.aspx).
 
-3.  Run win32\build.bat
+4.  Run win32\build.bat
 
-4.  The following screen will appear:
+5.  The following screen will appear:
 
     Net-SNMP build and install options
     ==================================
@@ -566,7 +581,7 @@
 
     Select option to set / toggle:  
 
-5.  Toggle the options on and off as desired by typing the line number 
+6.  Toggle the options on and off as desired by typing the line number 
     followed by <enter>.  
 
     To compile with OpenSSL, the OpenSSL library and header files must 
@@ -586,7 +601,7 @@
 
     When you are ready to build, type f <enter>
 
-6.  Building will begin.  Following is a sample screen shot of a quiet build:
+7.  Building will begin.  Following is a sample screen shot of a quiet build:
 
     Building...
     
@@ -608,7 +623,7 @@
     
     Done!
 
-7.  If the folder that Net-SNMP was installed to is ever changed, modify the 
+8.  If the folder that Net-SNMP was installed to is ever changed, modify the 
     system environment variables or registry keys as explained in the 
     'Configuration_Overview.html' file located in win32/dist/htmlhelp.
 
@@ -728,10 +743,12 @@
 5. Build the agent and the applications
 
    a. Open win32.dsw (static build) or win32dll.dsw (dynamic build).
-   b. Click "Build->Batch Build..."  
-   c. Select the projects and configurations you want to build.
-   d. Click "ReBuild All".
-   e. When building is done, View the Output window, clip and
+   b. If you want to generate 64-bit binaries instead of 32-bit binaries,
+      select "Build/Configuration Manager" and add the "x64" platform.
+   c. Select "Build/Batch Build..."  
+   d. Select the projects and configurations you want to build.
+   e. Click "ReBuild All".
+   f. When building is done, View the Output window, clip and
       save to a text file if there is some information to share.
 
 6.  If the Perl modules are required, continue with the next section:
@@ -918,16 +935,10 @@
 ***************************************************************************
 
 The default build configuration supports SNMP over IPv4-based transports.
-However, Windows XP and Windows 2000 include an IPv6-capable stack, which
+However Windows 2000 and later include an IPv6-capable stack which
 can be used to provide SNMP over IPv6.  To enable IPv6, the Microsoft PSDK 
-is required and the following changes to the Net-SNMP win32 Visual C++ 
-configuration are needed:
-
-Project changes
-===============
-
- 1. Edit the win32\net-snmp\net-snmp-config.h header file.  Change
-    the single INET6 line from:
+is required and NETSNMP_ENABLE_IPV6 has to be enabled in
+win32\net-snmp\net-snmp-config.h. Change the following single line from:
 
         /* #undef NETSNMP_ENABLE_IPV6 */
 
@@ -935,20 +946,7 @@
 
        	#define NETSNMP_ENABLE_IPV6 1
 
- 2. Edit the win32\libsnmp_dll\libsnmp.def file.  All the IPv6 functions will
-    be commented out and will need to be enabled by removing ';IPv6' from the
-    beginning of each line.  
-
-    For example, change:
-
-
-        ;IPv6        netsnmp_udp6_parse_security
-
-    to:
-
-                netsnmp_udp6_parse_security
-
- 3. Continue with the section 'Microsoft Visual C++ - Building"
+Next, continue with the section 'Microsoft Visual C++ - Building"
 
 
 ***************************************************************************
@@ -1027,9 +1025,7 @@
 for Windows based systems. The cygwin1.dll provides a POSIX emulation layer 
 that simplifies porting Unix / Linux applications to Windows. The Cygwin dlls
 are required if an application is to be distributed. The dependency on the 
-Cygwin dlls can be eliminated with the --mno-cygwin compiler flag, which uses
-MinGW to compile a native Windows binary, but the benefit of the POSIX emulation
-is lost. The Cygwin tool chain and documentation can be found at:
+The Cygwin tool chain and documentation can be found at:
 
 http://sources.redhat.com/cygwin/
 
@@ -1059,6 +1055,7 @@
 As an example, the following configure options create a working set of
 programs:
 
+ENV_SEPARATOR=":" \
 ./configure \
 	--with-mib-modules="host agentx disman/event-mib examples/example" \
 	--with-out-mib-modules=host/hr_network \
diff --git a/acconfig.h b/acconfig.h
index f3f7bfe..12f85c6 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -27,15 +27,6 @@
  */
 #ifndef NETSNMP_NO_AUTOCONF_DEFINITIONS
 
-
-#if defined (WIN32) || defined (mingw32) || defined (cygwin)
-#define ENV_SEPARATOR ";"
-#define ENV_SEPARATOR_CHAR ';'
-#else
-#define ENV_SEPARATOR ":"
-#define ENV_SEPARATOR_CHAR ':'
-#endif
-
 /* definitions added by configure on-the-fly */
 @TOP@
 @BOTTOM@
@@ -494,11 +485,8 @@
    and are not using the UC-Davis SNMP library. */
 #define UCD_SNMP_LIBRARY 1
 
-/* add in recent CMU library extensions (not complete) */
-#undef CMU_COMPATIBLE
-
 /* final conclusion on nlist usage */
-#if defined(HAVE_NLIST) && defined(HAVE_STRUCT_NLIST_N_VALUE) && !defined(NETSNMP_DONT_USE_NLIST) && !defined(NETSNMP_NO_KMEM_USAGE)
+#if defined(HAVE_NLIST) && defined(HAVE_STRUCT_NLIST_N_VALUE) && !defined(NETSNMP_DONT_USE_NLIST) && defined(HAVE_KMEM) && !defined(NETSNMP_NO_KMEM_USAGE)
 #define NETSNMP_CAN_USE_NLIST
 #endif
 
diff --git a/agent/Makefile.depend b/agent/Makefile.depend
index ba42c5c..b523fa3 100644
--- a/agent/Makefile.depend
+++ b/agent/Makefile.depend
@@ -5,6 +5,7 @@
 ./agent_handler.lo: ../include/net-snmp/system/sysv.h
 ./agent_handler.lo: ../include/net-snmp/system/generic.h
 ./agent_handler.lo: ../include/net-snmp/machine/generic.h
+./agent_handler.lo: ../include/net-snmp/net-snmp-features.h
 ./agent_handler.lo: ../include/net-snmp/net-snmp-includes.h
 ./agent_handler.lo: ../include/net-snmp/definitions.h
 ./agent_handler.lo: ../include/net-snmp/types.h
@@ -24,11 +25,8 @@
 ./agent_handler.lo: ../include/net-snmp/library/snmp_service.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agent_handler.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agent_handler.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./agent_handler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./agent_handler.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_handler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -73,6 +71,7 @@
 ./agent_handler.lo: ../include/net-snmp/library/lcd_time.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_handler.lo: ../include/net-snmp/library/snmptsm.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpusm.h
 ./agent_handler.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent_handler.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -112,6 +111,7 @@
 ./agent_handler.lo: ../include/net-snmp/agent/mfd.h
 ./agent_handler.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./agent_index.lo: ../include/net-snmp/net-snmp-config.h
+./agent_index.lo: ../include/net-snmp/net-snmp-features.h
 ./agent_index.lo: ../include/net-snmp/net-snmp-includes.h
 ./agent_index.lo: ../include/net-snmp/definitions.h
 ./agent_index.lo: ../include/net-snmp/types.h
@@ -131,11 +131,8 @@
 ./agent_index.lo: ../include/net-snmp/library/snmp_service.h
 ./agent_index.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./agent_index.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agent_index.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agent_index.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./agent_index.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./agent_index.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent_index.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_index.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./agent_index.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./agent_index.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_index.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -179,6 +176,7 @@
 ./agent_index.lo: ../include/net-snmp/library/lcd_time.h
 ./agent_index.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agent_index.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_index.lo: ../include/net-snmp/library/snmptsm.h
 ./agent_index.lo: ../include/net-snmp/library/snmpusm.h
 ./agent_index.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent_index.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -222,6 +220,7 @@
 ./agent_index.lo: mibgroup/struct.h ../agent/mibgroup/agentx/subagent.h
 ./agent_index.lo: ../agent/mibgroup/agentx/client.h
 ./agent_read_config.lo: ../include/net-snmp/net-snmp-config.h
+./agent_read_config.lo: ../include/net-snmp/net-snmp-features.h
 ./agent_read_config.lo: ../include/net-snmp/net-snmp-includes.h
 ./agent_read_config.lo: ../include/net-snmp/definitions.h
 ./agent_read_config.lo: ../include/net-snmp/types.h
@@ -241,11 +240,8 @@
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_service.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agent_read_config.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agent_read_config.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./agent_read_config.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./agent_read_config.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_read_config.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -289,6 +285,7 @@
 ./agent_read_config.lo: ../include/net-snmp/library/lcd_time.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_read_config.lo: ../include/net-snmp/library/snmptsm.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpusm.h
 ./agent_read_config.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent_read_config.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -334,40 +331,22 @@
 ./agent_read_config.lo: mibgroup/snmpv3/usmConf.h mibgroup/mibII/vacm_conf.h
 ./agent_read_config.lo: ../agent/mibgroup/mib_module_includes.h
 ./agent_read_config.lo: mibgroup/examples/example.h mibgroup/testhandler.h
-./agent_read_config.lo: mibgroup/host/hr_storage.h mibgroup/host/hr_filesys.h
+./agent_read_config.lo: mibgroup/Rmon/rows.h mibgroup/Rmon/agutil.h
+./agent_read_config.lo: mibgroup/Rmon/statistics.h mibgroup/Rmon/alarmTable.h
+./agent_read_config.lo: mibgroup/Rmon/history.h mibgroup/Rmon/event.h
+./agent_read_config.lo: mibgroup/examples/scalar_int.h
+./agent_read_config.lo: mibgroup/examples/watched.h
+./agent_read_config.lo: mibgroup/examples/data_set.h
+./agent_read_config.lo: mibgroup/examples/delayed_instance.h
+./agent_read_config.lo: mibgroup/host/hrh_storage.h
+./agent_read_config.lo: mibgroup/host/hrh_filesys.h
 ./agent_read_config.lo: mibgroup/host/hrSWInstalledTable.h
 ./agent_read_config.lo: mibgroup/host/hrSWRunTable.h
 ./agent_read_config.lo: mibgroup/host/hr_system.h mibgroup/host/hr_device.h
 ./agent_read_config.lo: mibgroup/host/hr_other.h mibgroup/host/hr_proc.h
 ./agent_read_config.lo: mibgroup/host/hr_network.h mibgroup/host/hr_print.h
 ./agent_read_config.lo: mibgroup/host/hr_disk.h mibgroup/host/hr_partition.h
-./agent_read_config.lo: mibgroup/examples/scalar_int.h
-./agent_read_config.lo: mibgroup/examples/watched.h
-./agent_read_config.lo: mibgroup/examples/data_set.h
-./agent_read_config.lo: mibgroup/examples/delayed_instance.h
-./agent_read_config.lo: mibgroup/Rmon/rows.h mibgroup/Rmon/agutil.h
-./agent_read_config.lo: mibgroup/Rmon/statistics.h mibgroup/Rmon/alarmTable.h
-./agent_read_config.lo: mibgroup/Rmon/history.h mibgroup/Rmon/event.h
-./agent_read_config.lo: mibgroup/host/data_access/swinst.h
-./agent_read_config.lo: mibgroup/host/data_access/swrun.h
-./agent_read_config.lo: mibgroup/host/hrSWRunPerfTable.h
-./agent_read_config.lo: mibgroup/disman/event/mteScalars.h
-./agent_read_config.lo: mibgroup/disman/event/mteTrigger.h
-./agent_read_config.lo: mibgroup/disman/event/mteTriggerTable.h
-./agent_read_config.lo: mibgroup/disman/event/mteTriggerDeltaTable.h
-./agent_read_config.lo: mibgroup/disman/event/mteTriggerExistenceTable.h
-./agent_read_config.lo: mibgroup/disman/event/mteTriggerBooleanTable.h
-./agent_read_config.lo: mibgroup/disman/event/mteTriggerThresholdTable.h
-./agent_read_config.lo: mibgroup/disman/event/mteTriggerConf.h
-./agent_read_config.lo: mibgroup/disman/event/mteEvent.h
-./agent_read_config.lo: ../agent/mibgroup/disman/event/mteTrigger.h
-./agent_read_config.lo: mibgroup/disman/event/mteEventTable.h
-./agent_read_config.lo: mibgroup/disman/event/mteEventSetTable.h
-./agent_read_config.lo: mibgroup/disman/event/mteEventNotificationTable.h
-./agent_read_config.lo: mibgroup/disman/event/mteEventConf.h
-./agent_read_config.lo: mibgroup/disman/event/mteObjects.h
-./agent_read_config.lo: mibgroup/disman/event/mteObjectsTable.h
-./agent_read_config.lo: mibgroup/disman/event/mteObjectsConf.h
+./agent_read_config.lo: mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.h
 ./agent_read_config.lo: mibgroup/snmpv3/snmpMPDStats_5_5.h
 ./agent_read_config.lo: mibgroup/snmpv3/usmStats_5_5.h
 ./agent_read_config.lo: mibgroup/snmpv3/snmpEngine.h
@@ -380,8 +359,8 @@
 ./agent_read_config.lo: mibgroup/mibII/tcp.h mibgroup/mibII/icmp.h
 ./agent_read_config.lo: mibgroup/mibII/udp.h mibgroup/mibII/vacm_vars.h
 ./agent_read_config.lo: mibgroup/mibII/setSerialNo.h mibgroup/mibII/ipv6.h
-./agent_read_config.lo: mibgroup/ucd-snmp/disk.h ../agent/mibgroup/mibdefs.h
-./agent_read_config.lo: mibgroup/ucd-snmp/proc.h
+./agent_read_config.lo: mibgroup/ucd-snmp/disk_hw.h
+./agent_read_config.lo: ../agent/mibgroup/mibdefs.h mibgroup/ucd-snmp/proc.h
 ./agent_read_config.lo: mibgroup/ucd-snmp/versioninfo.h
 ./agent_read_config.lo: mibgroup/ucd-snmp/pass.h
 ./agent_read_config.lo: mibgroup/ucd-snmp/pass_persist.h
@@ -401,13 +380,35 @@
 ./agent_read_config.lo: mibgroup/agent/nsDebug.h mibgroup/agent/nsCache.h
 ./agent_read_config.lo: mibgroup/agent/nsLogging.h
 ./agent_read_config.lo: mibgroup/agent/nsVacmAccessTable.h
+./agent_read_config.lo: mibgroup/disman/event/mteScalars.h
+./agent_read_config.lo: mibgroup/disman/event/mteTrigger.h
+./agent_read_config.lo: mibgroup/disman/event/mteTriggerTable.h
+./agent_read_config.lo: mibgroup/disman/event/mteTriggerDeltaTable.h
+./agent_read_config.lo: mibgroup/disman/event/mteTriggerExistenceTable.h
+./agent_read_config.lo: mibgroup/disman/event/mteTriggerBooleanTable.h
+./agent_read_config.lo: mibgroup/disman/event/mteTriggerThresholdTable.h
+./agent_read_config.lo: mibgroup/disman/event/mteTriggerConf.h
+./agent_read_config.lo: mibgroup/disman/event/mteEvent.h
+./agent_read_config.lo: ../agent/mibgroup/disman/event/mteTrigger.h
+./agent_read_config.lo: mibgroup/disman/event/mteEventTable.h
+./agent_read_config.lo: mibgroup/disman/event/mteEventSetTable.h
+./agent_read_config.lo: mibgroup/disman/event/mteEventNotificationTable.h
+./agent_read_config.lo: mibgroup/disman/event/mteEventConf.h
+./agent_read_config.lo: mibgroup/disman/event/mteObjects.h
+./agent_read_config.lo: mibgroup/disman/event/mteObjectsTable.h
+./agent_read_config.lo: mibgroup/disman/event/mteObjectsConf.h
 ./agent_read_config.lo: mibgroup/disman/schedule/schedCore.h
 ./agent_read_config.lo: mibgroup/disman/schedule/schedConf.h
 ./agent_read_config.lo: mibgroup/disman/schedule/schedTable.h
 ./agent_read_config.lo: mibgroup/utilities/override.h
-./agent_read_config.lo: mibgroup/hardware/memory/hw_mem.h
-./agent_read_config.lo: mibgroup/hardware/cpu/cpu.h
-./agent_read_config.lo: mibgroup/hardware/cpu/cpu_linux.h
+./agent_read_config.lo: mibgroup/host/data_access/swinst.h
+./agent_read_config.lo: mibgroup/host/data_access/swrun.h
+./agent_read_config.lo: mibgroup/host/hrSWRunPerfTable.h
+./agent_read_config.lo: mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.h
+./agent_read_config.lo: mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h
+./agent_read_config.lo: mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h
+./agent_read_config.lo: mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h
+./agent_read_config.lo: mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h
 ./agent_read_config.lo: mibgroup/mibII/var_route.h mibgroup/mibII/tcpTable.h
 ./agent_read_config.lo: mibgroup/mibII/udpTable.h
 ./agent_read_config.lo: mibgroup/mibII/vacm_context.h
@@ -417,6 +418,10 @@
 ./agent_read_config.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.h
 ./agent_read_config.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
 ./agent_read_config.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.h
+./agent_read_config.lo: mibgroup/hardware/memory/hw_mem.h
+./agent_read_config.lo: mibgroup/hardware/fsys/hw_fsys.h
+./agent_read_config.lo: mibgroup/hardware/cpu/cpu.h
+./agent_read_config.lo: mibgroup/hardware/cpu/cpu_linux.h
 ./agent_read_config.lo: mibgroup/if-mib/ifTable/ifTable.h
 ./agent_read_config.lo: ../include/net-snmp/data_access/interface.h
 ./agent_read_config.lo: mibgroup/if-mib/ifTable/ifTable_constants.h
@@ -507,6 +512,7 @@
 ./agent_read_config.lo: ../agent/mibgroup/agent_module_dot_conf.h
 ./agent_read_config.lo: ../agent/mibgroup/mib_module_dot_conf.h
 ./agent_registry.lo: ../include/net-snmp/net-snmp-config.h
+./agent_registry.lo: ../include/net-snmp/net-snmp-features.h
 ./agent_registry.lo: ../include/net-snmp/net-snmp-includes.h
 ./agent_registry.lo: ../include/net-snmp/definitions.h
 ./agent_registry.lo: ../include/net-snmp/types.h
@@ -526,11 +532,8 @@
 ./agent_registry.lo: ../include/net-snmp/library/snmp_service.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agent_registry.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agent_registry.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./agent_registry.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./agent_registry.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_registry.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -574,6 +577,7 @@
 ./agent_registry.lo: ../include/net-snmp/library/lcd_time.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_registry.lo: ../include/net-snmp/library/snmptsm.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpusm.h
 ./agent_registry.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent_registry.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -635,11 +639,8 @@
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmp_service.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agent_sysORTable.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agent_sysORTable.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./agent_sysORTable.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./agent_sysORTable.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -649,6 +650,7 @@
 ./agent_sysORTable.lo: ../include/net-snmp/mib_api.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/parse.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/oid_stash.h
+./agent_sysORTable.lo: ../include/net-snmp/net-snmp-features.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmp_impl.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmp.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmp-tc.h
@@ -683,6 +685,7 @@
 ./agent_sysORTable.lo: ../include/net-snmp/library/lcd_time.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmptsm.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmpusm.h
 ./agent_sysORTable.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent_sysORTable.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -725,6 +728,7 @@
 ./agent_sysORTable.lo: ../include/net-snmp/agent/agent_sysORTable.h
 ./agent_sysORTable.lo: ../include/net-snmp/agent/sysORTable.h
 ./agent_trap.lo: ../include/net-snmp/net-snmp-config.h
+./agent_trap.lo: ../include/net-snmp/net-snmp-features.h
 ./agent_trap.lo: ../include/net-snmp/utilities.h ../include/net-snmp/types.h
 ./agent_trap.lo: ../include/net-snmp/library/oid.h
 ./agent_trap.lo: ../include/net-snmp/library/types.h
@@ -743,11 +747,8 @@
 ./agent_trap.lo: ../include/net-snmp/library/snmp_service.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agent_trap.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agent_trap.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./agent_trap.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./agent_trap.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_trap.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -791,6 +792,7 @@
 ./agent_trap.lo: ../include/net-snmp/library/lcd_time.h
 ./agent_trap.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_trap.lo: ../include/net-snmp/library/snmptsm.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpusm.h
 ./agent_trap.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent_trap.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -830,7 +832,6 @@
 ./agent_trap.lo: ../include/net-snmp/agent/mfd.h
 ./agent_trap.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./agent_trap.lo: ../include/net-snmp/agent/agent_callbacks.h
-./agent_trap.lo: ../agent/mibgroup/agentx/protocol.h
 ./auto_nlist.lo: ../include/net-snmp/net-snmp-config.h
 ./auto_nlist.lo: ../include/net-snmp/agent/auto_nlist.h
 ./kernel.lo: ../include/net-snmp/net-snmp-config.h
@@ -855,11 +856,8 @@
 ./mib_modules.lo: ../include/net-snmp/library/snmp_service.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./mib_modules.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./mib_modules.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./mib_modules.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./mib_modules.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./mib_modules.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -869,6 +867,7 @@
 ./mib_modules.lo: ../include/net-snmp/mib_api.h
 ./mib_modules.lo: ../include/net-snmp/library/parse.h
 ./mib_modules.lo: ../include/net-snmp/library/oid_stash.h
+./mib_modules.lo: ../include/net-snmp/net-snmp-features.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp_impl.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp-tc.h
@@ -903,6 +902,7 @@
 ./mib_modules.lo: ../include/net-snmp/library/lcd_time.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp_secmod.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./mib_modules.lo: ../include/net-snmp/library/snmptsm.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpusm.h
 ./mib_modules.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mib_modules.lo: ../include/net-snmp/agent/agent_module_config.h
@@ -940,41 +940,23 @@
 ./mib_modules.lo: ../include/net-snmp/agent/table_array.h
 ./mib_modules.lo: ../include/net-snmp/agent/mfd.h
 ./mib_modules.lo: ../include/net-snmp/agent/snmp_get_statistic.h m2m.h
-./mib_modules.lo: ../include/net-snmp/data_access/interface.h
 ./mib_modules.lo: mibgroup/struct.h ../include/net-snmp/agent/mib_modules.h
 ./mib_modules.lo: ../agent/mibgroup/mib_module_includes.h
 ./mib_modules.lo: mibgroup/examples/example.h mibgroup/testhandler.h
-./mib_modules.lo: mibgroup/host/hr_storage.h mibgroup/host/hr_filesys.h
+./mib_modules.lo: mibgroup/Rmon/rows.h mibgroup/Rmon/agutil.h
+./mib_modules.lo: mibgroup/Rmon/statistics.h mibgroup/Rmon/alarmTable.h
+./mib_modules.lo: mibgroup/Rmon/history.h mibgroup/Rmon/event.h
+./mib_modules.lo: mibgroup/examples/scalar_int.h mibgroup/examples/watched.h
+./mib_modules.lo: mibgroup/examples/data_set.h
+./mib_modules.lo: mibgroup/examples/delayed_instance.h
+./mib_modules.lo: mibgroup/host/hrh_storage.h mibgroup/host/hrh_filesys.h
 ./mib_modules.lo: mibgroup/host/hrSWInstalledTable.h
 ./mib_modules.lo: mibgroup/host/hrSWRunTable.h mibgroup/host/hr_system.h
 ./mib_modules.lo: mibgroup/host/hr_device.h mibgroup/host/hr_other.h
 ./mib_modules.lo: mibgroup/host/hr_proc.h mibgroup/host/hr_network.h
 ./mib_modules.lo: mibgroup/host/hr_print.h mibgroup/host/hr_disk.h
-./mib_modules.lo: mibgroup/host/hr_partition.h mibgroup/examples/scalar_int.h
-./mib_modules.lo: mibgroup/examples/watched.h mibgroup/examples/data_set.h
-./mib_modules.lo: mibgroup/examples/delayed_instance.h mibgroup/Rmon/rows.h
-./mib_modules.lo: mibgroup/Rmon/agutil.h mibgroup/Rmon/statistics.h
-./mib_modules.lo: mibgroup/Rmon/alarmTable.h mibgroup/Rmon/history.h
-./mib_modules.lo: mibgroup/Rmon/event.h mibgroup/host/data_access/swinst.h
-./mib_modules.lo: mibgroup/host/data_access/swrun.h
-./mib_modules.lo: mibgroup/host/hrSWRunPerfTable.h
-./mib_modules.lo: mibgroup/disman/event/mteScalars.h
-./mib_modules.lo: mibgroup/disman/event/mteTrigger.h
-./mib_modules.lo: mibgroup/disman/event/mteTriggerTable.h
-./mib_modules.lo: mibgroup/disman/event/mteTriggerDeltaTable.h
-./mib_modules.lo: mibgroup/disman/event/mteTriggerExistenceTable.h
-./mib_modules.lo: mibgroup/disman/event/mteTriggerBooleanTable.h
-./mib_modules.lo: mibgroup/disman/event/mteTriggerThresholdTable.h
-./mib_modules.lo: mibgroup/disman/event/mteTriggerConf.h
-./mib_modules.lo: mibgroup/disman/event/mteEvent.h
-./mib_modules.lo: ../agent/mibgroup/disman/event/mteTrigger.h
-./mib_modules.lo: mibgroup/disman/event/mteEventTable.h
-./mib_modules.lo: mibgroup/disman/event/mteEventSetTable.h
-./mib_modules.lo: mibgroup/disman/event/mteEventNotificationTable.h
-./mib_modules.lo: mibgroup/disman/event/mteEventConf.h
-./mib_modules.lo: mibgroup/disman/event/mteObjects.h
-./mib_modules.lo: mibgroup/disman/event/mteObjectsTable.h
-./mib_modules.lo: mibgroup/disman/event/mteObjectsConf.h
+./mib_modules.lo: mibgroup/host/hr_partition.h
+./mib_modules.lo: mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.h
 ./mib_modules.lo: mibgroup/snmpv3/snmpMPDStats_5_5.h
 ./mib_modules.lo: mibgroup/snmpv3/usmStats_5_5.h mibgroup/snmpv3/snmpEngine.h
 ./mib_modules.lo: mibgroup/snmpv3/usmUser.h mibgroup/mibII/snmp_mib_5_5.h
@@ -984,7 +966,7 @@
 ./mib_modules.lo: mibgroup/mibII/at.h mibgroup/mibII/tcp.h
 ./mib_modules.lo: mibgroup/mibII/icmp.h mibgroup/mibII/udp.h
 ./mib_modules.lo: mibgroup/mibII/vacm_vars.h mibgroup/mibII/setSerialNo.h
-./mib_modules.lo: mibgroup/mibII/ipv6.h mibgroup/ucd-snmp/disk.h
+./mib_modules.lo: mibgroup/mibII/ipv6.h mibgroup/ucd-snmp/disk_hw.h
 ./mib_modules.lo: ../agent/mibgroup/mibdefs.h mibgroup/ucd-snmp/proc.h
 ./mib_modules.lo: mibgroup/ucd-snmp/versioninfo.h mibgroup/ucd-snmp/pass.h
 ./mib_modules.lo: mibgroup/ucd-snmp/pass_persist.h
@@ -1003,13 +985,35 @@
 ./mib_modules.lo: mibgroup/agent/nsModuleTable.h mibgroup/agent/nsDebug.h
 ./mib_modules.lo: mibgroup/agent/nsCache.h mibgroup/agent/nsLogging.h
 ./mib_modules.lo: mibgroup/agent/nsVacmAccessTable.h
+./mib_modules.lo: mibgroup/disman/event/mteScalars.h
+./mib_modules.lo: mibgroup/disman/event/mteTrigger.h
+./mib_modules.lo: mibgroup/disman/event/mteTriggerTable.h
+./mib_modules.lo: mibgroup/disman/event/mteTriggerDeltaTable.h
+./mib_modules.lo: mibgroup/disman/event/mteTriggerExistenceTable.h
+./mib_modules.lo: mibgroup/disman/event/mteTriggerBooleanTable.h
+./mib_modules.lo: mibgroup/disman/event/mteTriggerThresholdTable.h
+./mib_modules.lo: mibgroup/disman/event/mteTriggerConf.h
+./mib_modules.lo: mibgroup/disman/event/mteEvent.h
+./mib_modules.lo: ../agent/mibgroup/disman/event/mteTrigger.h
+./mib_modules.lo: mibgroup/disman/event/mteEventTable.h
+./mib_modules.lo: mibgroup/disman/event/mteEventSetTable.h
+./mib_modules.lo: mibgroup/disman/event/mteEventNotificationTable.h
+./mib_modules.lo: mibgroup/disman/event/mteEventConf.h
+./mib_modules.lo: mibgroup/disman/event/mteObjects.h
+./mib_modules.lo: mibgroup/disman/event/mteObjectsTable.h
+./mib_modules.lo: mibgroup/disman/event/mteObjectsConf.h
 ./mib_modules.lo: mibgroup/disman/schedule/schedCore.h
 ./mib_modules.lo: mibgroup/disman/schedule/schedConf.h
 ./mib_modules.lo: mibgroup/disman/schedule/schedTable.h
 ./mib_modules.lo: mibgroup/utilities/override.h
-./mib_modules.lo: mibgroup/hardware/memory/hw_mem.h
-./mib_modules.lo: mibgroup/hardware/cpu/cpu.h
-./mib_modules.lo: mibgroup/hardware/cpu/cpu_linux.h
+./mib_modules.lo: mibgroup/host/data_access/swinst.h
+./mib_modules.lo: mibgroup/host/data_access/swrun.h
+./mib_modules.lo: mibgroup/host/hrSWRunPerfTable.h
+./mib_modules.lo: mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.h
+./mib_modules.lo: mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h
+./mib_modules.lo: mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h
+./mib_modules.lo: mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h
+./mib_modules.lo: mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h
 ./mib_modules.lo: mibgroup/mibII/var_route.h mibgroup/mibII/tcpTable.h
 ./mib_modules.lo: mibgroup/mibII/udpTable.h mibgroup/mibII/vacm_context.h
 ./mib_modules.lo: mibgroup/ip-mib/ip_scalars.h
@@ -1018,7 +1022,12 @@
 ./mib_modules.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.h
 ./mib_modules.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
 ./mib_modules.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.h
+./mib_modules.lo: mibgroup/hardware/memory/hw_mem.h
+./mib_modules.lo: mibgroup/hardware/fsys/hw_fsys.h
+./mib_modules.lo: mibgroup/hardware/cpu/cpu.h
+./mib_modules.lo: mibgroup/hardware/cpu/cpu_linux.h
 ./mib_modules.lo: mibgroup/if-mib/ifTable/ifTable.h
+./mib_modules.lo: ../include/net-snmp/data_access/interface.h
 ./mib_modules.lo: mibgroup/if-mib/ifTable/ifTable_constants.h
 ./mib_modules.lo: mibgroup/if-mib/ifTable/ifTable_interface.h
 ./mib_modules.lo: mibgroup/if-mib/ifTable/ifTable.h
@@ -1126,11 +1135,8 @@
 ./object_monitor.lo: ../include/net-snmp/library/snmp_service.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./object_monitor.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./object_monitor.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./object_monitor.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./object_monitor.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./object_monitor.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1140,6 +1146,7 @@
 ./object_monitor.lo: ../include/net-snmp/mib_api.h
 ./object_monitor.lo: ../include/net-snmp/library/parse.h
 ./object_monitor.lo: ../include/net-snmp/library/oid_stash.h
+./object_monitor.lo: ../include/net-snmp/net-snmp-features.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp_impl.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1174,6 +1181,7 @@
 ./object_monitor.lo: ../include/net-snmp/library/lcd_time.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp_secmod.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./object_monitor.lo: ../include/net-snmp/library/snmptsm.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpusm.h
 ./object_monitor.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./object_monitor.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1214,6 +1222,7 @@
 ./object_monitor.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./object_monitor.lo: ../include/net-snmp/agent/object_monitor.h
 ./snmp_agent.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_agent.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_agent.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmp_agent.lo: ../include/net-snmp/definitions.h
 ./snmp_agent.lo: ../include/net-snmp/types.h
@@ -1233,11 +1242,8 @@
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_agent.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_agent.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_agent.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_agent.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_agent.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1281,6 +1287,7 @@
 ./snmp_agent.lo: ../include/net-snmp/library/lcd_time.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_agent.lo: ../include/net-snmp/library/snmptsm.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpusm.h
 ./snmp_agent.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmp_agent.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1320,10 +1327,10 @@
 ./snmp_agent.lo: ../include/net-snmp/agent/mfd.h
 ./snmp_agent.lo: ../include/net-snmp/agent/snmp_get_statistic.h snmpd.h
 ./snmp_agent.lo: ../include/net-snmp/agent/mib_modules.h
-./snmp_agent.lo: ../agent/mibgroup/agentx/protocol.h
-./snmp_agent.lo: ../agent/mibgroup/agentx/master.h
 ./snmp_agent.lo: ../agent/mibgroup/smux/smux.h
-./snmpd.lo: ../include/net-snmp/net-snmp-config.h ../include/net-snmp/types.h
+./snmpd.lo: ../include/net-snmp/net-snmp-config.h
+./snmpd.lo: ../include/net-snmp/net-snmp-features.h
+./snmpd.lo: ../include/net-snmp/types.h
 ./snmpd.lo: ../include/net-snmp/library/oid.h
 ./snmpd.lo: ../include/net-snmp/library/types.h
 ./snmpd.lo: ../include/net-snmp/definitions.h
@@ -1340,11 +1347,8 @@
 ./snmpd.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpd.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpd.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpd.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpd.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpd.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpd.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpd.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpd.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpd.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpd.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpd.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1387,6 +1391,7 @@
 ./snmpd.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpd.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpd.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpd.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpd.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpd.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpd.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1426,171 +1431,7 @@
 ./snmpd.lo: ../include/net-snmp/agent/mfd.h
 ./snmpd.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./snmpd.lo: ../include/net-snmp/library/large_fd_set.h m2m.h snmpd.h
-./snmpd.lo: mibgroup/struct.h ../include/net-snmp/agent/mib_modules.h
-./snmpd.lo: mibgroup/util_funcs.h mibgroup/util_funcs/Exit.h
-./snmpd.lo: mibgroup/util_funcs/header_generic.h
-./snmpd.lo: mibgroup/util_funcs/header_simple_table.h
-./snmpd.lo: mibgroup/util_funcs/restart.h mibgroup/struct.h
-./snmpd.lo: mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h
-./snmpd.lo: ../agent/mibgroup/mib_module_includes.h
-./snmpd.lo: mibgroup/examples/example.h mibgroup/testhandler.h
-./snmpd.lo: mibgroup/host/hr_storage.h mibgroup/host/hr_filesys.h
-./snmpd.lo: mibgroup/host/hrSWInstalledTable.h mibgroup/host/hrSWRunTable.h
-./snmpd.lo: mibgroup/host/hr_system.h mibgroup/host/hr_device.h
-./snmpd.lo: mibgroup/host/hr_other.h mibgroup/host/hr_proc.h
-./snmpd.lo: mibgroup/host/hr_network.h mibgroup/host/hr_print.h
-./snmpd.lo: mibgroup/host/hr_disk.h mibgroup/host/hr_partition.h
-./snmpd.lo: mibgroup/examples/scalar_int.h mibgroup/examples/watched.h
-./snmpd.lo: mibgroup/examples/data_set.h mibgroup/examples/delayed_instance.h
-./snmpd.lo: mibgroup/Rmon/rows.h mibgroup/Rmon/agutil.h
-./snmpd.lo: mibgroup/Rmon/statistics.h mibgroup/Rmon/alarmTable.h
-./snmpd.lo: mibgroup/Rmon/history.h mibgroup/Rmon/event.h
-./snmpd.lo: mibgroup/host/data_access/swinst.h
-./snmpd.lo: mibgroup/host/data_access/swrun.h
-./snmpd.lo: mibgroup/host/hrSWRunPerfTable.h
-./snmpd.lo: mibgroup/disman/event/mteScalars.h
-./snmpd.lo: mibgroup/disman/event/mteTrigger.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerTable.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerDeltaTable.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerExistenceTable.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerBooleanTable.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerThresholdTable.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerConf.h
-./snmpd.lo: mibgroup/disman/event/mteEvent.h
-./snmpd.lo: ../agent/mibgroup/disman/event/mteTrigger.h
-./snmpd.lo: mibgroup/disman/event/mteEventTable.h
-./snmpd.lo: mibgroup/disman/event/mteEventSetTable.h
-./snmpd.lo: mibgroup/disman/event/mteEventNotificationTable.h
-./snmpd.lo: mibgroup/disman/event/mteEventConf.h
-./snmpd.lo: mibgroup/disman/event/mteObjects.h
-./snmpd.lo: mibgroup/disman/event/mteObjectsTable.h
-./snmpd.lo: mibgroup/disman/event/mteObjectsConf.h
-./snmpd.lo: mibgroup/snmpv3/snmpMPDStats_5_5.h mibgroup/snmpv3/usmStats_5_5.h
-./snmpd.lo: mibgroup/snmpv3/snmpEngine.h mibgroup/snmpv3/usmUser.h
-./snmpd.lo: mibgroup/mibII/snmp_mib_5_5.h mibgroup/mibII/system_mib.h
-./snmpd.lo: mibgroup/mibII/sysORTable.h mibgroup/mibII/at.h
-./snmpd.lo: mibgroup/mibII/ip.h mibgroup/mibII/var_route.h
-./snmpd.lo: mibgroup/mibII/route_write.h mibgroup/mibII/at.h
-./snmpd.lo: mibgroup/mibII/tcp.h mibgroup/mibII/icmp.h mibgroup/mibII/udp.h
-./snmpd.lo: mibgroup/mibII/vacm_vars.h mibgroup/mibII/setSerialNo.h
-./snmpd.lo: mibgroup/mibII/ipv6.h mibgroup/ucd-snmp/disk.h
-./snmpd.lo: ../agent/mibgroup/mibdefs.h mibgroup/ucd-snmp/proc.h
-./snmpd.lo: mibgroup/ucd-snmp/versioninfo.h mibgroup/ucd-snmp/pass.h
-./snmpd.lo: mibgroup/ucd-snmp/pass_persist.h mibgroup/ucd-snmp/loadave.h
-./snmpd.lo: mibgroup/agent/extend.h mibgroup/ucd-snmp/errormib.h
-./snmpd.lo: mibgroup/ucd-snmp/file.h mibgroup/ucd-snmp/dlmod.h
-./snmpd.lo: mibgroup/ucd-snmp/proxy.h mibgroup/ucd-snmp/logmatch.h
-./snmpd.lo: mibgroup/ucd-snmp/memory.h mibgroup/ucd-snmp/vmstat.h
-./snmpd.lo: mibgroup/notification/snmpNotifyTable.h
-./snmpd.lo: mibgroup/notification/snmpNotifyFilterProfileTable.h
-./snmpd.lo: mibgroup/notification-log-mib/notification_log.h
-./snmpd.lo: mibgroup/target/target_counters_5_5.h
-./snmpd.lo: mibgroup/target/snmpTargetAddrEntry.h
-./snmpd.lo: mibgroup/target/snmpTargetParamsEntry.h
-./snmpd.lo: mibgroup/agent/nsTransactionTable.h
-./snmpd.lo: mibgroup/agent/nsModuleTable.h mibgroup/agent/nsDebug.h
-./snmpd.lo: mibgroup/agent/nsCache.h mibgroup/agent/nsLogging.h
-./snmpd.lo: mibgroup/agent/nsVacmAccessTable.h
-./snmpd.lo: mibgroup/disman/schedule/schedCore.h
-./snmpd.lo: mibgroup/disman/schedule/schedConf.h
-./snmpd.lo: mibgroup/disman/schedule/schedTable.h
-./snmpd.lo: mibgroup/utilities/override.h mibgroup/hardware/memory/hw_mem.h
-./snmpd.lo: mibgroup/hardware/cpu/cpu.h mibgroup/hardware/cpu/cpu_linux.h
-./snmpd.lo: mibgroup/mibII/var_route.h mibgroup/mibII/tcpTable.h
-./snmpd.lo: mibgroup/mibII/udpTable.h mibgroup/mibII/vacm_context.h
-./snmpd.lo: mibgroup/ip-mib/ip_scalars.h
-./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
-./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_constants.h
-./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.h
-./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
-./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.h
-./snmpd.lo: mibgroup/if-mib/ifTable/ifTable.h
-./snmpd.lo: ../include/net-snmp/data_access/interface.h
-./snmpd.lo: mibgroup/if-mib/ifTable/ifTable_constants.h
-./snmpd.lo: mibgroup/if-mib/ifTable/ifTable_interface.h
-./snmpd.lo: mibgroup/if-mib/ifTable/ifTable.h
-./snmpd.lo: mibgroup/if-mib/ifTable/ifTable_data_access.h
-./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable.h
-./snmpd.lo: ../agent/mibgroup/if-mib/ifTable/ifTable.h
-./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable_constants.h
-./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable_interface.h
-./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable.h
-./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable_data_access.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
-./snmpd.lo: ../include/net-snmp/data_access/ipaddress.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_constants.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_constants.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.h
-./snmpd.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h
-./snmpd.lo: ../include/net-snmp/data_access/defaultrouter.h
-./snmpd.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_oids.h
-./snmpd.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_enums.h
-./snmpd.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.h
-./snmpd.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h
-./snmpd.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.h
-./snmpd.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get.h
-./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
-./snmpd.lo: ../include/net-snmp/data_access/arp.h
-./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_constants.h
-./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.h
-./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
-./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.h
-./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
-./snmpd.lo: ../include/net-snmp/data_access/ipstats.h
-./snmpd.lo: ../include/net-snmp/data_access/systemstats.h
-./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_constants.h
-./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.h
-./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
-./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.h
-./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h
-./snmpd.lo: ../include/net-snmp/data_access/scopezone.h
-./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_oids.h
-./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_enums.h
-./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.h
-./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h
-./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.h
-./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h
-./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_oids.h
-./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_enums.h
-./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.h
-./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h
-./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.h
-./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h
-./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h
-./snmpd.lo: ../include/net-snmp/data_access/route.h
-./snmpd.lo: ../agent/mibgroup/mibII/route_headers.h
-./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_constants.h
-./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.h
-./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h
-./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_data_access.h
-./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h
-./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_constants.h
-./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.h
-./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h
-./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.h
-./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h
-./snmpd.lo: ../include/net-snmp/data_access/tcpConn.h
-./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_constants.h
-./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.h
-./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h
-./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.h
-./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h
-./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_constants.h
-./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.h
-./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h
-./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.h
-./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h
-./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_constants.h
-./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.h
-./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h
-./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.h
-./snmpd.lo: mibgroup/if-mib/data_access/interface.h mibgroup/smux/smux.h
+./snmpd.lo: ../include/net-snmp/agent/mib_modules.h mibgroup/smux/smux.h
 ./snmp_perl.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp_perl.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmp_perl.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
@@ -1610,11 +1451,8 @@
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_perl.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_perl.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_perl.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_perl.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_perl.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1624,6 +1462,7 @@
 ./snmp_perl.lo: ../include/net-snmp/mib_api.h
 ./snmp_perl.lo: ../include/net-snmp/library/parse.h
 ./snmp_perl.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_perl.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1658,6 +1497,7 @@
 ./snmp_perl.lo: ../include/net-snmp/library/lcd_time.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_perl.lo: ../include/net-snmp/library/snmptsm.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpusm.h
 ./snmp_perl.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmp_perl.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1716,11 +1556,8 @@
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_vars.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_vars.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_vars.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_vars.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_vars.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1730,6 +1567,7 @@
 ./snmp_vars.lo: ../include/net-snmp/mib_api.h
 ./snmp_vars.lo: ../include/net-snmp/library/parse.h
 ./snmp_vars.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_vars.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1764,6 +1602,7 @@
 ./snmp_vars.lo: ../include/net-snmp/library/lcd_time.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_vars.lo: ../include/net-snmp/library/snmptsm.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpusm.h
 ./snmp_vars.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmp_vars.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1812,6 +1651,7 @@
 ./snmp_vars.lo: mibgroup/snmpv3/usmConf.h mibgroup/mibII/vacm_conf.h
 ./snmp_vars.lo: snmp_perl.h ../agent/mibgroup/agent_module_inits.h
 ./helpers/all_helpers.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/all_helpers.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/all_helpers.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/all_helpers.lo: ../include/net-snmp/definitions.h
 ./helpers/all_helpers.lo: ../include/net-snmp/types.h
@@ -1831,11 +1671,8 @@
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1879,6 +1716,7 @@
 ./helpers/all_helpers.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/all_helpers.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/all_helpers.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1919,6 +1757,7 @@
 ./helpers/all_helpers.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/all_helpers.lo: ../include/net-snmp/agent/stash_cache.h
 ./helpers/baby_steps.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/baby_steps.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/baby_steps.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/baby_steps.lo: ../include/net-snmp/definitions.h
 ./helpers/baby_steps.lo: ../include/net-snmp/types.h
@@ -1938,11 +1777,8 @@
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1986,6 +1822,7 @@
 ./helpers/baby_steps.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/baby_steps.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/baby_steps.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2044,11 +1881,8 @@
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2058,6 +1892,7 @@
 ./helpers/bulk_to_next.lo: ../include/net-snmp/mib_api.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/parse.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2092,6 +1927,7 @@
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2131,6 +1967,7 @@
 ./helpers/bulk_to_next.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/cache_handler.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/cache_handler.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/cache_handler.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/cache_handler.lo: ../include/net-snmp/definitions.h
 ./helpers/cache_handler.lo: ../include/net-snmp/types.h
@@ -2150,11 +1987,8 @@
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2198,6 +2032,7 @@
 ./helpers/cache_handler.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/cache_handler.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/cache_handler.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2256,11 +2091,8 @@
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2270,6 +2102,7 @@
 ./helpers/debug_handler.lo: ../include/net-snmp/mib_api.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/parse.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/debug_handler.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2304,6 +2137,7 @@
 ./helpers/debug_handler.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/debug_handler.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/debug_handler.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2343,6 +2177,7 @@
 ./helpers/debug_handler.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/debug_handler.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/instance.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/instance.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/instance.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/instance.lo: ../include/net-snmp/definitions.h
 ./helpers/instance.lo: ../include/net-snmp/types.h
@@ -2362,11 +2197,8 @@
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/instance.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/instance.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/instance.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/instance.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/instance.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2410,6 +2242,7 @@
 ./helpers/instance.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/instance.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/instance.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/instance.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2449,6 +2282,7 @@
 ./helpers/instance.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/instance.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/mode_end_call.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/definitions.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/types.h
@@ -2468,11 +2302,8 @@
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2516,6 +2347,7 @@
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2574,11 +2406,8 @@
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2588,6 +2417,7 @@
 ./helpers/multiplexer.lo: ../include/net-snmp/mib_api.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/parse.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/multiplexer.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2622,6 +2452,7 @@
 ./helpers/multiplexer.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/multiplexer.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/multiplexer.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2680,11 +2511,8 @@
 ./helpers/null.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/null.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/null.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/null.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/null.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/null.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2694,6 +2522,7 @@
 ./helpers/null.lo: ../include/net-snmp/mib_api.h
 ./helpers/null.lo: ../include/net-snmp/library/parse.h
 ./helpers/null.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/null.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2728,6 +2557,7 @@
 ./helpers/null.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/null.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/null.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/null.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2786,11 +2616,8 @@
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2800,6 +2627,7 @@
 ./helpers/old_api.lo: ../include/net-snmp/mib_api.h
 ./helpers/old_api.lo: ../include/net-snmp/library/parse.h
 ./helpers/old_api.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/old_api.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2834,6 +2662,7 @@
 ./helpers/old_api.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/old_api.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/old_api.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2893,11 +2722,8 @@
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2907,6 +2733,7 @@
 ./helpers/read_only.lo: ../include/net-snmp/mib_api.h
 ./helpers/read_only.lo: ../include/net-snmp/library/parse.h
 ./helpers/read_only.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/read_only.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2941,6 +2768,7 @@
 ./helpers/read_only.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/read_only.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/read_only.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2980,6 +2808,7 @@
 ./helpers/read_only.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/read_only.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/row_merge.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/row_merge.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/row_merge.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/row_merge.lo: ../include/net-snmp/definitions.h
 ./helpers/row_merge.lo: ../include/net-snmp/types.h
@@ -2999,11 +2828,8 @@
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3047,6 +2873,7 @@
 ./helpers/row_merge.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/row_merge.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/row_merge.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3105,11 +2932,8 @@
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3119,6 +2943,7 @@
 ./helpers/scalar.lo: ../include/net-snmp/mib_api.h
 ./helpers/scalar.lo: ../include/net-snmp/library/parse.h
 ./helpers/scalar.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/scalar.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp-tc.h
@@ -3153,6 +2978,7 @@
 ./helpers/scalar.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/scalar.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/scalar.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3211,11 +3037,8 @@
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3225,6 +3048,7 @@
 ./helpers/scalar_group.lo: ../include/net-snmp/mib_api.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/parse.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/scalar_group.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp-tc.h
@@ -3259,6 +3083,7 @@
 ./helpers/scalar_group.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/scalar_group.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/scalar_group.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3317,11 +3142,8 @@
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3331,6 +3153,7 @@
 ./helpers/serialize.lo: ../include/net-snmp/mib_api.h
 ./helpers/serialize.lo: ../include/net-snmp/library/parse.h
 ./helpers/serialize.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/serialize.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp-tc.h
@@ -3365,6 +3188,7 @@
 ./helpers/serialize.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/serialize.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/serialize.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3404,6 +3228,7 @@
 ./helpers/serialize.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/serialize.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/definitions.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/types.h
@@ -3423,11 +3248,8 @@
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3471,6 +3293,7 @@
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3510,6 +3333,7 @@
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/stash_cache.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/stash_cache.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/stash_cache.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/stash_cache.lo: ../include/net-snmp/definitions.h
 ./helpers/stash_cache.lo: ../include/net-snmp/types.h
@@ -3529,11 +3353,8 @@
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3577,6 +3398,7 @@
 ./helpers/stash_cache.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3615,9 +3437,10 @@
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/snmp_get_statistic.h
-./helpers/stash_cache.lo: ../include/net-snmp/agent/stash_cache.h
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/stash_to_next.h
+./helpers/stash_cache.lo: ../include/net-snmp/agent/stash_cache.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/stash_to_next.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/definitions.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/types.h
@@ -3637,11 +3460,8 @@
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3685,6 +3505,7 @@
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3726,6 +3547,7 @@
 ./helpers/stash_to_next.lo: ../include/net-snmp/agent/stash_to_next.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/agent/stash_cache.h
 ./helpers/table_array.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/table_array.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_array.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_array.lo: ../include/net-snmp/definitions.h
 ./helpers/table_array.lo: ../include/net-snmp/types.h
@@ -3745,11 +3567,8 @@
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3793,6 +3612,7 @@
 ./helpers/table_array.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_array.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_array.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3832,6 +3652,7 @@
 ./helpers/table_array.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/table_array.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/table.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/table.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table.lo: ../include/net-snmp/definitions.h
 ./helpers/table.lo: ../include/net-snmp/types.h
@@ -3851,11 +3672,8 @@
 ./helpers/table.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/table.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/table.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/table.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/table.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/table.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/table.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/table.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3899,6 +3717,7 @@
 ./helpers/table.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3938,6 +3757,7 @@
 ./helpers/table.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/table.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/table_container.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/table_container.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_container.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_container.lo: ../include/net-snmp/definitions.h
 ./helpers/table_container.lo: ../include/net-snmp/types.h
@@ -3957,11 +3777,8 @@
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -4005,6 +3822,7 @@
 ./helpers/table_container.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_container.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_container.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4044,6 +3862,7 @@
 ./helpers/table_container.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/table_container.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/table_data.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/table_data.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_data.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_data.lo: ../include/net-snmp/definitions.h
 ./helpers/table_data.lo: ../include/net-snmp/types.h
@@ -4063,11 +3882,8 @@
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -4111,6 +3927,7 @@
 ./helpers/table_data.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_data.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_data.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4150,6 +3967,7 @@
 ./helpers/table_data.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/table_data.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/table_dataset.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/table_dataset.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_dataset.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_dataset.lo: ../include/net-snmp/definitions.h
 ./helpers/table_dataset.lo: ../include/net-snmp/types.h
@@ -4169,11 +3987,8 @@
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -4217,6 +4032,7 @@
 ./helpers/table_dataset.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_dataset.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_dataset.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4256,6 +4072,7 @@
 ./helpers/table_dataset.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/table_dataset.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/table_iterator.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/table_iterator.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_iterator.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_iterator.lo: ../include/net-snmp/definitions.h
 ./helpers/table_iterator.lo: ../include/net-snmp/types.h
@@ -4275,11 +4092,8 @@
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -4323,6 +4137,7 @@
 ./helpers/table_iterator.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_iterator.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_iterator.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4363,6 +4178,7 @@
 ./helpers/table_iterator.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/table_iterator.lo: ../include/net-snmp/agent/stash_cache.h
 ./helpers/table_row.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/table_row.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_row.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_row.lo: ../include/net-snmp/definitions.h
 ./helpers/table_row.lo: ../include/net-snmp/types.h
@@ -4382,11 +4198,8 @@
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -4430,6 +4243,7 @@
 ./helpers/table_row.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_row.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_row.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4469,6 +4283,7 @@
 ./helpers/table_row.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/table_row.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/table_tdata.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/table_tdata.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_tdata.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_tdata.lo: ../include/net-snmp/definitions.h
 ./helpers/table_tdata.lo: ../include/net-snmp/types.h
@@ -4488,11 +4303,8 @@
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -4536,6 +4348,7 @@
 ./helpers/table_tdata.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_tdata.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_tdata.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4575,6 +4388,7 @@
 ./helpers/table_tdata.lo: ../include/net-snmp/agent/mfd.h
 ./helpers/table_tdata.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/watcher.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/watcher.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/watcher.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/watcher.lo: ../include/net-snmp/definitions.h
 ./helpers/watcher.lo: ../include/net-snmp/types.h
@@ -4594,11 +4408,8 @@
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_service.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -4642,6 +4453,7 @@
 ./helpers/watcher.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/watcher.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/watcher.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4700,11 +4512,8 @@
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_service.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -4714,6 +4523,7 @@
 ./mibgroup/header_complex.lo: ../include/net-snmp/mib_api.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/parse.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/oid_stash.h
+./mibgroup/header_complex.lo: ../include/net-snmp/net-snmp-features.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_impl.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp-tc.h
@@ -4748,6 +4558,7 @@
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/lcd_time.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_secmod.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmptsm.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpusm.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4789,6 +4600,7 @@
 ./mibgroup/header_complex.lo: ./mibgroup/header_complex.h
 ./mibgroup/kernel_sunos5.lo: ../include/net-snmp/net-snmp-config.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/net-snmp-config.h
+./mibgroup/testhandler.lo: ../include/net-snmp/net-snmp-features.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/net-snmp-includes.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/definitions.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/types.h
@@ -4808,11 +4620,8 @@
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_service.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -4856,6 +4665,7 @@
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/lcd_time.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_secmod.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmptsm.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpusm.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4896,6 +4706,7 @@
 ./mibgroup/testhandler.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./mibgroup/testhandler.lo: ./mibgroup/testhandler.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/net-snmp-config.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/net-snmp-features.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/net-snmp-includes.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/definitions.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/types.h
@@ -4915,11 +4726,8 @@
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_service.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -4963,6 +4771,7 @@
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/lcd_time.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_secmod.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmptsm.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpusm.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -5001,14 +4810,13 @@
 ./mibgroup/util_funcs.lo: ../include/net-snmp/agent/table_array.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/agent/mfd.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/agent/snmp_get_statistic.h
-./mibgroup/util_funcs.lo: mibgroup/struct.h ./mibgroup/util_funcs.h
-./mibgroup/util_funcs.lo: mibgroup/util_funcs/Exit.h
-./mibgroup/util_funcs.lo: mibgroup/util_funcs/header_generic.h
-./mibgroup/util_funcs.lo: mibgroup/util_funcs/header_simple_table.h
-./mibgroup/util_funcs.lo: mibgroup/util_funcs/restart.h
-./mibgroup/util_funcs.lo: mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h
+./mibgroup/util_funcs.lo: ./mibgroup/struct.h ./mibgroup/util_funcs.h
+./mibgroup/util_funcs.lo: ./mibgroup/util_funcs/header_generic.h
+./mibgroup/util_funcs.lo: ./mibgroup/util_funcs/header_simple_table.h
+./mibgroup/util_funcs.lo: ./mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./mibgroup/util_funcs.lo: ./mibgroup/utilities/execute.h
 ./mibgroup/util_funcs.lo: ./mibgroup/ucd-snmp/errormib.h
 ./mibgroup/util_funcs.lo: ../agent/mibgroup/mibdefs.h
 ./mibgroup/winExtDLL.lo: ../include/net-snmp/net-snmp-config.h
+./mibgroup/winExtDLL.lo: ../include/net-snmp/net-snmp-features.h
 ./mibgroup/winExtDLL.lo: ../include/net-snmp/agent/mib_module_config.h
diff --git a/agent/Makefile.in b/agent/Makefile.in
index fa510a9..748b01c 100644
--- a/agent/Makefile.in
+++ b/agent/Makefile.in
@@ -3,6 +3,7 @@
 #
 
 top_builddir	= ..
+mysubdir=agent
 
 # use GNU vpath, if available, to only set a path for source and headers
 # VPATH will pick up objects too, which is bad if you are sharing a
@@ -16,6 +17,7 @@
 # what to install
 #
 SUBDIRS=helpers mibgroup
+FTSUBDIRS=mibgroup helpers
 
 INSTALLSBINPROGS= @SNMPD@
 INSTALLLIBS	= libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION)
@@ -76,8 +78,7 @@
 
 INCLUDEMIBGROUPDIR=agent/mibgroup
 INCLUDEMIBGROUPDIRHEADERS=struct.h util_funcs.h util_funcs/header_generic.h \
-	util_funcs/header_simple_table.h util_funcs/MIB_STATS_CACHE_TIMEOUT.h \
-	util_funcs/Exit.h util_funcs/restart.h
+	util_funcs/header_simple_table.h util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 
 OTHERINSTALL=installmibgroupheaders @EMBEDPERLINSTALL@
 OTHERUNINSTALL=@EMBEDPERLUNINSTALL@
@@ -116,9 +117,10 @@
 
 LAGENTLIBS	= @LAGENTLIBS@
 LMIBLIBS	= @LMIBLIBS@
+VAL_LIBS	= @VAL_LIBS@
 PERLLDOPTS_FOR_APPS = @PERLLDOPTS_FOR_APPS@
 PERLLDOPTS_FOR_LIBS = @PERLLDOPTS_FOR_LIBS@
-LIBS		= $(USELIBS) @AGENTLIBS@ $(PERLLDOPTS_FOR_APPS)
+LIBS		= $(USELIBS) @AGENTLIBS@ $(PERLLDOPTS_FOR_APPS) $(VAL_LIBS)
 OUR_AGENT_LIBS	= $(AGENTLIB) $(MIBLIB) $(LIBS) @DLLIBS@
 CPPFLAGS	= $(TOP_INCLUDES) -I. $(AGENT_INCLUDES) $(MIBGROUP_INCLUDES) \
 		  $(SNMPLIB_INCLUDES) @CPPFLAGS@ 
@@ -130,25 +132,17 @@
 
 # libnetsnmpmibs objects.
 @mibgroup_list_lo@
+@mibgroup_list_ft@
 @mibgroup_list_o@
 @agentgroup_list_lo@
+@agentgroup_list_ft@
 @agentgroup_list_o@
+FTMIBOBJS	= $(mibgroup_list_ft) mib_modules.ft auto_nlist.ft
 LMIBOBJS	= $(mibgroup_list_lo) mib_modules.lo auto_nlist.lo
 MIBOBJS		= $(mibgroup_list_o) mib_modules.o auto_nlist.o
 
 # libnetsnmpagent objects
 LIBAGENTOBJS= \
-	agent_handler.o \
-	agent_index.o \
-	agent_read_config.o \
-	agent_registry.o \
-	agent_sysORTable.o \
-	agent_trap.o \
-	kernel.o \
-	snmp_agent.o \
-	snmp_vars.o \
-	$(agentgroup_list_o) \
-	@OTHERAGENTLIBOBJS@ \
 	helpers/all_helpers.o \
 	helpers/baby_steps.o \
 	helpers/bulk_to_next.o \
@@ -175,20 +169,20 @@
 	helpers/table_iterator.o \
 	helpers/table_row.o \
 	helpers/table_tdata.o \
-	helpers/watcher.o
+	helpers/watcher.o \
+	agent_handler.o \
+	agent_index.o \
+	agent_read_config.o \
+	agent_registry.o \
+	agent_sysORTable.o \
+	agent_trap.o \
+	kernel.o \
+	snmp_agent.o \
+	snmp_vars.o \
+	$(agentgroup_list_o) \
+	@OTHERAGENTLIBOBJS@
 
 LLIBAGENTOBJS= \
-	agent_handler.lo \
-	agent_index.lo \
-	agent_read_config.lo \
-	agent_registry.lo \
-	agent_sysORTable.lo \
-	agent_trap.lo \
-	kernel.lo \
-	snmp_agent.lo \
-	snmp_vars.lo \
-	$(agentgroup_list_lo) \
-	@OTHERAGENTLIBLOBJS@ \
 	helpers/all_helpers.lo \
 	helpers/baby_steps.lo \
 	helpers/bulk_to_next.lo \
@@ -215,18 +209,72 @@
 	helpers/table_iterator.lo \
 	helpers/table_row.lo \
 	helpers/table_tdata.lo \
-	helpers/watcher.lo
+	helpers/watcher.lo \
+	agent_handler.lo \
+	agent_index.lo \
+	agent_read_config.lo \
+	agent_registry.lo \
+	agent_sysORTable.lo \
+	agent_trap.lo \
+	kernel.lo \
+	snmp_agent.lo \
+	snmp_vars.lo \
+	$(agentgroup_list_lo) \
+	@OTHERAGENTLIBLOBJS@
+
+LLIBAGENTFTS= \
+	helpers/all_helpers.ft \
+	helpers/baby_steps.ft \
+	helpers/bulk_to_next.ft \
+	helpers/cache_handler.ft \
+	helpers/debug_handler.ft \
+	helpers/instance.ft \
+	helpers/mode_end_call.ft \
+	helpers/multiplexer.ft \
+	helpers/null.ft \
+	helpers/old_api.ft \
+	helpers/read_only.ft \
+	helpers/row_merge.ft \
+	helpers/scalar.ft \
+	helpers/scalar_group.ft \
+	helpers/serialize.ft \
+	helpers/snmp_get_statistic.ft \
+	helpers/stash_cache.ft \
+	helpers/stash_to_next.ft \
+	helpers/table.ft \
+	helpers/table_array.ft \
+	helpers/table_container.ft \
+	helpers/table_data.ft \
+	helpers/table_dataset.ft \
+	helpers/table_iterator.ft \
+	helpers/table_row.ft \
+	helpers/table_tdata.ft \
+	helpers/watcher.ft \
+	agent_handler.ft \
+	agent_index.ft \
+	agent_read_config.ft \
+	agent_registry.ft \
+	agent_sysORTable.ft \
+	agent_trap.ft \
+	kernel.ft \
+	snmp_agent.ft \
+	snmp_vars.ft \
+	$(agentgroup_list_ft) \
+	@OTHERAGENTLIBLFTS@
 
 # The agent objects.
 AGENTOBJS=snmpd.o @other_agentobjs@
 LAGENTOBJS=snmpd.lo @other_lagentobjs@
+FTAGENTOBJS=snmpd.ft @other_ftagentobjs@
 
 #
 # Define OBJS and LOBJS for clean target (just this directory)
 #
 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
 
+FEATUREFILE     = $(top_builddir)/include/net-snmp/agent/features.h
 
 all: agentlib subdirs miblib $(INSTALLBINPROGS) $(INSTALLSBINPROGS)
 
diff --git a/agent/agent_handler.c b/agent/agent_handler.c
index ca6ae4c..59e9613 100644
--- a/agent/agent_handler.c
+++ b/agent/agent_handler.c
@@ -9,6 +9,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 
@@ -21,6 +22,9 @@
 
 #include <net-snmp/agent/bulk_to_next.h>
 
+netsnmp_feature_child_of(agent_handler, libnetsnmpagent)
+
+netsnmp_feature_child_of(handler_mark_requests_as_delegated, agent_handler)
 
 static netsnmp_mib_handler *_clone_handler(netsnmp_mib_handler *it);
 
@@ -576,6 +580,7 @@
             return SNMP_ERR_NOERROR;    /* legal */
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -590,6 +595,7 @@
             return SNMP_ERR_NOERROR;
         }
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         snmp_log(LOG_ERR, "unknown mode in netsnmp_call_handlers! bug!\n");
@@ -641,6 +647,8 @@
  *
  *  @return Returns SNMPERR_SUCCESS or SNMP_ERR_* error code.
  */
+netsnmp_feature_child_of(netsnmp_call_next_handler_one_request,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_CALL_NEXT_HANDLER_ONE_REQUEST
 NETSNMP_INLINE int
 netsnmp_call_next_handler_one_request(netsnmp_mib_handler *current,
                                       netsnmp_handler_registration *reginfo,
@@ -662,6 +670,7 @@
     requests->next = request;
     return ret;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_CALL_NEXT_HANDLER_ONE_REQUEST */
 
 /** Deallocates resources associated with a given handler.
  *  The handler is removed from chain and then freed.
@@ -704,27 +713,41 @@
 {
     netsnmp_mib_handler *h = NULL;
 
-    if (handler == NULL) {
-        return NULL;
-    }
+    if (!handler)
+        goto err;
 
     h = _clone_handler(handler);
+    if (!h)
+        goto err;
 
-    if (h != NULL) {
+    /*
+     * Providing a clone function without a free function is asking for
+     * memory leaks, and providing a free function without clone function
+     * is asking for memory corruption. Hence the log statement below.
+     */
+    if (!!handler->data_clone != !!handler->data_free)
+        snmp_log(LOG_ERR, "data_clone / data_free inconsistent (%s)\n",
+                 handler->handler_name);
+    if (handler->myvoid && handler->data_clone) {
+        h->myvoid = handler->data_clone(handler->myvoid);
+        if (!h->myvoid)
+            goto err;
+    } else
         h->myvoid = handler->myvoid;
-        h->data_free = handler->data_free;
+    h->data_clone = handler->data_clone;
+    h->data_free = handler->data_free;
 
-        if (handler->next != NULL) {
-            h->next = netsnmp_handler_dup(handler->next);
-            if (h->next == NULL) {
-                netsnmp_handler_free(h);
-                return NULL;
-            }
-            h->next->prev = h;
-        }
-        h->prev = NULL;
-        return h;
+    if (handler->next != NULL) {
+        h->next = netsnmp_handler_dup(handler->next);
+        if (!h->next)
+            goto err;
+        h->next->prev = h;
     }
+    h->prev = NULL;
+    return h;
+
+err:
+    netsnmp_handler_free(h);
     return NULL;
 }
 
@@ -894,9 +917,10 @@
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_HANDLER_MARK_REQUESTS_AS_DELEGATED
 /** Sets a list of requests as delegated or not delegated.
  *  Sweeps through given chain of requests and sets 'delegated'
- *  flag accordingly to the isdelegated parameter.
+ *  flag accordingly to the isdelegaded parameter.
  *
  *  @param requests Request list.
  *  @param isdelegated New value of the 'delegated' flag.
@@ -910,6 +934,7 @@
         requests = requests->next;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HANDLER_MARK_REQUESTS_AS_DELEGATED */
 
 /** Adds data from node list to the request information structure.
  *  Data in the request can be later extracted and used by submodules.
@@ -1247,6 +1272,7 @@
     se_add_pair_to_slist("agent_mode", strdup("GET"), MODE_GET);
     se_add_pair_to_slist("agent_mode", strdup("GETNEXT"), MODE_GETNEXT);
     se_add_pair_to_slist("agent_mode", strdup("GETBULK"), MODE_GETBULK);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     se_add_pair_to_slist("agent_mode", strdup("SET_BEGIN"),
                          MODE_SET_BEGIN);
     se_add_pair_to_slist("agent_mode", strdup("SET_RESERVE1"),
@@ -1287,6 +1313,7 @@
     se_add_pair_to_slist("babystep_mode", strdup("post_request"),
                          MODE_BSTEP_POST_REQUEST);
     se_add_pair_to_slist("babystep_mode", strdup("original"), 0xffff);
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * xxx-rks: hmmm.. will this work for modes which are or'd together?
diff --git a/agent/agent_index.c b/agent/agent_index.c
index 4a89f89..0129217 100644
--- a/agent/agent_index.c
+++ b/agent/agent_index.c
@@ -8,6 +8,7 @@
 
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <signal.h>
 #if HAVE_STRING_H
 #include <string.h>
@@ -47,6 +48,10 @@
 #include "agentx/client.h"
 #endif
 
+netsnmp_feature_child_of(agent_index_all, libnetsnmpagent)
+
+netsnmp_feature_child_of(remove_index, agent_index_all)
+
         /*
          * Initial support for index allocation
          */
@@ -450,12 +455,16 @@
          * Release an allocated index,
          *   to allow it to be used elsewhere
          */
+netsnmp_feature_child_of(release_index,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_RELEASE_INDEX
 int
 release_index(netsnmp_variable_list * varbind)
 {
     return (unregister_index(varbind, TRUE, NULL));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_RELEASE_INDEX */
 
+#ifndef NETSNMP_FEATURE_REMOVE_REMOVE_INDEX
         /*
          * Completely remove an allocated index,
          *   due to errors in the registration process.
@@ -465,6 +474,7 @@
 {
     return (unregister_index(varbind, FALSE, ss));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REMOVE_INDEX */
 
 void
 unregister_index_by_session(netsnmp_session * ss)
@@ -588,6 +598,8 @@
     return SNMP_ERR_NOERROR;
 }
 
+netsnmp_feature_child_of(unregister_indexes,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_UNREGISTER_INDEXES
 int
 unregister_string_index(oid * name, size_t name_len, char *cp)
 {
@@ -627,6 +639,7 @@
                        value_len * sizeof(oid));
     return (unregister_index(&varbind, FALSE, main_session));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UNREGISTER_INDEXES */
 
 void
 dump_idx_registry(void)
@@ -692,6 +705,8 @@
     }
 }
 
+netsnmp_feature_child_of(count_indexes, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_UNUSED
 unsigned long
 count_indexes(oid * name, size_t namelen, int include_unallocated)
 {
@@ -711,7 +726,7 @@
     }
     return n;
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_UNUSED */
 
 #ifdef TESTING
 netsnmp_variable_list varbind;
diff --git a/agent/agent_read_config.c b/agent/agent_read_config.c
index 61d6667..f9ef1af 100644
--- a/agent/agent_read_config.c
+++ b/agent/agent_read_config.c
@@ -3,6 +3,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_SYS_PARAM_H
 #include <sys/param.h>
@@ -106,17 +107,18 @@
 #include "agent_module_includes.h"
 #include "mib_module_includes.h"
 
+netsnmp_feature_child_of(agent_read_config_all, libnetsnmpagent)
+
+netsnmp_feature_child_of(snmpd_unregister_config_handler, agent_read_config_all)
+
 #ifdef HAVE_UNISTD_H
 void
 snmpd_set_agent_user(const char *token, char *cptr)
 {
-#if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
-    struct passwd  *info;
-#endif
-
     if (cptr[0] == '#') {
         char           *ecp;
         int             uid;
+
         uid = strtoul(cptr + 1, &ecp, 10);
         if (*ecp != 0) {
             config_perror("Bad number");
@@ -124,47 +126,51 @@
 	    netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 			       NETSNMP_DS_AGENT_USERID, uid);
 	}
-    }
 #if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
-    else if ((info = getpwnam(cptr)) != NULL) {
-        netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
-			   NETSNMP_DS_AGENT_USERID, info->pw_uid);
     } else {
-        config_perror("User not found in passwd database");
-    }
-    endpwent();
+        struct passwd  *info;
+
+        info = getpwnam(cptr);
+        if (info)
+            netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
+                               NETSNMP_DS_AGENT_USERID, info->pw_uid);
+        else
+            config_perror("User not found in passwd database");
+        endpwent();
 #endif
+    }
 }
 
 void
 snmpd_set_agent_group(const char *token, char *cptr)
 {
-#if defined(HAVE_GETGRNAM) && defined(HAVE_GRP_H)
-    struct group   *info;
-#endif
-
     if (cptr[0] == '#') {
         char           *ecp;
         int             gid = strtoul(cptr + 1, &ecp, 10);
+
         if (*ecp != 0) {
             config_perror("Bad number");
 	} else {
             netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 			       NETSNMP_DS_AGENT_GROUPID, gid);
 	}
-    }
 #if defined(HAVE_GETGRNAM) && defined(HAVE_GRP_H)
-    else if ((info = getgrnam(cptr)) != NULL) {
-        netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
-			   NETSNMP_DS_AGENT_GROUPID, info->gr_gid);
     } else {
-        config_perror("Group not found in group database");
-    }
-    endpwent();
+        struct group   *info;
+
+        info = getgrnam(cptr);
+        if (info)
+            netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
+                               NETSNMP_DS_AGENT_GROUPID, info->gr_gid);
+        else
+            config_perror("Group not found in group database");
+        endgrent();
 #endif
+    }
 }
 #endif
 
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
 void
 snmpd_set_agent_address(const char *token, char *cptr)
 {
@@ -191,6 +197,7 @@
     netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID, 
 			  NETSNMP_DS_AGENT_PORTS, buf);
 }
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
 
 void
 init_agent_read_config(const char *app)
@@ -248,9 +255,11 @@
     register_app_config_handler("agentgroup",
                                 snmpd_set_agent_group, NULL, "groupid");
 #endif
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
     register_app_config_handler("agentaddress",
                                 snmpd_set_agent_address, NULL,
                                 "SNMP bind address");
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     netsnmp_ds_register_config(ASN_BOOLEAN, app, "quit", 
 			       NETSNMP_DS_APPLICATION_ID,
 			       NETSNMP_DS_AGENT_QUIT_IMMEDIATELY);
@@ -306,11 +315,17 @@
                                 releaser, help);
 }
 
+#ifdef NETSNMP_FEATURE_REQUIRE_SNMPD_UNREGISTER_CONFIG_HANDLER
+netsnmp_feature_require(unregister_app_config_handler)
+#endif /* NETSNMP_FEATURE_REQUIRE_SNMPD_UNREGISTER_CONFIG_HANDLER */
+
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPD_UNREGISTER_CONFIG_HANDLER
 void
 snmpd_unregister_config_handler(const char *token)
 {
     unregister_app_config_handler(token);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPD_UNREGISTER_CONFIG_HANDLER */
 
 /*
  * this function is intended for use by mib-modules to store permenant
diff --git a/agent/agent_registry.c b/agent/agent_registry.c
index dbaa48c..0dd6c42 100644
--- a/agent/agent_registry.c
+++ b/agent/agent_registry.c
@@ -22,6 +22,8 @@
 #define IN_SNMP_VARS_C
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
 #include <signal.h>
 #if HAVE_STRING_H
 #include <string.h>
@@ -64,6 +66,10 @@
 #include "agentx/client.h"
 #endif
 
+netsnmp_feature_child_of(agent_registry_all, libnetsnmpagent)
+
+netsnmp_feature_child_of(unregister_mib_table_row, agent_registry_all)
+
 /** @defgroup agent_lookup_cache Lookup cache, storing the registered OIDs.
  *     Maintain the cache used for locating sub-trees and OIDs.
  *   @ingroup agent_registry
@@ -213,7 +219,7 @@
  *  @see snmp_oid_compare()
  */
 NETSNMP_STATIC_INLINE lookup_cache *
-lookup_cache_find(const char *context, oid *name, size_t name_len,
+lookup_cache_find(const char *context, const oid *name, size_t name_len,
                   int *retcmp) {
     lookup_cache_context *cptr;
     lookup_cache *ret = NULL;
@@ -548,6 +554,8 @@
                                &ptr->oid_off);
 }
 
+netsnmp_feature_child_of(netsnmp_subtree_compare,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_SUBTREE_COMPARE
 /** Compares OIDs of given subtrees.
  *
  *  @param ap,bp Pointers to the subtrees to be compared.
@@ -561,6 +569,7 @@
 {
     return snmp_oid_compare(ap->name_a, ap->namelen, bp->name_a, bp->namelen);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_SUBTREE_COMPARE */
 
 /** Joins the given subtree with the current tree.
  *  Trees are joined and the one supplied as parameter is freed.
@@ -741,9 +750,8 @@
 int
 netsnmp_subtree_load(netsnmp_subtree *new_sub, const char *context_name)
 {
-    netsnmp_subtree *tree1, *tree2, *new2;
+    netsnmp_subtree *tree1, *tree2;
     netsnmp_subtree *prev, *next;
-    int             res, rc = 0;
 
     if (new_sub == NULL) {
         return MIB_REGISTERED_OK;       /* Degenerate case */
@@ -785,7 +793,7 @@
     /*  Handle new subtrees that start in virgin territory.  */
 
     if (tree1 == NULL) {
-	new2 = NULL;
+        netsnmp_subtree *new2 = NULL;
 	/*  Is there any overlap with later subtrees?  */
 	if (tree2 && snmp_oid_compare(new_sub->end_a, new_sub->end_len,
 				      tree2->start_a, tree2->start_len) > 0) {
@@ -844,10 +852,8 @@
 	    If the new subtree extends beyond this existing region,
 	            split it, and recurse to merge the two parts.  */
 
-	rc = snmp_oid_compare(new_sub->end_a, new_sub->end_len, 
-			      tree1->end_a, tree1->end_len);
-
-        switch (rc) {
+	switch (snmp_oid_compare(new_sub->end_a, new_sub->end_len,
+                                 tree1->end_a, tree1->end_len)) {
 
 	case -1:
 	    /*  Existing subtree contains new one.  */
@@ -918,15 +924,18 @@
 
 	case  1:
 	    /*  New subtree contains the existing one.  */
-	    new2 = netsnmp_subtree_split(new_sub, tree1->end_a,tree1->end_len);
-	    res = netsnmp_subtree_load(new_sub, context_name);
-	    if (res != MIB_REGISTERED_OK) {
-                netsnmp_remove_subtree(new2);
-		netsnmp_subtree_free(new2);
-		return res;
-	    }
-	    return netsnmp_subtree_load(new2, context_name);
-	}
+            {
+                netsnmp_subtree *new2 =
+                    netsnmp_subtree_split(new_sub, tree1->end_a,tree1->end_len);
+                int res = netsnmp_subtree_load(new_sub, context_name);
+                if (res != MIB_REGISTERED_OK) {
+                    netsnmp_remove_subtree(new2);
+                    netsnmp_subtree_free(new2);
+                    return res;
+                }
+                return netsnmp_subtree_load(new2, context_name);
+            }
+        }
     }
     return 0;
 }
@@ -954,7 +963,7 @@
 }
 
 netsnmp_subtree *
-netsnmp_subtree_find_prev(oid *name, size_t len, netsnmp_subtree *subtree,
+netsnmp_subtree_find_prev(const oid *name, size_t len, netsnmp_subtree *subtree,
 			  const char *context_name)
 {
     lookup_cache *lookup_cache = NULL;
@@ -1025,7 +1034,7 @@
 }
 
 netsnmp_subtree *
-netsnmp_subtree_find_next(oid *name, size_t len,
+netsnmp_subtree_find_next(const oid *name, size_t len,
 			  netsnmp_subtree *subtree, const char *context_name)
 {
     netsnmp_subtree *myptr = NULL;
@@ -1048,7 +1057,7 @@
 }
 
 netsnmp_subtree *
-netsnmp_subtree_find(oid *name, size_t len, netsnmp_subtree *subtree, 
+netsnmp_subtree_find(const oid *name, size_t len, netsnmp_subtree *subtree, 
 		     const char *context_name)
 {
     netsnmp_subtree *myptr;
@@ -1116,7 +1125,7 @@
                      int perform_callback)
 {
     netsnmp_subtree *subtree, *sub2;
-    int             res, i;
+    int             res;
     struct register_parameters reg_parms;
     int old_lookup_cache_val = netsnmp_get_lookup_cache_size();
 
@@ -1197,6 +1206,7 @@
 	rest of the range.  */
 
     if (res == MIB_REGISTERED_OK && range_subid != 0) {
+        int i;
 	for (i = mibloc[range_subid - 1] + 1; i <= (int)range_ubound; i++) {
 	    sub2 = netsnmp_subtree_deepcopy(subtree);
 
@@ -1392,7 +1402,7 @@
  *                     If range_subid is zero, then this parameter is ignored.
  *
  *  @param ss 
- *  @param context 
+ *  @param context
  *  @param timeout 
  *  @param flags 
  *
@@ -1405,10 +1415,10 @@
  */
 int
 register_mib_context(const char *moduleName,
-                     struct variable *var,
+                     const struct variable *var,
                      size_t varsize,
                      size_t numvars,
-                     oid * mibloc,
+                     const oid * mibloc,
                      size_t mibloclen,
                      int priority,
                      int range_subid,
@@ -1470,10 +1480,10 @@
  */
 int
 register_mib_range(const char *moduleName,
-                   struct variable *var,
+                   const struct variable *var,
                    size_t varsize,
                    size_t numvars,
-                   oid * mibloc,
+                   const oid * mibloc,
                    size_t mibloclen,
                    int priority,
                    int range_subid, oid range_ubound, netsnmp_session * ss)
@@ -1519,10 +1529,10 @@
  */
 int
 register_mib_priority(const char *moduleName,
-                      struct variable *var,
+                      const struct variable *var,
                       size_t varsize,
                       size_t numvars,
-                      oid * mibloc, size_t mibloclen, int priority)
+                      const oid * mibloc, size_t mibloclen, int priority)
 {
     return register_mib_range(moduleName, var, varsize, numvars,
                               mibloc, mibloclen, priority, 0, 0, NULL);
@@ -1559,9 +1569,9 @@
  */
 int
 register_mib(const char *moduleName,
-             struct variable *var,
+             const struct variable *var,
              size_t varsize,
-             size_t numvars, oid * mibloc, size_t mibloclen)
+             size_t numvars, const oid * mibloc, size_t mibloclen)
 {
     return register_mib_priority(moduleName, var, varsize, numvars,
                                  mibloc, mibloclen, DEFAULT_MIB_PRIORITY);
@@ -1763,6 +1773,7 @@
     return MIB_UNREGISTERED_OK;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_UNREGISTER_MIB_TABLE_ROW
 int
 netsnmp_unregister_mib_table_row(oid * name, size_t len, int priority,
                                  int var_subid, oid range_ubound,
@@ -1841,6 +1852,7 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UNREGISTER_MIB_TABLE_ROW */
 
 /**
  * Unregisters a module registered against a given OID (or range) in the default context. 
@@ -2139,9 +2151,10 @@
     return 1;
 }
 
-
+netsnmp_feature_child_of(get_session_for_oid,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_GET_SESSION_FOR_OID
 netsnmp_session *
-get_session_for_oid(oid *name, size_t len, const char *context_name)
+get_session_for_oid(const oid *name, size_t len, const char *context_name)
 {
     netsnmp_subtree *myptr;
 
@@ -2159,6 +2172,7 @@
         return myptr->session;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_GET_SESSION_FOR_OID */
 
 void
 setup_tree(void)
@@ -2294,15 +2308,9 @@
         }
     }
 
-    if (s != NULL) {
-        SNMP_FREE(s);
-    }
-    if (e != NULL) {
-        SNMP_FREE(e);
-    }
-    if (v != NULL) {
-        SNMP_FREE(v);
-    }
+    SNMP_FREE(s);
+    SNMP_FREE(e);
+    SNMP_FREE(v);
 
     dump_idx_registry();
 }
@@ -2311,6 +2319,9 @@
 /* End of MIB registration code */
 
 
+netsnmp_feature_child_of(register_signal, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_SIGNAL
+
 /** @defgroup agent_signals POSIX signals support for agents.
  *     Registering and unregistering signal handlers.
  *   @ingroup agent_registry
@@ -2408,5 +2419,7 @@
 /**  @} */
 /* End of signals support code */
 
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_SIGNAL */
+
 /**  @} */
 
diff --git a/agent/agent_trap.c b/agent/agent_trap.c
index f5dbcca..080b8bf 100644
--- a/agent/agent_trap.c
+++ b/agent/agent_trap.c
@@ -18,6 +18,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
@@ -64,6 +65,14 @@
 #include "agentx/protocol.h"
 #endif
 
+netsnmp_feature_child_of(agent_trap_all, libnetsnmpagent)
+
+netsnmp_feature_child_of(trap_vars_with_context, agent_trap_all)
+netsnmp_feature_child_of(remove_trap_session, agent_trap_all)
+
+netsnmp_feature_child_of(send_v3trap,netsnmp_unused)
+netsnmp_feature_child_of(send_trap_pdu,netsnmp_unused)
+
 struct trap_sink {
     netsnmp_session *sesp;
     struct trap_sink *next;
@@ -175,6 +184,7 @@
     return 1;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_REMOVE_TRAP_SESSION
 int
 remove_trap_session(netsnmp_session * ss)
 {
@@ -207,6 +217,7 @@
     }
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REMOVE_TRAP_SESSION */
 
 #if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
 static int
@@ -893,8 +904,6 @@
 {
     netsnmp_pdu    *pdu;
     int            result;
-    int            len;
-
 
     if (!sess || !template_pdu)
         return;
@@ -928,7 +937,7 @@
                 (sess->securityEngineIDLen == 0)) {
             u_char          tmp[SPRINT_MAX_LEN];
 
-            len = snmpv3_get_engineID(tmp, sizeof(tmp));
+            int len = snmpv3_get_engineID(tmp, sizeof(tmp));
             pdu->securityEngineID = netsnmp_memdup(tmp, len);
             pdu->securityEngineIDLen = len;
         }
@@ -956,6 +965,7 @@
                                   OID_LENGTH(trap_version_id), vars);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TRAP_VARS_WITH_CONTEXT
 /* Send a trap under a context */
 void send_trap_vars_with_context(int trap, int specific, 
               netsnmp_variable_list *vars, const char *context)
@@ -970,6 +980,7 @@
 								  context, 0);
     	
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TRAP_VARS_WITH_CONTEXT */
 
 /**
  * Sends an SNMPv1 trap (or the SNMPv2 equivalent) to the list of  
@@ -1041,18 +1052,22 @@
  *
  * @see send_v2trap
  */
+#ifndef NETSNMP_FEATURE_REMOVE_SEND_V3TRAP
 void send_v3trap(netsnmp_variable_list *vars, const char *context)
 {
     netsnmp_send_traps(-1, -1, 
                        trap_version_id, OID_LENGTH(trap_version_id),
                        vars, context, 0);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SEND_V3TRAP */
 
+#ifndef NETSNMP_FEATURE_REMOVE_SEND_TRAP_PDU
 void
 send_trap_pdu(netsnmp_pdu *pdu)
 {
     send_trap_vars(-1, -1, pdu->variables);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SEND_TRAP_PDU */
 
 
 
diff --git a/agent/helpers/Makefile.depend b/agent/helpers/Makefile.depend
index 83fbd27..d20e125 100644
--- a/agent/helpers/Makefile.depend
+++ b/agent/helpers/Makefile.depend
@@ -5,6 +5,7 @@
 ./all_helpers.lo: ../../include/net-snmp/system/sysv.h
 ./all_helpers.lo: ../../include/net-snmp/system/generic.h
 ./all_helpers.lo: ../../include/net-snmp/machine/generic.h
+./all_helpers.lo: ../../include/net-snmp/net-snmp-features.h
 ./all_helpers.lo: ../../include/net-snmp/net-snmp-includes.h
 ./all_helpers.lo: ../../include/net-snmp/definitions.h
 ./all_helpers.lo: ../../include/net-snmp/types.h
@@ -73,6 +74,7 @@
 ./all_helpers.lo: ../../include/net-snmp/library/lcd_time.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./all_helpers.lo: ../../include/net-snmp/library/snmptsm.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmpusm.h
 ./all_helpers.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./all_helpers.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -113,6 +115,7 @@
 ./all_helpers.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./all_helpers.lo: ../../include/net-snmp/agent/stash_cache.h
 ./baby_steps.lo: ../../include/net-snmp/net-snmp-config.h
+./baby_steps.lo: ../../include/net-snmp/net-snmp-features.h
 ./baby_steps.lo: ../../include/net-snmp/net-snmp-includes.h
 ./baby_steps.lo: ../../include/net-snmp/definitions.h
 ./baby_steps.lo: ../../include/net-snmp/types.h
@@ -180,6 +183,7 @@
 ./baby_steps.lo: ../../include/net-snmp/library/lcd_time.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./baby_steps.lo: ../../include/net-snmp/library/snmptsm.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmpusm.h
 ./baby_steps.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./baby_steps.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -252,6 +256,7 @@
 ./bulk_to_next.lo: ../../include/net-snmp/mib_api.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/parse.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/oid_stash.h
+./bulk_to_next.lo: ../../include/net-snmp/net-snmp-features.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_impl.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -286,6 +291,7 @@
 ./bulk_to_next.lo: ../../include/net-snmp/library/lcd_time.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./bulk_to_next.lo: ../../include/net-snmp/library/snmptsm.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpusm.h
 ./bulk_to_next.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./bulk_to_next.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -325,6 +331,7 @@
 ./bulk_to_next.lo: ../../include/net-snmp/agent/mfd.h
 ./bulk_to_next.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./cache_handler.lo: ../../include/net-snmp/net-snmp-config.h
+./cache_handler.lo: ../../include/net-snmp/net-snmp-features.h
 ./cache_handler.lo: ../../include/net-snmp/net-snmp-includes.h
 ./cache_handler.lo: ../../include/net-snmp/definitions.h
 ./cache_handler.lo: ../../include/net-snmp/types.h
@@ -392,6 +399,7 @@
 ./cache_handler.lo: ../../include/net-snmp/library/lcd_time.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./cache_handler.lo: ../../include/net-snmp/library/snmptsm.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmpusm.h
 ./cache_handler.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./cache_handler.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -464,6 +472,7 @@
 ./debug_handler.lo: ../../include/net-snmp/mib_api.h
 ./debug_handler.lo: ../../include/net-snmp/library/parse.h
 ./debug_handler.lo: ../../include/net-snmp/library/oid_stash.h
+./debug_handler.lo: ../../include/net-snmp/net-snmp-features.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_impl.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -498,6 +507,7 @@
 ./debug_handler.lo: ../../include/net-snmp/library/lcd_time.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./debug_handler.lo: ../../include/net-snmp/library/snmptsm.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmpusm.h
 ./debug_handler.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./debug_handler.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -537,6 +547,7 @@
 ./debug_handler.lo: ../../include/net-snmp/agent/mfd.h
 ./debug_handler.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./instance.lo: ../../include/net-snmp/net-snmp-config.h
+./instance.lo: ../../include/net-snmp/net-snmp-features.h
 ./instance.lo: ../../include/net-snmp/net-snmp-includes.h
 ./instance.lo: ../../include/net-snmp/definitions.h
 ./instance.lo: ../../include/net-snmp/types.h
@@ -604,6 +615,7 @@
 ./instance.lo: ../../include/net-snmp/library/lcd_time.h
 ./instance.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./instance.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./instance.lo: ../../include/net-snmp/library/snmptsm.h
 ./instance.lo: ../../include/net-snmp/library/snmpusm.h
 ./instance.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./instance.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -643,6 +655,7 @@
 ./instance.lo: ../../include/net-snmp/agent/mfd.h
 ./instance.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mode_end_call.lo: ../../include/net-snmp/net-snmp-config.h
+./mode_end_call.lo: ../../include/net-snmp/net-snmp-features.h
 ./mode_end_call.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mode_end_call.lo: ../../include/net-snmp/definitions.h
 ./mode_end_call.lo: ../../include/net-snmp/types.h
@@ -710,6 +723,7 @@
 ./mode_end_call.lo: ../../include/net-snmp/library/lcd_time.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mode_end_call.lo: ../../include/net-snmp/library/snmptsm.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpusm.h
 ./mode_end_call.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mode_end_call.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -782,6 +796,7 @@
 ./multiplexer.lo: ../../include/net-snmp/mib_api.h
 ./multiplexer.lo: ../../include/net-snmp/library/parse.h
 ./multiplexer.lo: ../../include/net-snmp/library/oid_stash.h
+./multiplexer.lo: ../../include/net-snmp/net-snmp-features.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_impl.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -816,6 +831,7 @@
 ./multiplexer.lo: ../../include/net-snmp/library/lcd_time.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./multiplexer.lo: ../../include/net-snmp/library/snmptsm.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmpusm.h
 ./multiplexer.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./multiplexer.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -888,6 +904,7 @@
 ./null.lo: ../../include/net-snmp/mib_api.h
 ./null.lo: ../../include/net-snmp/library/parse.h
 ./null.lo: ../../include/net-snmp/library/oid_stash.h
+./null.lo: ../../include/net-snmp/net-snmp-features.h
 ./null.lo: ../../include/net-snmp/library/snmp_impl.h
 ./null.lo: ../../include/net-snmp/library/snmp.h
 ./null.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -922,6 +939,7 @@
 ./null.lo: ../../include/net-snmp/library/lcd_time.h
 ./null.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./null.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./null.lo: ../../include/net-snmp/library/snmptsm.h
 ./null.lo: ../../include/net-snmp/library/snmpusm.h
 ./null.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./null.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -994,6 +1012,7 @@
 ./old_api.lo: ../../include/net-snmp/mib_api.h
 ./old_api.lo: ../../include/net-snmp/library/parse.h
 ./old_api.lo: ../../include/net-snmp/library/oid_stash.h
+./old_api.lo: ../../include/net-snmp/net-snmp-features.h
 ./old_api.lo: ../../include/net-snmp/library/snmp_impl.h
 ./old_api.lo: ../../include/net-snmp/library/snmp.h
 ./old_api.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -1028,6 +1047,7 @@
 ./old_api.lo: ../../include/net-snmp/library/lcd_time.h
 ./old_api.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./old_api.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./old_api.lo: ../../include/net-snmp/library/snmptsm.h
 ./old_api.lo: ../../include/net-snmp/library/snmpusm.h
 ./old_api.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./old_api.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1101,6 +1121,7 @@
 ./read_only.lo: ../../include/net-snmp/mib_api.h
 ./read_only.lo: ../../include/net-snmp/library/parse.h
 ./read_only.lo: ../../include/net-snmp/library/oid_stash.h
+./read_only.lo: ../../include/net-snmp/net-snmp-features.h
 ./read_only.lo: ../../include/net-snmp/library/snmp_impl.h
 ./read_only.lo: ../../include/net-snmp/library/snmp.h
 ./read_only.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -1135,6 +1156,7 @@
 ./read_only.lo: ../../include/net-snmp/library/lcd_time.h
 ./read_only.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./read_only.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./read_only.lo: ../../include/net-snmp/library/snmptsm.h
 ./read_only.lo: ../../include/net-snmp/library/snmpusm.h
 ./read_only.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./read_only.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1174,6 +1196,7 @@
 ./read_only.lo: ../../include/net-snmp/agent/mfd.h
 ./read_only.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./row_merge.lo: ../../include/net-snmp/net-snmp-config.h
+./row_merge.lo: ../../include/net-snmp/net-snmp-features.h
 ./row_merge.lo: ../../include/net-snmp/net-snmp-includes.h
 ./row_merge.lo: ../../include/net-snmp/definitions.h
 ./row_merge.lo: ../../include/net-snmp/types.h
@@ -1241,6 +1264,7 @@
 ./row_merge.lo: ../../include/net-snmp/library/lcd_time.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./row_merge.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./row_merge.lo: ../../include/net-snmp/library/snmptsm.h
 ./row_merge.lo: ../../include/net-snmp/library/snmpusm.h
 ./row_merge.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./row_merge.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1313,6 +1337,7 @@
 ./scalar.lo: ../../include/net-snmp/mib_api.h
 ./scalar.lo: ../../include/net-snmp/library/parse.h
 ./scalar.lo: ../../include/net-snmp/library/oid_stash.h
+./scalar.lo: ../../include/net-snmp/net-snmp-features.h
 ./scalar.lo: ../../include/net-snmp/library/snmp_impl.h
 ./scalar.lo: ../../include/net-snmp/library/snmp.h
 ./scalar.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -1347,6 +1372,7 @@
 ./scalar.lo: ../../include/net-snmp/library/lcd_time.h
 ./scalar.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./scalar.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./scalar.lo: ../../include/net-snmp/library/snmptsm.h
 ./scalar.lo: ../../include/net-snmp/library/snmpusm.h
 ./scalar.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./scalar.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1419,6 +1445,7 @@
 ./scalar_group.lo: ../../include/net-snmp/mib_api.h
 ./scalar_group.lo: ../../include/net-snmp/library/parse.h
 ./scalar_group.lo: ../../include/net-snmp/library/oid_stash.h
+./scalar_group.lo: ../../include/net-snmp/net-snmp-features.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_impl.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -1453,6 +1480,7 @@
 ./scalar_group.lo: ../../include/net-snmp/library/lcd_time.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./scalar_group.lo: ../../include/net-snmp/library/snmptsm.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmpusm.h
 ./scalar_group.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./scalar_group.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1525,6 +1553,7 @@
 ./serialize.lo: ../../include/net-snmp/mib_api.h
 ./serialize.lo: ../../include/net-snmp/library/parse.h
 ./serialize.lo: ../../include/net-snmp/library/oid_stash.h
+./serialize.lo: ../../include/net-snmp/net-snmp-features.h
 ./serialize.lo: ../../include/net-snmp/library/snmp_impl.h
 ./serialize.lo: ../../include/net-snmp/library/snmp.h
 ./serialize.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -1559,6 +1588,7 @@
 ./serialize.lo: ../../include/net-snmp/library/lcd_time.h
 ./serialize.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./serialize.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./serialize.lo: ../../include/net-snmp/library/snmptsm.h
 ./serialize.lo: ../../include/net-snmp/library/snmpusm.h
 ./serialize.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./serialize.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1598,6 +1628,7 @@
 ./serialize.lo: ../../include/net-snmp/agent/mfd.h
 ./serialize.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./snmp_get_statistic.lo: ../../include/net-snmp/net-snmp-config.h
+./snmp_get_statistic.lo: ../../include/net-snmp/net-snmp-features.h
 ./snmp_get_statistic.lo: ../../include/net-snmp/net-snmp-includes.h
 ./snmp_get_statistic.lo: ../../include/net-snmp/definitions.h
 ./snmp_get_statistic.lo: ../../include/net-snmp/types.h
@@ -1665,6 +1696,7 @@
 ./snmp_get_statistic.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmp_get_statistic.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmp_get_statistic.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1704,6 +1736,7 @@
 ./snmp_get_statistic.lo: ../../include/net-snmp/agent/mfd.h
 ./snmp_get_statistic.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./stash_cache.lo: ../../include/net-snmp/net-snmp-config.h
+./stash_cache.lo: ../../include/net-snmp/net-snmp-features.h
 ./stash_cache.lo: ../../include/net-snmp/net-snmp-includes.h
 ./stash_cache.lo: ../../include/net-snmp/definitions.h
 ./stash_cache.lo: ../../include/net-snmp/types.h
@@ -1771,6 +1804,7 @@
 ./stash_cache.lo: ../../include/net-snmp/library/lcd_time.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./stash_cache.lo: ../../include/net-snmp/library/snmptsm.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmpusm.h
 ./stash_cache.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./stash_cache.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1809,9 +1843,10 @@
 ./stash_cache.lo: ../../include/net-snmp/agent/table_array.h
 ./stash_cache.lo: ../../include/net-snmp/agent/mfd.h
 ./stash_cache.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
-./stash_cache.lo: ../../include/net-snmp/agent/stash_cache.h
 ./stash_cache.lo: ../../include/net-snmp/agent/stash_to_next.h
+./stash_cache.lo: ../../include/net-snmp/agent/stash_cache.h
 ./stash_to_next.lo: ../../include/net-snmp/net-snmp-config.h
+./stash_to_next.lo: ../../include/net-snmp/net-snmp-features.h
 ./stash_to_next.lo: ../../include/net-snmp/net-snmp-includes.h
 ./stash_to_next.lo: ../../include/net-snmp/definitions.h
 ./stash_to_next.lo: ../../include/net-snmp/types.h
@@ -1879,6 +1914,7 @@
 ./stash_to_next.lo: ../../include/net-snmp/library/lcd_time.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./stash_to_next.lo: ../../include/net-snmp/library/snmptsm.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpusm.h
 ./stash_to_next.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./stash_to_next.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1920,6 +1956,7 @@
 ./stash_to_next.lo: ../../include/net-snmp/agent/stash_to_next.h
 ./stash_to_next.lo: ../../include/net-snmp/agent/stash_cache.h
 ./table_array.lo: ../../include/net-snmp/net-snmp-config.h
+./table_array.lo: ../../include/net-snmp/net-snmp-features.h
 ./table_array.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_array.lo: ../../include/net-snmp/definitions.h
 ./table_array.lo: ../../include/net-snmp/types.h
@@ -1987,6 +2024,7 @@
 ./table_array.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_array.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_array.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_array.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_array.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_array.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_array.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2026,6 +2064,7 @@
 ./table_array.lo: ../../include/net-snmp/agent/mfd.h
 ./table_array.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./table.lo: ../../include/net-snmp/net-snmp-config.h
+./table.lo: ../../include/net-snmp/net-snmp-features.h
 ./table.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table.lo: ../../include/net-snmp/definitions.h
 ./table.lo: ../../include/net-snmp/types.h
@@ -2093,6 +2132,7 @@
 ./table.lo: ../../include/net-snmp/library/lcd_time.h
 ./table.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table.lo: ../../include/net-snmp/library/snmptsm.h
 ./table.lo: ../../include/net-snmp/library/snmpusm.h
 ./table.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2132,6 +2172,7 @@
 ./table.lo: ../../include/net-snmp/agent/mfd.h
 ./table.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./table_container.lo: ../../include/net-snmp/net-snmp-config.h
+./table_container.lo: ../../include/net-snmp/net-snmp-features.h
 ./table_container.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_container.lo: ../../include/net-snmp/definitions.h
 ./table_container.lo: ../../include/net-snmp/types.h
@@ -2199,6 +2240,7 @@
 ./table_container.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_container.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_container.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_container.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_container.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_container.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_container.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2238,6 +2280,7 @@
 ./table_container.lo: ../../include/net-snmp/agent/mfd.h
 ./table_container.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./table_data.lo: ../../include/net-snmp/net-snmp-config.h
+./table_data.lo: ../../include/net-snmp/net-snmp-features.h
 ./table_data.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_data.lo: ../../include/net-snmp/definitions.h
 ./table_data.lo: ../../include/net-snmp/types.h
@@ -2305,6 +2348,7 @@
 ./table_data.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_data.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_data.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_data.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_data.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_data.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_data.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2344,6 +2388,7 @@
 ./table_data.lo: ../../include/net-snmp/agent/mfd.h
 ./table_data.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./table_dataset.lo: ../../include/net-snmp/net-snmp-config.h
+./table_dataset.lo: ../../include/net-snmp/net-snmp-features.h
 ./table_dataset.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_dataset.lo: ../../include/net-snmp/definitions.h
 ./table_dataset.lo: ../../include/net-snmp/types.h
@@ -2411,6 +2456,7 @@
 ./table_dataset.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_dataset.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_dataset.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_dataset.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2450,6 +2496,7 @@
 ./table_dataset.lo: ../../include/net-snmp/agent/mfd.h
 ./table_dataset.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./table_iterator.lo: ../../include/net-snmp/net-snmp-config.h
+./table_iterator.lo: ../../include/net-snmp/net-snmp-features.h
 ./table_iterator.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_iterator.lo: ../../include/net-snmp/definitions.h
 ./table_iterator.lo: ../../include/net-snmp/types.h
@@ -2517,6 +2564,7 @@
 ./table_iterator.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_iterator.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_iterator.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_iterator.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2557,6 +2605,7 @@
 ./table_iterator.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./table_iterator.lo: ../../include/net-snmp/agent/stash_cache.h
 ./table_row.lo: ../../include/net-snmp/net-snmp-config.h
+./table_row.lo: ../../include/net-snmp/net-snmp-features.h
 ./table_row.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_row.lo: ../../include/net-snmp/definitions.h
 ./table_row.lo: ../../include/net-snmp/types.h
@@ -2624,6 +2673,7 @@
 ./table_row.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_row.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_row.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_row.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_row.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_row.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_row.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2663,6 +2713,7 @@
 ./table_row.lo: ../../include/net-snmp/agent/mfd.h
 ./table_row.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./table_tdata.lo: ../../include/net-snmp/net-snmp-config.h
+./table_tdata.lo: ../../include/net-snmp/net-snmp-features.h
 ./table_tdata.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_tdata.lo: ../../include/net-snmp/definitions.h
 ./table_tdata.lo: ../../include/net-snmp/types.h
@@ -2730,6 +2781,7 @@
 ./table_tdata.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_tdata.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_tdata.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_tdata.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2769,6 +2821,7 @@
 ./table_tdata.lo: ../../include/net-snmp/agent/mfd.h
 ./table_tdata.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./watcher.lo: ../../include/net-snmp/net-snmp-config.h
+./watcher.lo: ../../include/net-snmp/net-snmp-features.h
 ./watcher.lo: ../../include/net-snmp/net-snmp-includes.h
 ./watcher.lo: ../../include/net-snmp/definitions.h
 ./watcher.lo: ../../include/net-snmp/types.h
@@ -2836,6 +2889,7 @@
 ./watcher.lo: ../../include/net-snmp/library/lcd_time.h
 ./watcher.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./watcher.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./watcher.lo: ../../include/net-snmp/library/snmptsm.h
 ./watcher.lo: ../../include/net-snmp/library/snmpusm.h
 ./watcher.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./watcher.lo: ../../include/net-snmp/agent/mib_module_config.h
diff --git a/agent/helpers/all_helpers.c b/agent/helpers/all_helpers.c
index 1ed108a..e1e1b78 100644
--- a/agent/helpers/all_helpers.c
+++ b/agent/helpers/all_helpers.c
@@ -2,6 +2,7 @@
  *  @{ */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -12,6 +13,9 @@
 #include <net-snmp/agent/table_dataset.h>
 #include <net-snmp/agent/stash_cache.h>
 
+netsnmp_feature_child_of(mib_helpers, libnetsnmpagent)
+
+
 /** call the initialization sequence for all handlers with init_ routines. */
 void
 netsnmp_init_helpers(void)
@@ -20,8 +24,16 @@
     netsnmp_init_serialize();
     netsnmp_init_read_only_helper();
     netsnmp_init_bulk_to_next_helper();
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATASET
     netsnmp_init_table_dataset();
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET */
+
+#ifndef NETSNMP_FEATURE_REMOVE_ROW_MERGE
+    netsnmp_init_row_merge();
+#endif /* NETSNMP_FEATURE_REMOVE_ROW_MERGE */
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
     netsnmp_init_stash_cache_helper();
+#endif /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
 }
 
 /** @defgroup utilities utility_handlers
diff --git a/agent/helpers/baby_steps.c b/agent/helpers/baby_steps.c
index 8515dea..d79acbc 100644
--- a/agent/helpers/baby_steps.c
+++ b/agent/helpers/baby_steps.c
@@ -3,9 +3,19 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_provide(baby_steps)
+netsnmp_feature_child_of(baby_steps, mib_helpers)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_BABY_STEPS
+netsnmp_feature_require(check_requests_error)
+#endif
+
+#ifndef NETSNMP_FEATURE_REMOVE_BABY_STEPS
+
 #include <net-snmp/agent/baby_steps.h>
 
 #define BABY_STEPS_PER_MODE_MAX     4
@@ -14,6 +24,7 @@
 static u_short get_mode_map[BABY_STEPS_PER_MODE_MAX] = {
     MODE_BSTEP_PRE_REQUEST, MODE_BSTEP_OBJECT_LOOKUP, BSTEP_USE_ORIGINAL, MODE_BSTEP_POST_REQUEST };
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 static u_short set_mode_map[SNMP_MSG_INTERNAL_SET_MAX][BABY_STEPS_PER_MODE_MAX] = {
     /*R1*/
     { MODE_BSTEP_PRE_REQUEST, MODE_BSTEP_OBJECT_LOOKUP, MODE_BSTEP_ROW_CREATE,
@@ -33,6 +44,7 @@
     { MODE_BSTEP_UNDO_COMMIT, MODE_BSTEP_UNDO_SET, MODE_BSTEP_UNDO_CLEANUP,
       MODE_BSTEP_POST_REQUEST}
 };
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 static int
 _baby_steps_helper(netsnmp_mib_handler *handler,
@@ -51,6 +63,20 @@
  *  @{
  */
 
+static netsnmp_baby_steps_modes *
+netsnmp_baby_steps_modes_ref(netsnmp_baby_steps_modes *md)
+{
+    md->refcnt++;
+    return md;
+}
+
+static void
+netsnmp_baby_steps_modes_deref(netsnmp_baby_steps_modes *md)
+{
+    if (--md->refcnt == 0)
+	free(md);
+}
+
 /** returns a baby_steps handler that can be injected into a given
  *  handler chain.
  */
@@ -71,7 +97,10 @@
         mh = NULL;
     }
     else {
+	md->refcnt = 1;
         mh->myvoid = md;
+	mh->data_clone = (void *(*)(void *))netsnmp_baby_steps_modes_ref;
+	mh->data_free = (void (*)(void *))netsnmp_baby_steps_modes_deref;
         if (0 == modes)
             modes = BABY_STEP_ALL;
         md->registered = modes;
@@ -104,6 +133,7 @@
 
     switch (reqinfo->mode) {
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         /*
          * clear completed modes
@@ -121,6 +151,7 @@
     case MODE_SET_UNDO:
         mode_map_ptr = set_mode_map[reqinfo->mode];
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
             
     default:
         /*
@@ -222,6 +253,7 @@
         if (BSTEP_USE_ORIGINAL != mode_map_ptr[i]) {
             u_int    mode_flag;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             /*
              * skip undo commit if commit wasn't hit, and
              * undo_cleanup if undo_setup wasn't hit.
@@ -240,6 +272,7 @@
                             "   skipping undo cleanup (no undo setup)\n"));
                 continue;
             }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
             reqinfo->mode = mode_map_ptr[i];
             mode_flag = netsnmp_baby_step_mode2flag( mode_map_ptr[i] );
@@ -293,7 +326,10 @@
          * in commit, free or undo.)
          */
         if (MODE_IS_GET(save_mode)
-            || (save_mode < SNMP_MSG_INTERNAL_SET_COMMIT)) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+            || (save_mode < SNMP_MSG_INTERNAL_SET_COMMIT)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+            ) {
             rc = netsnmp_check_requests_error(requests);
             if(rc) {
                 DEBUGMSGTL(("baby_steps", "   ERROR:request error\n"));
@@ -315,12 +351,15 @@
  *  handler as a run-time injectable handler for configuration file
  *  use.
  */
+netsnmp_feature_child_of(netsnmp_baby_steps_handler_init,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_BABY_STEPS_HANDLER_INIT
 void
 netsnmp_baby_steps_handler_init(void)
 {
     netsnmp_register_handler_by_name("baby_steps",
                                      netsnmp_baby_steps_handler_get(BABY_STEP_ALL));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_BABY_STEPS_HANDLER_INIT */
 
 /** @} */
 
@@ -391,6 +430,7 @@
             method = access_methods->get_values;
         break;
         
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_BSTEP_CHECK_VALUE:
         if( access_methods->object_syntax_checks )
             method = access_methods->object_syntax_checks;
@@ -440,6 +480,7 @@
         if( access_methods->undo_cleanup )
             method = access_methods->undo_cleanup;
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         
     case MODE_BSTEP_POST_REQUEST:
         if( access_methods->post_request )
@@ -484,6 +525,7 @@
     switch( mode ) {
         case MODE_BSTEP_OBJECT_LOOKUP:
             return BABY_STEP_OBJECT_LOOKUP;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_BSTEP_SET_VALUE:
             return BABY_STEP_SET_VALUE;
         case MODE_BSTEP_IRREVERSIBLE_COMMIT:
@@ -508,6 +550,7 @@
             return BABY_STEP_COMMIT;
         case MODE_BSTEP_UNDO_COMMIT:
             return BABY_STEP_UNDO_COMMIT;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         default:
             netsnmp_assert("unknown flag");
             break;
@@ -516,3 +559,7 @@
 }
 /**  @} */
 
+#else  /* NETSNMP_FEATURE_REMOVE_BABY_STEPS */
+netsnmp_feature_unused(baby_steps);
+#endif /* NETSNMP_FEATURE_REMOVE_BABY_STEPS */
+
diff --git a/agent/helpers/cache_handler.c b/agent/helpers/cache_handler.c
index 6bb32a0..520a4cf 100644
--- a/agent/helpers/cache_handler.c
+++ b/agent/helpers/cache_handler.c
@@ -9,6 +9,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -21,6 +22,11 @@
 
 #include <net-snmp/agent/cache_handler.h>
 
+netsnmp_feature_child_of(cache_handler, mib_helpers)
+
+netsnmp_feature_child_of(cache_find_by_oid, cache_handler)
+netsnmp_feature_child_of(cache_get_head, cache_handler)
+
 static netsnmp_cache  *cache_head = NULL;
 static int             cache_outstanding_valid = 0;
 static int             _cache_load( netsnmp_cache *cache );
@@ -79,6 +85,14 @@
  *  the cache when it expires. This is useful for keeping the cache fresh,
  *  even in the absence of incoming snmp requests.
  *
+ *  If NETSNMP_CACHE_RESET_TIMER_ON_USE is set, the expiry timer will be
+ *  reset on each cache access. In practice the 'timeout' becomes a timer
+ *  which triggers when the cache is no longer needed. This is useful
+ *  if the cache is automatically kept synchronized: e.g. by receiving
+ *  change notifications from Netlink, inotify or similar. This should
+ *  not be used if cache is not synchronized automatically as it would
+ *  result in stale cache information when if polling happens too fast.
+ *
  *
  *  Here are some suggestions for some common situations.
  *
@@ -110,12 +124,20 @@
  *          NETSNMP_CACHE_DONT_AUTO_RELEASE
  *          NETSNMP_CACHE_AUTO_RELOAD
  *
+ *  Dynamically updated, unloaded after timeout:
+ *      If the cache is kept up to date dynamically by listening for
+ *      change notifications somehow, but it should not be in memory
+ *      if it's not needed. Set the following flag:
+ *
+ *          NETSNMP_CACHE_RESET_TIMER_ON_USE
+ *
  *  @{
  */
 
 static void
 _cache_free( netsnmp_cache *cache );
 
+#ifndef NETSNMP_FEATURE_REMOVE_CACHE_GET_HEAD
 /** get cache head
  * @internal
  * unadvertised function to get cache head. You really should not
@@ -126,7 +148,9 @@
 {
     return cache_head;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CACHE_GET_HEAD */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CACHE_FIND_BY_OID
 /** find existing cache
  */
 netsnmp_cache *
@@ -142,6 +166,7 @@
     
     return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CACHE_FIND_BY_OID */
 
 /** returns a cache
  */
@@ -186,6 +211,22 @@
     return cache;
 }
 
+static netsnmp_cache *
+netsnmp_cache_ref(netsnmp_cache *cache)
+{
+    cache->refcnt++;
+    return cache;
+}
+
+static void
+netsnmp_cache_deref(netsnmp_cache *cache)
+{
+    if (--cache->refcnt == 0) {
+        netsnmp_cache_remove(cache);
+        netsnmp_cache_free(cache);
+    }
+}
+
 /** frees a cache
  */
 int
@@ -205,8 +246,8 @@
             sprint_realloc_objid((u_char **) &buf, &buf_len, &out_len,
                                  1, pos->rootoid, pos->rootoid_len);
             snmp_log(LOG_WARNING,
-		     "not freeing cache with root OID %s (still in list)\n",
-		     buf);
+                     "not freeing cache with root OID %s (still in list)\n",
+                     buf);
             free(buf);
             return SNMP_ERR_GENERR;
         }
@@ -218,6 +259,9 @@
     if (cache->valid)
         _cache_free(cache);
 
+    if (cache->timestampM)
+	free(cache->timestampM);
+
     if (cache->rootoid)
         free(cache->rootoid);
 
@@ -353,6 +397,17 @@
     return ret;
 }
 
+/** Makes sure that memory allocated for the cache is freed when the handler
+ *  is unregistered.
+ */
+void netsnmp_cache_handler_owns_cache(netsnmp_mib_handler *handler)
+{
+    netsnmp_assert(handler->myvoid);
+    ((netsnmp_cache *)handler->myvoid)->refcnt++;
+    handler->data_clone = (void *(*)(void *))netsnmp_cache_ref;
+    handler->data_free = (void(*)(void*))netsnmp_cache_deref;
+}
+
 /** returns a cache handler that can be injected into a given handler chain.  
  */
 netsnmp_mib_handler *
@@ -368,12 +423,15 @@
         cache = netsnmp_cache_create(timeout, load_hook, free_hook,
                                      rootoid, rootoid_len);
         ret->myvoid = (void *) cache;
+        netsnmp_cache_handler_owns_cache(ret);
     }
     return ret;
 }
 
 /** functionally the same as calling netsnmp_register_handler() but also
  * injects a cache handler at the same time for you. */
+netsnmp_feature_child_of(netsnmp_cache_handler_register,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_CACHE_HANDLER_REGISTER
 int
 netsnmp_cache_handler_register(netsnmp_handler_registration * reginfo,
                                netsnmp_cache* cache)
@@ -384,9 +442,12 @@
     netsnmp_inject_handler(reginfo, handler);
     return netsnmp_register_handler(reginfo);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_CACHE_HANDLER_REGISTER */
 
 /** functionally the same as calling netsnmp_register_handler() but also
  * injects a cache handler at the same time for you. */
+netsnmp_feature_child_of(netsnmp_register_cache_handler,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_REGISTER_CACHE_HANDLER
 int
 netsnmp_register_cache_handler(netsnmp_handler_registration * reginfo,
                                int timeout, NetsnmpCacheLoad * load_hook,
@@ -400,8 +461,9 @@
     netsnmp_inject_handler(reginfo, handler);
     return netsnmp_register_handler(reginfo);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_REGISTER_CACHE_HANDLER */
 
-NETSNMP_STATIC_INLINE char *
+static char *
 _build_cache_name(const char *name)
 {
     char *dup = (char*)malloc(strlen(name) + strlen(CACHE_NAME) + 2);
@@ -441,11 +503,14 @@
 }
 
 /** Extract the cache information for a given request (PDU) */
+netsnmp_feature_child_of(netsnmp_extract_cache_info,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_EXTRACT_CACHE_INFO
 netsnmp_cache  *
 netsnmp_extract_cache_info(netsnmp_agent_request_info * reqinfo)
 {
     return netsnmp_cache_reqinfo_extract(reqinfo, CACHE_NAME);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_EXTRACT_CACHE_INFO */
 
 
 /** Check if the cache timeout has passed. Sets and return the expired flag. */
@@ -454,11 +519,13 @@
 {
     if(NULL == cache)
         return 0;
-    
-    if(!cache->valid || (NULL == cache->timestamp) || (-1 == cache->timeout))
+    if (cache->expired)
+        return 1;
+    if(!cache->valid || (NULL == cache->timestampM) || (-1 == cache->timeout))
         cache->expired = 1;
     else
-        cache->expired = atime_ready(cache->timestamp, 1000 * cache->timeout);
+        cache->expired = netsnmp_ready_monotonic(cache->timestampM,
+                                                 1000 * cache->timeout);
     
     return cache->expired;
 }
@@ -492,11 +559,14 @@
 /** Is the cache valid for a given request?
  * for backwards compatability. netsnmp_cache_is_valid() is preferred.
  */
+netsnmp_feature_child_of(netsnmp_is_cache_valid,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_IS_CACHE_VALID
 int
 netsnmp_is_cache_valid(netsnmp_agent_request_info * reqinfo)
 {
     return netsnmp_cache_is_valid(reqinfo, CACHE_NAME);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_IS_CACHE_VALID */
 
 /** Implements the cache handler */
 int
@@ -526,7 +596,7 @@
                    "cache not found, disabled or had no load method\n"));
         return SNMP_ERR_NOERROR;
     }
-    snprintf(addrstr, sizeof(addrstr), "%p", cache);
+    snprintf(addrstr,sizeof(addrstr), "%ld", (long int)cache);
     DEBUGMSGTL(("helper:cache_handler", "using cache %s: ", addrstr));
     DEBUGMSGOID(("helper:cache_handler", cache->rootoid, cache->rootoid_len));
     DEBUGMSG(("helper:cache_handler", "\n"));
@@ -546,7 +616,9 @@
     case MODE_GET:
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
         /*
          * only touch cache once per pdu request, to prevent a cache
@@ -568,6 +640,7 @@
         /** next handler called automatically - 'AUTO_NEXT' */
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE2:
     case MODE_SET_FREE:
     case MODE_SET_ACTION:
@@ -589,6 +662,7 @@
         }
         /** next handler called automatically - 'AUTO_NEXT' */
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         snmp_log(LOG_WARNING, "cache_handler: Unrecognised mode (%d)\n",
@@ -596,6 +670,8 @@
         netsnmp_request_set_error_all(requests, SNMP_ERR_GENERR);
         return SNMP_ERR_GENERR;
     }
+    if (cache->flags & NETSNMP_CACHE_RESET_TIMER_ON_USE)
+        netsnmp_set_monotonic_marker(&cache->timestampM);
     return SNMP_ERR_NOERROR;
 }
 
@@ -640,10 +716,7 @@
                             0, release_cached_resources, NULL);
         cache_outstanding_valid = 1;
     }
-    if (cache->timestamp)
-        atime_setMarker(cache->timestamp);
-    else
-        cache->timestamp = atime_newMarker();
+    netsnmp_set_monotonic_marker(&cache->timestampM);
     DEBUGMSGT(("helper:cache_handler", " loaded (%d)\n", cache->timeout));
 
     return ret;
diff --git a/agent/helpers/instance.c b/agent/helpers/instance.c
index 2d07b69..a5ee841 100644
--- a/agent/helpers/instance.c
+++ b/agent/helpers/instance.c
@@ -9,6 +9,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -26,7 +27,11 @@
 #include <net-snmp/agent/serialize.h>
 #include <net-snmp/agent/read_only.h>
 
+netsnmp_feature_provide(instance)
+netsnmp_feature_child_of(instance, mib_helpers)
+
 typedef struct netsnmp_num_file_instance_s {
+    int   refcnt;
     char *file_name;
     FILE *filep;
     u_char type;
@@ -39,6 +44,22 @@
  *  @{
  */
 
+static netsnmp_num_file_instance *
+netsnmp_num_file_instance_ref(netsnmp_num_file_instance *nfi)
+{
+    nfi->refcnt++;
+    return nfi;
+}
+
+static void
+netsnmp_num_file_instance_deref(netsnmp_num_file_instance *nfi)
+{
+    if (--nfi->refcnt == 0) {
+	free(nfi->file_name);
+	free(nfi);
+    }
+}
+
 /**
  * Creates an instance helper handler, calls netsnmp_create_handler, which
  * then could be registered, using netsnmp_register_handler().
@@ -111,7 +132,7 @@
 get_reg(const char *name,
         const char *ourname,
         const oid * reg_oid, size_t reg_oid_len,
-        void *it,
+        netsnmp_num_file_instance *it,
         int modes,
         Netsnmp_Node_Handler * scalarh, Netsnmp_Node_Handler * subhandler,
         const char *contextName)
@@ -126,7 +147,9 @@
                                                 reg_oid, reg_oid_len,
                                                 modes);
         myhandler = netsnmp_create_handler(ourname, scalarh);
-        myhandler->myvoid = (void *) it;
+        myhandler->myvoid = it;
+	myhandler->data_clone = (void*(*)(void*))netsnmp_num_file_instance_ref;
+	myhandler->data_free = (void(*)(void*))netsnmp_num_file_instance_deref;
         netsnmp_inject_handler(myreg, myhandler);
     } else {
         myreg =
@@ -134,7 +157,11 @@
                                                 scalarh,
                                                 reg_oid, reg_oid_len,
                                                 modes);
-        myreg->handler->myvoid = (void *) it;
+        myreg->handler->myvoid = it;
+	myreg->handler->data_clone
+	    = (void *(*)(void *))netsnmp_num_file_instance_ref;
+	myreg->handler->data_free
+	    = (void (*)(void *))netsnmp_num_file_instance_deref;
     }
     if (contextName)
         myreg->contextName = strdup(contextName);
@@ -142,6 +169,8 @@
 }
 
 /* Watched 'long' instances are writable on both 32-bit and 64-bit systems  */
+netsnmp_feature_child_of(read_only_ulong_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_ULONG_INSTANCE
 int
 netsnmp_register_read_only_ulong_instance(const char *name,
                                           const oid * reg_oid,
@@ -149,28 +178,34 @@
                                           Netsnmp_Node_Handler *
                                           subhandler)
 {
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
                netsnmp_create_handler_registration(
                    name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY),
                netsnmp_create_watcher_info(
                    (void *)it, sizeof(u_long),
                    ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_ULONG_INSTANCE */
 
+netsnmp_feature_child_of(ulong_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_ULONG_INSTANCE
 int
 netsnmp_register_ulong_instance(const char *name,
                                 const oid * reg_oid, size_t reg_oid_len,
                                 u_long * it,
                                 Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
                netsnmp_create_handler_registration(
                    name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE),
                netsnmp_create_watcher_info(
                    (void *)it, sizeof(u_long),
                    ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_ULONG_INSTANCE */
 
+netsnmp_feature_child_of(read_only_counter32_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_COUNTER32_INSTANCE
 int
 netsnmp_register_read_only_counter32_instance(const char *name,
                                               const oid * reg_oid,
@@ -179,14 +214,17 @@
                                               Netsnmp_Node_Handler *
                                               subhandler)
 {
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
                netsnmp_create_handler_registration(
                    name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY),
                netsnmp_create_watcher_info(
                    (void *)it, sizeof(u_long),
                    ASN_COUNTER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_COUNTER32_INSTANCE */
 
+netsnmp_feature_child_of(read_only_long_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_LONG_INSTANCE
 int
 netsnmp_register_read_only_long_instance(const char *name,
                                          const oid * reg_oid,
@@ -194,26 +232,32 @@
                                          long *it,
                                          Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
                netsnmp_create_handler_registration(
                    name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY),
                netsnmp_create_watcher_info(
                    (void *)it, sizeof(long), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_LONG_INSTANCE */
 
+netsnmp_feature_child_of(long_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_LONG_INSTANCE
 int
 netsnmp_register_long_instance(const char *name,
                                const oid * reg_oid, size_t reg_oid_len,
                                long *it, Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
                netsnmp_create_handler_registration(
                    name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE),
                netsnmp_create_watcher_info(
                    (void *)it, sizeof(long), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LONG_INSTANCE */
 
 /* Watched 'int' instances are only writable on 32-bit systems  */
+netsnmp_feature_child_of(read_only_uint_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_UINT_INSTANCE
 int
 netsnmp_register_read_only_uint_instance(const char *name,
                                          const oid * reg_oid,
@@ -221,42 +265,51 @@
                                          unsigned int *it,
                                          Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
                netsnmp_create_handler_registration(
                    name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY),
                netsnmp_create_watcher_info(
                    (void *)it, sizeof(unsigned int),
                    ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_UINT_INSTANCE */
 
+netsnmp_feature_child_of(uint_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_UINT_INSTANCE
 int
 netsnmp_register_uint_instance(const char *name,
                                const oid * reg_oid, size_t reg_oid_len,
                                unsigned int *it, Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
                netsnmp_create_handler_registration(
                    name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE),
                netsnmp_create_watcher_info(
                    (void *)it, sizeof(unsigned int),
                    ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UINT_INSTANCE */
 
+netsnmp_feature_child_of(read_only_int_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_INT_INSTANCE
 int
 netsnmp_register_read_only_int_instance(const char *name,
                                 const oid * reg_oid, size_t reg_oid_len,
                                 int *it, Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
                netsnmp_create_handler_registration(
                    name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY),
                netsnmp_create_watcher_info(
                    (void *)it, sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_INT_INSTANCE */
 
   /*
    * Compatibility with earlier (inconsistently named) routine
    */
+netsnmp_feature_child_of(register_read_only_int_instance,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_INT_INSTANCE
 int
 register_read_only_int_instance(const char *name,
                                 const oid * reg_oid, size_t reg_oid_len,
@@ -266,11 +319,14 @@
                                 reg_oid, reg_oid_len,
                                 it, subhandler);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_INT_INSTANCE */
 
 /*
  * Context registrations
  */
 
+netsnmp_feature_child_of(register_read_only_ulong_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_ULONG_INSTANCE_CONTEXT
 int
 netsnmp_register_read_only_ulong_instance_context(const char *name,
                                                   const oid * reg_oid,
@@ -285,11 +341,14 @@
           name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY);
     if (myreg && contextName)
       myreg->contextName = strdup(contextName);
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
         myreg, netsnmp_create_watcher_info(
             (void *)it, sizeof(u_long), ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_ULONG_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_ulong_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_ULONG_INSTANCE_CONTEXT
 int
 netsnmp_register_ulong_instance_context(const char *name,
                                         const oid * reg_oid, size_t reg_oid_len,
@@ -302,11 +361,14 @@
           name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE);
     if (myreg && contextName)
       myreg->contextName = strdup(contextName);
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
         myreg, netsnmp_create_watcher_info(
             (void *)it, sizeof(u_long), ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_ULONG_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_read_only_counter32_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_COUNTER32_INSTANCE_CONTEXT
 int
 netsnmp_register_read_only_counter32_instance_context(const char *name,
                                                       const oid * reg_oid,
@@ -321,11 +383,14 @@
           name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY);
     if (myreg && contextName)
       myreg->contextName = strdup(contextName);
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
         myreg, netsnmp_create_watcher_info(
             (void *)it, sizeof(u_long), ASN_COUNTER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_COUNTER32_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_read_only_long_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_LONG_INSTANCE_CONTEXT
 int
 netsnmp_register_read_only_long_instance_context(const char *name,
                                                  const oid * reg_oid,
@@ -340,11 +405,14 @@
           name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY);
     if (myreg && contextName)
       myreg->contextName = strdup(contextName);
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
         myreg, netsnmp_create_watcher_info(
             (void *)it, sizeof(long), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_LONG_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_long_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_LONG_INSTANCE_CONTEXT
 int
 netsnmp_register_long_instance_context(const char *name,
                                        const oid * reg_oid, size_t reg_oid_len,
@@ -357,11 +425,14 @@
           name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE);
     if (myreg && contextName)
       myreg->contextName = strdup(contextName);
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
         myreg, netsnmp_create_watcher_info(
             (void *)it, sizeof(long), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_LONG_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_int_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_INT_INSTANCE_CONTEXT
 int
 netsnmp_register_int_instance_context(const char *name,
                                       const oid * reg_oid,
@@ -375,11 +446,14 @@
           name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE);
     if (myreg && contextName)
       myreg->contextName = strdup(contextName);
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
         myreg, netsnmp_create_watcher_info(
             (void *)it, sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_INT_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_read_only_int_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_INT_INSTANCE_CONTEXT
 int
 netsnmp_register_read_only_int_instance_context(const char *name,
                                                 const oid * reg_oid,
@@ -393,14 +467,17 @@
           name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY);
     if (myreg && contextName)
       myreg->contextName = strdup(contextName);
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
         myreg, netsnmp_create_watcher_info(
             (void *)it, sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_INT_INSTANCE_CONTEXT */
 
 /*
  * Compatibility with earlier (inconsistently named) routine
  */
+netsnmp_feature_child_of(read_only_int_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_INT_INSTANCE_CONTEXT
 int
 register_read_only_int_instance_context(const char *name,
                                         const oid * reg_oid, size_t reg_oid_len,
@@ -413,7 +490,10 @@
                                                            it, subhandler,
                                                            contextName);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_INT_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_num_file_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_NUM_FILE_INSTANCE
 int
 netsnmp_register_num_file_instance(const char *name,
                                    const oid * reg_oid, size_t reg_oid_len,
@@ -438,11 +518,12 @@
         return MIB_REGISTRATION_FAILED;
     }
 
+    nfi->refcnt = 1;
     myreg = get_reg(name, "file_num_handler", reg_oid, reg_oid_len, nfi,
                     mode, netsnmp_instance_num_file_handler,
                     subhandler, contextName);
     if (NULL == myreg) {
-        free(nfi); /* SNMP_FREE overkill on local var */
+        netsnmp_num_file_instance_deref(nfi);
         return MIB_REGISTRATION_FAILED;
     }
 
@@ -453,7 +534,10 @@
 
     return netsnmp_register_instance(myreg);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_NUM_FILE_INSTANCE */
 
+netsnmp_feature_child_of(register_int_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_INT_INSTANCE
 /**
  * This function registers an int helper handler to a specified OID.
  *
@@ -477,12 +561,13 @@
                               const oid * reg_oid, size_t reg_oid_len,
                               int *it, Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_instance(
+    return netsnmp_register_watched_instance2(
                netsnmp_create_handler_registration(
                    name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE),
                netsnmp_create_watcher_info(
                    (void *)it, sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_INT_INSTANCE */
 
 #ifdef HAVE_DMALLOC_H
 static void free_wrapper(void * p)
@@ -493,290 +578,6 @@
 #define free_wrapper free
 #endif
 
-#ifndef NETSNMP_NO_DEPRECATED_FUNCTIONS
-
-/**
- * \deprecated This function is unused and scheduled for removal in Net-SNMP 5.6
- */
-int
-netsnmp_instance_ulong_handler(netsnmp_mib_handler *handler,
-                               netsnmp_handler_registration *reginfo,
-                               netsnmp_agent_request_info *reqinfo,
-                               netsnmp_request_info *requests)
-{
-
-    u_long         *it = (u_long *) handler->myvoid;
-    u_long         *it_save;
-
-    DEBUGMSGTL(("netsnmp_instance_ulong_handler", "Got request:  %d\n",
-                reqinfo->mode));
-
-    switch (reqinfo->mode) {
-        /*
-         * data requests 
-         */
-    case MODE_GET:
-        snmp_set_var_typed_value(requests->requestvb, ASN_UNSIGNED,
-                                 (u_char *) it, sizeof(*it));
-        break;
-
-        /*
-         * SET requests.  Should only get here if registered RWRITE 
-         */
-    case MODE_SET_RESERVE1:
-        if (requests->requestvb->type != ASN_UNSIGNED)
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_WRONGTYPE);
-        break;
-
-    case MODE_SET_RESERVE2:
-        /*
-         * store old info for undo later 
-         */
-        it_save = netsnmp_memdup(it, sizeof(u_long));
-        if (it_save == NULL) {
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_RESOURCEUNAVAILABLE);
-            return SNMP_ERR_NOERROR;
-        }
-        netsnmp_request_add_list_data(requests,
-                                      netsnmp_create_data_list
-                                      (INSTANCE_HANDLER_NAME, it_save,
-                                       &free_wrapper));
-        break;
-
-    case MODE_SET_ACTION:
-        /*
-         * update current 
-         */
-        DEBUGMSGTL(("testhandler", "updated u_long %lu -> %lu\n", *it,
-                    *(requests->requestvb->val.integer)));
-        *it = *(requests->requestvb->val.integer);
-        break;
-
-    case MODE_SET_UNDO:
-        *it =
-            *((u_long *) netsnmp_request_get_list_data(requests,
-                                                       INSTANCE_HANDLER_NAME));
-        break;
-
-    case MODE_SET_COMMIT:
-    case MODE_SET_FREE:
-        /*
-         * nothing to do 
-         */
-        break;
-    }
-
-    if (handler->next && handler->next->access_method)
-        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
-                                         requests);
-
-    return SNMP_ERR_NOERROR;
-}
-
-/**
- * \deprecated This function is unused and scheduled for removal in Net-SNMP 5.6
- */
-int
-netsnmp_instance_counter32_handler(netsnmp_mib_handler *handler,
-                                   netsnmp_handler_registration *reginfo,
-                                   netsnmp_agent_request_info *reqinfo,
-                                   netsnmp_request_info *requests)
-{
-
-    u_long         *it = (u_long *) handler->myvoid;
-
-    DEBUGMSGTL(("netsnmp_instance_counter32_handler",
-                "Got request:  %d\n", reqinfo->mode));
-
-    switch (reqinfo->mode) {
-        /*
-         * data requests 
-         */
-    case MODE_GET:
-        snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
-                                 (u_char *) it, sizeof(*it));
-        break;
-
-        /*
-         * SET requests.  Should only get here if registered RWRITE 
-         */
-    default:
-        snmp_log(LOG_ERR,
-                 "netsnmp_instance_counter32_handler: illegal mode\n");
-        netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_GENERR);
-        return SNMP_ERR_NOERROR;
-    }
-    if (handler->next && handler->next->access_method)
-        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
-                                         requests);
-    return SNMP_ERR_NOERROR;
-}
-
-/**
- * \deprecated This function is unused and scheduled for removal in Net-SNMP 5.6
- */
-int
-netsnmp_instance_long_handler(netsnmp_mib_handler *handler,
-                              netsnmp_handler_registration *reginfo,
-                              netsnmp_agent_request_info *reqinfo,
-                              netsnmp_request_info *requests)
-{
-
-    long           *it = (long *) handler->myvoid;
-    long           *it_save;
-
-    DEBUGMSGTL(("netsnmp_instance_long_handler", "Got request:  %d\n",
-                reqinfo->mode));
-
-    switch (reqinfo->mode) {
-        /*
-         * data requests 
-         */
-    case MODE_GET:
-        snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
-                                 (u_char *) it, sizeof(*it));
-        break;
-
-        /*
-         * SET requests.  Should only get here if registered RWRITE 
-         */
-    case MODE_SET_RESERVE1:
-        if (requests->requestvb->type != ASN_INTEGER)
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_WRONGTYPE);
-        break;
-
-    case MODE_SET_RESERVE2:
-        /*
-         * store old info for undo later 
-         */
-        it_save = netsnmp_memdup(it, sizeof(long));
-        if (it_save == NULL) {
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_RESOURCEUNAVAILABLE);
-            return SNMP_ERR_NOERROR;
-        }
-        netsnmp_request_add_list_data(requests,
-                                      netsnmp_create_data_list
-                                      (INSTANCE_HANDLER_NAME, it_save,
-                                       &free_wrapper));
-        break;
-
-    case MODE_SET_ACTION:
-        /*
-         * update current 
-         */
-        DEBUGMSGTL(("testhandler", "updated u_long %lu -> %lu\n", *it,
-                    *(requests->requestvb->val.integer)));
-        *it = *(requests->requestvb->val.integer);
-        break;
-
-    case MODE_SET_UNDO:
-        *it =
-            *((u_long *) netsnmp_request_get_list_data(requests,
-                                                       INSTANCE_HANDLER_NAME));
-        break;
-
-    case MODE_SET_COMMIT:
-    case MODE_SET_FREE:
-        /*
-         * nothing to do 
-         */
-        break;
-    }
-    if (handler->next && handler->next->access_method)
-        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
-                                         requests);
-    return SNMP_ERR_NOERROR;
-}
-
-/**
- * \deprecated This function is unused and scheduled for removal in Net-SNMP 5.6
- */
-int
-netsnmp_instance_int_handler(netsnmp_mib_handler *handler,
-                             netsnmp_handler_registration *reginfo,
-                             netsnmp_agent_request_info *reqinfo,
-                             netsnmp_request_info *requests)
-{
-
-    int *it = (int *) handler->myvoid;
-    int *it_save;
-    long tmp_it;
-    
-    DEBUGMSGTL(("netsnmp_instance_int_handler", "Got request:  %d\n",
-                reqinfo->mode));
-
-    switch (reqinfo->mode) {
-        /*
-         * data requests 
-         */
-    case MODE_GET:
-	/*
-	 * Use a long here, otherwise on 64 bit use of an int would fail
-	 */
-	tmp_it = *it;
-        snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
-                                 (u_char *) &tmp_it, sizeof(tmp_it));
-        break;
-
-        /*
-         * SET requests.  Should only get here if registered RWRITE 
-         */
-    case MODE_SET_RESERVE1:
-        if (requests->requestvb->type != ASN_INTEGER)
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_WRONGTYPE);
-        break;
-
-    case MODE_SET_RESERVE2:
-        /*
-         * store old info for undo later 
-         */
-        it_save = netsnmp_memdup(it, sizeof(int));
-        if (it_save == NULL) {
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_RESOURCEUNAVAILABLE);
-            return SNMP_ERR_NOERROR;
-        }
-        netsnmp_request_add_list_data(requests,
-                                      netsnmp_create_data_list
-                                      (INSTANCE_HANDLER_NAME, it_save,
-                                       &free_wrapper));
-        break;
-
-    case MODE_SET_ACTION:
-        /*
-         * update current 
-         */
-        DEBUGMSGTL(("testhandler", "updated int %d -> %ld\n", *it,
-                    *(requests->requestvb->val.integer)));
-        *it = (int) *(requests->requestvb->val.integer);
-        break;
-
-    case MODE_SET_UNDO:
-        *it =
-            *((u_int *) netsnmp_request_get_list_data(requests,
-                                                      INSTANCE_HANDLER_NAME));
-        break;
-
-    case MODE_SET_COMMIT:
-    case MODE_SET_FREE:
-        /*
-         * nothing to do 
-         */
-        break;
-    }
-    if (handler->next && handler->next->access_method)
-        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
-                                         requests);
-    return SNMP_ERR_NOERROR;
-}
-
-#endif /* NETSNMP_NO_DEPRECATED_FUNCTIONS */
-
 int
 netsnmp_instance_num_file_handler(netsnmp_mib_handler *handler,
                                   netsnmp_handler_registration *reginfo,
@@ -784,7 +585,10 @@
                                   netsnmp_request_info *requests)
 {
     netsnmp_num_file_instance *nfi;
-    u_long it, *it_save;
+    u_long it;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    u_long *it_save;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     int rc;
 
     netsnmp_assert(NULL != handler);
@@ -826,6 +630,7 @@
         /*
          * SET requests.  Should only get here if registered RWRITE 
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         netsnmp_assert(NULL == nfi->filep);
         if (requests->requestvb->type != nfi->type)
@@ -898,6 +703,12 @@
             nfi->filep = NULL;
         }
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+    default:
+        snmp_log(LOG_ERR,
+                 "netsnmp_instance_num_file_handler: illegal mode\n");
+        netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_GENERR);
+        return SNMP_ERR_NOERROR;
     }
 
     if (handler->next && handler->next->access_method)
@@ -906,93 +717,6 @@
     return SNMP_ERR_NOERROR;
 }
 
-#ifndef NETSNMP_NO_DEPRECATED_FUNCTIONS
-
-/**
- * \deprecated This function is unused and scheduled for removal in Net-SNMP 5.6
- */
-int
-netsnmp_instance_uint_handler(netsnmp_mib_handler *handler,
-                              netsnmp_handler_registration *reginfo,
-                              netsnmp_agent_request_info *reqinfo,
-                              netsnmp_request_info *requests)
-{
-
-    unsigned int *it = (unsigned int *) handler->myvoid;
-    unsigned int *it_save;
-    unsigned long tmp_it;
-    
-    DEBUGMSGTL(("netsnmp_instance_uint_handler", "Got request:  %d\n",
-                reqinfo->mode));
-
-    switch (reqinfo->mode) {
-        /*
-         * data requests 
-         */
-    case MODE_GET:
-	/*
-	 * Use a long here, otherwise on 64 bit use of an int would fail
-	 */
-	tmp_it = *it;
-        snmp_set_var_typed_value(requests->requestvb, ASN_UNSIGNED,
-                                 (u_char *) &tmp_it, sizeof(unsigned long));
-        break;
-
-        /*
-         * SET requests.  Should only get here if registered RWRITE 
-         */
-    case MODE_SET_RESERVE1:
-        if (requests->requestvb->type != ASN_UNSIGNED)
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_WRONGTYPE);
-        break;
-
-    case MODE_SET_RESERVE2:
-        /*
-         * store old info for undo later 
-         */
-        it_save = netsnmp_memdup(it, sizeof(u_int));
-        if (it_save == NULL) {
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_RESOURCEUNAVAILABLE);
-            return SNMP_ERR_NOERROR;
-        }
-        netsnmp_request_add_list_data(requests,
-                                      netsnmp_create_data_list
-                                      (INSTANCE_HANDLER_NAME, it_save,
-                                       &free_wrapper));
-        break;
-
-    case MODE_SET_ACTION:
-        /*
-         * update current 
-         */
-        DEBUGMSGTL(("testhandler", "updated uint %d -> %ld\n", *it,
-                    *(requests->requestvb->val.integer)));
-        *it = (unsigned int) *(requests->requestvb->val.integer);
-        break;
-
-    case MODE_SET_UNDO:
-        *it =
-            *((u_int *) netsnmp_request_get_list_data(requests,
-                                                      INSTANCE_HANDLER_NAME));
-        break;
-
-    case MODE_SET_COMMIT:
-    case MODE_SET_FREE:
-        /*
-         * nothing to do 
-         */
-        break;
-    }
-    if (handler->next && handler->next->access_method)
-        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
-                                         requests);
-    return SNMP_ERR_NOERROR;
-}
-
-#endif /* NETSNMP_NO_DEPRECATED_FUNCTIONS */
-
 int
 netsnmp_instance_helper_handler(netsnmp_mib_handler *handler,
                                 netsnmp_handler_registration *reginfo,
@@ -1025,6 +749,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -1040,6 +765,7 @@
                                              requests);
         }
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     case MODE_GETNEXT:
         if (cmp < 0 || (cmp == 0 && requests->inclusive)) {
@@ -1065,6 +791,11 @@
             return SNMP_ERR_NOERROR;
         }
         break;
+    default:
+        snmp_log(LOG_ERR,
+                 "netsnmp_instance_helper_handler: illegal mode\n");
+        netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_GENERR);
+        return SNMP_ERR_NOERROR;
     }
     /*
      * got here only if illegal mode found 
diff --git a/agent/helpers/mode_end_call.c b/agent/helpers/mode_end_call.c
index d7dd302..0bfcc69 100644
--- a/agent/helpers/mode_end_call.c
+++ b/agent/helpers/mode_end_call.c
@@ -9,12 +9,17 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include <net-snmp/agent/mode_end_call.h>
 
+netsnmp_feature_provide(mode_end_call)
+netsnmp_feature_child_of(mode_end_call, mib_helpers)
+
+#ifndef NETSNMP_FEATURE_REMOVE_MODE_END_CALL
 /** @defgroup mode_end_call mode_end_call
  *  At the end of a series of requests, call another handler hook.
  *  Handlers that want to loop through a series of requests and then
@@ -113,5 +118,10 @@
     
     return ret2;
 }
+#else
+netsnmp_feature_unused(mode_end_call);
+#endif /* NETSNMP_FEATURE_REMOVE_MODE_END_CALL */
+
+
 /**  @} */
 
diff --git a/agent/helpers/multiplexer.c b/agent/helpers/multiplexer.c
index e543f57..2a7a664 100644
--- a/agent/helpers/multiplexer.c
+++ b/agent/helpers/multiplexer.c
@@ -84,6 +84,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -100,6 +101,7 @@
         /*
          * XXX: process SETs specially, and possibly others 
          */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     default:
         snmp_log(LOG_ERR, "unsupported mode for multiplexer: %d\n",
                  reqinfo->mode);
diff --git a/agent/helpers/old_api.c b/agent/helpers/old_api.c
index fdc8bd6..d2b99d9 100644
--- a/agent/helpers/old_api.c
+++ b/agent/helpers/old_api.c
@@ -13,6 +13,8 @@
 
 #include <net-snmp/agent/agent_callbacks.h>
 
+#include <stddef.h>
+
 #define MIB_CLIENTS_ARE_EVIL 1
 
 #ifdef HAVE_DMALLOC_H
@@ -49,6 +51,19 @@
     return netsnmp_create_handler("old_api", netsnmp_old_api_helper);
 }
 
+struct variable *
+netsnmp_duplicate_variable(const struct variable *var)
+{
+    struct variable *var2 = NULL;
+    
+    if (var) {
+        const int varsize = offsetof(struct variable, name) + var->namelen * sizeof(var->name[0]);
+        var2 = malloc(varsize);
+        if (var2)
+            memcpy(var2, var, varsize);
+    }
+    return var2;
+}
 
 /** Registers an old API set into the mib tree.  Functionally this
  * mimics the old register_mib_context() function (and in fact the new
@@ -56,10 +71,10 @@
  */
 int
 netsnmp_register_old_api(const char *moduleName,
-                         struct variable *var,
+                         const struct variable *var,
                          size_t varsize,
                          size_t numvars,
-                         oid * mibloc,
+                         const oid * mibloc,
                          size_t mibloclen,
                          int priority,
                          int range_subid,
@@ -80,9 +95,8 @@
         if (reginfo == NULL)
             return SNMP_ERR_GENERR;
 
-        vp = netsnmp_memdup((const struct variable *)
-                            ((const char *) var + varsize * i),
-                            varsize);
+	vp = netsnmp_duplicate_variable((const struct variable *)
+					((const char *) var + varsize * i));
 
         reginfo->handler = get_old_api_handler();
         reginfo->handlerName = strdup(moduleName);
@@ -100,6 +114,9 @@
         memcpy(reginfo->rootoid + mibloclen, vp->name, vp->namelen
                * sizeof(oid));
         reginfo->handler->myvoid = (void *) vp;
+        reginfo->handler->data_clone
+	    = (void *(*)(void *))netsnmp_duplicate_variable;
+        reginfo->handler->data_free = free;
 
         reginfo->priority = priority;
         reginfo->range_subid = range_subid;
@@ -107,14 +124,15 @@
         reginfo->range_ubound = range_ubound;
         reginfo->timeout = timeout;
         reginfo->contextName = (context) ? strdup(context) : NULL;
-        reginfo->modes = HANDLER_CAN_RWRITE;
+        reginfo->modes = vp->acl == NETSNMP_OLDAPI_RONLY ? HANDLER_CAN_RONLY :
+                         HANDLER_CAN_RWRITE;
 
         /*
          * register ourselves in the mib tree 
          */
         if (netsnmp_register_handler(reginfo) != MIB_REGISTERED_OK) {
             /** netsnmp_handler_registration_free(reginfo); already freed */
-            SNMP_FREE(vp);
+            /* SNMP_FREE(vp); already freed */
         }
     }
     return SNMPERR_SUCCESS;
@@ -123,7 +141,7 @@
 /** registers a row within a mib table */
 int
 netsnmp_register_mib_table_row(const char *moduleName,
-                               struct variable *var,
+                               const struct variable *var,
                                size_t varsize,
                                size_t numvars,
                                oid * mibloc,
@@ -137,8 +155,8 @@
     oid             ubound = 0;
 
     for (i = 0; i < numvars; i++) {
-        struct variable *vr =
-            (struct variable *) ((char *) var + (i * varsize));
+        const struct variable *vr =
+            (const struct variable *) ((const char *) var + (i * varsize));
         netsnmp_handler_registration *r;
         if ( var_subid > (int)mibloclen ) {
             break;    /* doesn't make sense */
@@ -179,14 +197,15 @@
                      r->rootoid_len));
         DEBUGMSG(("netsnmp_register_mib_table_row", "(%d)\n",
                      (var_subid - vr->namelen)));
-        r->handler->myvoid = (void *) malloc(varsize);
+        r->handler->myvoid = netsnmp_duplicate_variable(vr);
+        r->handler->data_clone = (void *(*)(void *))netsnmp_duplicate_variable;
+        r->handler->data_free = free;
 
         if (r->handler->myvoid == NULL) {
             netsnmp_handler_registration_free(r);
             rc = MIB_REGISTRATION_FAILED;
             break;
         }
-        memcpy((char *) r->handler->myvoid, vr, varsize);
 
         r->contextName = (context) ? strdup(context) : NULL;
 
@@ -256,13 +275,13 @@
     int             status;
 
     struct variable *vp;
-    WriteMethod    *write_method = NULL;
-    size_t          len;
-    u_char         *access = NULL;
     netsnmp_old_api_cache *cacheptr;
     netsnmp_agent_session *oldasp = NULL;
-    oid             tmp_name[MAX_OID_LEN];
+    u_char         *access = NULL;
+    WriteMethod    *write_method = NULL;
+    size_t          len;
     size_t          tmp_len;
+    oid             tmp_name[MAX_OID_LEN];
 
     vp = (struct variable *) handler->myvoid;
 
@@ -293,7 +312,9 @@
         switch (reqinfo->mode) {
         case MODE_GET:
         case MODE_GETNEXT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_RESERVE1:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
             /*
              * Actually call the old mib-module function 
              */
@@ -324,7 +345,9 @@
                 /*
                  * result returned 
                  */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                 if (reqinfo->mode != MODE_SET_RESERVE1)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
                     snmp_set_var_typed_value(requests->requestvb,
                                              cvp->type, access, len);
             } else {
@@ -349,7 +372,9 @@
             /*
              * AAA: fall through for everything that is a set (see BBB) 
              */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             if (reqinfo->mode != MODE_SET_RESERVE1)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
                 break;
 
             cacheptr = SNMP_MALLOC_TYPEDEF(netsnmp_old_api_cache);
diff --git a/agent/helpers/read_only.c b/agent/helpers/read_only.c
index b85cfb5..0b06d4f 100644
--- a/agent/helpers/read_only.c
+++ b/agent/helpers/read_only.c
@@ -44,6 +44,7 @@
 
     switch (reqinfo->mode) {
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -52,6 +53,7 @@
     case MODE_SET_UNDO:
         netsnmp_request_set_error_all(requests, SNMP_ERR_NOTWRITABLE);
         return SNMP_ERR_NOTWRITABLE;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     case MODE_GET:
     case MODE_GETNEXT:
diff --git a/agent/helpers/row_merge.c b/agent/helpers/row_merge.c
index 93d3532..4a8e476 100644
--- a/agent/helpers/row_merge.c
+++ b/agent/helpers/row_merge.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -11,6 +12,12 @@
 #include <strings.h>
 #endif
 
+netsnmp_feature_provide(row_merge)
+netsnmp_feature_child_of(row_merge, row_merge_all)
+netsnmp_feature_child_of(row_merge_all, mib_helpers)
+
+
+#ifndef NETSNMP_FEATURE_REMOVE_ROW_MERGE
 /** @defgroup row_merge row_merge
  *  Calls sub handlers with request for one row at a time.
  *  @ingroup utilities
@@ -38,6 +45,8 @@
 
 /** functionally the same as calling netsnmp_register_handler() but also
  * injects a row_merge handler at the same time for you. */
+netsnmp_feature_child_of(register_row_merge, row_merge_all)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_ROW_MERGE
 int
 netsnmp_register_row_merge(netsnmp_handler_registration *reginfo)
 {
@@ -45,6 +54,7 @@
 		    netsnmp_get_row_merge_handler(reginfo->rootoid_len+1));
     return netsnmp_register_handler(reginfo);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_ROW_MERGE */
 
 static void
 _rm_status_free(void *mem)
@@ -362,5 +372,10 @@
     netsnmp_register_handler_by_name("row_merge",
                                      netsnmp_get_row_merge_handler(-1));
 }
+#else /* NETSNMP_FEATURE_REMOVE_ROW_MERGE */
+netsnmp_feature_unused(row_merge);
+#endif /* NETSNMP_FEATURE_REMOVE_ROW_MERGE */
+
+
 /**  @} */
 
diff --git a/agent/helpers/scalar.c b/agent/helpers/scalar.c
index b734c04..7a4c9e0 100644
--- a/agent/helpers/scalar.c
+++ b/agent/helpers/scalar.c
@@ -162,6 +162,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -180,6 +181,7 @@
             return ret;
         }
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     case MODE_GETNEXT:
         reginfo->rootoid[reginfo->rootoid_len++] = 0;
diff --git a/agent/helpers/scalar_group.c b/agent/helpers/scalar_group.c
index 09cee1a..6b7f098 100644
--- a/agent/helpers/scalar_group.c
+++ b/agent/helpers/scalar_group.c
@@ -15,6 +15,17 @@
 #include <net-snmp/agent/instance.h>
 #include <net-snmp/agent/serialize.h>
 
+static netsnmp_scalar_group*
+clone_scalar_group(netsnmp_scalar_group* src)
+{
+  netsnmp_scalar_group *t = SNMP_MALLOC_TYPEDEF(netsnmp_scalar_group);
+  if(t != NULL) {
+    t->lbound = src->lbound;
+    t->ubound = src->ubound;
+  }
+  return t;
+}
+
 /** @defgroup scalar_group_group scalar_group
  *  Process groups of scalars.
  *  @ingroup leaf
@@ -38,6 +49,8 @@
 	    sgroup->lbound = first;
 	    sgroup->ubound = last;
             ret->myvoid = (void *)sgroup;
+            ret->data_free = free;
+            ret->data_clone = (void *(*)(void *))clone_scalar_group;
 	}
     }
     return ret;
@@ -96,12 +109,14 @@
         ret = SNMP_NOSUCHOBJECT;
         /* Fallthrough */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
     case MODE_SET_COMMIT:
     case MODE_SET_UNDO:
     case MODE_SET_FREE:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         if (cmp != 0 ||
             requests->requestvb->name_length <= reginfo->rootoid_len) {
 	    /*
diff --git a/agent/helpers/snmp_get_statistic.c b/agent/helpers/snmp_get_statistic.c
index b9dac76..efac2ac 100644
--- a/agent/helpers/snmp_get_statistic.c
+++ b/agent/helpers/snmp_get_statistic.c
@@ -1,9 +1,19 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include <net-snmp/agent/snmp_get_statistic.h>
 
+netsnmp_feature_provide(helper_statistics)
+netsnmp_feature_child_of(helper_statistics, mib_helpers)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_HELPER_STATISTICS
+/* if we're not needed, then neither is this */
+netsnmp_feature_require(statistics)
+#endif
+
+#ifndef NETSNMP_FEATURE_REMOVE_HELPER_STATISTICS
 static int
 netsnmp_get_statistic_helper_handler(netsnmp_mib_handler *handler,
                                      netsnmp_handler_registration *reginfo,
@@ -46,3 +56,6 @@
                            netsnmp_get_statistic_handler(begin - start));
     return netsnmp_register_scalar_group(reginfo, start, start + (end - begin));
 }
+#else /* !NETSNMP_FEATURE_REMOVE_HELPER_GET_STATISTICS */
+netsnmp_feature_unused(helper_statistics);
+#endif /* !NETSNMP_FEATURE_REMOVE_HELPER_GET_STATISTICS */
diff --git a/agent/helpers/stash_cache.c b/agent/helpers/stash_cache.c
index c998363..5da1796 100644
--- a/agent/helpers/stash_cache.c
+++ b/agent/helpers/stash_cache.c
@@ -1,24 +1,25 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include <net-snmp/agent/stash_cache.h>
+netsnmp_feature_provide(stash_cache)
+netsnmp_feature_child_of(stash_cache, mib_helpers)
+#ifdef NETSNMP_FEATURE_REQUIRE_STASH_CACHE
+netsnmp_feature_require(oid_stash)
+netsnmp_feature_require(oid_stash_iterate)
+netsnmp_feature_require(oid_stash_get_data)
+#endif
 
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
 #include <net-snmp/agent/stash_to_next.h>
 
+#include <net-snmp/agent/stash_cache.h>
+
 extern NetsnmpCacheLoad _netsnmp_stash_cache_load;
 extern NetsnmpCacheFree _netsnmp_stash_cache_free;
  
-#ifdef HAVE_DMALLOC_H
-static void free_wrapper(void * p)
-{
-    free(p);
-}
-#else
-#define free_wrapper free
-#endif
-
 /** @defgroup stash_cache stash_cache
  *  Automatically caches data for certain handlers.
  *  This handler caches data in an optimized way which may alleviate
@@ -71,7 +72,7 @@
     }
 
     handler->myvoid = cinfo;
-    handler->data_free = &free_wrapper;
+    netsnmp_cache_handler_owns_cache(handler);
 
     return handler;
 }
@@ -246,3 +247,6 @@
 }
 /**  @} */
 
+#else /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
+netsnmp_feature_unused(stash_cache);
+#endif /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
diff --git a/agent/helpers/stash_to_next.c b/agent/helpers/stash_to_next.c
index f679e04..d7baffd 100644
--- a/agent/helpers/stash_to_next.c
+++ b/agent/helpers/stash_to_next.c
@@ -1,8 +1,18 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_provide(stash_to_next)
+netsnmp_feature_child_of(stash_to_next, mib_helpers)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_STASH_TO_NEXT
+netsnmp_feature_require(oid_stash)
+netsnmp_feature_require(oid_stash_add_data)
+#endif
+
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_TO_NEXT
 #include <net-snmp/agent/stash_to_next.h>
 
 #include <net-snmp/agent/stash_cache.h>
@@ -114,3 +124,6 @@
 }
 /**  @} */
 
+#else  /* ! NETSNMP_FEATURE_REMOVE_STASH_TO_NEXT */
+netsnmp_feature_unused(stash_to_next);
+#endif /* ! NETSNMP_FEATURE_REMOVE_STASH_TO_NEXT */
diff --git a/agent/helpers/table.c b/agent/helpers/table.c
index 9eb0132..882e84c 100644
--- a/agent/helpers/table.c
+++ b/agent/helpers/table.c
@@ -21,11 +21,16 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include <net-snmp/agent/table.h>
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(oid_stash)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 #if HAVE_STRING_H
 #include <string.h>
 #else
@@ -34,6 +39,13 @@
 
 #include <net-snmp/library/snmp_assert.h>
 
+netsnmp_feature_child_of(table_all, mib_helpers)
+
+netsnmp_feature_child_of(table_build_result, table_all)
+netsnmp_feature_child_of(table_get_or_create_row_stash, table_all)
+netsnmp_feature_child_of(registration_owns_table_info, table_all)
+netsnmp_feature_child_of(table_sparse, table_all)
+
 static void     table_helper_cleanup(netsnmp_agent_request_info *reqinfo,
                                      netsnmp_request_info *request,
                                      int status);
@@ -105,6 +117,31 @@
     return ret;
 }
 
+/** Configures a handler such that table registration information is freed by
+ *  netsnmp_handler_free(). Should only be called if handler->myvoid points to
+ *  an object of type netsnmp_table_registration_info.
+ */
+void netsnmp_handler_owns_table_info(netsnmp_mib_handler *handler)
+{
+    netsnmp_assert(handler);
+    netsnmp_assert(handler->myvoid);
+    handler->data_clone
+	= (void *(*)(void *)) netsnmp_table_registration_info_clone;
+    handler->data_free
+	= (void (*)(void *)) netsnmp_table_registration_info_free;
+}
+
+/** Configures a handler such that table registration information is freed by
+ *  netsnmp_handler_free(). Should only be called if reg->handler->myvoid
+ *  points to an object of type netsnmp_table_registration_info.
+ */
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTRATION_OWNS_TABLE_INFO
+void netsnmp_registration_owns_table_info(netsnmp_handler_registration *reg)
+{
+    if (reg)
+        netsnmp_handler_owns_table_info(reg->handler);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTRATION_OWNS_TABLE_INFO */
 
 /** creates a table handler given the netsnmp_table_registration_info object,
  *  inserts it into the request chain and then calls
@@ -126,7 +163,6 @@
 {
     /* Locate "this" reginfo */
     /* SNMP_FREE(reginfo->myvoid); */
-    /* reginfo->myvoid = NULL; */
     return netsnmp_unregister_handler(reginfo);
 }
 
@@ -212,15 +248,20 @@
      * in the netsnmp_agent_request_info. 
      */
     if (netsnmp_agent_get_list_data(reqinfo, handler->next->handler_name)) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (MODE_IS_SET(reqinfo->mode)) {
             return netsnmp_call_next_handler(handler, reginfo, reqinfo,
                                              requests);
         } else {
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 /** XXX-rks: memory leak. add cleanup handler? */
             netsnmp_free_agent_data_sets(reqinfo);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if ( MODE_IS_SET(reqinfo->mode) &&
          (reqinfo->mode != MODE_SET_RESERVE1)) {
         /*
@@ -236,6 +277,7 @@
             need_processing = 1;
     }
     else {
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         /*
          * for GETS, only continue if we have at least one valid request.
          * for RESERVE1, only continue if we have indexes for all requests.
@@ -271,6 +313,7 @@
             continue;
         }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (reqinfo->mode == MODE_SET_RESERVE1) {
             DEBUGIF("helper:table:set") {
                 u_char         *buf = NULL;
@@ -298,6 +341,7 @@
                 }
             }
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         /*
          * check to make sure its in table range 
@@ -353,10 +397,13 @@
             /*
              *  Reject requests of the form 'myTable.N'   (N != 1)
              */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             if (reqinfo->mode == MODE_SET_RESERVE1)
                 table_helper_cleanup(reqinfo, request,
                                      SNMP_ERR_NOTWRITABLE);
-            else if (reqinfo->mode == MODE_GET)
+            else
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+            if (reqinfo->mode == MODE_GET)
                 table_helper_cleanup(reqinfo, request,
                                      SNMP_NOSUCHOBJECT);
             continue;
@@ -428,10 +475,12 @@
                 /*
                  *  Reject requests of the form 'myEntry.N'   (invalid N)
                  */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                 if (reqinfo->mode == MODE_SET_RESERVE1)
                     table_helper_cleanup(reqinfo, request,
                                          SNMP_ERR_NOTWRITABLE);
                 else if (reqinfo->mode == MODE_GET)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                     table_helper_cleanup(reqinfo, request,
                                          SNMP_NOSUCHOBJECT);
                 continue;
@@ -499,8 +548,10 @@
              */
             if (reqinfo->mode == MODE_GET ) {
                 table_helper_cleanup(reqinfo, request, SNMP_NOSUCHOBJECT);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             } else if (reqinfo->mode == MODE_SET_RESERVE1 ) {
                 table_helper_cleanup(reqinfo, request, SNMP_ERR_NOTWRITABLE);
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
             }
             continue;
         }
@@ -623,6 +674,7 @@
             DEBUGMSGTL(("helper:table",
                         "invalid index(es) for table - skipping\n"));
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             if ( MODE_IS_SET(reqinfo->mode) ) {
                 /*
                  * no point in continuing without indexes for set.
@@ -635,6 +687,7 @@
                 need_processing = 0; /* don't call next handler */
                 break;
             }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
             table_helper_cleanup(reqinfo, request, SNMP_NOSUCHINSTANCE);
             continue;
         }
@@ -643,7 +696,9 @@
         ++need_processing;
 
     }                           /* for each request */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * bail if there is nothing for our child handlers
@@ -756,6 +811,7 @@
 
 /** create sparse table handler
  */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_SPARSE
 netsnmp_mib_handler *
 netsnmp_sparse_table_handler_get(void)
 {
@@ -802,8 +858,10 @@
     /** both handlers now in reginfo, so nothing to do on error */
     return netsnmp_register_handler(reginfo);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_SPARSE */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_BUILD_RESULT
 /** Builds the result to be returned to the agent given the table information.
  *  Use this function to return results from lowel level handlers to
  *  the agent.  It takes care of building the proper resulting oid
@@ -837,7 +895,6 @@
     return SNMPERR_SUCCESS;
 }
 
-
 /** given a registration info object, a request object and the table
  *  info object it builds the request->requestvb->name oid from the
  *  index values and column information found in the table_info
@@ -874,6 +931,7 @@
 
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_BUILD_RESULT */
 
 /** given a registration info object, a request object and the table
  *  info object it builds the request->requestvb->name oid from the
@@ -992,6 +1050,22 @@
     return 0;
 }
 
+netsnmp_table_registration_info *
+netsnmp_table_registration_info_clone(netsnmp_table_registration_info *tri)
+{
+    netsnmp_table_registration_info *copy;
+    copy = malloc(sizeof(*copy));
+    if (copy) {
+        *copy = *tri;
+        copy->indexes = snmp_clone_varbind(tri->indexes);
+        if (!copy->indexes) {
+            free(copy);
+            copy = NULL;
+        }
+    }
+    return copy;
+}
+
 void
 netsnmp_table_registration_info_free(netsnmp_table_registration_info *tri)
 {
@@ -1150,6 +1224,7 @@
     va_end(debugargs);
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 static void
 _row_stash_data_list_free(void *ptr) {
     netsnmp_oid_stash_node **tmp = (netsnmp_oid_stash_node **)ptr;
@@ -1157,6 +1232,7 @@
     free(ptr);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_GET_OR_CREATE_ROW_STASH
 /** returns a row-wide place to store data in.
     @todo This function will likely change to add free pointer functions. */
 netsnmp_oid_stash_node **
@@ -1183,6 +1259,8 @@
     }
     return stashp;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_GET_OR_CREATE_ROW_STASH */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * advance the table info colnum to the next column, or 0 if there are no more
diff --git a/agent/helpers/table_array.c b/agent/helpers/table_array.c
index b998929..7c98aae 100644
--- a/agent/helpers/table_array.c
+++ b/agent/helpers/table_array.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -20,6 +21,15 @@
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/snmp_assert.h>
 
+netsnmp_feature_child_of(table_array_all, mib_helpers)
+
+netsnmp_feature_child_of(table_array_register,table_array_all)
+netsnmp_feature_child_of(table_array_find_table_array_handler,table_array_all)
+netsnmp_feature_child_of(table_array_extract_array_context,table_array_all)
+netsnmp_feature_child_of(table_array_check_row_status,table_array_all)
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER
+
 /*
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_BEGIN        -1 
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_RESERVE1     0 
@@ -194,6 +204,7 @@
     return netsnmp_register_table(reginfo, tabreg);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_REGISTER
 int
 netsnmp_table_array_register(netsnmp_handler_registration *reginfo,
                              netsnmp_table_registration_info *tabreg,
@@ -207,8 +218,10 @@
     return netsnmp_table_container_register(reginfo, tabreg, cb,
                                             container, group_rows);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_REGISTER */
 
 /** find the handler for the table_array helper. */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_FIND_TABLE_ARRAY_HANDLER
 netsnmp_mib_handler *
 netsnmp_find_table_array_handler(netsnmp_handler_registration *reginfo)
 {
@@ -224,15 +237,19 @@
 
     return mh;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_FIND_TABLE_ARRAY_HANDLER */
 
 /** find the context data used by the table_array helper */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_EXTRACT_ARRAY_CONTEXT
 netsnmp_container      *
 netsnmp_extract_array_context(netsnmp_request_info *request)
 {
     return (netsnmp_container*)netsnmp_request_get_list_data(request, TABLE_ARRAY_NAME);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_EXTRACT_ARRAY_CONTEXT */
 
 /** this function is called to validate RowStatus transitions. */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_CHECK_ROW_STATUS
 int
 netsnmp_table_array_check_row_status(netsnmp_table_array_callbacks *cb,
                                      netsnmp_request_group *ag,
@@ -311,6 +328,7 @@
 
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_CHECK_ROW_STATUS */
 
 /** @} */
 
@@ -345,37 +363,13 @@
 /*
  * context info for SET requests
  */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 typedef struct set_context_s {
     netsnmp_agent_request_info *agtreq_info;
     table_container_data *tad;
     int             status;
 } set_context;
-
-static void
-release_netsnmp_request_group(netsnmp_index *g, void *v)
-{
-    netsnmp_request_group_item *tmp;
-    netsnmp_request_group *group = (netsnmp_request_group *) g;
-
-    if (!g)
-        return;
-    while (group->list) {
-        tmp = group->list;
-        group->list = tmp->next;
-        free(tmp);
-    }
-
-    free(group);
-}
-
-static void
-release_netsnmp_request_groups(void *vp)
-{
-    netsnmp_container *c = (netsnmp_container*)vp;
-    CONTAINER_FOR_EACH(c, (netsnmp_container_obj_func*)
-                       release_netsnmp_request_group, NULL);
-    CONTAINER_FREE(c);
-}
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 void
 build_new_oid(netsnmp_handler_registration *reginfo,
@@ -600,10 +594,12 @@
         row = g->existing_row = (netsnmp_index*)CONTAINER_FIND(tad->table, &index);
         if (!g->existing_row) {
             if (!tad->cb->create_row) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                 if(MODE_IS_SET(agtreq_info->mode))
                     netsnmp_set_request_error(agtreq_info, current,
                                               SNMP_ERR_NOTWRITABLE);
                 else
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                     netsnmp_set_request_error(agtreq_info, current,
                                               SNMP_NOSUCHINSTANCE);
                 free(g);
@@ -632,6 +628,33 @@
     } /** for( current ... ) */
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+static void
+release_netsnmp_request_group(netsnmp_index *g, void *v)
+{
+    netsnmp_request_group_item *tmp;
+    netsnmp_request_group *group = (netsnmp_request_group *) g;
+
+    if (!g)
+        return;
+    while (group->list) {
+        tmp = group->list;
+        group->list = tmp->next;
+        free(tmp);
+    }
+
+    free(group);
+}
+
+static void
+release_netsnmp_request_groups(void *vp)
+{
+    netsnmp_container *c = (netsnmp_container*)vp;
+    CONTAINER_FOR_EACH(c, (netsnmp_container_obj_func*)
+                       release_netsnmp_request_group, NULL);
+    CONTAINER_FREE(c);
+}
+
 static void
 process_set_group(netsnmp_index *o, void *c)
 {
@@ -825,6 +848,7 @@
 
     return context.status;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 
 /**********************************************************************
@@ -860,6 +884,7 @@
                     mode_name[agtreq_info->mode]));
     }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (MODE_IS_SET(agtreq_info->mode)) {
         /*
          * netsnmp_mutex_lock(&tad->lock);
@@ -870,6 +895,7 @@
          * netsnmp_mutex_unlock(&tad->lock);
          */
     } else
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         rc = process_get_requests(reginfo, agtreq_info, requests, tad);
 
     if (rc != SNMP_ERR_NOERROR) {
@@ -889,4 +915,5 @@
     
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER */
 /** @endcond */
diff --git a/agent/helpers/table_container.c b/agent/helpers/table_container.c
index 82c7f29..08e9741 100644
--- a/agent/helpers/table_container.c
+++ b/agent/helpers/table_container.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -20,6 +21,17 @@
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/snmp_assert.h>
 
+netsnmp_feature_provide(table_container)
+netsnmp_feature_child_of(table_container, table_container_all)
+netsnmp_feature_child_of(table_container_replace_row, table_container_all)
+netsnmp_feature_child_of(table_container_extract, table_container_all)
+netsnmp_feature_child_of(table_container_management, table_container_all)
+netsnmp_feature_child_of(table_container_row_remove, table_container_all)
+netsnmp_feature_child_of(table_container_row_insert, table_container_all)
+netsnmp_feature_child_of(table_container_all, mib_helpers)
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER
+
 /*
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_BEGIN        -1 
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_RESERVE1     0 
@@ -35,6 +47,9 @@
  */
 typedef struct container_table_data_s {
 
+    /** Number of handlers whose myvoid pointer points to this structure. */
+    int refcnt;
+
    /** registration info for the table */
     netsnmp_table_registration_info *tblreg_info;
 
@@ -160,6 +175,7 @@
  *
  * ================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_MANAGEMENT
 container_table_data *
 netsnmp_tcontainer_create_table( const char *name,
                                  netsnmp_container *container, long flags )
@@ -204,6 +220,7 @@
     SNMP_FREE(table);
     return;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_MANAGEMENT */
 
     /*
      * The various standalone row operation routines
@@ -230,6 +247,7 @@
     return NULL;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_REPLACE_ROW
 int
 netsnmp_tcontainer_replace_row( container_table_data *table,
                                 netsnmp_index *old_row, netsnmp_index *new_row )
@@ -240,6 +258,7 @@
     netsnmp_tcontainer_add_row(    table, new_row );
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_REPLACE_ROW */
 
     /* netsnmp_tcontainer_remove_delete_row() will be table-specific too */
 
@@ -250,6 +269,20 @@
  *
  * ================================== */
 
+static container_table_data *
+netsnmp_container_table_data_clone(container_table_data *tad)
+{
+    ++tad->refcnt;
+    return tad;
+}
+
+static void
+netsnmp_container_table_data_free(container_table_data *tad)
+{
+    if (--tad->refcnt == 0)
+	free(tad);
+}
+
 /** returns a netsnmp_mib_handler object for the table_container helper */
 netsnmp_mib_handler *
 netsnmp_container_table_handler_get(netsnmp_table_registration_info *tabreg,
@@ -274,6 +307,7 @@
         return NULL;
     }
 
+    tad->refcnt = 1;
     tad->tblreg_info = tabreg;  /* we need it too, but it really is not ours */
     if(key_type)
         tad->key_type = key_type;
@@ -290,6 +324,8 @@
         container->ncompare = netsnmp_ncompare_netsnmp_index;
     
     handler->myvoid = (void*)tad;
+    handler->data_clone = (void *(*)(void *))netsnmp_container_table_data_clone;
+    handler->data_free = (void (*)(void *))netsnmp_container_table_data_free;
     handler->flags |= MIB_HANDLER_AUTO_NEXT;
     
     return handler;
@@ -328,19 +364,23 @@
     if (tad) {
         CONTAINER_FREE( tad->table );
         tad->table = NULL;
-        free(tad);
-        reginfo->handler->myvoid = NULL;
+	/*
+	 * Note: don't free the memory tad points at here - that is done
+	 * by netsnmp_container_table_data_free().
+	 */
     }
     return netsnmp_unregister_table( reginfo );
 }
 
 /** retrieve the container used by the table_container helper */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_EXTRACT
 netsnmp_container*
 netsnmp_container_table_container_extract(netsnmp_request_info *request)
 {
     return (netsnmp_container *)
          netsnmp_request_get_list_data(request, TABLE_CONTAINER_CONTAINER);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_EXTRACT */
 
 #ifndef NETSNMP_USE_INLINE
 /** find the context data used by the table_container helper */
@@ -365,6 +405,7 @@
 }
 #endif /* inline */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_ROW_INSERT
 /** inserts a newly created table_container entry into a request list */
 void
 netsnmp_container_table_row_insert(netsnmp_request_info *request,
@@ -432,7 +473,9 @@
         }
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_ROW_INSERT */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_ROW_REMOVE
 /** removes a table_container entry from a request list */
 void
 netsnmp_container_table_row_remove(netsnmp_request_info *request,
@@ -499,6 +542,7 @@
         }
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_ROW_REMOVE */
 
 /** @cond */
 /**********************************************************************
@@ -610,11 +654,15 @@
              * not results found. For a get, that is an error
              */
             DEBUGMSGTL(("table_container", "no row found\n"));
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             if((agtreq_info->mode != MODE_SET_RESERVE1) || /* get */
                (reginfo->modes & HANDLER_CAN_NOT_CREATE)) { /* no create */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                 netsnmp_set_request_error(agtreq_info, request,
                                           SNMP_NOSUCHINSTANCE);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         }
     } /** GET/SET */
     
@@ -676,7 +724,11 @@
      * registration.
      */
     oldmode = agtreq_info->mode;
-    if(MODE_IS_GET(oldmode) || (MODE_SET_RESERVE1 == oldmode)) {
+    if(MODE_IS_GET(oldmode)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+       || (MODE_SET_RESERVE1 == oldmode)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+        ) {
         netsnmp_request_info *curr_request;
         /*
          * Loop through each of the requests, and
@@ -816,4 +868,9 @@
  *
  * ================================== */
 
+#else /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER */
+netsnmp_feature_unused(table_container);
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER */
 /** @} */
+
+
diff --git a/agent/helpers/table_data.c b/agent/helpers/table_data.c
index c3a7f9e..659d903 100644
--- a/agent/helpers/table_data.c
+++ b/agent/helpers/table_data.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -14,6 +15,27 @@
 #include <net-snmp/agent/table.h>
 #include <net-snmp/agent/read_only.h>
 
+netsnmp_feature_child_of(table_data_all, mib_helpers)
+
+netsnmp_feature_child_of(table_data, table_data_all)
+netsnmp_feature_child_of(register_read_only_table_data, table_data_all)
+netsnmp_feature_child_of(extract_table_row_data, table_data_all)
+netsnmp_feature_child_of(insert_table_row, table_data_all)
+netsnmp_feature_child_of(table_data_delete_table, table_data_all)
+
+netsnmp_feature_child_of(table_data_extras, table_data_all)
+
+netsnmp_feature_child_of(table_data_create_table, table_data_extras)
+netsnmp_feature_child_of(table_data_create_row, table_data_extras)
+netsnmp_feature_child_of(table_data_copy_row, table_data_extras)
+netsnmp_feature_child_of(table_data_remove_delete_row, table_data_extras)
+netsnmp_feature_child_of(table_data_unregister, table_data_extras)
+netsnmp_feature_child_of(table_data_row_count, table_data_extras)
+netsnmp_feature_child_of(table_data_row_operations, table_data_extras)
+netsnmp_feature_child_of(table_data_row_first, table_data_extras)
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA
+
 /** @defgroup table_data table_data
  *  Helps you implement a table with datamatted storage.
  *  @ingroup table
@@ -90,6 +112,7 @@
         newrow->index_oid =
             snmp_duplicate_objid(row->index_oid, row->index_oid_len);
         if (!newrow->index_oid) {
+            free(newrow->indexes);
             free(newrow);
             return NULL;
         }
@@ -287,12 +310,15 @@
      * Generic API - mostly renamed wrappers
      * ===================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_CREATE_TABLE
 netsnmp_table_data *
 netsnmp_table_data_create_table(const char *name, long flags)
 {
     return netsnmp_create_table_data( name );
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_CREATE_TABLE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_DELETE_TABLE
 void
 netsnmp_table_data_delete_table( netsnmp_table_data *table )
 {
@@ -312,14 +338,13 @@
     }
     table->first_row = NULL;
 
-    if (table->name) {
-        SNMP_FREE(table->name);
-        table->name = NULL;
-    }
+    SNMP_FREE(table->name);
     SNMP_FREE(table);
     return;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_DELETE_TABLE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_CREATE_ROW
 netsnmp_table_row *
 netsnmp_table_data_create_row( void* entry )
 {
@@ -328,9 +353,11 @@
         row->data = entry;
     return row;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_CREATE_ROW */
 
     /* netsnmp_table_data_clone_row() defined above */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_COPY_ROW
 int
 netsnmp_table_data_copy_row( netsnmp_table_row  *old_row,
                              netsnmp_table_row  *new_row )
@@ -348,6 +375,7 @@
     /* XXX - Doesn't copy table-specific row structure */
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_COPY_ROW */
 
     /*
      * netsnmp_table_data_delete_row()
@@ -357,12 +385,14 @@
      *     all defined above
      */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_REMOVE_DELETE_ROW
 void *
 netsnmp_table_data_remove_delete_row(netsnmp_table_data *table,
                                      netsnmp_table_row *row)
 {
     return netsnmp_table_data_remove_and_delete_row(table, row);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_REMOVE_DELETE_ROW */
 
 
 /* ==================================
@@ -404,6 +434,8 @@
     return netsnmp_register_table(reginfo, table_info);
 }
 
+
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_TABLE_DATA
 /** registers a handler as a read-only data table
  *  If table_info != NULL, it registers it as a normal table too. */
 int
@@ -414,13 +446,16 @@
     netsnmp_inject_handler(reginfo, netsnmp_get_read_only_handler());
     return netsnmp_register_table_data(reginfo, table, table_info);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_TABLE_DATA */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_UNREGISTER
 int
 netsnmp_unregister_table_data(netsnmp_handler_registration *reginfo)
 {
     /* free table; */
     return netsnmp_unregister_table(reginfo);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_UNREGISTER */
 
 /*
  * The helper handler that takes care of passing a specific row of
@@ -453,7 +488,9 @@
         switch (reqinfo->mode) {
         case MODE_GET:
         case MODE_GETNEXT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_RESERVE1:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
             netsnmp_request_add_list_data(request,
                                       netsnmp_create_data_list(
                                           TABLE_DATA_TABLE, table, NULL));
@@ -527,9 +564,7 @@
                         /*
                          * equal match, return the next row 
                          */
-                        if (row) {
-                            row = row->next;
-                        }
+                        row = row->next;
                         break;
                     } else if (result > 0) {
                         /*
@@ -606,6 +641,7 @@
             }
             break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_RESERVE1:
             valid_request = 1;
             if (NULL !=
@@ -630,6 +666,7 @@
         case MODE_SET_FREE:
         case MODE_SET_UNDO:
             valid_request = 1;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         }
     }
@@ -672,6 +709,7 @@
                                                                TABLE_DATA_ROW);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_EXTRACT_TABLE_ROW_DATA
 /** extracts the data from the row being accessed passed from the
  * table_data helper */
 void           *
@@ -684,7 +722,9 @@
     else
         return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_EXTRACT_TABLE_ROW_DATA */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INSERT_TABLE_ROW
 /** inserts a newly created table_data row into a request */
 void
 netsnmp_insert_table_row(netsnmp_request_info *request,
@@ -749,6 +789,7 @@
         }
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INSERT_TABLE_ROW */
 
 /* builds a result given a row, a varbind to set and the data */
 int
@@ -860,11 +901,13 @@
      * Generic API - mostly renamed wrappers
      * ===================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_FIRST
 netsnmp_table_row *
 netsnmp_table_data_row_first(netsnmp_table_data *table)
 {
     return netsnmp_table_data_get_first_row(table);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_FIRST */
 
 netsnmp_table_row *
 netsnmp_table_data_row_get(  netsnmp_table_data *table,
@@ -929,11 +972,13 @@
     return netsnmp_table_data_row_next_byoid(table, instance, len);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_COUNT
 int
 netsnmp_table_data_row_count(netsnmp_table_data *table)
 {
     return netsnmp_table_data_num_rows(table);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_COUNT */
 
 
 /* ==================================
@@ -943,6 +988,7 @@
  *
  * ================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_OPERATIONS
 void *
 netsnmp_table_data_entry_first(netsnmp_table_data *table)
 {
@@ -1002,6 +1048,7 @@
         netsnmp_table_data_row_next_byoid(table, instance, len);
     return (row ? row->data : NULL );
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_OPERATIONS */
 
     /* =====================================
      * Generic API - mostly renamed wrappers
@@ -1013,5 +1060,9 @@
  *
  * ================================== */
 
+#else /* NETSNMP_FEATURE_REMOVE_TABLE_DATA */
+netsnmp_feature_unused(table_data);
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA */
+
 /** @} 
  */
diff --git a/agent/helpers/table_dataset.c b/agent/helpers/table_dataset.c
index 2403b2f..931c27a 100644
--- a/agent/helpers/table_dataset.c
+++ b/agent/helpers/table_dataset.c
@@ -1,5 +1,7 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -11,6 +13,34 @@
 #include <strings.h>
 #endif
 
+netsnmp_feature_child_of(table_dataset_all, mib_helpers)
+netsnmp_feature_child_of(table_dataset, table_dataset_all)
+netsnmp_feature_child_of(table_dataset_remove_row, table_dataset_all)
+netsnmp_feature_child_of(table_data_set_column, table_dataset_all)
+netsnmp_feature_child_of(table_dataset_get_newrow, table_dataset_all)
+netsnmp_feature_child_of(table_set_add_indexes, table_dataset_all)
+netsnmp_feature_child_of(delete_table_data_set, table_dataset_all)
+netsnmp_feature_child_of(table_set_multi_add_default_row, table_dataset_all)
+netsnmp_feature_child_of(table_dataset_unregister_auto_data_table, table_dataset_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_TABLE_DATASET
+netsnmp_feature_require(table_get_or_create_row_stash)
+netsnmp_feature_require(table_data_delete_table)
+netsnmp_feature_require(table_data)
+netsnmp_feature_require(oid_stash_get_data)
+netsnmp_feature_require(oid_stash_add_data)
+#endif /* NETSNMP_FEATURE_REQUIRE_TABLE_DATASET */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATASET
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(oid_stash)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+#ifndef NETSNMP_DISABLE_MIB_LOADING
+netsnmp_feature_require(mib_to_asn_type)
+#endif /* NETSNMP_DISABLE_MIB_LOADING */
+
 static netsnmp_data_list *auto_tables;
 
 typedef struct data_set_tables_s {
@@ -134,6 +164,7 @@
 }
 
 /** removes a row from the table, but doesn't delete/free the column values */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATASET_REMOVE_ROW
 NETSNMP_INLINE void
 netsnmp_table_dataset_remove_row(netsnmp_table_data_set *table,
                                  netsnmp_table_row *row)
@@ -143,6 +174,7 @@
 
     netsnmp_table_data_remove_and_delete_row(table->table, row);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET_REMOVE_ROW */
 
 /** removes a row from the table and then deletes it (and all its data) */
 NETSNMP_INLINE void
@@ -172,6 +204,7 @@
     return table_set;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_DELETE_TABLE_DATA_SET
 void netsnmp_delete_table_data_set(netsnmp_table_data_set *table_set)
 {
     netsnmp_table_data_set_storage *ptr, *next;
@@ -190,6 +223,7 @@
     netsnmp_table_data_delete_table(table_set->table);
     free(table_set);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DELETE_TABLE_DATA_SET */
 
 /** clones a dataset row, including all data. */
 netsnmp_table_row *
@@ -250,9 +284,10 @@
     for (; defrow; defrow = defrow->next) {
         netsnmp_set_row_column(row, defrow->column, defrow->type,
                                defrow->data.voidp, defrow->data_len);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (defrow->writable)
             netsnmp_mark_row_column_writable(row, defrow->column, 1);
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return row;
 }
@@ -327,6 +362,7 @@
  *  this is a wrapper around calling netsnmp_table_set_add_default_row
  *  repeatedly for you.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_SET_MULTI_ADD_DEFAULT_ROW
 void
 netsnmp_table_set_multi_add_default_row(netsnmp_table_data_set *tset, ...)
 {
@@ -349,7 +385,7 @@
 
     va_end(debugargs);
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_SET_MULTI_ADD_DEFAULT_ROW */
 
 /* ==================================
  *
@@ -389,6 +425,8 @@
                                 netsnmp_table_data_set *data_set,
                                 netsnmp_table_registration_info *table_info)
 {
+    int ret;
+
     if (NULL == table_info) {
         /*
          * allocate the table if one wasn't allocated 
@@ -426,8 +464,11 @@
 
     netsnmp_inject_handler(reginfo,
                            netsnmp_get_table_data_set_handler(data_set));
-    return netsnmp_register_table_data(reginfo, data_set->table,
+    ret = netsnmp_register_table_data(reginfo, data_set->table,
                                        table_info);
+    if (ret == SNMPERR_SUCCESS && reginfo->handler)
+        netsnmp_handler_owns_table_info(reginfo->handler->next);
+    return ret;
 }
 
 newrow_stash   *
@@ -488,6 +529,7 @@
         row = netsnmp_extract_table_row(request);
         table_info = netsnmp_extract_table_info(request);
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (MODE_IS_SET(reqinfo->mode)) {
 
             /*
@@ -556,12 +598,17 @@
                 reqinfo->mode == MODE_SET_RESERVE2)
                 row = newrow;
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         if (row)
             data = (netsnmp_table_data_set_storage *) row->data;
 
         if (!row || !table_info || !data) {
-            if (!MODE_IS_SET(reqinfo->mode) || !table_info) {
+            if (!table_info
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+                || !MODE_IS_SET(reqinfo->mode)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+                ) {
                 netsnmp_set_request_error(reqinfo, request,
                                           SNMP_NOSUCHINSTANCE);
                 continue;
@@ -592,6 +639,7 @@
             }
             break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_RESERVE1:
             if (data) {
                 /*
@@ -808,6 +856,12 @@
 		newrow = NULL;
             }
             break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+        default:
+            snmp_log(LOG_ERR,
+                     "table_dataset: unknown mode passed into the handler\n");
+            return SNMP_ERR_GENERR;
         }
     }
 
@@ -828,6 +882,7 @@
 /**
  * extracts a netsnmp_table_data_set pointer from a given request
  */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_SET_COLUMN
 netsnmp_table_data_set_storage *
 netsnmp_extract_table_data_set_column(netsnmp_request_info *request,
                                      unsigned int column)
@@ -839,7 +894,7 @@
     }
     return data;
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_SET_COLUMN */
 
 /* ==================================
  *
@@ -867,9 +922,23 @@
     if (!registration_name) {
         registration_name = table_set->table->name;
     }
-    netsnmp_add_list_data(&auto_tables, netsnmp_create_data_list(registration_name, tables, NULL));     /* XXX */
+    netsnmp_add_list_data(&auto_tables,
+                          netsnmp_create_data_list(registration_name,
+                                                   tables, free));     /* XXX */
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATASET_UNREGISTER_AUTO_DATA_TABLE
+/** Undo the effect of netsnmp_register_auto_data_table().
+ */
+void
+netsnmp_unregister_auto_data_table(netsnmp_table_data_set *table_set,
+				   char *registration_name)
+{
+    netsnmp_remove_list_node(&auto_tables, registration_name
+			     ? registration_name : table_set->table->name);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET_UNREGISTER_AUTO_DATA_TABLE */
+
 #ifndef NETSNMP_DISABLE_MIB_LOADING
 static void
 _table_set_add_indexes(netsnmp_table_data_set *table_set, struct tree *tp)
@@ -1132,8 +1201,10 @@
                     "adding data at column %d of type %d\n", dr->column,
                     dr->type));
         netsnmp_set_row_column(row, dr->column, dr->type, buf, buf_size);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (dr->writable)
             netsnmp_mark_row_column_writable(row, dr->column, 1);       /* make writable */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     rc = netsnmp_table_data_add_row(tables->table_set->table, row);
     if (SNMPERR_SUCCESS != rc) {
@@ -1146,6 +1217,7 @@
 }
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 netsnmp_oid_stash_node **
 netsnmp_table_dataset_get_or_create_stash(netsnmp_agent_request_info *reqinfo,
                                           netsnmp_table_data_set *datatable,
@@ -1176,6 +1248,7 @@
     return stashp;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATASET_GET_NEWROW
 netsnmp_table_row *
 netsnmp_table_dataset_get_newrow(netsnmp_request_info *request,
                                  netsnmp_agent_request_info *reqinfo,
@@ -1199,6 +1272,8 @@
 
     return newrowstash->newrow;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET_GET_NEWROW */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /* ==================================
  *
@@ -1247,6 +1322,7 @@
     return start;
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 /**
  * marks a given column in a row as writable or not.
  */
@@ -1280,6 +1356,7 @@
     }
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /**
  * Sets a given column in a row with data given a type, value,
@@ -1354,6 +1431,7 @@
     return SNMPERR_SUCCESS;
 }
 
+
 /* ==================================
  *
  * Data Set API: Index operations
@@ -1371,6 +1449,7 @@
 
 /** adds multiple indexes to a table_dataset helper object.
  *  To end the list, use a 0 after the list of ASN index types. */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_SET_ADD_INDEXES
 void
 netsnmp_table_set_add_indexes(netsnmp_table_data_set *tset,
                               ...)
@@ -1386,6 +1465,10 @@
 
     va_end(debugargs);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_SET_ADD_INDEXES */
 
+#else /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET */
+netsnmp_feature_unused(table_dataset);
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET */
 /** @} 
  */
diff --git a/agent/helpers/table_iterator.c b/agent/helpers/table_iterator.c
index 87c7412..8ed5cd0 100644
--- a/agent/helpers/table_iterator.c
+++ b/agent/helpers/table_iterator.c
@@ -84,6 +84,7 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -99,6 +100,18 @@
 #include <net-snmp/agent/serialize.h>
 #include <net-snmp/agent/stash_cache.h>
 
+netsnmp_feature_child_of(table_iterator_all, mib_helpers)
+
+netsnmp_feature_child_of(table_iterator_insert_context, table_iterator_all)
+netsnmp_feature_child_of(table_iterator_create_table, table_iterator_all)
+netsnmp_feature_child_of(table_iterator_row_first, table_iterator_all)
+netsnmp_feature_child_of(table_iterator_row_count, table_iterator_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_STASH_CACHE
+netsnmp_feature_require(data_list_get_list_node)
+netsnmp_feature_require(oid_stash_add_data)
+#endif /* NETSNMP_FEATURE_REQUIRE_STASH_CACHE */
+
 /* ==================================
  *
  * Iterator API: Table maintenance
@@ -117,6 +130,7 @@
      *
      * Time will show whether this is a sensible approach or not.
      */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_CREATE_TABLE
 netsnmp_iterator_info *
 netsnmp_iterator_create_table( Netsnmp_First_Data_Point *firstDP,
                                Netsnmp_Next_Data_Point  *nextDP,
@@ -137,7 +151,9 @@
 
     return iinfo;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_CREATE_TABLE */
 
+/** Free the memory that was allocated for a table iterator. */
 void
 netsnmp_iterator_delete_table( netsnmp_iterator_info *iinfo )
 {
@@ -148,6 +164,7 @@
         snmp_free_varbind( iinfo->indexes );
         iinfo->indexes = NULL;
     }
+    netsnmp_table_registration_info_free(iinfo->table_reginfo);
     SNMP_FREE( iinfo );
 }
 
@@ -165,7 +182,37 @@
  *
  * ================================== */
 
-/** returns a netsnmp_mib_handler object for the table_iterator helper */
+static netsnmp_iterator_info *
+netsnmp_iterator_ref(netsnmp_iterator_info *iinfo)
+{
+    iinfo->refcnt++;
+    return iinfo;
+}
+
+static void
+netsnmp_iterator_deref(netsnmp_iterator_info *iinfo)
+{
+    if (--iinfo->refcnt == 0)
+        netsnmp_iterator_delete_table(iinfo);
+}
+
+void netsnmp_handler_owns_iterator_info(netsnmp_mib_handler *h)
+{
+    netsnmp_assert(h);
+    netsnmp_assert(h->myvoid);
+    ((netsnmp_iterator_info *)(h->myvoid))->refcnt++;
+    h->data_clone = (void *(*)(void *))netsnmp_iterator_ref;
+    h->data_free  = (void(*)(void *))netsnmp_iterator_deref;
+}
+
+/**
+ * Returns a netsnmp_mib_handler object for the table_iterator helper.
+ *
+ * The caller remains the owner of the iterator information object if
+ * the flag NETSNMP_HANDLER_OWNS_IINFO has not been set, and the created
+ * handler becomes the owner of the iterator information if the flag
+ * NETSNMP_HANDLER_OWNS_IINFO has been set.
+ */
 netsnmp_mib_handler *
 netsnmp_get_table_iterator_handler(netsnmp_iterator_info *iinfo)
 {
@@ -182,6 +229,8 @@
         return NULL;
 
     me->myvoid = iinfo;
+    if (iinfo->flags & NETSNMP_HANDLER_OWNS_IINFO)
+        netsnmp_handler_owns_iterator_info(me);
     return me;
 }
 
@@ -195,7 +244,11 @@
  *
  * @param reginfo is a pointer to a netsnmp_handler_registration struct
  *
- * @param iinfo is a pointer to a netsnmp_iterator_info struct
+ * @param iinfo A pointer to a netsnmp_iterator_info struct. If the flag
+ * NETSNMP_HANDLER_OWNS_IINFO is not set in iinfo->flags, the caller remains
+ * the owner of this structure. And if the flag NETSNMP_HANDLER_OWNS_IINFO is
+ * set in iinfo->flags, ownership of this data structure is passed to the
+ * handler.
  *
  * @return MIB_REGISTERED_OK is returned if the registration was a success.
  *	Failures are MIB_REGISTRATION_FAILED, MIB_DUPLICATE_REGISTRATION.
@@ -206,7 +259,9 @@
 netsnmp_register_table_iterator(netsnmp_handler_registration *reginfo,
                                 netsnmp_iterator_info *iinfo)
 {
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
     reginfo->modes |= HANDLER_CAN_STASH;
+#endif  /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
     netsnmp_inject_handler(reginfo,
                            netsnmp_get_table_iterator_handler(iinfo));
     if (!iinfo)
@@ -237,6 +292,7 @@
     return netsnmp_request_get_list_data(request, TABLE_ITERATOR_NAME);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_INSERT_CONTEXT
 /** inserts table_iterator specific data for a newly
  *  created row into a request */
 NETSNMP_INLINE void
@@ -301,6 +357,7 @@
         }
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_INSERT_CONTEXT */
 
 #define TI_REQUEST_CACHE "ti_cache"
 
@@ -403,12 +460,14 @@
     void           *callback_data_context = NULL;
     ti_cache_info  *ti_info = NULL;
     int             request_count = 0;
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
     netsnmp_oid_stash_node **cinfo = NULL;
     netsnmp_variable_list *old_indexes = NULL, *vb;
     netsnmp_table_registration_info *table_reg_info = NULL;
     int i;
     netsnmp_data_list    *ldata = NULL;
-    
+#endif /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
+
     iinfo = (netsnmp_iterator_info *) handler->myvoid;
     if (!iinfo || !reginfo || !reqinfo)
         return SNMP_ERR_GENERR;
@@ -434,6 +493,7 @@
 
     /* preliminary analysis */
     switch (reqinfo->mode) {
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
     case MODE_GET_STASH:
         cinfo = netsnmp_extract_stash_cache(reqinfo);
         table_reg_info = netsnmp_find_table_registration_info(reginfo);
@@ -452,6 +512,7 @@
         /* remember the indexes that were originally parsed. */
         old_indexes = table_info->indexes;
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
 
     case MODE_GETNEXT:
         for(request = requests ; request; request = request->next) {
@@ -505,8 +566,11 @@
      */
     if (reqinfo->mode == MODE_GET ||
         reqinfo->mode == MODE_GETNEXT ||
-        reqinfo->mode == MODE_GET_STASH ||
-        reqinfo->mode == MODE_SET_RESERVE1) {
+        reqinfo->mode == MODE_GET_STASH
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        || reqinfo->mode == MODE_SET_RESERVE1
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+        ) {
         /*
          * Count the number of request in the list,
          *   so that we'll know when we're finished
@@ -595,7 +659,9 @@
 
                     switch(reqinfo->mode) {
                     case MODE_GET:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                     case MODE_SET_RESERVE1:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                         /* looking for exact matches */
                         build_oid_noalloc(myname, MAX_OID_LEN, &myname_len,
                                           coloid, coloid_len, index_search);
@@ -630,6 +696,7 @@
                         }
                         break;
 
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
                     case MODE_GET_STASH:
                         /* collect data for each column for every row */
                         build_oid_noalloc(myname, MAX_OID_LEN, &myname_len,
@@ -681,6 +748,7 @@
                         }
                         reqinfo->mode = MODE_GET_STASH;
                         break;
+#endif  /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
 
                     case MODE_GETNEXT:
                         /* looking for "next" matches */
@@ -720,12 +788,14 @@
                         }
                         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                     case MODE_SET_RESERVE2:
                     case MODE_SET_FREE:
                     case MODE_SET_UNDO:
                     case MODE_SET_COMMIT:
                         /* needed processing already done in RESERVE1 */
                         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
                     default:
                         snmp_log(LOG_ERR,
@@ -788,8 +858,11 @@
     }
 
     if (reqinfo->mode == MODE_GET ||
-        reqinfo->mode == MODE_GETNEXT ||
-        reqinfo->mode == MODE_SET_RESERVE1) {
+        reqinfo->mode == MODE_GETNEXT
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        || reqinfo->mode == MODE_SET_RESERVE1
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+        ) {
         /* per request last minute processing */
         for(request = requests ; request; request = request->next) {
             if (request->processed)
@@ -825,7 +898,9 @@
                 /* FALL THROUGH */
 
             case MODE_GET:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             case MODE_SET_RESERVE1:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                 if (ti_info->data_context)
                     /* we don't add a free pointer, since it's in the
                        TI_REQUEST_CACHE instead */
@@ -848,10 +923,12 @@
         if (reqinfo->mode == MODE_GETNEXT) {
             reqinfo->mode = MODE_GET;
         }
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
     } else if (reqinfo->mode == MODE_GET_STASH) {
         netsnmp_free_request_data_sets(reqtmp);
         SNMP_FREE(reqtmp);
         table_info->indexes = old_indexes;
+#endif  /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
     }
 
 
@@ -882,6 +959,7 @@
  *
  * ================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_ROW_FIRST
 void *
 netsnmp_iterator_row_first( netsnmp_iterator_info *iinfo ) {
     netsnmp_variable_list *vp1, *vp2;
@@ -900,6 +978,7 @@
     snmp_free_varbind( vp1 );
     return ctx2;  /* or *ctx2 ?? */
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_ROW_FIRST */
 
 void *
 netsnmp_iterator_row_get( netsnmp_iterator_info *iinfo, void *row )
@@ -1108,6 +1187,7 @@
     return ( vp2 ? ctx2 : NULL );
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_ROW_COUNT
 int
 netsnmp_iterator_row_count( netsnmp_iterator_info *iinfo )
 {
@@ -1143,6 +1223,7 @@
     snmp_free_varbind( vp1 );
     return i;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_ROW_COUNT */
 
 
 /* ==================================
diff --git a/agent/helpers/table_row.c b/agent/helpers/table_row.c
index bbc484f..2a33f23 100644
--- a/agent/helpers/table_row.c
+++ b/agent/helpers/table_row.c
@@ -8,6 +8,7 @@
 #define TABLE_ROW_DATA  "table_row"
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -23,6 +24,11 @@
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/snmp_assert.h>
 
+netsnmp_feature_child_of(table_row_all, mib_helpers)
+
+netsnmp_feature_child_of(table_row_extract, table_row_all)
+
+
 /*
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_BEGIN        -1 
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_RESERVE1     0 
@@ -154,11 +160,13 @@
 
 
 /** return the row data structure supplied to the table_row helper */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ROW_EXTRACT
 void *
 netsnmp_table_row_extract(netsnmp_request_info *request)
 {
     return netsnmp_request_get_list_data(request, TABLE_ROW_DATA);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ROW_EXTRACT */
 /** @cond */
 
 /**********************************************************************
diff --git a/agent/helpers/table_tdata.c b/agent/helpers/table_tdata.c
index cf166e3..8865084 100644
--- a/agent/helpers/table_tdata.c
+++ b/agent/helpers/table_tdata.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -19,6 +20,22 @@
 #include <dmalloc.h>
 #endif
 
+netsnmp_feature_child_of(table_tdata_all, mib_helpers)
+netsnmp_feature_child_of(table_tdata, table_tdata_all)
+netsnmp_feature_child_of(table_tdata_delete_table, table_tdata_all)
+netsnmp_feature_child_of(table_tdata_extract_table, table_tdata_all)
+netsnmp_feature_child_of(table_tdata_remove_row, table_tdata_all)
+netsnmp_feature_child_of(table_tdata_insert_row, table_tdata_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_TABLE_TDATA
+netsnmp_feature_require(table_container_row_insert)
+#ifdef NETSNMP_FEATURE_REQUIRE_TABLE_TDATA_REMOVE_ROW
+netsnmp_feature_require(table_container_row_remove)
+#endif /* NETSNMP_FEATURE_REQUIRE_TABLE_TDATA_REMOVE_ROW */
+#endif /* NETSNMP_FEATURE_REQUIRE_TABLE_TDATA */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_TDATA
+
 /** @defgroup tdata tdata
  *  Implement a table with datamatted storage.
  *  @ingroup table
@@ -72,6 +89,7 @@
     return table;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_TDATA_DELETE_TABLE
 /** creates and returns a 'tdata' table data structure */
 void
 netsnmp_tdata_delete_table(netsnmp_tdata *table)
@@ -87,6 +105,7 @@
     SNMP_FREE(table);
     return;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA_DELETE_TABLE */
 
 /** creates and returns a pointer to new row data structure */
 netsnmp_tdata_row *
@@ -97,6 +116,8 @@
 }
 
 /** clones a 'tdata' row. DOES NOT CLONE THE TABLE-SPECIFIC ENTRY DATA. */
+netsnmp_feature_child_of(tdata_clone_row, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_CLONE_ROW
 netsnmp_tdata_row *
 netsnmp_tdata_clone_row(netsnmp_tdata_row *row)
 {
@@ -129,9 +150,12 @@
 
     return newrow;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_CLONE_ROW */
 
 /** copy the contents of a 'tdata' row.
     DOES NOT COPY THE TABLE-SPECIFIC ENTRY DATA. */
+netsnmp_feature_child_of(tdata_copy_row, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_COPY_ROW
 int
 netsnmp_tdata_copy_row(netsnmp_tdata_row *dst_row, netsnmp_tdata_row *src_row)
 {
@@ -155,6 +179,7 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_COPY_ROW */
 
 /** deletes the memory used by the specified row
  *  returns the table-specific entry data
@@ -231,6 +256,8 @@
 }
 
 /** swaps out origrow with newrow.  This does *not* delete/free anything! */
+netsnmp_feature_child_of(tdata_replace_row, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_REPLACE_ROW
 void
 netsnmp_tdata_replace_row(netsnmp_tdata *table,
                                netsnmp_tdata_row *origrow,
@@ -239,6 +266,7 @@
     netsnmp_tdata_remove_row(table, origrow);
     netsnmp_tdata_add_row(table, newrow);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_REPLACE_ROW */
 
 /**
  * removes a row from the given table and returns it (no free's called)
@@ -333,7 +361,9 @@
         need_processing = 0; /* only need processing if some vars found */
         /** Fall through */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         for (request = requests; request; request = request->next) {
             if (request->processed)
@@ -380,13 +410,17 @@
                   table->container, TABLE_CONTAINER_KEY_NETSNMP_INDEX);
 }
 
+netsnmp_feature_child_of(tdata_unregister, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_UNREGISTER
 int
 netsnmp_tdata_unregister(netsnmp_handler_registration    *reginfo)
 {
     /* free table; */
     return netsnmp_container_table_unregister(reginfo);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_UNREGISTER */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_TDATA_EXTRACT_TABLE
 /** extracts the tdata table from the request structure */
 netsnmp_tdata *
 netsnmp_tdata_extract_table(netsnmp_request_info *request)
@@ -394,8 +428,11 @@
     return (netsnmp_tdata *) netsnmp_request_get_list_data(request,
                                                            TABLE_TDATA_TABLE);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA_EXTRACT_TABLE */
 
 /** extracts the tdata container from the request structure */
+netsnmp_feature_child_of(tdata_extract_container, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_EXTRACT_CONTAINER
 netsnmp_container *
 netsnmp_tdata_extract_container(netsnmp_request_info *request)
 {
@@ -403,6 +440,7 @@
         netsnmp_request_get_list_data(request, TABLE_TDATA_TABLE);
     return ( tdata ? tdata->container : NULL );
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_EXTRACT_CONTAINER */
 
 /** extracts the tdata row being accessed from the request structure */
 netsnmp_tdata_row *
@@ -424,6 +462,7 @@
         return NULL;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_TDATA_INSERT_ROW
 /** inserts a newly created tdata row into a request */
 NETSNMP_INLINE void
 netsnmp_insert_tdata_row(netsnmp_request_info *request,
@@ -431,7 +470,9 @@
 {
     netsnmp_container_table_row_insert(request, (netsnmp_index *)row);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA_INSERT_ROW */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_TDATA_REMOVE_ROW
 /** inserts a newly created tdata row into a request */
 NETSNMP_INLINE void
 netsnmp_remove_tdata_row(netsnmp_request_info *request,
@@ -439,6 +480,7 @@
 {
     netsnmp_container_table_row_remove(request, (netsnmp_index *)row);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA_REMOVE_ROW */
 
 
 /* ==================================
@@ -536,6 +578,8 @@
     return (netsnmp_tdata_row*)CONTAINER_NEXT( table->container, &index );
 }
 
+netsnmp_feature_child_of(tdata_row_count, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_ROW_COUNT
 int
 netsnmp_tdata_row_count(netsnmp_tdata *table)
 {
@@ -543,6 +587,7 @@
         return 0;
     return CONTAINER_SIZE( table->container );
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_ROW_COUNT */
 
 /* ==================================
  *
@@ -552,6 +597,8 @@
 
 
 /** compare a row with the given index values */
+netsnmp_feature_child_of(tdata_compare_idx, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_COMPARE_IDX
 int
 netsnmp_tdata_compare_idx(netsnmp_tdata_row     *row,
                           netsnmp_variable_list *indexes)
@@ -563,6 +610,7 @@
                       indexes);
     return netsnmp_tdata_compare_oid(row, searchfor, searchfor_len);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_COMPARE_IDX */
 
 /** compare a row with the given index OID */
 int
@@ -594,6 +642,10 @@
     return snmp_oidtree_compare( index->oids, index->len,
                                  compareto,   compareto_len);
 }
+#else /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA */
+netsnmp_feature_unused(table_tdata);
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA */
+
 
 /** @} 
  */
diff --git a/agent/helpers/watcher.c b/agent/helpers/watcher.c
index de59680..9b3933b 100644
--- a/agent/helpers/watcher.c
+++ b/agent/helpers/watcher.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -19,6 +20,19 @@
 #define free_wrapper free
 #endif
 
+netsnmp_feature_provide(watcher_all)
+netsnmp_feature_child_of(watcher_all, mib_helpers)
+netsnmp_feature_child_of(watcher_create_info6, watcher_all)
+netsnmp_feature_child_of(watcher_register_timestamp, watcher_all)
+netsnmp_feature_child_of(watcher_ulong_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_read_only_ulong_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_read_only_int_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_long_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_read_only_long_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_int_scalar, watcher_all)
+netsnmp_feature_child_of(read_only_counter32_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_spinlock, watcher_all)
+
 /** @defgroup watcher watcher
  *  Watch a specified variable and process it as an instance or scalar object
  *  @ingroup leaf
@@ -51,6 +65,7 @@
     return winfo;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_CREATE_INFO6
 netsnmp_watcher_info *
 netsnmp_create_watcher_info6(void *data, size_t size, u_char type,
                              int flags, size_t max_size, size_t* size_p)
@@ -61,6 +76,7 @@
                                    size_p);
     return winfo;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_CREATE_INFO6 */
 
 netsnmp_watcher_info *
 netsnmp_init_watcher_info(netsnmp_watcher_info *winfo,
@@ -82,6 +98,11 @@
     return winfo;
 }
 
+/**
+ * Register a watched scalar. The caller remains the owner of watchinfo.
+ *
+ * @see netsnmp_register_watched_instance2()
+ */
 int
 netsnmp_register_watched_instance(netsnmp_handler_registration *reginfo,
                                   netsnmp_watcher_info         *watchinfo)
@@ -95,6 +116,30 @@
     return netsnmp_register_instance(reginfo);
 }
 
+/**
+ * Register a watched scalar. Ownership of watchinfo is transferred to the handler.
+ *
+ * @see netsnmp_register_watched_instance()
+ */
+int
+netsnmp_register_watched_instance2(netsnmp_handler_registration *reginfo,
+				   netsnmp_watcher_info         *watchinfo)
+{
+    netsnmp_mib_handler *whandler;
+
+    whandler         = netsnmp_get_watcher_handler();
+    whandler->myvoid = (void *)watchinfo;
+    netsnmp_owns_watcher_info(whandler);
+
+    netsnmp_inject_handler(reginfo, whandler);
+    return netsnmp_register_instance(reginfo);
+}
+
+/**
+ * Register a watched scalar. The caller remains the owner of watchinfo.
+ *
+ * @see netsnmp_register_watched_scalar2()
+ */
 int
 netsnmp_register_watched_scalar(netsnmp_handler_registration *reginfo,
                                   netsnmp_watcher_info         *watchinfo)
@@ -108,6 +153,34 @@
     return netsnmp_register_scalar(reginfo);
 }
 
+/**
+ * Register a watched scalar. Ownership of watchinfo is transferred to the handler.
+ *
+ * @see netsnmp_register_watched_scalar()
+ */
+int
+netsnmp_register_watched_scalar2(netsnmp_handler_registration *reginfo,
+                                  netsnmp_watcher_info         *watchinfo)
+{
+    netsnmp_mib_handler *whandler;
+
+    whandler         = netsnmp_get_watcher_handler();
+    whandler->myvoid = (void *)watchinfo;
+    netsnmp_owns_watcher_info(whandler);
+
+    netsnmp_inject_handler(reginfo, whandler);
+    return netsnmp_register_scalar(reginfo);
+}
+
+void
+netsnmp_owns_watcher_info(netsnmp_mib_handler *handler)
+{
+    netsnmp_assert(handler);
+    netsnmp_assert(handler->myvoid);
+    handler->data_clone = (void *(*)(void *))netsnmp_clone_watcher_info;
+    handler->data_free = free;
+}
+
 /** @cond */
 
 NETSNMP_STATIC_INLINE size_t
@@ -191,6 +264,7 @@
         /*
          * SET requests.  Should only get here if registered RWRITE 
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         if (requests->requestvb->type != winfo->type) {
             netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);
@@ -246,6 +320,12 @@
 
     case MODE_SET_COMMIT:
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+    default:
+        snmp_log(LOG_ERR, "watcher handler called with an unknown mode: %d\n",
+                 reqinfo->mode);
+        return SNMP_ERR_GENERR;
 
     }
 
@@ -284,6 +364,7 @@
     return netsnmp_register_scalar(reginfo);   /* XXX - or instance? */
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_REGISTER_TIMESTAMP
 int
 netsnmp_register_watched_timestamp(netsnmp_handler_registration *reginfo,
                                    marker_t timestamp)
@@ -294,6 +375,7 @@
 
     return netsnmp_watched_timestamp_register(whandler, reginfo, timestamp);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_REGISTER_TIMESTAMP */
 
 
 int
@@ -331,11 +413,13 @@
          * Timestamps are inherently Read-Only,
          *  so don't need to support SET requests.
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         netsnmp_set_request_error(reqinfo, requests,
                                   SNMP_ERR_NOTWRITABLE);
         handler->flags |= MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE;
         return SNMP_ERR_NOTWRITABLE;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
     /* next handler called automatically - 'AUTO_NEXT' */
@@ -349,6 +433,8 @@
      *
      ***************************/
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_SPINLOCK
+
 netsnmp_mib_handler *
 netsnmp_get_watched_spinlock_handler(void)
 {
@@ -374,7 +460,7 @@
     winfo            = netsnmp_create_watcher_info((void *)spinlock,
 		           sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE);
     netsnmp_inject_handler(reginfo, whandler);
-    return netsnmp_register_watched_scalar(reginfo, winfo);
+    return netsnmp_register_watched_scalar2(reginfo, winfo);
 }
 
 
@@ -398,6 +484,7 @@
         /*
          * Ensure the assigned value matches the current one
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         for (request=requests; request; request=request->next) {
             if (request->processed)
@@ -418,11 +505,13 @@
     case MODE_SET_COMMIT:
 	(*spinlock)++;
 	break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
     /* next handler called automatically - 'AUTO_NEXT' */
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_SPINLOCK */
 
     /***************************
      *
@@ -431,118 +520,142 @@
      *
      ***************************/
 
+netsnmp_watcher_info *
+netsnmp_clone_watcher_info(netsnmp_watcher_info *winfo)
+{
+    netsnmp_watcher_info *copy = malloc(sizeof(*copy));
+    if (copy)
+	*copy = *winfo;
+    return copy;
+}
+
+static int
+register_scalar_watcher(const char* name,
+                        const oid* reg_oid, size_t reg_oid_len,
+                        void *data, size_t size, u_char type,
+                        Netsnmp_Node_Handler * subhandler, int mode)
+{
+    netsnmp_handler_registration *reginfo = NULL;
+    netsnmp_mib_handler *whandler = NULL;
+    netsnmp_watcher_info* watchinfo =
+        netsnmp_create_watcher_info(data, size, type, WATCHER_FIXED_SIZE);
+    if (watchinfo)
+        whandler = netsnmp_get_watcher_handler();
+    if (watchinfo && whandler) {
+        whandler->myvoid = watchinfo;
+	netsnmp_owns_watcher_info(whandler);
+        reginfo =
+            netsnmp_create_handler_registration(
+                name, subhandler, reg_oid, reg_oid_len, mode);
+    }
+    if (watchinfo && whandler && reginfo) {
+        netsnmp_inject_handler(reginfo, whandler);
+        return netsnmp_register_scalar(reginfo);
+    }
+    if (whandler)
+        netsnmp_handler_free(whandler);
+    else if (watchinfo)
+        free(watchinfo);
+    return SNMP_ERR_RESOURCEUNAVAILABLE;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_ULONG_SCALAR
 int
 netsnmp_register_ulong_scalar(const char *name,
                               const oid * reg_oid, size_t reg_oid_len,
                               u_long * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RWRITE ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( u_long ),
-                   ASN_UNSIGNED, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( u_long ),
+        ASN_UNSIGNED, subhandler, HANDLER_CAN_RWRITE);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_ULONG_SCALAR */
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_ULONG_SCALAR
 int
 netsnmp_register_read_only_ulong_scalar(const char *name,
                               const oid * reg_oid, size_t reg_oid_len,
                               u_long * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RONLY ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( u_long ),
-                   ASN_UNSIGNED, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( u_long ),
+        ASN_UNSIGNED, subhandler, HANDLER_CAN_RONLY);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_ULONG_SCALAR */
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_LONG_SCALAR
 int
 netsnmp_register_long_scalar(const char *name,
                               const oid * reg_oid, size_t reg_oid_len,
                               long * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RWRITE ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( long ),
-                   ASN_INTEGER, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( long ),
+        ASN_INTEGER, subhandler, HANDLER_CAN_RWRITE);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_LONG_SCALAR */
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_LONG_SCALAR
 int
 netsnmp_register_read_only_long_scalar(const char *name,
                               const oid * reg_oid, size_t reg_oid_len,
                               long * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RONLY ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( long ),
-                   ASN_INTEGER, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( long ),
+        ASN_INTEGER, subhandler, HANDLER_CAN_RONLY);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_LONG_SCALAR */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_INT_SCALAR
 int
 netsnmp_register_int_scalar(const char *name,
                               const oid * reg_oid, size_t reg_oid_len,
                               int * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RWRITE ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( int ),
-                   ASN_INTEGER, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( int ),
+        ASN_INTEGER, subhandler, HANDLER_CAN_RWRITE);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_INT_SCALAR */
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_INT_SCALAR
 int
 netsnmp_register_read_only_int_scalar(const char *name,
                               const oid * reg_oid, size_t reg_oid_len,
                               int * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RONLY ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( int ),
-                   ASN_INTEGER, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( int ),
+        ASN_INTEGER, subhandler, HANDLER_CAN_RONLY);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_INT_SCALAR */
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_COUNTER32_SCALAR
 int
 netsnmp_register_read_only_counter32_scalar(const char *name,
                               const oid * reg_oid, size_t reg_oid_len,
                               u_long * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RONLY ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( u_long ),
-                   ASN_COUNTER, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( u_long ),
+        ASN_COUNTER, subhandler, HANDLER_CAN_RONLY);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_COUNTER32_SCALAR */
 /**  @} */
 
diff --git a/agent/mibgroup/Makefile.depend b/agent/mibgroup/Makefile.depend
index dabf0ab..a4e9711 100644
--- a/agent/mibgroup/Makefile.depend
+++ b/agent/mibgroup/Makefile.depend
@@ -38,6 +38,7 @@
 ./header_complex.lo: ../../include/net-snmp/mib_api.h
 ./header_complex.lo: ../../include/net-snmp/library/parse.h
 ./header_complex.lo: ../../include/net-snmp/library/oid_stash.h
+./header_complex.lo: ../../include/net-snmp/net-snmp-features.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_impl.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -73,6 +74,7 @@
 ./header_complex.lo: ../../include/net-snmp/library/lcd_time.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./header_complex.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./header_complex.lo: ../../include/net-snmp/library/snmptsm.h
 ./header_complex.lo: ../../include/net-snmp/library/snmpusm.h
 ./header_complex.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./header_complex.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -114,6 +116,7 @@
 ./header_complex.lo: header_complex.h
 ./kernel_sunos5.lo: ../../include/net-snmp/net-snmp-config.h
 ./testhandler.lo: ../../include/net-snmp/net-snmp-config.h
+./testhandler.lo: ../../include/net-snmp/net-snmp-features.h
 ./testhandler.lo: ../../include/net-snmp/net-snmp-includes.h
 ./testhandler.lo: ../../include/net-snmp/definitions.h
 ./testhandler.lo: ../../include/net-snmp/types.h
@@ -181,6 +184,7 @@
 ./testhandler.lo: ../../include/net-snmp/library/lcd_time.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./testhandler.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./testhandler.lo: ../../include/net-snmp/library/snmptsm.h
 ./testhandler.lo: ../../include/net-snmp/library/snmpusm.h
 ./testhandler.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./testhandler.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -221,6 +225,7 @@
 ./testhandler.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./testhandler.lo: testhandler.h
 ./util_funcs.lo: ../../include/net-snmp/net-snmp-config.h
+./util_funcs.lo: ../../include/net-snmp/net-snmp-features.h
 ./util_funcs.lo: ../../include/net-snmp/net-snmp-includes.h
 ./util_funcs.lo: ../../include/net-snmp/definitions.h
 ./util_funcs.lo: ../../include/net-snmp/types.h
@@ -288,6 +293,7 @@
 ./util_funcs.lo: ../../include/net-snmp/library/lcd_time.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./util_funcs.lo: ../../include/net-snmp/library/snmptsm.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmpusm.h
 ./util_funcs.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./util_funcs.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -326,13 +332,15 @@
 ./util_funcs.lo: ../../include/net-snmp/agent/table_array.h
 ./util_funcs.lo: ../../include/net-snmp/agent/mfd.h
 ./util_funcs.lo: ../../include/net-snmp/agent/snmp_get_statistic.h struct.h
-./util_funcs.lo: util_funcs.h util_funcs/Exit.h util_funcs/header_generic.h
-./util_funcs.lo: util_funcs/header_simple_table.h util_funcs/restart.h
+./util_funcs.lo: util_funcs.h util_funcs/header_generic.h
+./util_funcs.lo: util_funcs/header_simple_table.h
 ./util_funcs.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h utilities/execute.h
 ./util_funcs.lo: ucd-snmp/errormib.h mibdefs.h
 ./winExtDLL.lo: ../../include/net-snmp/net-snmp-config.h
+./winExtDLL.lo: ../../include/net-snmp/net-snmp-features.h
 ./winExtDLL.lo: ../../include/net-snmp/agent/mib_module_config.h
 ./agent/extend.lo: ../../include/net-snmp/net-snmp-config.h
+./agent/extend.lo: ../../include/net-snmp/net-snmp-features.h
 ./agent/extend.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/extend.lo: ../../include/net-snmp/definitions.h
 ./agent/extend.lo: ../../include/net-snmp/types.h
@@ -400,6 +408,7 @@
 ./agent/extend.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/extend.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/extend.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/extend.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -442,6 +451,7 @@
 ./agent/extend.lo: agent/extend.h utilities/execute.h struct.h
 ./agent/extend.lo: util_funcs/header_simple_table.h mibdefs.h
 ./agent/nsCache.lo: ../../include/net-snmp/net-snmp-config.h
+./agent/nsCache.lo: ../../include/net-snmp/net-snmp-features.h
 ./agent/nsCache.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/nsCache.lo: ../../include/net-snmp/definitions.h
 ./agent/nsCache.lo: ../../include/net-snmp/types.h
@@ -509,6 +519,7 @@
 ./agent/nsCache.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsCache.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsCache.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsCache.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -582,6 +593,7 @@
 ./agent/nsDebug.lo: ../../include/net-snmp/mib_api.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/parse.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/oid_stash.h
+./agent/nsDebug.lo: ../../include/net-snmp/net-snmp-features.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -616,6 +628,7 @@
 ./agent/nsDebug.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsDebug.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsDebug.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -656,6 +669,7 @@
 ./agent/nsDebug.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./agent/nsDebug.lo: agent/nsDebug.h
 ./agent/nsLogging.lo: ../../include/net-snmp/net-snmp-config.h
+./agent/nsLogging.lo: ../../include/net-snmp/net-snmp-features.h
 ./agent/nsLogging.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/nsLogging.lo: ../../include/net-snmp/definitions.h
 ./agent/nsLogging.lo: ../../include/net-snmp/types.h
@@ -723,6 +737,7 @@
 ./agent/nsLogging.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsLogging.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsLogging.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -763,6 +778,7 @@
 ./agent/nsLogging.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./agent/nsLogging.lo: agent/nsLogging.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/net-snmp-config.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/definitions.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/types.h
@@ -830,6 +846,7 @@
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -870,6 +887,7 @@
 ./agent/nsModuleTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./agent/nsModuleTable.lo: ./agent/nsModuleTable.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/net-snmp-config.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/definitions.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/types.h
@@ -937,6 +955,7 @@
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -977,6 +996,7 @@
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./agent/nsTransactionTable.lo: ./agent/nsTransactionTable.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/net-snmp-config.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/definitions.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/types.h
@@ -1044,6 +1064,7 @@
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1084,6 +1105,7 @@
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./agent/nsVacmAccessTable.lo: ./agent/nsVacmAccessTable.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/net-snmp-config.h
+./agentx/agentx_config.lo: ../../include/net-snmp/net-snmp-features.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/definitions.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/types.h
@@ -1151,6 +1173,7 @@
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/lcd_time.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/snmptsm.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpusm.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1192,6 +1215,7 @@
 ./agentx/agentx_config.lo: ../../agent/snmpd.h agentx/agentx_config.h
 ./agentx/agentx_config.lo: agentx/protocol.h
 ./agentx/client.lo: ../../include/net-snmp/net-snmp-config.h
+./agentx/client.lo: ../../include/net-snmp/net-snmp-features.h
 ./agentx/client.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agentx/client.lo: ../../include/net-snmp/definitions.h
 ./agentx/client.lo: ../../include/net-snmp/types.h
@@ -1259,6 +1283,7 @@
 ./agentx/client.lo: ../../include/net-snmp/library/lcd_time.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/client.lo: ../../include/net-snmp/library/snmptsm.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmpusm.h
 ./agentx/client.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agentx/client.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1300,6 +1325,7 @@
 ./agentx/client.lo: ../../include/net-snmp/agent/agent_index.h
 ./agentx/client.lo: agentx/protocol.h agentx/client.h agentx/subagent.h
 ./agentx/master_admin.lo: ../../include/net-snmp/net-snmp-config.h
+./agentx/master_admin.lo: ../../include/net-snmp/net-snmp-features.h
 ./agentx/master_admin.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agentx/master_admin.lo: ../../include/net-snmp/definitions.h
 ./agentx/master_admin.lo: ../../include/net-snmp/types.h
@@ -1367,6 +1393,7 @@
 ./agentx/master_admin.lo: ../../include/net-snmp/library/lcd_time.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/snmptsm.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpusm.h
 ./agentx/master_admin.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agentx/master_admin.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1411,6 +1438,7 @@
 ./agentx/master_admin.lo: ../../include/net-snmp/agent/agent_sysORTable.h
 ./agentx/master_admin.lo: ./agentx/master.h
 ./agentx/master.lo: ../../include/net-snmp/net-snmp-config.h
+./agentx/master.lo: ../../include/net-snmp/net-snmp-features.h
 ./agentx/master.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agentx/master.lo: ../../include/net-snmp/definitions.h
 ./agentx/master.lo: ../../include/net-snmp/types.h
@@ -1478,6 +1506,7 @@
 ./agentx/master.lo: ../../include/net-snmp/library/lcd_time.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/master.lo: ../../include/net-snmp/library/snmptsm.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmpusm.h
 ./agentx/master.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agentx/master.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1552,6 +1581,7 @@
 ./agentx/protocol.lo: ../../include/net-snmp/mib_api.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/parse.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/oid_stash.h
+./agentx/protocol.lo: ../../include/net-snmp/net-snmp-features.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -1586,9 +1616,11 @@
 ./agentx/protocol.lo: ../../include/net-snmp/library/lcd_time.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/protocol.lo: ../../include/net-snmp/library/snmptsm.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpusm.h
 ./agentx/protocol.lo: agentx/protocol.h
 ./agentx/subagent.lo: ../../include/net-snmp/net-snmp-config.h
+./agentx/subagent.lo: ../../include/net-snmp/net-snmp-features.h
 ./agentx/subagent.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agentx/subagent.lo: ../../include/net-snmp/definitions.h
 ./agentx/subagent.lo: ../../include/net-snmp/types.h
@@ -1656,6 +1688,7 @@
 ./agentx/subagent.lo: ../../include/net-snmp/library/lcd_time.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/subagent.lo: ../../include/net-snmp/library/snmptsm.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpusm.h
 ./agentx/subagent.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agentx/subagent.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1700,7 +1733,117 @@
 ./agentx/subagent.lo: ../../include/net-snmp/agent/sysORTable.h
 ./agentx/subagent.lo: ../../include/net-snmp/agent/agent_sysORTable.h
 ./agentx/subagent.lo: ./agentx/subagent.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/net-snmp-config.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/net-snmp-features.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/net-snmp-includes.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/definitions.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/types.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/oid.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/types.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/varbind_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_client.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/pdu_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/asn1.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/output_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_debug.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_logging.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/session_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/callback.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_transport.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_service.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/ucd_compat.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/mib.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/mib_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/parse.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/oid_stash.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_impl.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp-tc.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/getopt.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/utilities.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/system.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/tools.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/int64.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/mt_support.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_alarm.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/data_list.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/check_varbind.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/container.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/factory.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/container_binary_array.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/container_list_ssll.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/container_iterator.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/container.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_assert.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/version.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/config_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/read_config.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/default_store.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_enum.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/vacm.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/snmpv3_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpv3.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/transform_oids.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/keytools.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/scapi.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/lcd_time.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_secmod.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmptsm.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpusm.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/mib_module_config.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/agent_module_config.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/snmp_agent.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/snmp_vars.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/agent_handler.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/var_struct.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/agent_registry.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/fd_event_manager.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/ds_agent.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/agent_read_config.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/agent_trap.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/all_helpers.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/instance.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/baby_steps.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/scalar.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/scalar_group.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/watcher.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/multiplexer.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/null.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/debug_handler.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/cache_handler.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/old_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/read_only.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/row_merge.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/serialize.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/mode_end_call.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_data.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_dataset.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_tdata.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_iterator.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_container.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_array.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/mfd.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./deliver/deliverByNotify.lo: ./deliver/deliverByNotify.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/net-snmp-config.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/types.h
@@ -1768,6 +1911,7 @@
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1808,6 +1952,7 @@
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./disman/mteEventNotificationTable.lo: ./disman/mteEventNotificationTable.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/net-snmp-config.h
+./disman/mteEventTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/types.h
@@ -1875,6 +2020,7 @@
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1918,6 +2064,7 @@
 ./disman/mteEventTable.lo: ./disman/mteEventNotificationTable.h
 ./disman/mteEventTable.lo: ./disman/mteObjectsTable.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/net-snmp-config.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/types.h
@@ -1985,6 +2132,7 @@
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2059,6 +2207,7 @@
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/mib_api.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/parse.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/oid_stash.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -2093,6 +2242,7 @@
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2168,6 +2318,7 @@
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/mib_api.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/parse.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/oid_stash.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -2202,6 +2353,7 @@
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2277,6 +2429,7 @@
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/mib_api.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/parse.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/oid_stash.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -2311,6 +2464,7 @@
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2353,6 +2507,7 @@
 ./disman/mteTriggerExistenceTable.lo: ./disman/mteTriggerExistenceTable.h
 ./disman/mteTriggerExistenceTable.lo: ./disman/mteTriggerTable.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/net-snmp-config.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/types.h
@@ -2420,6 +2575,7 @@
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2499,6 +2655,7 @@
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/mib_api.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/parse.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/oid_stash.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -2533,6 +2690,7 @@
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2608,6 +2766,7 @@
 ./examples/data_set.lo: ../../include/net-snmp/mib_api.h
 ./examples/data_set.lo: ../../include/net-snmp/library/parse.h
 ./examples/data_set.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/data_set.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -2642,6 +2801,7 @@
 ./examples/data_set.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/data_set.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/data_set.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/data_set.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2714,6 +2874,7 @@
 ./examples/delayed_instance.lo: ../../include/net-snmp/mib_api.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/parse.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/delayed_instance.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -2748,6 +2909,7 @@
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2821,6 +2983,7 @@
 ./examples/example.lo: ../../include/net-snmp/mib_api.h
 ./examples/example.lo: ../../include/net-snmp/library/parse.h
 ./examples/example.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/example.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -2855,6 +3018,7 @@
 ./examples/example.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/example.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/example.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/example.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/example.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/example.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2928,6 +3092,7 @@
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/mib_api.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/parse.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -2962,6 +3127,7 @@
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3003,6 +3169,7 @@
 ./examples/netSnmpHostsTable_access.lo: ./examples/netSnmpHostsTable_access.h
 ./examples/netSnmpHostsTable_access.lo: ./examples/netSnmpHostsTable_enums.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/net-snmp-config.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/definitions.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/types.h
@@ -3070,6 +3237,7 @@
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3114,6 +3282,7 @@
 ./examples/netSnmpHostsTable.lo: ./examples/netSnmpHostsTable_checkfns.h
 ./examples/netSnmpHostsTable.lo: ./examples/netSnmpHostsTable_access.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/net-snmp-config.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/definitions.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/types.h
@@ -3181,6 +3350,7 @@
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/netSnmpHostsTable_checkfns.lo: ./examples/netSnmpHostsTable_checkfns.h
 ./examples/netSnmpHostsTable_checkfns.lo: ./examples/netSnmpHostsTable_checkfns_local.h
@@ -3219,6 +3389,7 @@
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/mib_api.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/parse.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -3253,6 +3424,7 @@
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ./examples/netSnmpHostsTable_checkfns.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ./examples/netSnmpHostsTable_enums.h
@@ -3290,6 +3462,7 @@
 ./examples/notification.lo: ../../include/net-snmp/mib_api.h
 ./examples/notification.lo: ../../include/net-snmp/library/parse.h
 ./examples/notification.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/notification.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -3324,6 +3497,7 @@
 ./examples/notification.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/notification.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/notification.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/notification.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3364,6 +3538,7 @@
 ./examples/notification.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./examples/notification.lo: notification.h
 ./examples/scalar_int.lo: ../../include/net-snmp/net-snmp-config.h
+./examples/scalar_int.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/scalar_int.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/scalar_int.lo: ../../include/net-snmp/definitions.h
 ./examples/scalar_int.lo: ../../include/net-snmp/types.h
@@ -3431,6 +3606,7 @@
 ./examples/scalar_int.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/scalar_int.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/scalar_int.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3503,6 +3679,7 @@
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/mib_api.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/parse.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -3537,6 +3714,7 @@
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3611,6 +3789,7 @@
 ./examples/watched.lo: ../../include/net-snmp/mib_api.h
 ./examples/watched.lo: ../../include/net-snmp/library/parse.h
 ./examples/watched.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/watched.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -3645,6 +3824,7 @@
 ./examples/watched.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/watched.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/watched.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/watched.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3718,6 +3898,7 @@
 ./host/hr_device.lo: ../../include/net-snmp/mib_api.h
 ./host/hr_device.lo: ../../include/net-snmp/library/parse.h
 ./host/hr_device.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_device.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -3752,6 +3933,7 @@
 ./host/hr_device.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_device.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_device.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_device.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -3794,6 +3976,7 @@
 ./host/hr_disk.lo: ../../include/net-snmp/mib_api.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/parse.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_disk.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -3828,6 +4011,7 @@
 ./host/hr_disk.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_disk.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_disk.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_disk.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -3838,6 +4022,7 @@
 ./host/hr_disk.lo: ./host/hr_disk.h
 ./host/hr_disk.lo: ../../include/net-snmp/agent/agent_read_config.h
 ./host/hr_filesys.lo: ../../include/net-snmp/net-snmp-config.h
+./host/hr_filesys.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_filesys.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_filesys.lo: ../../include/net-snmp/definitions.h
 ./host/hr_filesys.lo: ../../include/net-snmp/types.h
@@ -3905,6 +4090,7 @@
 ./host/hr_filesys.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_filesys.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hr_filesys.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3947,6 +4133,7 @@
 ./host/hr_filesys.lo: host_res.h ./host/hr_filesys.h ./host/hr_storage.h
 ./host/hr_filesys.lo: ./host/hr_disk.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/net-snmp-config.h
+./host/hrh_filesys.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/definitions.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/types.h
@@ -4014,6 +4201,7 @@
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -4090,6 +4278,7 @@
 ./host/hrh_storage.lo: ../../include/net-snmp/mib_api.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/parse.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hrh_storage.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmp.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -4124,6 +4313,7 @@
 ./host/hrh_storage.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hrh_storage.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hrh_storage.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -4167,6 +4357,7 @@
 ./host/hrh_storage.lo: host_res.h ./host/hrh_filesys.h ./host/hrh_storage.h
 ./host/hrh_storage.lo: ./host/hr_disk.h
 ./host/hr_network.lo: ../../include/net-snmp/net-snmp-config.h
+./host/hr_network.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_network.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_network.lo: ../../include/net-snmp/definitions.h
 ./host/hr_network.lo: ../../include/net-snmp/types.h
@@ -4234,6 +4425,7 @@
 ./host/hr_network.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_network.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_network.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hr_network.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -4309,6 +4501,7 @@
 ./host/hr_other.lo: ../../include/net-snmp/mib_api.h
 ./host/hr_other.lo: ../../include/net-snmp/library/parse.h
 ./host/hr_other.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_other.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -4343,6 +4536,7 @@
 ./host/hr_other.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_other.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_other.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_other.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -4386,6 +4580,7 @@
 ./host/hr_partition.lo: ../../include/net-snmp/mib_api.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/parse.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_partition.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -4420,6 +4615,7 @@
 ./host/hr_partition.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_partition.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_partition.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_partition.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -4464,6 +4660,7 @@
 ./host/hr_print.lo: ../../include/net-snmp/mib_api.h
 ./host/hr_print.lo: ../../include/net-snmp/library/parse.h
 ./host/hr_print.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_print.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -4498,6 +4695,7 @@
 ./host/hr_print.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_print.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_print.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_print.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -4505,9 +4703,9 @@
 ./host/hr_print.lo: ../../include/net-snmp/agent/var_struct.h
 ./host/hr_print.lo: ../../include/net-snmp/agent/agent_registry.h
 ./host/hr_print.lo: ../../include/net-snmp/library/fd_event_manager.h
-./host/hr_print.lo: ./host/hr_print.h struct.h util_funcs.h util_funcs/Exit.h
+./host/hr_print.lo: ./host/hr_print.h struct.h util_funcs.h
 ./host/hr_print.lo: util_funcs/header_generic.h
-./host/hr_print.lo: util_funcs/header_simple_table.h util_funcs/restart.h
+./host/hr_print.lo: util_funcs/header_simple_table.h
 ./host/hr_print.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./host/hr_proc.lo: ../../include/net-snmp/net-snmp-config.h
 ./host/hr_proc.lo: ../../include/net-snmp/net-snmp-includes.h
@@ -4543,6 +4741,7 @@
 ./host/hr_proc.lo: ../../include/net-snmp/mib_api.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/parse.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_proc.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -4577,6 +4776,7 @@
 ./host/hr_proc.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_proc.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_proc.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hr_proc.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -4654,6 +4854,7 @@
 ./host/hr_storage.lo: ../../include/net-snmp/mib_api.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/parse.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_storage.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -4688,6 +4889,7 @@
 ./host/hr_storage.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_storage.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_storage.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_storage.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -4763,6 +4965,7 @@
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/mib_api.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/parse.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -4797,6 +5000,7 @@
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -4838,6 +5042,7 @@
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/data_access/swinst.h
 ./host/hrSWInstalledTable.lo: ./host/hrSWInstalledTable.h
 ./host/hr_swinst.lo: ../../include/net-snmp/net-snmp-config.h
+./host/hr_swinst.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_swinst.lo: host_res.h
 ./host/hr_swinst.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_swinst.lo: ../../include/net-snmp/definitions.h
@@ -4906,6 +5111,7 @@
 ./host/hr_swinst.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_swinst.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_swinst.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -4945,6 +5151,7 @@
 ./host/hr_swrun.lo: ../../include/net-snmp/mib_api.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/parse.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_swrun.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -4983,6 +5190,7 @@
 ./host/hr_swrun.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_swrun.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_swrun.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -5027,6 +5235,7 @@
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/mib_api.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/parse.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -5061,6 +5270,7 @@
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5136,6 +5346,7 @@
 ./host/hrSWRunTable.lo: ../../include/net-snmp/mib_api.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/parse.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -5170,6 +5381,7 @@
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5211,6 +5423,7 @@
 ./host/hrSWRunTable.lo: ../../include/net-snmp/data_access/swrun.h
 ./host/hrSWRunTable.lo: ./host/data_access/swrun.h ./host/hrSWRunTable.h
 ./host/hr_system.lo: ../../include/net-snmp/net-snmp-config.h
+./host/hr_system.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_system.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_system.lo: ../../include/net-snmp/definitions.h
 ./host/hr_system.lo: ../../include/net-snmp/types.h
@@ -5278,6 +5491,7 @@
 ./host/hr_system.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_system.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_system.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hr_system.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5319,6 +5533,7 @@
 ./host/hr_system.lo: host_res.h ./host/hr_system.h
 ./host/hr_system.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/net-snmp-config.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/net-snmp-features.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/definitions.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/types.h
@@ -5386,6 +5601,7 @@
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/lcd_time.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmptsm.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpusm.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5462,6 +5678,7 @@
 ./mibII/at.lo: ../../include/net-snmp/mib_api.h
 ./mibII/at.lo: ../../include/net-snmp/library/parse.h
 ./mibII/at.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/at.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -5496,6 +5713,7 @@
 ./mibII/at.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/at.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/at.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/at.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5573,6 +5791,7 @@
 ./mibII/icmp.lo: ../../include/net-snmp/mib_api.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/parse.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/icmp.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -5607,6 +5826,7 @@
 ./mibII/icmp.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/icmp.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/icmp.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/icmp.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5650,6 +5870,7 @@
 ./mibII/icmp.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./mibII/icmp.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h ./mibII/icmp.h
 ./mibII/interfaces.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/interfaces.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/interfaces.lo: ../../agent/kernel.h
 ./mibII/interfaces.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/interfaces.lo: ../../include/net-snmp/definitions.h
@@ -5718,6 +5939,7 @@
 ./mibII/interfaces.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5760,9 +5982,12 @@
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/sysORTable.h
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./mibII/interfaces.lo: ../../include/net-snmp/data_access/interface.h
-./mibII/interfaces.lo: ./mibII/interfaces.h struct.h
+./mibII/interfaces.lo: ./mibII/interfaces.h struct.h util_funcs.h
 ./mibII/interfaces.lo: util_funcs/header_generic.h
+./mibII/interfaces.lo: util_funcs/header_simple_table.h
+./mibII/interfaces.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/ipAddr.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/ipAddr.lo: ../../agent/kernel.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/definitions.h
@@ -5831,6 +6056,7 @@
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5909,6 +6135,7 @@
 ./mibII/ip.lo: ../../include/net-snmp/mib_api.h
 ./mibII/ip.lo: ../../include/net-snmp/library/parse.h
 ./mibII/ip.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/ip.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -5943,6 +6170,7 @@
 ./mibII/ip.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/ip.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/ip.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6022,6 +6250,7 @@
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/mib_api.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/parse.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -6056,6 +6285,7 @@
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6097,6 +6327,7 @@
 ./mibII/ipCidrRouteTable_access.lo: ./mibII/ipCidrRouteTable_access.h
 ./mibII/ipCidrRouteTable_access.lo: ./mibII/ipCidrRouteTable_enums.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/ipCidrRouteTable.lo: ./mibII/route_headers.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/definitions.h
@@ -6165,6 +6396,7 @@
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6243,6 +6475,7 @@
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/mib_api.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/parse.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -6277,10 +6510,12 @@
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ./mibII/ipCidrRouteTable_checkfns.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ./mibII/ipCidrRouteTable_enums.h
 ./mibII/ipv6.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/ipv6.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/ipv6.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/ipv6.lo: ../../include/net-snmp/definitions.h
 ./mibII/ipv6.lo: ../../include/net-snmp/types.h
@@ -6348,6 +6583,7 @@
 ./mibII/ipv6.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/ipv6.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/ipv6.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6390,6 +6626,7 @@
 ./mibII/ipv6.lo: ../../agent/kernel.h ./mibII/ipv6.h ./mibII/var_route.h
 ./mibII/ipv6.lo: ./mibII/route_write.h ./mibII/at.h ./mibII/interfaces.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/definitions.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/types.h
@@ -6457,6 +6694,7 @@
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6495,7 +6733,7 @@
 ./mibII/kernel_linux.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/agent/mfd.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
-./mibII/kernel_linux.lo: ./mibII/kernel_linux.h
+./mibII/kernel_linux.lo: ./mibII/kernel_linux.h ./mibII/kernel_mib.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/net-snmp-config.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/definitions.h
@@ -6530,6 +6768,7 @@
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/mib_api.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/parse.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -6564,6 +6803,7 @@
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6603,6 +6843,115 @@
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/agent/mfd.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/kernel_netbsd.lo: ./mibII/kernel_netbsd.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/net-snmp-includes.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/definitions.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/types.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/oid.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/types.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/varbind_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_client.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/pdu_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/asn1.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/output_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_logging.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/session_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/callback.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_transport.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_service.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/ucd_compat.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/mib.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/mib_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/parse.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/net-snmp-features.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_impl.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/getopt.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/utilities.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/system.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/tools.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/int64.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/mt_support.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_alarm.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/data_list.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/check_varbind.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/container.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/factory.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/container_binary_array.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/container_list_ssll.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/container_iterator.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/container.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_assert.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/version.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/config_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/read_config.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/default_store.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_enum.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/vacm.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/snmpv3_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpv3.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/transform_oids.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/keytools.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/scapi.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/lcd_time.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_secmod.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmptsm.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpusm.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/mib_module_config.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/agent_module_config.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/snmp_agent.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/snmp_vars.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/agent_handler.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/var_struct.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/agent_registry.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/fd_event_manager.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/ds_agent.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/agent_read_config.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/agent_trap.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/all_helpers.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/instance.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/baby_steps.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/scalar.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/scalar_group.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/watcher.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/multiplexer.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/null.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/debug_handler.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/cache_handler.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/old_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/read_only.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/row_merge.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/serialize.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/mode_end_call.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_data.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_dataset.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_tdata.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_iterator.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_container.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_array.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./mibII/kernel_sysctl.lo: ./mibII/kernel_sysctl.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/net-snmp-config.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/definitions.h
@@ -6637,6 +6986,7 @@
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/mib_api.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/parse.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -6671,6 +7021,7 @@
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6744,6 +7095,7 @@
 ./mibII/route_write.lo: ../../include/net-snmp/mib_api.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/parse.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/route_write.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -6778,6 +7130,7 @@
 ./mibII/route_write.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/route_write.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/route_write.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/route_write.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6819,6 +7172,7 @@
 ./mibII/route_write.lo: ./mibII/ip.h ./mibII/var_route.h
 ./mibII/route_write.lo: ./mibII/route_write.h ./mibII/at.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/definitions.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/types.h
@@ -6886,6 +7240,7 @@
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6926,6 +7281,7 @@
 ./mibII/setSerialNo.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/setSerialNo.lo: ./mibII/setSerialNo.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/definitions.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/types.h
@@ -6993,6 +7349,7 @@
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7035,6 +7392,7 @@
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./mibII/snmp_mib_5_5.lo: ./mibII/snmp_mib_5_5.h ./mibII/updates.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/definitions.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/types.h
@@ -7102,6 +7460,7 @@
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7177,6 +7536,7 @@
 ./mibII/sysORTable.lo: ../../include/net-snmp/mib_api.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/parse.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/sysORTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -7211,6 +7571,7 @@
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7254,6 +7615,7 @@
 ./mibII/sysORTable.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./mibII/sysORTable.lo: ./mibII/sysORTable.h
 ./mibII/system_mib.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/system_mib.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/system_mib.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/system_mib.lo: ../../include/net-snmp/definitions.h
 ./mibII/system_mib.lo: ../../include/net-snmp/types.h
@@ -7321,6 +7683,7 @@
 ./mibII/system_mib.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/system_mib.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/system_mib.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7361,12 +7724,12 @@
 ./mibII/system_mib.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/system_mib.lo: ../../include/net-snmp/agent/sysORTable.h
 ./mibII/system_mib.lo: ../../include/net-snmp/agent/agent_callbacks.h
-./mibII/system_mib.lo: util_funcs.h util_funcs/Exit.h
-./mibII/system_mib.lo: util_funcs/header_generic.h
-./mibII/system_mib.lo: util_funcs/header_simple_table.h util_funcs/restart.h
-./mibII/system_mib.lo: struct.h util_funcs/MIB_STATS_CACHE_TIMEOUT.h
+./mibII/system_mib.lo: util_funcs.h util_funcs/header_generic.h
+./mibII/system_mib.lo: util_funcs/header_simple_table.h struct.h
+./mibII/system_mib.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./mibII/system_mib.lo: ./mibII/system_mib.h ./mibII/updates.h
 ./mibII/tcp.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/tcp.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/tcp.lo: ./mibII/mibII_common.h
 ./mibII/tcp.lo: ../../agent/kernel.h
 ./mibII/tcp.lo: ../../include/net-snmp/net-snmp-includes.h
@@ -7436,6 +7799,7 @@
 ./mibII/tcp.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/tcp.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/tcp.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/tcp.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7480,6 +7844,7 @@
 ./mibII/tcp.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h ./mibII/tcp.h
 ./mibII/tcp.lo: ./mibII/tcpTable.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/tcpTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/tcpTable.lo: ./mibII/mibII_common.h
 ./mibII/tcpTable.lo: ../../agent/kernel.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/net-snmp-includes.h
@@ -7549,6 +7914,7 @@
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7625,6 +7991,7 @@
 ./mibII/udp.lo: ../../include/net-snmp/mib_api.h
 ./mibII/udp.lo: ../../include/net-snmp/library/parse.h
 ./mibII/udp.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/udp.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -7659,6 +8026,7 @@
 ./mibII/udp.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/udp.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/udp.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/udp.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7738,6 +8106,7 @@
 ./mibII/udpTable.lo: ../../include/net-snmp/mib_api.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/parse.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/udpTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -7772,6 +8141,7 @@
 ./mibII/udpTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/udpTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/udpTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7846,6 +8216,7 @@
 ./mibII/updates.lo: ../../include/net-snmp/mib_api.h
 ./mibII/updates.lo: ../../include/net-snmp/library/parse.h
 ./mibII/updates.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/updates.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -7880,6 +8251,7 @@
 ./mibII/updates.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/updates.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/updates.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7952,6 +8324,7 @@
 ./mibII/vacm_conf.lo: ../../include/net-snmp/mib_api.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/parse.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -7986,6 +8359,7 @@
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8060,6 +8434,7 @@
 ./mibII/vacm_context.lo: ../../include/net-snmp/mib_api.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/parse.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/vacm_context.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -8094,6 +8469,7 @@
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8167,6 +8543,7 @@
 ./mibII/vacm_vars.lo: ../../include/net-snmp/mib_api.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/parse.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -8201,6 +8578,7 @@
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8243,6 +8621,7 @@
 ./mibII/vacm_vars.lo: ../../include/net-snmp/agent/sysORTable.h
 ./mibII/vacm_vars.lo: ./mibII/vacm_vars.h util_funcs/header_generic.h
 ./mibII/var_route.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/var_route.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/var_route.lo: ./mibII/route_headers.h
 ./mibII/var_route.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/var_route.lo: ../../include/net-snmp/definitions.h
@@ -8311,6 +8690,7 @@
 ./mibII/var_route.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/var_route.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/var_route.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/var_route.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8353,7 +8733,9 @@
 ./mibII/var_route.lo: ../../include/net-snmp/data_access/interface.h
 ./mibII/var_route.lo: ./mibII/ip.h ./mibII/var_route.h ./mibII/route_write.h
 ./mibII/var_route.lo: ./mibII/at.h ../../agent/kernel.h ./mibII/interfaces.h
-./mibII/var_route.lo: struct.h
+./mibII/var_route.lo: struct.h util_funcs.h util_funcs/header_generic.h
+./mibII/var_route.lo: util_funcs/header_simple_table.h
+./mibII/var_route.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/net-snmp-config.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/net-snmp-includes.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/definitions.h
@@ -8388,6 +8770,7 @@
 ./misc/ipfwacc.lo: ../../include/net-snmp/mib_api.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/parse.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/oid_stash.h
+./misc/ipfwacc.lo: ../../include/net-snmp/net-snmp-features.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_impl.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -8422,6 +8805,7 @@
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/lcd_time.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/snmptsm.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpusm.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8462,6 +8846,7 @@
 ./misc/ipfwacc.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./misc/ipfwacc.lo: util_funcs/header_simple_table.h ./misc/ipfwacc.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/net-snmp-config.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/net-snmp-features.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/net-snmp-includes.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/definitions.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/types.h
@@ -8529,6 +8914,7 @@
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/lcd_time.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmptsm.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpusm.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8571,6 +8957,7 @@
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./notification-log-mib/notification_log.lo: ./notification-log-mib/notification_log.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/net-snmp-config.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/definitions.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/types.h
@@ -8638,6 +9025,7 @@
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8679,6 +9067,7 @@
 ./notification/snmpNotifyFilterProfileTable.lo: header_complex.h
 ./notification/snmpNotifyFilterProfileTable.lo: ./notification/snmpNotifyFilterProfileTable.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/net-snmp-config.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/definitions.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/types.h
@@ -8746,6 +9135,7 @@
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8832,6 +9222,7 @@
 ./Rmon/agutil.lo: ../../include/net-snmp/mib_api.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/parse.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/agutil.lo: ../../include/net-snmp/net-snmp-features.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_impl.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmp.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -8866,6 +9257,7 @@
 ./Rmon/agutil.lo: ../../include/net-snmp/library/lcd_time.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmptsm.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmpusm.h
 ./Rmon/agutil.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./Rmon/agutil.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8939,6 +9331,7 @@
 ./Rmon/alarm.lo: ../../include/net-snmp/mib_api.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/parse.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/alarm.lo: ../../include/net-snmp/net-snmp-features.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_impl.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmp.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -8973,6 +9366,7 @@
 ./Rmon/alarm.lo: ../../include/net-snmp/library/lcd_time.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmptsm.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmpusm.h
 ./Rmon/alarm.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./Rmon/alarm.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9013,6 +9407,7 @@
 ./Rmon/alarm.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./Rmon/alarm.lo: ./Rmon/alarm.h ./Rmon/agutil_api.h ./Rmon/row_api.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/net-snmp-config.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/definitions.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/types.h
@@ -9080,6 +9475,7 @@
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9120,6 +9516,7 @@
 ./Rmon/alarmTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./Rmon/alarmTable.lo: utilities/iquery.h ./Rmon/alarmTable.h
 ./Rmon/event.lo: ../../include/net-snmp/net-snmp-config.h
+./Rmon/event.lo: ../../include/net-snmp/net-snmp-features.h
 ./Rmon/event.lo: ../../include/net-snmp/net-snmp-includes.h
 ./Rmon/event.lo: ../../include/net-snmp/definitions.h
 ./Rmon/event.lo: ../../include/net-snmp/types.h
@@ -9187,6 +9584,7 @@
 ./Rmon/event.lo: ../../include/net-snmp/library/lcd_time.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmptsm.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmpusm.h
 ./Rmon/event.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./Rmon/event.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9260,6 +9658,7 @@
 ./Rmon/history.lo: ../../include/net-snmp/mib_api.h
 ./Rmon/history.lo: ../../include/net-snmp/library/parse.h
 ./Rmon/history.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/history.lo: ../../include/net-snmp/net-snmp-features.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmp_impl.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmp.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -9294,6 +9693,7 @@
 ./Rmon/history.lo: ../../include/net-snmp/library/lcd_time.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmptsm.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmpusm.h
 ./Rmon/history.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./Rmon/history.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9367,6 +9767,7 @@
 ./Rmon/rows.lo: ../../include/net-snmp/mib_api.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/parse.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/rows.lo: ../../include/net-snmp/net-snmp-features.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmp_impl.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmp.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -9401,6 +9802,7 @@
 ./Rmon/rows.lo: ../../include/net-snmp/library/lcd_time.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmptsm.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmpusm.h
 ./Rmon/rows.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./Rmon/rows.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9474,6 +9876,7 @@
 ./Rmon/statistics.lo: ../../include/net-snmp/mib_api.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/parse.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/statistics.lo: ../../include/net-snmp/net-snmp-features.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_impl.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmp.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -9508,6 +9911,7 @@
 ./Rmon/statistics.lo: ../../include/net-snmp/library/lcd_time.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmptsm.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmpusm.h
 ./Rmon/statistics.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./Rmon/statistics.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9582,6 +9986,7 @@
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -9616,6 +10021,7 @@
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9690,6 +10096,7 @@
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -9724,6 +10131,7 @@
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9798,6 +10206,7 @@
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -9832,6 +10241,7 @@
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9906,6 +10316,7 @@
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -9940,6 +10351,7 @@
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10014,6 +10426,7 @@
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -10048,6 +10461,7 @@
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10122,6 +10536,7 @@
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -10156,6 +10571,7 @@
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10230,6 +10646,7 @@
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -10264,6 +10681,7 @@
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10338,6 +10756,7 @@
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -10372,6 +10791,7 @@
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10446,6 +10866,7 @@
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -10480,6 +10901,7 @@
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10554,6 +10976,7 @@
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -10588,6 +11011,7 @@
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10661,6 +11085,7 @@
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -10695,6 +11120,7 @@
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10768,6 +11194,7 @@
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -10802,6 +11229,7 @@
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10875,6 +11303,7 @@
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -10909,6 +11338,7 @@
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10950,6 +11380,7 @@
 ./sctp-mib/sctpScalars_solaris2.lo: ./sctp-mib/sctpScalars_common.h
 ./sctp-mib/sctpScalars_solaris2.lo: kernel_sunos5.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/net-snmp-config.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/types.h
@@ -11017,6 +11448,7 @@
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11098,6 +11530,7 @@
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -11132,6 +11565,7 @@
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11174,10 +11608,8 @@
 ./sctp-mib/sctpTables_freebsd.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpTables_freebsd.lo: ./sctp-mib/sctpAssocLocalAddrTable.h
 ./sctp-mib/sctpTables_freebsd.lo: ./sctp-mib/sctpAssocRemAddrTable.h
-./sctp-mib/sctpTables_freebsd.lo: util_funcs.h util_funcs/Exit.h
-./sctp-mib/sctpTables_freebsd.lo: util_funcs/header_generic.h
-./sctp-mib/sctpTables_freebsd.lo: util_funcs/header_simple_table.h
-./sctp-mib/sctpTables_freebsd.lo: util_funcs/restart.h struct.h
+./sctp-mib/sctpTables_freebsd.lo: util_funcs.h util_funcs/header_generic.h
+./sctp-mib/sctpTables_freebsd.lo: util_funcs/header_simple_table.h struct.h
 ./sctp-mib/sctpTables_freebsd.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/net-snmp-config.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/net-snmp-includes.h
@@ -11213,6 +11645,7 @@
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -11247,6 +11680,7 @@
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11324,6 +11758,7 @@
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/mib_api.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/parse.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -11358,6 +11793,7 @@
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11400,13 +11836,12 @@
 ./sctp-mib/sctpTables_solaris2.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpTables_solaris2.lo: ./sctp-mib/sctpAssocLocalAddrTable.h
 ./sctp-mib/sctpTables_solaris2.lo: ./sctp-mib/sctpAssocRemAddrTable.h
-./sctp-mib/sctpTables_solaris2.lo: util_funcs.h util_funcs/Exit.h
-./sctp-mib/sctpTables_solaris2.lo: util_funcs/header_generic.h
-./sctp-mib/sctpTables_solaris2.lo: util_funcs/header_simple_table.h
-./sctp-mib/sctpTables_solaris2.lo: util_funcs/restart.h struct.h
+./sctp-mib/sctpTables_solaris2.lo: util_funcs.h util_funcs/header_generic.h
+./sctp-mib/sctpTables_solaris2.lo: util_funcs/header_simple_table.h struct.h
 ./sctp-mib/sctpTables_solaris2.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./sctp-mib/sctpTables_solaris2.lo: kernel_sunos5.h
 ./smux/smux.lo: ../../include/net-snmp/net-snmp-config.h
+./smux/smux.lo: ../../include/net-snmp/net-snmp-features.h
 ./smux/smux.lo: ../../include/net-snmp/net-snmp-includes.h
 ./smux/smux.lo: ../../include/net-snmp/definitions.h
 ./smux/smux.lo: ../../include/net-snmp/types.h
@@ -11474,6 +11909,7 @@
 ./smux/smux.lo: ../../include/net-snmp/library/lcd_time.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./smux/smux.lo: ../../include/net-snmp/library/snmptsm.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmpusm.h
 ./smux/smux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./smux/smux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11547,6 +11983,7 @@
 ./smux/snmp_bgp.lo: ../../include/net-snmp/mib_api.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/parse.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/oid_stash.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/net-snmp-features.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_impl.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -11581,6 +12018,7 @@
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/lcd_time.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmptsm.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpusm.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11654,6 +12092,7 @@
 ./smux/snmp_ospf.lo: ../../include/net-snmp/mib_api.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/parse.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/oid_stash.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/net-snmp-features.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_impl.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -11688,6 +12127,7 @@
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/lcd_time.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmptsm.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpusm.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11761,6 +12201,7 @@
 ./smux/snmp_rip2.lo: ../../include/net-snmp/mib_api.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/parse.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/oid_stash.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/net-snmp-features.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -11795,6 +12236,7 @@
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/lcd_time.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmptsm.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpusm.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11835,6 +12277,7 @@
 ./smux/snmp_rip2.lo: ../../include/net-snmp/agent/snmp_get_statistic.h smux.h
 ./smux/snmp_rip2.lo: ./smux/snmp_rip2.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/net-snmp-config.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/net-snmp-features.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/net-snmp-includes.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/definitions.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/types.h
@@ -11902,6 +12345,7 @@
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11944,6 +12388,7 @@
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./snmpv3/snmpEngine.lo: util_funcs/header_generic.h ./snmpv3/snmpEngine.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/net-snmp-config.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/net-snmp-features.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/definitions.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/types.h
@@ -12011,6 +12456,7 @@
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12086,6 +12532,7 @@
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/mib_api.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/parse.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/oid_stash.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/net-snmp-features.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_impl.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -12120,6 +12567,7 @@
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12195,6 +12643,7 @@
 ./snmpv3/usmConf.lo: ../../include/net-snmp/mib_api.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/parse.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/oid_stash.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/net-snmp-features.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_impl.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -12229,6 +12678,7 @@
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12268,6 +12718,7 @@
 ./snmpv3/usmConf.lo: ../../include/net-snmp/agent/mfd.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/net-snmp-config.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/net-snmp-features.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/definitions.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/types.h
@@ -12335,6 +12786,7 @@
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12410,6 +12862,7 @@
 ./snmpv3/usmStats.lo: ../../include/net-snmp/mib_api.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/parse.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/oid_stash.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/net-snmp-features.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_impl.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -12444,6 +12897,7 @@
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12486,6 +12940,7 @@
 ./snmpv3/usmStats.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./snmpv3/usmStats.lo: util_funcs/header_generic.h ./snmpv3/usmStats.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/net-snmp-config.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/net-snmp-features.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/net-snmp-includes.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/definitions.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/types.h
@@ -12553,6 +13008,7 @@
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12626,6 +13082,7 @@
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/mib_api.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/parse.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/oid_stash.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/net-snmp-features.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_impl.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -12660,6 +13117,7 @@
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/lcd_time.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmptsm.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpusm.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12734,6 +13192,7 @@
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/mib_api.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/parse.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/oid_stash.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/net-snmp-features.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_impl.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -12768,6 +13227,7 @@
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/lcd_time.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmptsm.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpusm.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12808,6 +13268,7 @@
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./target/snmpTargetParamsEntry.lo: ./target/snmpTargetParamsEntry.h
 ./target/target.lo: ../../include/net-snmp/net-snmp-config.h
+./target/target.lo: ../../include/net-snmp/net-snmp-features.h
 ./target/target.lo: ../../include/net-snmp/net-snmp-includes.h
 ./target/target.lo: ../../include/net-snmp/definitions.h
 ./target/target.lo: ../../include/net-snmp/types.h
@@ -12875,6 +13336,7 @@
 ./target/target.lo: ../../include/net-snmp/library/lcd_time.h
 ./target/target.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./target/target.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./target/target.lo: ../../include/net-snmp/library/snmptsm.h
 ./target/target.lo: ../../include/net-snmp/library/snmpusm.h
 ./target/target.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./target/target.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12916,6 +13378,7 @@
 ./target/target.lo: ./target/snmpTargetAddrEntry.h
 ./target/target.lo: ./target/snmpTargetParamsEntry.h target.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/net-snmp-config.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/net-snmp-features.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/definitions.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/types.h
@@ -12983,6 +13446,7 @@
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/lcd_time.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmptsm.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpusm.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13056,6 +13520,7 @@
 ./target/target_counters.lo: ../../include/net-snmp/mib_api.h
 ./target/target_counters.lo: ../../include/net-snmp/library/parse.h
 ./target/target_counters.lo: ../../include/net-snmp/library/oid_stash.h
+./target/target_counters.lo: ../../include/net-snmp/net-snmp-features.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_impl.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -13090,6 +13555,7 @@
 ./target/target_counters.lo: ../../include/net-snmp/library/lcd_time.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./target/target_counters.lo: ../../include/net-snmp/library/snmptsm.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpusm.h
 ./target/target_counters.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./target/target_counters.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13163,6 +13629,7 @@
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/mib_api.h
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/parse.h
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/oid_stash.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/net-snmp-features.h
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_impl.h
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp.h
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -13197,6 +13664,7 @@
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/lcd_time.h
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmptsm.h
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpusm.h
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13270,6 +13738,7 @@
 ./tunnel/tunnel.lo: ../../include/net-snmp/mib_api.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/parse.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/oid_stash.h
+./tunnel/tunnel.lo: ../../include/net-snmp/net-snmp-features.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_impl.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -13304,6 +13773,7 @@
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/lcd_time.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/snmptsm.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpusm.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13385,6 +13855,7 @@
 ./ucd-snmp/disk.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -13419,6 +13890,7 @@
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13494,6 +13966,7 @@
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -13528,6 +14001,7 @@
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13603,6 +14077,7 @@
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -13637,6 +14112,7 @@
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13678,6 +14154,7 @@
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./ucd-snmp/diskio.lo: util_funcs/header_simple_table.h ./ucd-snmp/diskio.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/net-snmp-config.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/types.h
@@ -13745,6 +14222,7 @@
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13783,10 +14261,6 @@
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/agent/mfd.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
-./ucd-snmp/dlmod.lo: struct.h util_funcs.h util_funcs/Exit.h
-./ucd-snmp/dlmod.lo: util_funcs/header_generic.h
-./ucd-snmp/dlmod.lo: util_funcs/header_simple_table.h util_funcs/restart.h
-./ucd-snmp/dlmod.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./ucd-snmp/dlmod.lo: ./ucd-snmp/dlmod.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/net-snmp-config.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/net-snmp-includes.h
@@ -13822,6 +14296,7 @@
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -13856,6 +14331,7 @@
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13898,6 +14374,7 @@
 ./ucd-snmp/errormib.lo: ./ucd-snmp/errormib.h mibdefs.h
 ./ucd-snmp/errormib.lo: util_funcs/header_generic.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/net-snmp-config.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/types.h
@@ -13965,6 +14442,7 @@
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14006,10 +14484,9 @@
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./ucd-snmp/extensible.lo: struct.h ./ucd-snmp/extensible.h mibdefs.h
-./ucd-snmp/extensible.lo: ../../agent/mibgroup/util_funcs.h util_funcs/Exit.h
+./ucd-snmp/extensible.lo: ../../agent/mibgroup/util_funcs.h
 ./ucd-snmp/extensible.lo: util_funcs/header_generic.h
 ./ucd-snmp/extensible.lo: util_funcs/header_simple_table.h
-./ucd-snmp/extensible.lo: util_funcs/restart.h
 ./ucd-snmp/extensible.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./ucd-snmp/extensible.lo: utilities/execute.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/net-snmp-config.h
@@ -14046,6 +14523,7 @@
 ./ucd-snmp/file.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/file.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -14080,6 +14558,7 @@
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14154,6 +14633,7 @@
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -14188,6 +14668,7 @@
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14228,6 +14709,7 @@
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/hpux.lo: ./ucd-snmp/hpux.h mibdefs.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/net-snmp-config.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/types.h
@@ -14295,6 +14777,7 @@
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14369,6 +14852,7 @@
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -14403,6 +14887,7 @@
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14478,6 +14963,7 @@
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -14512,6 +14998,7 @@
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14589,6 +15076,7 @@
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -14623,6 +15111,7 @@
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14698,6 +15187,7 @@
 ./ucd-snmp/memory.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -14732,6 +15222,7 @@
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14806,6 +15297,7 @@
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -14840,6 +15332,7 @@
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14915,6 +15408,7 @@
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -14949,6 +15443,7 @@
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -15024,6 +15519,7 @@
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -15058,6 +15554,7 @@
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -15097,10 +15594,8 @@
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/agent/mfd.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/agent/auto_nlist.h
-./ucd-snmp/memory_freebsd2.lo: util_funcs.h util_funcs/Exit.h
-./ucd-snmp/memory_freebsd2.lo: util_funcs/header_generic.h
-./ucd-snmp/memory_freebsd2.lo: util_funcs/header_simple_table.h
-./ucd-snmp/memory_freebsd2.lo: util_funcs/restart.h struct.h
+./ucd-snmp/memory_freebsd2.lo: util_funcs.h util_funcs/header_generic.h
+./ucd-snmp/memory_freebsd2.lo: util_funcs/header_simple_table.h struct.h
 ./ucd-snmp/memory_freebsd2.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./ucd-snmp/memory_freebsd2.lo: ./ucd-snmp/memory.h
 ./ucd-snmp/memory_freebsd2.lo: ./ucd-snmp/memory_freebsd2.h mibdefs.h
@@ -15138,6 +15633,7 @@
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -15172,6 +15668,7 @@
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -15247,6 +15744,7 @@
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -15281,6 +15779,7 @@
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -15356,6 +15855,7 @@
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -15390,6 +15890,7 @@
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -15433,6 +15934,7 @@
 ./ucd-snmp/memory_solaris2.lo: ./ucd-snmp/memory.h
 ./ucd-snmp/memory_solaris2.lo: ./ucd-snmp/memory_solaris2.h mibdefs.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/net-snmp-config.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/types.h
@@ -15500,6 +16002,7 @@
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -15540,9 +16043,8 @@
 ./ucd-snmp/pass.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/pass.lo: struct.h ./ucd-snmp/pass.h mibdefs.h
 ./ucd-snmp/pass.lo: ./ucd-snmp/pass_common.h ./ucd-snmp/extensible.h
-./ucd-snmp/pass.lo: util_funcs.h util_funcs/Exit.h
-./ucd-snmp/pass.lo: util_funcs/header_generic.h
-./ucd-snmp/pass.lo: util_funcs/header_simple_table.h util_funcs/restart.h
+./ucd-snmp/pass.lo: util_funcs.h util_funcs/header_generic.h
+./ucd-snmp/pass.lo: util_funcs/header_simple_table.h
 ./ucd-snmp/pass.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/net-snmp-config.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/net-snmp-includes.h
@@ -15578,6 +16080,7 @@
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -15612,6 +16115,7 @@
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -15651,12 +16155,12 @@
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/agent/mfd.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/pass_common.lo: ../../agent/mibgroup/util_funcs.h
-./ucd-snmp/pass_common.lo: util_funcs/Exit.h util_funcs/header_generic.h
-./ucd-snmp/pass_common.lo: util_funcs/header_simple_table.h
-./ucd-snmp/pass_common.lo: util_funcs/restart.h struct.h
+./ucd-snmp/pass_common.lo: util_funcs/header_generic.h
+./ucd-snmp/pass_common.lo: util_funcs/header_simple_table.h struct.h
 ./ucd-snmp/pass_common.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./ucd-snmp/pass_common.lo: ./ucd-snmp/pass_common.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/net-snmp-config.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/types.h
@@ -15724,6 +16228,7 @@
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -15764,12 +16269,11 @@
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/pass_persist.lo: struct.h ./ucd-snmp/pass_persist.h mibdefs.h
 ./ucd-snmp/pass_persist.lo: ./ucd-snmp/pass_common.h ./ucd-snmp/extensible.h
-./ucd-snmp/pass_persist.lo: util_funcs.h util_funcs/Exit.h
-./ucd-snmp/pass_persist.lo: util_funcs/header_generic.h
+./ucd-snmp/pass_persist.lo: util_funcs.h util_funcs/header_generic.h
 ./ucd-snmp/pass_persist.lo: util_funcs/header_simple_table.h
-./ucd-snmp/pass_persist.lo: util_funcs/restart.h
 ./ucd-snmp/pass_persist.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/net-snmp-config.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/types.h
@@ -15837,6 +16341,7 @@
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -15877,11 +16382,12 @@
 ./ucd-snmp/proc.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/proc.lo: struct.h ./ucd-snmp/proc.h mibdefs.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/data_access/swrun.h
-./ucd-snmp/proc.lo: ./ucd-snmp/errormib.h util_funcs.h util_funcs/Exit.h
+./ucd-snmp/proc.lo: ./ucd-snmp/errormib.h util_funcs.h
 ./ucd-snmp/proc.lo: util_funcs/header_generic.h
-./ucd-snmp/proc.lo: util_funcs/header_simple_table.h util_funcs/restart.h
+./ucd-snmp/proc.lo: util_funcs/header_simple_table.h
 ./ucd-snmp/proc.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h ../../agent/kernel.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/net-snmp-config.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/types.h
@@ -15949,6 +16455,7 @@
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -15989,6 +16496,7 @@
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/proxy.lo: ./ucd-snmp/proxy.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/net-snmp-config.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/types.h
@@ -16056,6 +16564,7 @@
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -16095,10 +16604,8 @@
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/mfd.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/versioninfo.lo: struct.h ./ucd-snmp/versioninfo.h mibdefs.h
-./ucd-snmp/versioninfo.lo: util_funcs.h util_funcs/Exit.h
-./ucd-snmp/versioninfo.lo: util_funcs/header_generic.h
-./ucd-snmp/versioninfo.lo: util_funcs/header_simple_table.h
-./ucd-snmp/versioninfo.lo: util_funcs/restart.h
+./ucd-snmp/versioninfo.lo: util_funcs/header_generic.h util_funcs/restart.h
+./ucd-snmp/versioninfo.lo: util_funcs.h util_funcs/header_simple_table.h
 ./ucd-snmp/versioninfo.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/net-snmp-config.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/net-snmp-includes.h
@@ -16134,6 +16641,7 @@
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -16168,6 +16676,7 @@
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -16242,6 +16751,7 @@
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -16276,6 +16786,7 @@
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -16351,6 +16862,7 @@
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -16385,6 +16897,7 @@
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -16460,6 +16973,7 @@
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -16494,6 +17008,7 @@
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -16569,6 +17084,7 @@
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -16603,6 +17119,7 @@
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -16677,6 +17194,7 @@
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -16711,6 +17229,7 @@
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -16787,6 +17306,7 @@
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -16821,6 +17341,7 @@
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -16862,6 +17383,7 @@
 ./ucd-snmp/vmstat_hpux.lo: mibdefs.h util_funcs/header_generic.h
 ./ucd-snmp/vmstat_hpux.lo: ./ucd-snmp/vmstat.h ./ucd-snmp/vmstat_hpux.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/net-snmp-config.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/types.h
@@ -16929,6 +17451,7 @@
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -17005,6 +17528,7 @@
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -17039,6 +17563,7 @@
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -17114,6 +17639,7 @@
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/mib_api.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/parse.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -17148,6 +17674,7 @@
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -17222,6 +17749,7 @@
 ./util_funcs/Exit.lo: ../../include/net-snmp/mib_api.h
 ./util_funcs/Exit.lo: ../../include/net-snmp/library/parse.h
 ./util_funcs/Exit.lo: ../../include/net-snmp/library/oid_stash.h
+./util_funcs/Exit.lo: ../../include/net-snmp/net-snmp-features.h
 ./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp_impl.h
 ./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp.h
 ./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -17258,6 +17786,7 @@
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/mib_api.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/parse.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/oid_stash.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/net-snmp-features.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp_impl.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -17297,6 +17826,7 @@
 ./util_funcs/header_generic.lo: ../../include/net-snmp/mib_api.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/parse.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/oid_stash.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/net-snmp-features.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_impl.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -17331,6 +17861,7 @@
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/lcd_time.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmptsm.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpusm.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -17404,6 +17935,7 @@
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/mib_api.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/parse.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/oid_stash.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/net-snmp-features.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_impl.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -17438,6 +17970,7 @@
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/lcd_time.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmptsm.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpusm.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -17511,6 +18044,7 @@
 ./util_funcs/restart.lo: ../../include/net-snmp/mib_api.h
 ./util_funcs/restart.lo: ../../include/net-snmp/library/parse.h
 ./util_funcs/restart.lo: ../../include/net-snmp/library/oid_stash.h
+./util_funcs/restart.lo: ../../include/net-snmp/net-snmp-features.h
 ./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_impl.h
 ./util_funcs/restart.lo: ../../include/net-snmp/library/snmp.h
 ./util_funcs/restart.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -17545,6 +18079,7 @@
 ./util_funcs/restart.lo: ../../include/net-snmp/library/lcd_time.h
 ./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./util_funcs/restart.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmptsm.h
 ./util_funcs/restart.lo: ../../include/net-snmp/library/snmpusm.h
 ./utilities/execute.lo: ../../include/net-snmp/net-snmp-config.h
 ./utilities/execute.lo: ../../include/net-snmp/net-snmp-includes.h
@@ -17580,6 +18115,7 @@
 ./utilities/execute.lo: ../../include/net-snmp/mib_api.h
 ./utilities/execute.lo: ../../include/net-snmp/library/parse.h
 ./utilities/execute.lo: ../../include/net-snmp/library/oid_stash.h
+./utilities/execute.lo: ../../include/net-snmp/net-snmp-features.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_impl.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -17614,6 +18150,7 @@
 ./utilities/execute.lo: ../../include/net-snmp/library/lcd_time.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./utilities/execute.lo: ../../include/net-snmp/library/snmptsm.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpusm.h
 ./utilities/execute.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./utilities/execute.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -17655,6 +18192,7 @@
 ./utilities/execute.lo: ucd-snmp/errormib.h mibdefs.h ./utilities/execute.h
 ./utilities/execute.lo: struct.h
 ./utilities/iquery.lo: ../../include/net-snmp/net-snmp-config.h
+./utilities/iquery.lo: ../../include/net-snmp/net-snmp-features.h
 ./utilities/iquery.lo: ../../include/net-snmp/net-snmp-includes.h
 ./utilities/iquery.lo: ../../include/net-snmp/definitions.h
 ./utilities/iquery.lo: ../../include/net-snmp/types.h
@@ -17722,6 +18260,7 @@
 ./utilities/iquery.lo: ../../include/net-snmp/library/lcd_time.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./utilities/iquery.lo: ../../include/net-snmp/library/snmptsm.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpusm.h
 ./utilities/iquery.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./utilities/iquery.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -17795,6 +18334,7 @@
 ./utilities/override.lo: ../../include/net-snmp/mib_api.h
 ./utilities/override.lo: ../../include/net-snmp/library/parse.h
 ./utilities/override.lo: ../../include/net-snmp/library/oid_stash.h
+./utilities/override.lo: ../../include/net-snmp/net-snmp-features.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_impl.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -17829,6 +18369,7 @@
 ./utilities/override.lo: ../../include/net-snmp/library/lcd_time.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./utilities/override.lo: ../../include/net-snmp/library/snmptsm.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmpusm.h
 ./utilities/override.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./utilities/override.lo: ../../include/net-snmp/agent/mib_module_config.h
diff --git a/agent/mibgroup/Makefile.in b/agent/mibgroup/Makefile.in
index f641ab7..2341ab4 100644
--- a/agent/mibgroup/Makefile.in
+++ b/agent/mibgroup/Makefile.in
@@ -1,4 +1,6 @@
 top_builddir=../..
+mysubdir=agent/mibgroup
+
 # currently assumes gcc:    (XXX: fix via configure tests)
 DLFLAGS=-fPIC -shared
 
@@ -16,6 +18,8 @@
 
 OTHERCLEANTARGETS=@dllcleans@
 
+FEATUREFILE=../../include/net-snmp/agent/features-mibgroups.h
+
 # Need a special .c -> .o definition here to make sure we place the
 # object files in the sub directory.
 
@@ -25,10 +29,12 @@
 @mib_module_list_o@
 @mib_module_list_lo@
 @mib_module_list_c@
+@mib_module_list_ft@
 
-OBJS  = $(mib_module_list_o)
-LOBJS = $(mib_module_list_lo)
-SRCS  = $(mib_module_list_c)
+OBJS   = $(mib_module_list_o)
+LOBJS  = $(mib_module_list_lo)
+SRCS   = $(mib_module_list_c)
+FTOBJS = $(mib_module_list_ft)
 
 all: standardall $(LOBJS)
 
diff --git a/agent/mibgroup/Rmon/alarmTable.c b/agent/mibgroup/Rmon/alarmTable.c
index c9c2aea..6181628 100644
--- a/agent/mibgroup/Rmon/alarmTable.c
+++ b/agent/mibgroup/Rmon/alarmTable.c
@@ -10,11 +10,22 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "utilities/iquery.h"
 #include "alarmTable.h"
 
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(query_set_default_session)
+netsnmp_feature_require(table_tdata)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(table_tdata_extract_table)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(table_tdata_insert_row)
+netsnmp_feature_require(iquery_pdu_session)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /** Initializes the alarmTable module */
 void
 init_alarmTable(void)
@@ -66,7 +77,7 @@
                      size_t alarmed_var_length,
                      u_long sample_type,
                      u_long value,
-                     u_long the_threshold, char *alarm_descr);
+                     u_long the_threshold, const char *alarm_descr);
 
 #define ALARM_STR1_LEN	32
 typedef enum {
@@ -180,8 +191,8 @@
         return ;
     }
 
-    DEBUGMSGTL(("rmon:alarmTable", "alarmIndex.%d last value (%d)\n", entry->alarmIndex, entry->last_abs_value));
-    DEBUGMSGTL(("rmon:alarmTable", "alarmIndex.%d new_value (%d)\n", entry->alarmIndex, new_value));
+    DEBUGMSGTL(("rmon:alarmTable", "alarmIndex.%ld last value (%ld)\n", entry->alarmIndex, entry->last_abs_value));
+    DEBUGMSGTL(("rmon:alarmTable", "alarmIndex.%ld new_value (%ld)\n", entry->alarmIndex, new_value));
 
     entry->alarmValue = (SAMPLE_TYPE_ABSOLUTE == entry->alarmSampleType) ?
         new_value : new_value - entry->last_abs_value;
diff --git a/agent/mibgroup/Rmon/event.c b/agent/mibgroup/Rmon/event.c
index 8d2d4a1..bb87bfe 100644
--- a/agent/mibgroup/Rmon/event.c
+++ b/agent/mibgroup/Rmon/event.c
@@ -19,6 +19,7 @@
  ******************************************************************/
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -49,6 +50,8 @@
 #include "agutil_api.h"
 #include "row_api.h"
 
+netsnmp_feature_require(snprint_objid)
+
 /*
  * File scope definitions section 
  */
diff --git a/agent/mibgroup/Rmon/row_api.h b/agent/mibgroup/Rmon/row_api.h
index 2d3c832..9f576be 100644
--- a/agent/mibgroup/Rmon/row_api.h
+++ b/agent/mibgroup/Rmon/row_api.h
@@ -79,7 +79,7 @@
  * Api prototypes 
  */
 void            ROWAPI_init_table(TABLE_DEFINTION_T * table_ptr,
-                                  char *name,
+                                  const char *name,
                                   u_long max_number_of_entries,
                                   ENTRY_CALLBACK_T * ClbkCreate,
                                   ENTRY_CALLBACK_T * ClbkClone,
diff --git a/agent/mibgroup/Rmon/rows.c b/agent/mibgroup/Rmon/rows.c
index 924a93b..ac26e30 100644
--- a/agent/mibgroup/Rmon/rows.c
+++ b/agent/mibgroup/Rmon/rows.c
@@ -255,7 +255,7 @@
 
 void
 ROWAPI_init_table(TABLE_DEFINTION_T * table_ptr,
-                  char *name,
+                  const char *name,
                   u_long max_number_of_entries,
                   ENTRY_CALLBACK_T * ClbkCreate,
                   ENTRY_CALLBACK_T * ClbkClone,
diff --git a/agent/mibgroup/agent/extend.c b/agent/mibgroup/agent/extend.c
index 239eeb3..48379a2 100644
--- a/agent/mibgroup/agent/extend.c
+++ b/agent/mibgroup/agent/extend.c
@@ -1,5 +1,6 @@
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/watcher.h>
@@ -15,6 +16,12 @@
 #define SHELLCOMMAND 3
 #endif
 
+netsnmp_feature_require(extract_table_row_data)
+netsnmp_feature_require(table_data_delete_table)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(insert_table_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 oid  ns_extend_oid[]    = { 1, 3, 6, 1, 4, 1, 8072, 1, 3, 2 };
 oid  extend_count_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 3, 2, 1 };
 oid  extend_config_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 3, 2, 2 };
@@ -27,7 +34,7 @@
     size_t              oid_len;
     long                num_entries;
     netsnmp_extend     *ehead;
-    netsnmp_handler_registration       *reg[3];
+    netsnmp_handler_registration       *reg[4];
     struct extend_registration_block_s *next;
 } extend_registration_block;
 extend_registration_block *ereg_head = NULL;
@@ -50,6 +57,7 @@
 WriteMethod fixExec2Error;
 FindVarMethod var_extensible_old;
 oid  old_extensible_variables_oid[] = { NETSNMP_UCDAVIS_MIB, NETSNMP_SHELLMIBNUM, 1 };
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 old_extensible_variables[] = {
     {MIBINDEX,     ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
      var_extensible_old, 1, {MIBINDEX}},
@@ -66,6 +74,24 @@
     {ERRORFIXCMD,  ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
      var_extensible_old, 1, {ERRORFIXCMD}}
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 old_extensible_variables[] = {
+    {MIBINDEX,     ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {MIBINDEX}},
+    {ERRORNAME,    ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORNAME}},
+    {SHELLCOMMAND, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {SHELLCOMMAND}},
+    {ERRORFLAG,    ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORFLAG}},
+    {ERRORMSG,     ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORMSG}},
+    {ERRORFIX,     ASN_INTEGER,  NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORFIX}},
+    {ERRORFIXCMD,  ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORFIXCMD}}
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #endif
 
 
@@ -97,7 +123,8 @@
     netsnmp_table_data                *dinfo;
     netsnmp_table_registration_info   *tinfo;
     netsnmp_watcher_info              *winfo;
-    netsnmp_handler_registration      *reg;
+    netsnmp_handler_registration      *reg = NULL;
+    int                                rc;
 
     for ( eptr=ereg_head; eptr; eptr=eptr->next ) {
         if (!snmp_oid_compare( base, len, eptr->root_oid, eptr->oid_len))
@@ -105,6 +132,8 @@
     }
     if (!eptr) {
         eptr = SNMP_MALLOC_TYPEDEF( extend_registration_block );
+        if (!eptr)
+            return NULL;
         eptr->root_oid = snmp_duplicate_objid( base, len );
         eptr->oid_len  = len;
         eptr->num_entries = 0;
@@ -125,10 +154,20 @@
     tinfo->min_column = COLUMN_EXTCFG_FIRST_COLUMN;
     tinfo->max_column = COLUMN_EXTCFG_LAST_COLUMN;
     oid_buf[len] = 2;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg   = netsnmp_create_handler_registration(
                 "nsExtendConfigTable", handle_nsExtendConfigTable, 
                 oid_buf, len+1, HANDLER_CAN_RWRITE);
-    netsnmp_register_table_data( reg, dinfo, tinfo );
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg   = netsnmp_create_handler_registration(
+                "nsExtendConfigTable", handle_nsExtendConfigTable, 
+                oid_buf, len+1, HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    rc = netsnmp_register_table_data( reg, dinfo, tinfo );
+    if (rc != SNMPERR_SUCCESS) {
+        goto bail;
+    }
+    netsnmp_handler_owns_table_info(reg->handler->next);
     eptr->reg[0] = reg;
 
         /*
@@ -145,7 +184,10 @@
     reg   = netsnmp_create_handler_registration(
                 "nsExtendOut1Table", handle_nsExtendOutput1Table, 
                 oid_buf, len+1, HANDLER_CAN_RONLY);
-    netsnmp_register_table_data( reg, dinfo, tinfo );
+    rc = netsnmp_register_table_data( reg, dinfo, tinfo );
+    if (rc != SNMPERR_SUCCESS)
+        goto bail;
+    netsnmp_handler_owns_table_info(reg->handler->next);
     eptr->reg[1] = reg;
 
         /*
@@ -164,7 +206,10 @@
     reg   = netsnmp_create_handler_registration(
                 "nsExtendOut2Table", handle_nsExtendOutput2Table, 
                 oid_buf, len+1, HANDLER_CAN_RONLY);
-    netsnmp_register_table( reg, tinfo );
+    rc = netsnmp_register_table( reg, tinfo );
+    if (rc != SNMPERR_SUCCESS)
+        goto bail;
+    netsnmp_handler_owns_table_info(reg->handler->next);
     eptr->reg[2] = reg;
 
         /*
@@ -177,9 +222,44 @@
     winfo = netsnmp_create_watcher_info(
                 &(eptr->num_entries), sizeof(eptr->num_entries),
                 ASN_INTEGER, WATCHER_FIXED_SIZE);
-    netsnmp_register_watched_scalar( reg, winfo );
+    rc = netsnmp_register_watched_scalar2( reg, winfo );
+    if (rc != SNMPERR_SUCCESS)
+        goto bail;
+    eptr->reg[3] = reg;
 
     return eptr;
+
+bail:
+    if (eptr->reg[3])
+        netsnmp_unregister_handler(eptr->reg[3]);
+    if (eptr->reg[2])
+        netsnmp_unregister_handler(eptr->reg[2]);
+    if (eptr->reg[1])
+        netsnmp_unregister_handler(eptr->reg[1]);
+    if (eptr->reg[0])
+        netsnmp_unregister_handler(eptr->reg[0]);
+    return NULL;
+}
+
+static void
+_unregister_extend(extend_registration_block *eptr)
+{
+    extend_registration_block *prev;
+
+    netsnmp_assert(eptr);
+    for (prev = ereg_head; prev && prev->next != eptr; prev = prev->next)
+	;
+    if (prev) {
+        netsnmp_assert(eptr == prev->next);
+	prev->next = eptr->next;
+    } else {
+        netsnmp_assert(eptr == ereg_head);
+	ereg_head = eptr->next;
+    }
+
+    netsnmp_table_data_delete_table(eptr->dinfo);
+    free(eptr->root_oid);
+    free(eptr);
 }
 
 int
@@ -193,6 +273,7 @@
         netsnmp_unregister_handler( eptr->reg[0] );
         netsnmp_unregister_handler( eptr->reg[1] );
         netsnmp_unregister_handler( eptr->reg[2] );
+        netsnmp_unregister_handler( eptr->reg[3] );
         SNMP_FREE(eptr);
     }
     ereg_head = NULL;
@@ -224,6 +305,17 @@
                            extend_clear_callback, NULL);
 }
 
+void
+shutdown_extend(void)
+{
+#ifndef USING_UCD_SNMP_EXTENSIBLE_MODULE
+    free(compatability_entries);
+    compatability_entries = NULL;
+#endif
+    while (ereg_head)
+	_unregister_extend(ereg_head);
+}
+
         /*************************
          *
          *  Cached-data hooks
@@ -465,6 +557,10 @@
     }
 
     eptr      = _register_extend( oid_buf, oid_len );
+    if (!eptr) {
+        snmp_log(LOG_ERR, "Failed to register extend entry '%s' - possibly duplicate name.\n", exec_name );
+        return;
+    }
     extension = _new_extension( exec_name, flags, eptr );
     if (extension) {
         extension->command  = strdup( exec_command );
@@ -627,6 +723,7 @@
          *
          **********/
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_RESERVE1:
             /*
              * Validate the new assignments
@@ -952,6 +1049,7 @@
                 }
             }
             break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 
         default:
             netsnmp_set_request_error(reqinfo, request, SNMP_ERR_GENERR);
@@ -959,6 +1057,7 @@
         }
     }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     /*
      * If we're marking a given row as active,
      *  then we need to check that it's ready.
@@ -983,7 +1082,8 @@
             }
         }
     }
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    
     return SNMP_ERR_NOERROR;
 }
 
@@ -1471,6 +1571,7 @@
     idx = name[name_len-1] -1;
     exten = &compatability_entries[ idx ];
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     switch (action) {
     case MODE_SET_RESERVE1:
         if (var_val_type != ASN_INTEGER) {
@@ -1491,6 +1592,7 @@
     case MODE_SET_COMMIT:
         netsnmp_cache_check_and_reload( exten->efix_entry->cache );
     }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     return SNMP_ERR_NOERROR;
 }
-#endif
+#endif /* USING_UCD_SNMP_EXTENSIBLE_MODULE */
diff --git a/agent/mibgroup/agent/extend.h b/agent/mibgroup/agent/extend.h
index 4b181f9..8b76cd4 100644
--- a/agent/mibgroup/agent/extend.h
+++ b/agent/mibgroup/agent/extend.h
@@ -28,6 +28,7 @@
 } netsnmp_extend;
 
 void                 init_extend(void);
+void                 shutdown_extend(void);
 Netsnmp_Node_Handler handle_nsExtendConfigTable;
 Netsnmp_Node_Handler handle_nsExtendOutput1Table;
 Netsnmp_Node_Handler handle_nsExtendOutput2Table;
diff --git a/agent/mibgroup/agent/nsCache.c b/agent/mibgroup/agent/nsCache.c
index 5815e90..d32263b 100644
--- a/agent/mibgroup/agent/nsCache.c
+++ b/agent/mibgroup/agent/nsCache.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/scalar.h>
@@ -12,6 +13,9 @@
 #include <net-snmp/agent/cache_handler.h>
 #include "agent/nsCache.h"
 
+netsnmp_feature_require(cache_get_head)
+
+
 /*
  * use unadvertised function to get cache head. You really should not
  * do this, since the internal storage mechanism might change.
@@ -102,7 +106,7 @@
     /*
      * .... and register the table with the agent.
      */
-    netsnmp_register_table_iterator(
+    netsnmp_register_table_iterator2(
         netsnmp_create_handler_registration(
             "tzCacheTable", handle_nsCacheTable,
             nsCacheTable_oid, OID_LENGTH(nsCacheTable_oid),
@@ -137,6 +141,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if ( request->status != 0 ) {
@@ -158,6 +163,7 @@
                            NETSNMP_DS_AGENT_CACHE_TIMEOUT,
                            *requests->requestvb->val.integer);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
@@ -187,6 +193,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if ( request->status != 0 ) {
@@ -211,6 +218,7 @@
 	netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
                                NETSNMP_DS_AGENT_NO_CACHING, enabled);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
@@ -295,9 +303,10 @@
                     continue;
 		}
 		status = (cache_entry->enabled ?
-	                   (cache_entry->timestamp ?
-                             (!atime_ready(cache_entry->timestamp,
-                                          1000*cache_entry->timeout) ?
+	                   (cache_entry->timestampM ?
+                             (cache_entry->timeout >= 0 &&
+                              !netsnmp_ready_monotonic(cache_entry->timestampM,
+                                                       1000*cache_entry->timeout) ?
 	                        NSCACHE_STATUS_ACTIVE:
 	                        NSCACHE_STATUS_EXPIRED) :
 	                      NSCACHE_STATUS_EMPTY) :
@@ -314,6 +323,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         for (request=requests; request; request=request->next) {
             if (request->processed != 0)
@@ -404,14 +414,15 @@
                         break;
 		    case NSCACHE_STATUS_EMPTY:
                         cache_entry->free_cache(cache_entry, cache_entry->magic);
-                        free(cache_entry->timestamp);
-                        cache_entry->timestamp = NULL;
+                        free(cache_entry->timestampM);
+                        cache_entry->timestampM = NULL;
                         break;
 		}
 	        break;
 	    }
 	}
 	break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/agent/nsDebug.c b/agent/mibgroup/agent/nsDebug.c
index 534d18c..89a90b0 100644
--- a/agent/mibgroup/agent/nsDebug.c
+++ b/agent/mibgroup/agent/nsDebug.c
@@ -91,7 +91,7 @@
     /*
      * .... and register the table with the agent.
      */
-    netsnmp_register_table_iterator(
+    netsnmp_register_table_iterator2(
         netsnmp_create_handler_registration(
             "tzDebugTable", handle_nsDebugTable,
             nsDebugTokenTable_oid, OID_LENGTH(nsDebugTokenTable_oid),
@@ -124,6 +124,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if (request->processed != 0)
@@ -149,6 +150,7 @@
 	    enabled = 0;
 	snmp_set_do_debugging( enabled );
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
@@ -179,6 +181,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if (request->processed != 0)
@@ -204,6 +207,7 @@
 	    enabled = 0;
 	snmp_set_do_debugging( enabled );
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
@@ -235,6 +239,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if (request->processed != 0)
@@ -261,6 +266,7 @@
 	netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
 	                       NETSNMP_DS_LIB_DUMP_PACKET, enabled);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
@@ -345,6 +351,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if (request->processed != 0)
@@ -451,6 +458,7 @@
 	    }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/agent/nsLogging.c b/agent/mibgroup/agent/nsLogging.c
index 344e53a..7f20bdb 100644
--- a/agent/mibgroup/agent/nsLogging.c
+++ b/agent/mibgroup/agent/nsLogging.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/scalar.h>
@@ -12,6 +13,11 @@
 #include <net-snmp/library/snmp_logging.h>
 #include "agent/nsLogging.h"
 
+netsnmp_feature_require(logging_external)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(table_iterator_insert_context)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * OID and columns for the logging table.
  */
@@ -58,7 +64,7 @@
     /*
      * .... and register the table with the agent.
      */
-    netsnmp_register_table_iterator(
+    netsnmp_register_table_iterator2(
         netsnmp_create_handler_registration(
             "tzLoggingTable", handle_nsLoggingTable,
             nsLoggingTable_oid, OID_LENGTH(nsLoggingTable_oid),
@@ -186,6 +192,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         for (request=requests; request; request=request->next) {
             if ( request->status != 0 ) {
@@ -458,6 +465,7 @@
 	    }
 	}
 	break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/agent/nsModuleTable.c b/agent/mibgroup/agent/nsModuleTable.c
index 1d763f3..84bd8fa 100644
--- a/agent/mibgroup/agent/nsModuleTable.c
+++ b/agent/mibgroup/agent/nsModuleTable.c
@@ -4,10 +4,13 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "nsModuleTable.h"
 
+netsnmp_feature_require(table_dataset)
+
 void
 nsModuleTable_free(void *context, netsnmp_iterator_info *dont_care)
 {
@@ -72,7 +75,7 @@
      */
     DEBUGMSGTL(("initialize_table_nsModuleTable",
                 "Registering table nsModuleTable as a table iterator\n"));
-    netsnmp_register_table_iterator(my_handler, iinfo);
+    netsnmp_register_table_iterator2(my_handler, iinfo);
 }
 
 /** Initializes the nsModuleTable module */
diff --git a/agent/mibgroup/agent/nsTransactionTable.c b/agent/mibgroup/agent/nsTransactionTable.c
index dc1f7fa..d7d3ce9 100644
--- a/agent/mibgroup/agent/nsTransactionTable.c
+++ b/agent/mibgroup/agent/nsTransactionTable.c
@@ -3,6 +3,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -10,6 +11,8 @@
 #include <net-snmp/agent/table_iterator.h>
 #include "nsTransactionTable.h"
 
+netsnmp_feature_require(table_dataset)
+
 /** Initialize the nsTransactionTable table by defining it's contents
    and how it's structured */
 void
@@ -61,7 +64,7 @@
      */
     DEBUGMSGTL(("initialize_table_nsTransactionTable",
                 "Registering table nsTransactionTable as a table iterator\n"));
-    netsnmp_register_table_iterator(my_handler, iinfo);
+    netsnmp_register_table_iterator2(my_handler, iinfo);
 }
 
 /** Initializes the nsTransactionTable module */
diff --git a/agent/mibgroup/agent/nsVacmAccessTable.c b/agent/mibgroup/agent/nsVacmAccessTable.c
index 410b002..79fa97d 100644
--- a/agent/mibgroup/agent/nsVacmAccessTable.c
+++ b/agent/mibgroup/agent/nsVacmAccessTable.c
@@ -4,11 +4,18 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/library/vacm.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "nsVacmAccessTable.h"
 
+netsnmp_feature_require(check_vb_storagetype)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(table_iterator_insert_context)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /** Initializes the nsVacmAccessTable module */
 void
 init_register_nsVacm_context(const char *context)
@@ -22,10 +29,17 @@
     netsnmp_iterator_info           *iinfo;
     netsnmp_table_registration_info *table_info;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration(
         "nsVacmAccessTable", nsVacmAccessTable_handler,
         nsVacmAccessTable_oid, OID_LENGTH(nsVacmAccessTable_oid),
         HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration(
+        "nsVacmAccessTable", nsVacmAccessTable_handler,
+        nsVacmAccessTable_oid, OID_LENGTH(nsVacmAccessTable_oid),
+        HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -46,7 +60,7 @@
     if ( context && context[0] )
         reg->contextName = strdup(context);
 
-    netsnmp_register_table_iterator(reg, iinfo);
+    netsnmp_register_table_iterator2(reg, iinfo);
 }
 
 void
@@ -189,6 +203,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -334,6 +349,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/agentx/agentx_config.c b/agent/mibgroup/agentx/agentx_config.c
index eec8271..b590c7a 100644
--- a/agent/mibgroup/agentx/agentx_config.c
+++ b/agent/mibgroup/agentx/agentx_config.c
@@ -2,6 +2,7 @@
  *  AgentX Configuration
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <sys/types.h>
@@ -20,6 +21,9 @@
 #include "agentx/agentx_config.h"
 #include "agentx/protocol.h"
 
+netsnmp_feature_require(user_information)
+netsnmp_feature_require(string_time_to_secs)
+
 /* ---------------------------------------------------------------------
  *
  * Common master and sub-agent
@@ -116,8 +120,12 @@
 void
 agentx_parse_agentx_timeout(const char *token, char *cptr)
 {
-    int x = atoi(cptr);
+    int x = netsnmp_string_time_to_secs(cptr);
     DEBUGMSGTL(("agentx/config/timeout", "%s\n", cptr));
+    if (x == -1) {
+        config_perror("Invalid timeout value");
+        return;
+    }
     netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
                        NETSNMP_DS_AGENT_AGENTX_TIMEOUT, x * ONE_SEC);
 }
@@ -152,11 +160,14 @@
     register_config_handler(":agentx", token, parser, releaser, help);
 }
 
+netsnmp_feature_child_of(agentx_unregister_config_handler, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_AGENTX_UNREGISTER_CONFIG_HANDLER
 void
 agentx_unregister_config_handler(const char *token)
 {
     unregister_config_handler(":agentx", token);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_AGENTX_UNREGISTER_CONFIG_HANDLER */
 
 void
 agentx_config_init(void)
diff --git a/agent/mibgroup/agentx/client.c b/agent/mibgroup/agentx/client.c
index 58987e3..d36fe2d 100644
--- a/agent/mibgroup/agentx/client.c
+++ b/agent/mibgroup/agentx/client.c
@@ -3,6 +3,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <errno.h>
@@ -41,6 +42,8 @@
 #include "agentx/client.h"
 #include "agentx/subagent.h"
 
+netsnmp_feature_require(set_agent_uptime)
+
         /*
          * AgentX handling utility routines
          *
diff --git a/agent/mibgroup/agentx/master.c b/agent/mibgroup/agentx/master.c
index 1ffc043..c42a42a 100644
--- a/agent/mibgroup/agentx/master.c
+++ b/agent/mibgroup/agentx/master.c
@@ -14,6 +14,7 @@
 
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_IO_H
 #include <io.h>
 #endif
@@ -50,6 +51,10 @@
 #include "agentx/protocol.h"
 #include "agentx/master_admin.h"
 
+netsnmp_feature_require(handler_mark_requests_as_delegated)
+netsnmp_feature_require(unix_socket_paths)
+netsnmp_feature_require(free_agent_snmp_session_by_session)
+
 void
 real_init_master(void)
 {
@@ -460,6 +465,7 @@
         pdu = snmp_pdu_create(AGENTX_MSG_GETNEXT);
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         pdu = snmp_pdu_create(AGENTX_MSG_TESTSET);
         break;
@@ -483,6 +489,7 @@
     case MODE_SET_FREE:
         pdu = snmp_pdu_create(AGENTX_MSG_CLEANUPSET);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         snmp_log(LOG_WARNING,
diff --git a/agent/mibgroup/agentx/master_admin.c b/agent/mibgroup/agentx/master_admin.c
index 866936e..4eaeab6 100644
--- a/agent/mibgroup/agentx/master_admin.c
+++ b/agent/mibgroup/agentx/master_admin.c
@@ -2,6 +2,7 @@
  *  AgentX Administrative request handling
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #ifdef HAVE_STRING_H
@@ -41,6 +42,11 @@
 #include <net-snmp/agent/agent_sysORTable.h>
 #include "master.h"
 
+netsnmp_feature_require(unregister_mib_table_row)
+netsnmp_feature_require(trap_vars_with_context)
+netsnmp_feature_require(calculate_sectime_diff)
+netsnmp_feature_require(allocate_globalcacheid)
+netsnmp_feature_require(remove_index)
 
 netsnmp_session *
 find_agentx_session(netsnmp_session * session, int sessid)
@@ -97,7 +103,7 @@
                                                  name_length);
     sp->securityAuthProtoLen = pdu->variables->name_length;
     sp->securityName = strdup((char *) pdu->variables->val.string);
-    sp->engineTime = (netsnmp_get_agent_runtime() + 50) / 100;
+    sp->engineTime = (uint32_t)((netsnmp_get_agent_runtime() + 50) / 100) & 0x7fffffffL;
 
     sp->subsession = session;   /* link back to head */
     sp->flags |= SNMP_FLAGS_SUBSESSION;
diff --git a/agent/mibgroup/agentx/subagent.c b/agent/mibgroup/agentx/subagent.c
index 1c00db1..1f9d31c 100644
--- a/agent/mibgroup/agentx/subagent.c
+++ b/agent/mibgroup/agentx/subagent.c
@@ -2,6 +2,7 @@
  *  AgentX sub-agent
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #ifdef HAVE_STDLIB_H
@@ -44,6 +45,11 @@
 
 #include "subagent.h"
 
+netsnmp_feature_child_of(agentx_subagent, agentx_all)
+netsnmp_feature_child_of(agentx_enable_subagent, agentx_subagent)
+
+netsnmp_feature_require(remove_trap_session)
+
 #ifdef USING_AGENTX_SUBAGENT_MODULE
 
 static SNMPCallback subagent_register_ping_alarm;
@@ -53,10 +59,12 @@
 int             handle_subagent_response(int op, netsnmp_session * session,
                                          int reqid, netsnmp_pdu *pdu,
                                          void *magic);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int             handle_subagent_set_response(int op,
                                              netsnmp_session * session,
                                              int reqid, netsnmp_pdu *pdu,
                                              void *magic);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 void            subagent_startup_callback(unsigned int clientreg,
                                           void *clientarg);
 int             subagent_open_master_session(void);
@@ -156,12 +164,15 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_AGENTX_ENABLE_SUBAGENT
 void
 netsnmp_enable_subagent(void) {
     netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE,
                            SUB_AGENT);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_AGENTX_ENABLE_SUBAGENT */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct agent_netsnmp_set_info *
 save_set_vars(netsnmp_session * ss, netsnmp_pdu *pdu)
 {
@@ -230,6 +241,7 @@
         prev = ptr;
     }
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 static void
 send_agentx_error(netsnmp_session *session, netsnmp_pdu *pdu, int errstat, int errindex)
@@ -393,6 +405,7 @@
         DEBUGMSGTL(("agentx/subagent", "  -> response\n"));
         return 1;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case AGENTX_MSG_TESTSET:
         /*
          * XXXWWW we have to map this twice to both RESERVE1 and RESERVE2 
@@ -470,6 +483,7 @@
         mycallback = handle_subagent_set_response;
         retmagic = asi;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 
     default:
         SNMP_FREE(smagic);
@@ -541,11 +555,13 @@
                 (unsigned)pdu->reqid, (unsigned)pdu->transid,
                 (unsigned)pdu->sessid));
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (pdu->command == SNMP_MSG_INTERNAL_SET_FREE ||
         pdu->command == SNMP_MSG_INTERNAL_SET_UNDO ||
         pdu->command == SNMP_MSG_INTERNAL_SET_COMMIT) {
         free_set_vars(smagic->session, pdu);
     }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     if (smagic->original_command == AGENTX_MSG_GETNEXT) {
         DEBUGMSGTL(("agentx/subagent",
@@ -607,6 +623,7 @@
     return 1;
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 handle_subagent_set_response(int op, netsnmp_session * session, int reqid,
                              netsnmp_pdu *pdu, void *magic)
@@ -668,7 +685,7 @@
     DEBUGMSGTL(("agentx/subagent", "  FINISHED\n"));
     return 1;
 }
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 int
@@ -677,7 +694,7 @@
 {
     struct register_parameters *reg_parms =
         (struct register_parameters *) serverarg;
-    netsnmp_session *agentx_ss = (netsnmp_session *) clientarg;
+    netsnmp_session *agentx_ss = *(netsnmp_session **)clientarg;
 
     if (minorID == SNMPD_CALLBACK_REGISTER_OID)
         return agentx_register(agentx_ss,
@@ -703,7 +720,7 @@
 {
     const struct register_sysOR_parameters *reg_parms =
         (const struct register_sysOR_parameters *) serverarg;
-    netsnmp_session *agentx_ss = (netsnmp_session *) clientarg;
+    netsnmp_session *agentx_ss = *(netsnmp_session **)clientarg;
 
     if (minorID == SNMPD_CALLBACK_REG_SYSOR)
         return agentx_add_agentcaps(agentx_ss,
@@ -719,7 +736,7 @@
 static int
 subagent_shutdown(int majorID, int minorID, void *serverarg, void *clientarg)
 {
-    netsnmp_session *thesession = (netsnmp_session *)clientarg;
+    netsnmp_session *thesession = *(netsnmp_session **)clientarg;
     DEBUGMSGTL(("agentx/subagent", "shutting down session....\n"));
     if (thesession == NULL) {
 	DEBUGMSGTL(("agentx/subagent", "Empty session to shutdown\n"));
@@ -747,22 +764,29 @@
 void
 agentx_register_callbacks(netsnmp_session * s)
 {
+    netsnmp_session *sess_p;
+
     DEBUGMSGTL(("agentx/subagent",
                 "registering callbacks for session %p\n", s));
+    sess_p = netsnmp_memdup(&s, sizeof(s));
+    netsnmp_assert(sess_p);
+    s->myvoid = sess_p;
+    if (!sess_p)
+        return;
     snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN,
-                           subagent_shutdown, s);
+                           subagent_shutdown, sess_p);
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
                            SNMPD_CALLBACK_REGISTER_OID,
-                           agentx_registration_callback, s);
+                           agentx_registration_callback, sess_p);
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
                            SNMPD_CALLBACK_UNREGISTER_OID,
-                           agentx_registration_callback, s);
+                           agentx_registration_callback, sess_p);
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
                            SNMPD_CALLBACK_REG_SYSOR,
-                           agentx_sysOR_callback, s);
+                           agentx_sysOR_callback, sess_p);
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
                            SNMPD_CALLBACK_UNREG_SYSOR,
-                           agentx_sysOR_callback, s);
+                           agentx_sysOR_callback, sess_p);
 }
 
 /*
@@ -775,19 +799,20 @@
     DEBUGMSGTL(("agentx/subagent",
                 "unregistering callbacks for session %p\n", ss));
     snmp_unregister_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN,
-                             subagent_shutdown, ss, 1);
+                             subagent_shutdown, ss->myvoid, 1);
     snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
                              SNMPD_CALLBACK_REGISTER_OID,
-                             agentx_registration_callback, ss, 1);
+                             agentx_registration_callback, ss->myvoid, 1);
     snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
                              SNMPD_CALLBACK_UNREGISTER_OID,
-                             agentx_registration_callback, ss, 1);
+                             agentx_registration_callback, ss->myvoid, 1);
     snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
                              SNMPD_CALLBACK_REG_SYSOR,
-                             agentx_sysOR_callback, ss, 1);
+                             agentx_sysOR_callback, ss->myvoid, 1);
     snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
                              SNMPD_CALLBACK_UNREG_SYSOR,
-                             agentx_sysOR_callback, ss, 1);
+                             agentx_sysOR_callback, ss->myvoid, 1);
+    SNMP_FREE(ss->myvoid);
 }
 
 /*
diff --git a/agent/mibgroup/default_modules.h b/agent/mibgroup/default_modules.h
index 1d767ae..fc5f26a 100644
--- a/agent/mibgroup/default_modules.h
+++ b/agent/mibgroup/default_modules.h
@@ -5,6 +5,13 @@
 /* these go into both the mini agent and the full agent */
 config_require(snmpv3mibs)
 
+/* very few default mibs */
+config_add_mib(SNMPv2-MIB)
+config_add_mib(IF-MIB)
+config_add_mib(IP-MIB)
+config_add_mib(TCP-MIB)
+config_add_mib(UDP-MIB)
+
 #ifdef NETSNMP_MINI_AGENT
 
 /* limit the mibII modules to the bare minimum */
@@ -13,15 +20,6 @@
 config_require(mibII/sysORTable)
 config_require(mibII/vacm_vars)
 config_require(mibII/vacm_conf)
-config_require(util_funcs/Exit)
-config_require(util_funcs/restart)
-
-/* very few default mibs */
-config_add_mib(SNMPv2-MIB)
-config_add_mib(IF-MIB)
-config_add_mib(IP-MIB)
-config_add_mib(TCP-MIB)
-config_add_mib(UDP-MIB)
 
 #else /* !NETSNMP_MINI_AGENT == the full shabang */
 
@@ -33,22 +31,21 @@
 config_require(agent_mibs)
 config_require(agentx)
 config_require(disman/event)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 config_require(disman/schedule)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 config_require(utilities)
 
 /* default MIBs to auto-include for parsing */
 /* NOTE: we consider these MIBs users will likely want to load by
    default, even if they're not supporting it in the agent (ie, the
    command line tools need to load them anyway) */
-config_add_mib(SNMPv2-MIB)
-config_add_mib(IF-MIB)
-config_add_mib(IP-MIB)
-config_add_mib(TCP-MIB)
-config_add_mib(UDP-MIB)
 config_add_mib(HOST-RESOURCES-MIB)
 config_add_mib(NOTIFICATION-LOG-MIB)
 config_add_mib(DISMAN-EVENT-MIB)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 config_add_mib(DISMAN-SCHEDULE-MIB)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 /* architecture specific extra modules */
 /* these symbols are set in the host specific net-snmp/system/<os>.h files */
diff --git a/agent/mibgroup/deliver/deliverByNotify.c b/agent/mibgroup/deliver/deliverByNotify.c
new file mode 100644
index 0000000..c89879a
--- /dev/null
+++ b/agent/mibgroup/deliver/deliverByNotify.c
@@ -0,0 +1,475 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <limits.h>
+
+netsnmp_feature_require(container_fifo)
+
+#include "deliverByNotify.h"
+
+/* we should never split beyond this */
+#define MAX_MESSAGE_COUNT 128
+#define BASE_PACKET_SIZE 100 /* should be enough to store SNMPv3 msg headers */
+
+/* if v is !NULL, then estimate it's likely size */
+#define ESTIMATE_VAR_SIZE(v) (v?(v->name_length + v->val_len + 8):0)
+
+void parse_deliver_config(const char *, char *);
+void parse_deliver_maxsize_config(const char *, char *);
+void parse_data_notification_oid_config(const char *, char *);
+void parse_periodic_time_oid_config(const char *, char *);
+void parse_message_number_oid_config(const char *, char *);
+void parse_max_message_number_oid_config(const char *, char *);
+void free_deliver_config(void);
+
+static void _schedule_next_execute_time(void);
+
+oid    data_notification_oid[MAX_OID_LEN]
+       = { 1, 3, 6, 1, 4, 1, 8072, 3, 1, 5, 4, 0, 1 };
+size_t data_notification_oid_len = 13;
+
+oid    netsnmp_periodic_time_oid[MAX_OID_LEN]
+       = { 1, 3, 6, 1, 4, 1, 8072, 3, 1, 5, 3, 1, 0 };
+size_t netsnmp_periodic_time_oid_len = 13;
+
+oid    netsnmp_message_number_oid[MAX_OID_LEN]
+       = { 1, 3, 6, 1, 4, 1, 8072, 3, 1, 5, 3, 2, 0 };
+size_t netsnmp_message_number_oid_len = 13;
+
+oid    netsnmp_max_message_number_oid[MAX_OID_LEN]
+       = { 1, 3, 6, 1, 4, 1, 8072, 3, 1, 5, 3, 3, 0 };
+size_t netsnmp_max_message_number_oid_len = 13;
+
+oid objid_snmptrap[] = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0 };
+
+#define DEFAULT_MAX_DELIVER_SIZE -1;
+static int default_max_size;
+unsigned int alarm_reg;
+static netsnmp_container *deliver_container;
+
+static int
+_deliver_compare(deliver_by_notify *lhs, deliver_by_notify *rhs) {
+    /* sort by the next_run time */
+    if (lhs->next_run < rhs->next_run)
+        return -1;
+    else
+        return 1;
+}
+
+/** Initializes the mteTrigger module */
+void
+init_deliverByNotify(void)
+{
+    /* register the config tokens */
+    snmpd_register_config_handler("deliverByNotify",
+                                  &parse_deliver_config, &free_deliver_config,
+                                  "[-p] [-m] [-s maxsize] FREQUENCY OID");
+
+    snmpd_register_config_handler("deliverByNotifyMaxPacketSize",
+                                  &parse_deliver_maxsize_config, NULL,
+                                  "sizeInBytes");
+
+    snmpd_register_config_handler("deliverByNotifyOid",
+                                  &parse_data_notification_oid_config,
+                                  NULL, /* XXX: reset to default */
+                                  "OID");
+
+    snmpd_register_config_handler("deliverByNotifyFrequencyOid",
+                                  &parse_periodic_time_oid_config,
+                                  NULL, /* XXX: reset to default */
+                                  "OID");
+
+    snmpd_register_config_handler("deliverByNotifyMessageNumberOid",
+                                  &parse_message_number_oid_config,
+                                  NULL, /* XXX: reset to default */
+                                  "OID");
+
+    snmpd_register_config_handler("deliverByNotifyMaxMessageNumberOid",
+                                  &parse_max_message_number_oid_config,
+                                  NULL, /* XXX: reset to default */
+                                  "OID");
+
+    /* create the container to store the config objects*/
+    deliver_container = netsnmp_container_find("deliverByNotify:fifo");
+    if (NULL == deliver_container) {
+        snmp_log(LOG_ERR,
+                 "deliverByNotify: failed to initialize our data container\n");
+        return;
+    }
+    deliver_container->container_name = strdup("deliverByNotify");
+    deliver_container->compare = (netsnmp_container_compare *) _deliver_compare;
+
+    /* set the defaults */
+    default_max_size = DEFAULT_MAX_DELIVER_SIZE;
+
+    alarm_reg = 0;
+}
+
+void
+_parse_config_oid(const char *token, char *line,
+                  oid *oid_store, size_t *oid_store_len) {
+    size_t tmp_len = MAX_OID_LEN;
+    /* parse the OID given */
+
+    if (!snmp_parse_oid(line, oid_store, &tmp_len)) {
+        char buf[SPRINT_MAX_LEN];
+        snprintf(buf, SPRINT_MAX_LEN-1, "unknown %s OID: %s", token, line);
+        config_perror(buf);
+        return;
+    }
+
+    *oid_store_len = tmp_len;
+}
+
+void
+parse_data_notification_oid_config(const char *token, char *line) {
+    _parse_config_oid(token, line,
+                      data_notification_oid, &data_notification_oid_len);
+}
+
+void
+parse_periodic_time_oid_config(const char *token, char *line) {
+    _parse_config_oid(token, line,
+                      netsnmp_periodic_time_oid, &netsnmp_periodic_time_oid_len);
+}
+
+void
+parse_message_number_oid_config(const char *token, char *line) {
+    _parse_config_oid(token, line,
+                      netsnmp_message_number_oid,
+                      &netsnmp_message_number_oid_len);
+}
+
+void
+parse_max_message_number_oid_config(const char *token, char *line) {
+    _parse_config_oid(token, line,
+                      netsnmp_max_message_number_oid,
+                      &netsnmp_max_message_number_oid_len);
+}
+
+void
+parse_deliver_config(const char *token, char *line) {
+    const char *cp = line;
+    char buf[SPRINT_MAX_LEN];
+    size_t buf_len = SPRINT_MAX_LEN;
+    int max_size = DEFAULT_MAX_DELIVER_SIZE;
+    int frequency;
+    oid target_oid[MAX_OID_LEN];
+    size_t target_oid_len = MAX_OID_LEN;
+    deliver_by_notify *new_notify = NULL;
+    int flags = 0;
+
+    while(cp && *cp == '-') {
+        switch (*(cp+1)) {
+        case 's':
+            cp = skip_token_const(cp);
+            if (!cp) {
+                config_perror("no argument given to -s");
+                return;
+            }
+            max_size = atoi(cp);
+            break;
+
+        case 'p':
+            flags = flags | NETSNMP_DELIVER_NO_PERIOD_OID;
+            break;
+
+        case 'm':
+            flags = flags | NETSNMP_DELIVER_NO_MSG_COUNTS;
+            break;
+
+        default:
+            config_perror("unknown flag");
+            return;
+        }
+        cp = skip_token_const(cp);
+    }
+
+    if (!cp) {
+        config_perror("no frequency given");
+        return;
+    }
+    copy_nword(cp, buf, buf_len);
+    frequency = netsnmp_string_time_to_secs(buf);
+    cp = skip_token_const(cp);
+
+    if (frequency <= 0) {
+        config_perror("illegal frequency given");
+        return;
+    }
+
+    if (!cp) {
+        config_perror("no OID given");
+        return;
+    }
+
+    /* parse the OID given */
+    if (!snmp_parse_oid(cp, target_oid, &target_oid_len)) {
+        config_perror("unknown deliverByNotify OID");
+        DEBUGMSGTL(("deliverByNotify", "The OID with the problem: %s\n", cp));
+        return;
+    }
+
+    /* set up the object to store all the data */
+    new_notify = SNMP_MALLOC_TYPEDEF(deliver_by_notify);
+    new_notify->frequency = frequency;
+    new_notify->max_packet_size = max_size;
+    new_notify->last_run = time(NULL);
+    new_notify->next_run = new_notify->last_run + frequency;
+    new_notify->flags = flags;
+
+    new_notify->target = malloc(target_oid_len * sizeof(oid));
+    new_notify->target_len = target_oid_len;
+    memcpy(new_notify->target, target_oid, target_oid_len*sizeof(oid));
+
+    /* XXX: need to do the whole container */
+    snmp_alarm_register(calculate_time_until_next_run(new_notify, NULL), 0, 
+                        &deliver_execute, NULL);
+
+    /* add it to the container */
+    CONTAINER_INSERT(deliver_container, new_notify);
+    _schedule_next_execute_time();
+}
+
+void
+parse_deliver_maxsize_config(const char *token, char *line) {
+    default_max_size = atoi(line);
+}
+
+static void
+_free_deliver_obj(deliver_by_notify *obj, void *context) {
+    netsnmp_assert_or_return(obj != NULL, );
+    SNMP_FREE(obj->target);
+    SNMP_FREE(obj);
+}
+
+void
+free_deliver_config(void) {
+    default_max_size = DEFAULT_MAX_DELIVER_SIZE;
+    CONTAINER_CLEAR(deliver_container,
+                    (netsnmp_container_obj_func *) _free_deliver_obj, NULL);
+    if (alarm_reg) {
+        snmp_alarm_unregister(alarm_reg);
+        alarm_reg = 0;
+    }
+}
+
+void
+deliver_execute(unsigned int clientreg, void *clientarg) {
+    netsnmp_variable_list *vars, *walker, *deliver_notification, *vartmp;
+    netsnmp_variable_list *ready_for_delivery[MAX_MESSAGE_COUNT];
+    netsnmp_session *sess;
+    int rc, i;
+    deliver_by_notify *obj;
+    netsnmp_iterator *iterator;
+    time_t            now = time(NULL);
+    u_long            message_count, max_message_count, tmp_long;
+    u_long           *max_message_count_ptrs[MAX_MESSAGE_COUNT];
+    size_t            estimated_pkt_size;
+
+    DEBUGMSGTL(("deliverByNotify", "Starting the execute routine\n"));
+
+    /* XXX: need to do the whole container */
+    iterator = CONTAINER_ITERATOR(deliver_container);
+    netsnmp_assert_or_return(iterator != NULL,);
+
+    sess = netsnmp_query_get_default_session();
+
+    for(obj = ITERATOR_FIRST(iterator); obj;
+        obj = ITERATOR_NEXT(iterator)) {
+
+        /* check if we need to run this one yet */
+        if (obj->next_run > now)
+            continue;
+
+        max_message_count = 1;
+        message_count = 0;
+
+        /* fill the varbind list with the target object */
+        vars = SNMP_MALLOC_TYPEDEF( netsnmp_variable_list );
+        snmp_set_var_objid( vars, obj->target, obj->target_len );
+        vars->type = ASN_NULL;
+
+        /* walk the OID tree for the data */
+        rc = netsnmp_query_walk(vars, sess);
+        if (rc != SNMP_ERR_NOERROR) {
+            /* XXX: disable? and reset the next query time point! */
+            snmp_log(LOG_ERR, "deliverByNotify: failed to issue the query");
+            ITERATOR_RELEASE(iterator);
+            return;
+        }
+
+        walker = vars;
+
+        while (walker) {
+
+            /* Set up the notification itself */
+            deliver_notification = NULL;
+            estimated_pkt_size = BASE_PACKET_SIZE;
+
+            /* add in the notification type */
+            snmp_varlist_add_variable(&deliver_notification,
+                                      objid_snmptrap, OID_LENGTH(objid_snmptrap),
+                                      ASN_OBJECT_ID,
+                                      data_notification_oid,
+                                      data_notification_oid_len * sizeof(oid));
+            estimated_pkt_size += ESTIMATE_VAR_SIZE(deliver_notification);
+
+            /* add in the current message number in this sequence */
+            if (!(obj->flags & NETSNMP_DELIVER_NO_PERIOD_OID)) {
+                tmp_long = obj->frequency;
+                snmp_varlist_add_variable(&deliver_notification,
+                                          netsnmp_periodic_time_oid,
+                                          netsnmp_periodic_time_oid_len,
+                                          ASN_UNSIGNED,
+                                          (const void *) &tmp_long,
+                                          sizeof(tmp_long));
+                estimated_pkt_size += ESTIMATE_VAR_SIZE(deliver_notification);
+            }
+
+            /* add in the current message number in this sequence */
+            message_count++;
+            if (message_count > MAX_MESSAGE_COUNT) {
+                snmp_log(LOG_ERR, "delivery construct grew too large...  giving up\n");
+                /* XXX: disable it */
+                /* XXX: send a notification about it? */
+                ITERATOR_RELEASE(iterator);
+                return;
+            }
+
+            /* store this for later updating and sending */
+            ready_for_delivery[message_count-1] = deliver_notification;
+
+            if (!(obj->flags & NETSNMP_DELIVER_NO_MSG_COUNTS)) {
+                snmp_varlist_add_variable(&deliver_notification,
+                                          netsnmp_message_number_oid,
+                                          netsnmp_message_number_oid_len,
+                                          ASN_UNSIGNED,
+                                          (const void *) &message_count,
+                                          sizeof(message_count));
+                estimated_pkt_size += ESTIMATE_VAR_SIZE(deliver_notification);
+
+                /* add in the max message number count for this sequence */
+                vartmp = snmp_varlist_add_variable(&deliver_notification,
+                                                   netsnmp_max_message_number_oid,
+                                                   netsnmp_max_message_number_oid_len,
+                                                   ASN_UNSIGNED,
+                                                   (const void *) &max_message_count,
+                                                   sizeof(max_message_count));
+                estimated_pkt_size += ESTIMATE_VAR_SIZE(deliver_notification);
+
+                /* we'll need to update this counter later */
+                max_message_count_ptrs[message_count-1] =
+                    (u_long *) vartmp->val.integer;
+            } else {
+                /* just to be sure */
+                max_message_count_ptrs[message_count-1] = NULL;
+            }
+            
+            /* copy in the collected data */
+            while(walker) {
+                snmp_varlist_add_variable(&deliver_notification,
+                                          walker->name, walker->name_length,
+                                          walker->type,
+                                          walker->val.string, walker->val_len);
+
+                /* 8 byte padding for ASN encodings an a few extra OID bytes */
+                estimated_pkt_size += ESTIMATE_VAR_SIZE(walker);
+
+                walker = walker->next_variable;
+
+                /* if the current size PLUS the next one (which is now
+                   in 'walker') is greater than the limet then we stop here */
+                if (obj->max_packet_size > 0 &&
+                    estimated_pkt_size +
+                    ESTIMATE_VAR_SIZE(walker) >=
+                    obj->max_packet_size) {
+                    break;
+                }
+            }
+
+            /* send out the notification */
+            send_v2trap(deliver_notification);
+        }
+
+        for(i = 0; i < message_count; i++) {
+            /* update the max count pointer */
+            if (max_message_count_ptrs[i])
+                *(max_message_count_ptrs[i]) = message_count;
+            
+            send_v2trap(ready_for_delivery[i]);
+            snmp_free_varbind(ready_for_delivery[i]);
+        }
+
+        snmp_free_varbind(vars);
+
+        /* record this as the time processed */
+        /* XXX: this may creep by a few seconds when processing and maybe we want
+           to do the time stamp at the beginning? */
+        obj->last_run = time(NULL);
+    }
+    ITERATOR_RELEASE(iterator);
+
+    /* calculate the next time to sleep for */
+    _schedule_next_execute_time();
+}
+
+int
+calculate_time_until_next_run(deliver_by_notify *it, time_t *now) {
+    time_t          local_now;
+
+    /* if we weren't passed a valid time, fake it */
+    if (NULL == now) {
+        now = &local_now;
+        time(&local_now);
+    }
+
+    netsnmp_assert_or_return(it->last_run != 0, -1);
+
+    /* set the timestamp for the next run */
+    it->next_run = it->last_run + it->frequency;
+
+    /* how long until the next run? */
+    return it->next_run - *now;
+}
+
+static void
+_schedule_next_execute_time(void) {
+    time_t             local_now = time(NULL);
+    int                sleep_for = INT_MAX;
+    int                next_time;
+    netsnmp_iterator  *iterator;
+    deliver_by_notify *obj;
+
+    DEBUGMSGTL(("deliverByNotify", "Calculating scheduling needed\n"));
+
+    if (alarm_reg) {
+        snmp_alarm_unregister(alarm_reg);
+        alarm_reg = 0;
+    }
+
+    iterator = CONTAINER_ITERATOR(deliver_container);
+    if (NULL == iterator)
+        return;
+
+    for(obj = ITERATOR_FIRST(iterator); obj;
+        obj = ITERATOR_NEXT(iterator)) {
+        next_time = calculate_time_until_next_run(obj, &local_now);
+        DEBUGMSGTL(("deliverByNotify", "  obj: %d (last=%d, next_run=%d)\n", next_time, obj->last_run, obj->next_run));
+        if (next_time < sleep_for)
+            sleep_for = next_time;
+    }
+
+    if (sleep_for != INT_MAX) {
+        if (sleep_for < 1)
+            sleep_for = 1; /* give at least a small pause */
+        DEBUGMSGTL(("deliverByNotify", "Next execution in %d (max = %d) seconds\n",
+                    sleep_for, INT_MAX));
+        alarm_reg = snmp_alarm_register(sleep_for, 0, &deliver_execute, NULL);
+    }
+
+    ITERATOR_RELEASE(iterator);
+}
+
diff --git a/agent/mibgroup/deliver/deliverByNotify.h b/agent/mibgroup/deliver/deliverByNotify.h
new file mode 100644
index 0000000..292c366
--- /dev/null
+++ b/agent/mibgroup/deliver/deliverByNotify.h
@@ -0,0 +1,40 @@
+#ifndef DELIVERBYNOTIFY_H
+#define DELIVERBYNOTIFY_H 1
+
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+
+config_add_mib(NET-SNMP-PERIODIC-NOTIFY-MIB)
+
+void init_deliverByNotify(void);
+
+void parse_deliver_config(const char *, char *);
+void free_deliver_config(void);
+
+SNMPAlarmCallback deliver_execute;
+
+#define NETSNMP_DELIVER_NO_PERIOD_OID   0x01
+#define NETSNMP_DELIVER_NO_MSG_COUNTS   0x02
+
+/* implementation details */
+typedef struct deliver_by_notify_s {
+   int     frequency;
+   int     last_run;
+   int     next_run;
+   oid    *target;
+   size_t  target_len;
+   int     max_packet_size;
+   int     flags;
+} deliver_by_notify;
+
+int calculate_time_until_next_run(deliver_by_notify *it, time_t *now);
+
+#endif /* deliverByNotify_h */
diff --git a/agent/mibgroup/disman.h b/agent/mibgroup/disman.h
index 80f3e1f..6b7cdd5 100644
--- a/agent/mibgroup/disman.h
+++ b/agent/mibgroup/disman.h
@@ -3,7 +3,10 @@
  */
 config_require(disman/event-mib)
 config_require(disman/expression-mib)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+/* the schedule mib is all about writing (SETs) */ 
 config_require(disman/schedule)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 /* config_require(disman/nslookup-mib)   */
 /* config_require(disman/ping-mib)       */
 /* config_require(disman/traceroute-mib) */
diff --git a/agent/mibgroup/disman/event/mteEvent.c b/agent/mibgroup/disman/event/mteEvent.c
index 05360d3..bc4ff0b 100644
--- a/agent/mibgroup/disman/event/mteEvent.c
+++ b/agent/mibgroup/disman/event/mteEvent.c
@@ -4,12 +4,17 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteEvent.h"
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteObjects.h"
 
+netsnmp_feature_child_of(disman_debugging, libnetsnmpmibs)
+netsnmp_feature_child_of(mteevent, libnetsnmpmibs)
+netsnmp_feature_child_of(mteevent_removeentry, mteevent)
+
 netsnmp_tdata *event_table_data;
 
     /*
@@ -119,6 +124,7 @@
      *
      * =================================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_DISMAN_DEBUGGING
 void
 _mteEvent_dump(void)
 {
@@ -140,7 +146,7 @@
     }
     DEBUGMSGTL(("disman:event:dump", "EventTable %d entries\n", i));
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_DISMAN_DEBUGGING */
 
 /*
  * Create a new row in the event table 
@@ -196,6 +202,7 @@
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_MTEEVENT_REMOVEENTRY
 /*
  * Remove a row from the event table 
  */
@@ -208,9 +215,9 @@
         return;                 /* Nothing to remove */
     entry = (struct mteEvent *)
         netsnmp_tdata_remove_and_delete_row(event_table_data, row);
-    if (entry)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MTEEVENT_REMOVEENTRY */
 
     /* ===================================================
      *
@@ -222,10 +229,12 @@
 _mteEvent_fire_notify( struct mteEvent    *event,
                        struct mteTrigger  *trigger,
                        oid *suffix, size_t sfx_len );
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 _mteEvent_fire_set(    struct mteEvent    *event,
                        struct mteTrigger  *trigger,
                        oid *suffix, size_t sfx_len );
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 int
 mteEvent_fire( char *owner, char *event,      /* Event to invoke    */
@@ -261,11 +270,13 @@
         _mteEvent_fire_notify( entry, trigger, suffix, s_len );
         fired = 1;
     }
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (entry->mteEventActions & MTE_EVENT_SET) {
         DEBUGMSGTL(("disman:event:fire", "Firing set event\n"));
         _mteEvent_fire_set( entry, trigger, suffix, s_len );
         fired = 1;
     }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     if (!fired)
         DEBUGMSGTL(("disman:event:fire", "Matched event is empty\n"));
@@ -434,6 +445,7 @@
 }
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 _mteEvent_fire_set( struct mteEvent   *entry,      /* The event to fire */
                     struct mteTrigger *trigger,    /* Trigger that fired */
@@ -477,4 +489,4 @@
 
     /* XXX - Need to check result */
 }
-
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/event/mteEventConf.c b/agent/mibgroup/disman/event/mteEventConf.c
index 72e3ae3..24192a6 100644
--- a/agent/mibgroup/disman/event/mteEventConf.c
+++ b/agent/mibgroup/disman/event/mteEventConf.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/agent_callbacks.h>
@@ -11,6 +12,7 @@
 #include "disman/event/mteEvent.h"
 #include "disman/event/mteEventConf.h"
 
+netsnmp_feature_require(iquery)
 
 /** Initializes the mteEventsConf module */
 void
diff --git a/agent/mibgroup/disman/event/mteEventNotificationTable.c b/agent/mibgroup/disman/event/mteEventNotificationTable.c
index 934a1c5..7d2c94a 100644
--- a/agent/mibgroup/disman/event/mteEventNotificationTable.c
+++ b/agent/mibgroup/disman/event/mteEventNotificationTable.c
@@ -7,11 +7,19 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteEvent.h"
 #include "disman/event/mteEventNotificationTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_oid)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /* Initializes the mteEventNotificationTable module */
 void
@@ -20,7 +28,6 @@
     static oid  mteEventNotificationTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 4, 3 };
     size_t      mteEventNotificationTable_oid_len = OID_LENGTH(mteEventNotificationTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +37,19 @@
     /*
      * ... then set up the MIB interface to the mteEventNotificationTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteEventNotificationTable",
                                             mteEventNotificationTable_handler,
                                             mteEventNotificationTable_oid,
                                             mteEventNotificationTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteEventNotificationTable",
+                                            mteEventNotificationTable_handler,
+                                            mteEventNotificationTable_oid,
+                                            mteEventNotificationTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -52,6 +67,14 @@
                                       event_table_data));
 }
 
+void
+shutdown_mteEventNotificationTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
 
 
 /** handles requests for the mteEventNotificationTable table */
@@ -109,6 +132,8 @@
         }
         break;
 
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -235,6 +260,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteEventNotificationTable.h b/agent/mibgroup/disman/event/mteEventNotificationTable.h
index be2bcc6..abd6110 100644
--- a/agent/mibgroup/disman/event/mteEventNotificationTable.h
+++ b/agent/mibgroup/disman/event/mteEventNotificationTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteEventNotificationTable(void);
+void            shutdown_mteEventNotificationTable(void);
 Netsnmp_Node_Handler mteEventNotificationTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteEventSetTable.c b/agent/mibgroup/disman/event/mteEventSetTable.c
index 97783c1..ee696f1 100644
--- a/agent/mibgroup/disman/event/mteEventSetTable.c
+++ b/agent/mibgroup/disman/event/mteEventSetTable.c
@@ -7,11 +7,20 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteEvent.h"
 #include "disman/event/mteEventSetTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_truthvalue)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /* Initializes the mteEventSetTable module */
 void
@@ -20,7 +29,6 @@
     static oid  mteEventSetTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 4, 4 };
     size_t      mteEventSetTable_oid_len = OID_LENGTH(mteEventSetTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +38,19 @@
     /*
      * ... then set up the MIB interface to the mteEventSetTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteEventSetTable",
                                             mteEventSetTable_handler,
                                             mteEventSetTable_oid,
                                             mteEventSetTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteEventSetTable",
+                                            mteEventSetTable_handler,
+                                            mteEventSetTable_oid,
+                                            mteEventSetTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -52,6 +68,15 @@
                                       event_table_data));
 }
 
+void
+shutdown_mteEventSetTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
 
 /** handles requests for the mteEventSetTable table */
 int
@@ -123,6 +148,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -278,6 +304,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteEventSetTable.h b/agent/mibgroup/disman/event/mteEventSetTable.h
index b8cb124..71ec09a 100644
--- a/agent/mibgroup/disman/event/mteEventSetTable.h
+++ b/agent/mibgroup/disman/event/mteEventSetTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteEventSetTable(void);
+void            shutdown_mteEventSetTable(void);
 Netsnmp_Node_Handler mteEventSetTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteEventTable.c b/agent/mibgroup/disman/event/mteEventTable.c
index 2c21e67..c5b534e 100644
--- a/agent/mibgroup/disman/event/mteEventTable.c
+++ b/agent/mibgroup/disman/event/mteEventTable.c
@@ -7,12 +7,24 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "utilities/iquery.h"
 #include "disman/event/mteEvent.h"
 #include "disman/event/mteEventTable.h"
 
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(iquery_pdu_session)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(mteevent_removeentry)
+netsnmp_feature_require(check_vb_truthvalue)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /* Initializes the mteEventTable module */
 void
@@ -21,7 +33,6 @@
     static oid  mteEventTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 4, 2 };
     size_t      mteEventTable_oid_len = OID_LENGTH(mteEventTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -31,11 +42,19 @@
     /*
      * ... then set up the MIB interface to the mteEventTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteEventTable",
                                             mteEventTable_handler,
                                             mteEventTable_oid,
                                             mteEventTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteEventTable",
+                                            mteEventTable_handler,
+                                            mteEventTable_oid,
+                                            mteEventTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -53,6 +72,14 @@
                                       event_table_data));
 }
 
+void
+shutdown_mteEventTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
 
 /** handles requests for the mteEventTable table */
 int
@@ -111,6 +138,8 @@
         }
         break;
 
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -338,6 +367,8 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
     }
     DEBUGMSGTL(("disman:event:mib", "Table handler, done\n"));
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/disman/event/mteEventTable.h b/agent/mibgroup/disman/event/mteEventTable.h
index a7d7560..adc1c30 100644
--- a/agent/mibgroup/disman/event/mteEventTable.h
+++ b/agent/mibgroup/disman/event/mteEventTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteEventTable(void);
+void            shutdown_mteEventTable(void);
 Netsnmp_Node_Handler mteEventTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteObjects.c b/agent/mibgroup/disman/event/mteObjects.c
index 123af7f..cf950c1 100644
--- a/agent/mibgroup/disman/event/mteObjects.c
+++ b/agent/mibgroup/disman/event/mteObjects.c
@@ -236,8 +236,7 @@
         return;                 /* Nothing to remove */
     entry = (struct mteObject *)
         netsnmp_tdata_remove_and_delete_row(objects_table_data, row);
-    if (entry)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 
diff --git a/agent/mibgroup/disman/event/mteObjectsTable.c b/agent/mibgroup/disman/event/mteObjectsTable.c
index 5843f58..f7f6e02 100644
--- a/agent/mibgroup/disman/event/mteObjectsTable.c
+++ b/agent/mibgroup/disman/event/mteObjectsTable.c
@@ -7,11 +7,21 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteObjects.h"
 #include "disman/event/mteObjectsTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_truthvalue)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
+
 /** Initializes the mteObjectsTable module */
 void
 init_mteObjectsTable(void)
@@ -20,7 +30,6 @@
     static oid mteObjectsTable_oid[] = { 1, 3, 6, 1, 2, 1, 88, 1, 3, 1 };
     size_t     mteObjectsTable_oid_len = OID_LENGTH(mteObjectsTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the object table container is available...
@@ -30,11 +39,19 @@
     /*
      * ... then set up the MIB interface to this table
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteObjectsTable",
                                             mteObjectsTable_handler,
                                             mteObjectsTable_oid,
                                             mteObjectsTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteObjectsTable",
+                                            mteObjectsTable_handler,
+                                            mteObjectsTable_oid,
+                                            mteObjectsTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -50,6 +67,15 @@
     netsnmp_tdata_register(reg, objects_table_data, table_info);
 }
 
+void
+shutdown_mteObjectsTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
 
 /** handles requests for the mteObjectsTable table */
 int
@@ -105,6 +131,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -314,6 +341,7 @@
         snmp_store_needed(NULL);
 
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteObjectsTable.h b/agent/mibgroup/disman/event/mteObjectsTable.h
index 14bfb26..f5cd7bc 100644
--- a/agent/mibgroup/disman/event/mteObjectsTable.h
+++ b/agent/mibgroup/disman/event/mteObjectsTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteObjectsTable(void);
+void            shutdown_mteObjectsTable(void);
 Netsnmp_Node_Handler mteObjectsTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteTrigger.c b/agent/mibgroup/disman/event/mteTrigger.c
index cf51edb..5a0dcba 100644
--- a/agent/mibgroup/disman/event/mteTrigger.c
+++ b/agent/mibgroup/disman/event/mteTrigger.c
@@ -4,11 +4,16 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteEvent.h"
 
+netsnmp_feature_child_of(disman_debugging, libnetsnmpmibs)
+netsnmp_feature_child_of(mtetrigger, libnetsnmpmibs)
+netsnmp_feature_child_of(mtetrigger_removeentry, mtetrigger)
+
 netsnmp_tdata *trigger_table_data;
 
 oid    _sysUpTime_instance[] = { 1, 3, 6, 1, 2, 1, 1, 3, 0 };
@@ -53,6 +58,7 @@
      *
      * =================================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_DISMAN_DEBUGGING
 void
 _mteTrigger_dump(void)
 {
@@ -74,7 +80,7 @@
     }
     DEBUGMSGTL(("disman:event:dump", "TriggerTable %d entries\n", i));
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_DISMAN_DEBUGGING */
 
 /*
  * Create a new row in the trigger table 
@@ -142,6 +148,7 @@
     return row;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_MTETRIGGER_REMOVEENTRY
 /*
  * Remove a row from the trigger table 
  */
@@ -159,6 +166,7 @@
         SNMP_FREE(entry);
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MTETRIGGER_REMOVEENTRY */
 
     /* ===================================================
      *
diff --git a/agent/mibgroup/disman/event/mteTriggerBooleanTable.c b/agent/mibgroup/disman/event/mteTriggerBooleanTable.c
index ad469d7..ed1ec30 100644
--- a/agent/mibgroup/disman/event/mteTriggerBooleanTable.c
+++ b/agent/mibgroup/disman/event/mteTriggerBooleanTable.c
@@ -7,11 +7,19 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteTriggerBooleanTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_truthvalue)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the mteTriggerBooleanTable module */
 void
@@ -20,7 +28,6 @@
     static oid mteTBoolTable_oid[]    = { 1, 3, 6, 1, 2, 1, 88, 1, 2, 5 };
     size_t     mteTBoolTable_oid_len  = OID_LENGTH(mteTBoolTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +37,19 @@
     /*
      * ... then set up the MIB interface to the mteTriggerBooleanTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteTriggerBooleanTable",
                                             mteTriggerBooleanTable_handler,
                                             mteTBoolTable_oid,
                                             mteTBoolTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteTriggerBooleanTable",
+                                            mteTriggerBooleanTable_handler,
+                                            mteTBoolTable_oid,
+                                            mteTBoolTable_oid_len,
+                                            HANDLER_CAN_RWRITE);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -51,6 +66,14 @@
     DEBUGMSGTL(("disman:event:init", "Trigger Bool Table\n"));
 }
 
+void
+shutdown_mteTriggerBooleanTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
 
 /** handles requests for the mteTriggerBooleanTable table */
 int
@@ -128,6 +151,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -285,6 +309,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteTriggerBooleanTable.h b/agent/mibgroup/disman/event/mteTriggerBooleanTable.h
index d2d2dcb..f2ddd77 100644
--- a/agent/mibgroup/disman/event/mteTriggerBooleanTable.h
+++ b/agent/mibgroup/disman/event/mteTriggerBooleanTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteTriggerBooleanTable(void);
+void            shutdown_mteTriggerBooleanTable(void);
 Netsnmp_Node_Handler mteTriggerBooleanTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteTriggerConf.c b/agent/mibgroup/disman/event/mteTriggerConf.c
index 3ce9106..e7bb69b 100644
--- a/agent/mibgroup/disman/event/mteTriggerConf.c
+++ b/agent/mibgroup/disman/event/mteTriggerConf.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/agent_callbacks.h>
@@ -14,6 +15,7 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(iquery)
 
 /** Initializes the mteTriggerConf module */
 void
diff --git a/agent/mibgroup/disman/event/mteTriggerDeltaTable.c b/agent/mibgroup/disman/event/mteTriggerDeltaTable.c
index e092982..c2c2e8e 100644
--- a/agent/mibgroup/disman/event/mteTriggerDeltaTable.c
+++ b/agent/mibgroup/disman/event/mteTriggerDeltaTable.c
@@ -7,11 +7,17 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteTriggerDeltaTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_truthvalue)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /** Initializes the mteTriggerDeltaTable module */
 void
@@ -21,6 +27,7 @@
     size_t      mteTDeltaTable_oid_len = OID_LENGTH(mteTDeltaTable_oid);
     netsnmp_handler_registration    *reg;
     netsnmp_table_registration_info *table_info;
+    int         rc;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +37,19 @@
     /*
      * ... then set up the MIB interface to the mteTriggerDeltaTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteTriggerDeltaTable",
                                             mteTriggerDeltaTable_handler,
                                             mteTDeltaTable_oid,
                                             mteTDeltaTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteTriggerDeltaTable",
+                                            mteTriggerDeltaTable_handler,
+                                            mteTDeltaTable_oid,
+                                            mteTDeltaTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -47,7 +62,10 @@
     table_info->max_column = COLUMN_MTETRIGGERDELTADISCONTINUITYIDTYPE;
 
     /* Register this using the (common) trigger_table_data container */
-    netsnmp_tdata_register(reg, trigger_table_data, table_info);
+    rc = netsnmp_tdata_register(reg, trigger_table_data, table_info);
+    if (rc != SNMPERR_SUCCESS)
+        return;
+    netsnmp_handler_owns_table_info(reg->handler->next);
     DEBUGMSGTL(("disman:event:init", "Trigger Delta Table\n"));
 }
 
@@ -109,6 +127,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -248,6 +267,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteTriggerExistenceTable.c b/agent/mibgroup/disman/event/mteTriggerExistenceTable.c
index 25026ee..22b683e 100644
--- a/agent/mibgroup/disman/event/mteTriggerExistenceTable.c
+++ b/agent/mibgroup/disman/event/mteTriggerExistenceTable.c
@@ -7,11 +7,18 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteTriggerExistenceTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /* Initializes the mteTriggerExistenceTable module */
 void
@@ -20,7 +27,7 @@
     static oid mteTExistTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 2, 4 };
     size_t     mteTExistTable_oid_len = OID_LENGTH(mteTExistTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
+    int        rc;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +37,19 @@
     /*
      * ... then set up the MIB interface to the mteTriggerExistenceTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteTriggerExistenceTable",
                                             mteTriggerExistenceTable_handler,
                                             mteTExistTable_oid,
                                             mteTExistTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteTriggerExistenceTable",
+                                            mteTriggerExistenceTable_handler,
+                                            mteTExistTable_oid,
+                                            mteTExistTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -47,7 +62,11 @@
     table_info->max_column = COLUMN_MTETRIGGEREXISTENCEEVENT;
 
     /* Register this using the (common) trigger_table_data container */
-    netsnmp_tdata_register(reg, trigger_table_data, table_info);
+    rc = netsnmp_tdata_register(reg, trigger_table_data, table_info);
+    if (rc != SNMPERR_SUCCESS)
+        return;
+
+    netsnmp_handler_owns_table_info(reg->handler->next);
     DEBUGMSGTL(("disman:event:init", "Trigger Exist Table\n"));
 }
 
@@ -123,6 +142,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -264,6 +284,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteTriggerTable.c b/agent/mibgroup/disman/event/mteTriggerTable.c
index 145f079..88c2f8b 100644
--- a/agent/mibgroup/disman/event/mteTriggerTable.c
+++ b/agent/mibgroup/disman/event/mteTriggerTable.c
@@ -7,12 +7,27 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "utilities/iquery.h"
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteTriggerTable.h"
 
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(iquery_pdu_session)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_uint)
+netsnmp_feature_require(mtetrigger_removeentry)
+netsnmp_feature_require(check_vb_truthvalue)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the mteTriggerTable module */
 void
@@ -21,7 +36,6 @@
     static oid  mteTriggerTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 2, 2 };
     size_t      mteTriggerTable_oid_len = OID_LENGTH(mteTriggerTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -31,11 +45,19 @@
     /*
      * ... then set up the MIB interface to the mteTriggerTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteTriggerTable",
                                             mteTriggerTable_handler,
                                             mteTriggerTable_oid,
                                             mteTriggerTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteTriggerTable",
+                                            mteTriggerTable_handler,
+                                            mteTriggerTable_oid,
+                                            mteTriggerTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -52,6 +74,15 @@
     DEBUGMSGTL(("disman:event:init", "Trigger Table\n"));
 }
 
+void
+shutdown_mteTriggerTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
 
 /** handles requests for the mteTriggerTable table */
 int
@@ -152,6 +183,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -468,6 +500,9 @@
         snmp_store_needed(NULL);
 
         break;
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteTriggerTable.h b/agent/mibgroup/disman/event/mteTriggerTable.h
index e382612..c5c393a 100644
--- a/agent/mibgroup/disman/event/mteTriggerTable.h
+++ b/agent/mibgroup/disman/event/mteTriggerTable.h
@@ -11,6 +11,7 @@
  * function declarations 
  */
 void            init_mteTriggerTable(void);
+void            shutdown_mteTriggerTable(void);
 Netsnmp_Node_Handler mteTriggerTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteTriggerThresholdTable.c b/agent/mibgroup/disman/event/mteTriggerThresholdTable.c
index 1f6649e..5aed0c8 100644
--- a/agent/mibgroup/disman/event/mteTriggerThresholdTable.c
+++ b/agent/mibgroup/disman/event/mteTriggerThresholdTable.c
@@ -7,11 +7,18 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteTriggerThresholdTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the mteTriggerThresholdTable module */
 void
@@ -20,7 +27,6 @@
     static oid mteTThreshTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 2, 6 };
     size_t     mteTThreshTable_oid_len = OID_LENGTH(mteTThreshTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +36,19 @@
     /*
      * ... then set up the MIB interface to the mteTriggerThresholdTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteTriggerThresholdTable",
                                             mteTriggerThresholdTable_handler,
                                             mteTThreshTable_oid,
                                             mteTThreshTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteTriggerThresholdTable",
+                                            mteTriggerThresholdTable_handler,
+                                            mteTThreshTable_oid,
+                                            mteTThreshTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -51,6 +65,15 @@
     DEBUGMSGTL(("disman:event:init", "Trigger Threshold Table\n"));
 }
 
+void
+shutdown_mteTriggerThresholdTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
 
 /** handles requests for the mteTriggerThresholdTable table */
 int
@@ -165,6 +188,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -358,6 +382,8 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteTriggerThresholdTable.h b/agent/mibgroup/disman/event/mteTriggerThresholdTable.h
index 282cc67..80f5f2a 100644
--- a/agent/mibgroup/disman/event/mteTriggerThresholdTable.h
+++ b/agent/mibgroup/disman/event/mteTriggerThresholdTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteTriggerThresholdTable(void);
+void            shutdown_mteTriggerThresholdTable(void);
 Netsnmp_Node_Handler mteTriggerThresholdTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/expr/expErrorTable.c b/agent/mibgroup/disman/expr/expErrorTable.c
index dbc2217..a759e2d 100644
--- a/agent/mibgroup/disman/expr/expErrorTable.c
+++ b/agent/mibgroup/disman/expr/expErrorTable.c
@@ -7,11 +7,14 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/expr/expExpression.h"
 #include "disman/expr/expErrorTable.h"
 
+netsnmp_feature_require(table_tdata)
+
 /* Initializes the expExpressionErrorTable module */
 void
 init_expErrorTable(void)
diff --git a/agent/mibgroup/disman/expr/expExpressionConf.c b/agent/mibgroup/disman/expr/expExpressionConf.c
index 518dd88..826d679 100644
--- a/agent/mibgroup/disman/expr/expExpressionConf.c
+++ b/agent/mibgroup/disman/expr/expExpressionConf.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -14,6 +15,8 @@
 #include "disman/expr/expObject.h"
 #include "disman/expr/expExpressionConf.h"
 
+netsnmp_feature_require(iquery)
+
 /* Initializes the expExpressionConf module */
 void
 init_expExpressionConf(void)
diff --git a/agent/mibgroup/disman/expr/expExpressionTable.c b/agent/mibgroup/disman/expr/expExpressionTable.c
index 906b5e5..79aa715 100644
--- a/agent/mibgroup/disman/expr/expExpressionTable.c
+++ b/agent/mibgroup/disman/expr/expExpressionTable.c
@@ -7,12 +7,21 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "utilities/iquery.h"
 #include "disman/expr/expExpression.h"
 #include "disman/expr/expExpressionTable.h"
 
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(table_tdata_insert_row)
+netsnmp_feature_require(iquery_pdu_session)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /* Initializes the expExpressionTable module */
 void
 init_expExpressionTable(void)
diff --git a/agent/mibgroup/disman/expr/expObjectConf.c b/agent/mibgroup/disman/expr/expObjectConf.c
index c75c934..64069d9 100644
--- a/agent/mibgroup/disman/expr/expObjectConf.c
+++ b/agent/mibgroup/disman/expr/expObjectConf.c
@@ -4,12 +4,15 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "utilities/iquery.h"
 #include "disman/expr/expObject.h"
 #include "disman/expr/expObjectConf.h"
 
+netsnmp_feature_require(iquery)
+
 /* Initializes the expObjectConf module */
 void
 init_expObjectConf(void)
diff --git a/agent/mibgroup/disman/expr/expObjectTable.c b/agent/mibgroup/disman/expr/expObjectTable.c
index 9c49c0d..adda438 100644
--- a/agent/mibgroup/disman/expr/expObjectTable.c
+++ b/agent/mibgroup/disman/expr/expObjectTable.c
@@ -7,11 +7,18 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/expr/expObject.h"
 #include "disman/expr/expObjectTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_truthvalue)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /* Initializes the expObjectTable module */
 void
diff --git a/agent/mibgroup/disman/expression/expErrorTable.c b/agent/mibgroup/disman/expression/expErrorTable.c
index c605e9a..1feb3ee 100644
--- a/agent/mibgroup/disman/expression/expErrorTable.c
+++ b/agent/mibgroup/disman/expression/expErrorTable.c
@@ -139,4 +139,6 @@
         *var_len = StorageTmp->expErrorInstanceLen * sizeof(oid);
         return (u_char *) StorageTmp->expErrorInstance;
     }
+
+    return NULL;
 }
diff --git a/agent/mibgroup/disman/expression/expExpressionTable.c b/agent/mibgroup/disman/expression/expExpressionTable.c
index 5aab952..212952d 100644
--- a/agent/mibgroup/disman/expression/expExpressionTable.c
+++ b/agent/mibgroup/disman/expression/expExpressionTable.c
@@ -21,6 +21,7 @@
  * This should always be included first before anything else 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -45,6 +46,10 @@
 #include "expObjectTable.h"
 #include "expValueTable.h"
 
+netsnmp_feature_require(tdomain_support)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * expExpressionTable_variables_oid:
@@ -318,9 +323,7 @@
     char           *cptr;
     size_t          tmpint;
     struct expExpressionTable_data *StorageTmp;
-    struct expObjectTable_data *ObjectStorageTmp;
-    struct expValueTable_data *ValueStorageTmp;
-    struct header_complex_index *hcindex, *hc_object, *hc_value;
+    struct header_complex_index *hcindex;
 
     DEBUGMSGTL(("expExpressionTable", "storing data...  "));
 
diff --git a/agent/mibgroup/disman/expression/expObjectTable.c b/agent/mibgroup/disman/expression/expObjectTable.c
index fcadfe7..e057f56 100644
--- a/agent/mibgroup/disman/expression/expObjectTable.c
+++ b/agent/mibgroup/disman/expression/expObjectTable.c
@@ -22,6 +22,7 @@
  * This should always be included first before anything else 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -34,6 +35,9 @@
 #include <limits.h>
 #endif
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * minimal include directives 
@@ -216,7 +220,6 @@
 parse_expObjectTable(const char *token, char *line)
 {
     size_t          tmpint;
-    oid            *tmpoid = NULL;
     struct expObjectTable_data *StorageTmp =
         SNMP_MALLOC_STRUCT(expObjectTable_data);
 
@@ -403,6 +406,7 @@
         }
     }
     DEBUGMSGTL(("expObjectTable", "storage done\n"));
+    return 0;
 }
 
 
diff --git a/agent/mibgroup/disman/expression/expValueTable.c b/agent/mibgroup/disman/expression/expValueTable.c
index d3c0295..6b315c6 100644
--- a/agent/mibgroup/disman/expression/expValueTable.c
+++ b/agent/mibgroup/disman/expression/expValueTable.c
@@ -245,7 +245,6 @@
     char           *result, *resultbak;
     char           *temp, *tempbak;
     char            intchar[10];
-    int             dollar1, dollar2;
     int             i = 0, j, k, l;
     long            value;
     unsigned long   result_u_long;
@@ -322,7 +321,6 @@
             }
             struct variable_list *vars;
             int             status;
-            int             count = 1;
 
             /*
              * Initialize the SNMP library
@@ -369,7 +367,7 @@
 
                 vars = response->variables;
                 value = *(vars->val.integer);
-                sprintf(intchar, "%u", value);
+                sprintf(intchar, "%lu", value);
                 for (k = 1; k <= strlen(intchar); k++) {
                     *result = intchar[k - 1];
                     result++;
@@ -433,15 +431,11 @@
 
 
 void
-build_valuetable()
+build_valuetable(void)
 {
     struct expExpressionTable_data *expstorage;
     struct expObjectTable_data *objstorage, *objfound = NULL;
     struct header_complex_index *hcindex, *object_hcindex;
-    char           *owner;
-    size_t          owner_len;
-    char           *name;
-    size_t          name_len;
     char           *expression;
     oid            *index;
     int             i = 0, j, l;
@@ -525,9 +519,7 @@
             oid            *next_OID;
             size_t          next_OID_len;
             taggetOID_len = objfound->expObjectIDLen;
-            struct variable_list *vars;
             int             status;
-            int             count = 1;
             struct snmp_session *ss;
             /*
              * Initialize the SNMP library
@@ -639,12 +631,7 @@
                   int exact, size_t *var_len, WriteMethod ** write_method)
 {
 
-    static netsnmp_variable_list *vars;
-    size_t          newlen =
-        *length - (sizeof(expValueTable_variables_oid) / sizeof(oid) +
-                   3 - 1);
     struct expValueTable_data *StorageTmp = NULL;
-    unsigned int    counter32;
 
 
 
@@ -719,6 +706,7 @@
         return NULL;
     default:
         ERROR_MSG("");
+	return NULL;
     }
 }
 
@@ -788,6 +776,7 @@
         } else
             return (a / b);
     }
+    return 0;
 }
 
 unsigned long
diff --git a/agent/mibgroup/disman/mteEventNotificationTable.c b/agent/mibgroup/disman/mteEventNotificationTable.c
index 3e0786f..48add68 100644
--- a/agent/mibgroup/disman/mteEventNotificationTable.c
+++ b/agent/mibgroup/disman/mteEventNotificationTable.c
@@ -4,10 +4,14 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "mteEventNotificationTable.h"
 
+netsnmp_feature_require(table_dataset)
+netsnmp_feature_require(table_set_multi_add_default_row)
+
 netsnmp_table_data_set *mteEventNotif_table_set;
 
 
@@ -61,12 +65,21 @@
      * note: if you don't need a subhandler to deal with any aspects
      * of the request, change mteEventNotificationTable_handler to "NULL" 
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     netsnmp_register_table_data_set(netsnmp_create_handler_registration
                                     ("mteEventNotificationTable",
                                      mteEventNotificationTable_handler,
                                      mteEventNotificationTable_oid,
                                      mteEventNotificationTable_oid_len,
                                      HANDLER_CAN_RWRITE), mteEventNotif_table_set, NULL);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    netsnmp_register_table_data_set(netsnmp_create_handler_registration
+                                    ("mteEventNotificationTable",
+                                     mteEventNotificationTable_handler,
+                                     mteEventNotificationTable_oid,
+                                     mteEventNotificationTable_oid_len,
+                                     HANDLER_CAN_RONLY), mteEventNotif_table_set, NULL);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 }
 
 /** Initializes the mteEventNotificationTable module */
diff --git a/agent/mibgroup/disman/mteEventTable.c b/agent/mibgroup/disman/mteEventTable.c
index b4bd7a1..22bad73 100644
--- a/agent/mibgroup/disman/mteEventTable.c
+++ b/agent/mibgroup/disman/mteEventTable.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "mteTriggerTable.h"
@@ -11,6 +12,9 @@
 #include "mteEventNotificationTable.h"
 #include "mteObjectsTable.h"
 
+netsnmp_feature_require(table_dataset)
+netsnmp_feature_require(table_set_multi_add_default_row)
+
 static netsnmp_table_data_set *table_set = NULL;
 
 /** Initialize the mteEventTable table by defining its contents and how it's structured */
diff --git a/agent/mibgroup/disman/mteObjectsTable.c b/agent/mibgroup/disman/mteObjectsTable.c
index 77dbe10..09ceb2a 100644
--- a/agent/mibgroup/disman/mteObjectsTable.c
+++ b/agent/mibgroup/disman/mteObjectsTable.c
@@ -8,6 +8,7 @@
  * This should always be included first before anything else 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -17,6 +18,9 @@
 #include <strings.h>
 #endif
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * minimal include directives 
@@ -48,6 +52,7 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteObjectsTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
@@ -63,6 +68,24 @@
      var_mteObjectsTable, 2, {1, 5}},
 
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteObjectsTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTEOBJECTSID          5
+    {MTEOBJECTSID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_mteObjectsTable, 2, {1, 3}},
+#define   MTEOBJECTSIDWILDCARD  6
+    {MTEOBJECTSIDWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteObjectsTable, 2, {1, 4}},
+#define   MTEOBJECTSENTRYSTATUS  7
+    {MTEOBJECTSENTRYSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteObjectsTable, 2, {1, 5}},
+
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * (L = length of the oidsuffix) 
  */
@@ -302,6 +325,10 @@
 
     DEBUGMSGTL(("mteObjectsTable",
                 "var_mteObjectsTable: Entering...  \n"));
+
+	/* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
@@ -320,17 +347,23 @@
 
 
     case MTEOBJECTSID:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteObjectsID;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = (StorageTmp->mteObjectsIDLen) * sizeof(oid);
         return (u_char *) StorageTmp->mteObjectsID;
 
     case MTEOBJECTSIDWILDCARD:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteObjectsIDWildcard;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteObjectsIDWildcard);
         return (u_char *) & StorageTmp->mteObjectsIDWildcard;
 
     case MTEOBJECTSENTRYSTATUS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteObjectsEntryStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteObjectsEntryStatus);
         return (u_char *) & StorageTmp->mteObjectsEntryStatus;
 
@@ -343,6 +376,7 @@
 
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 
 int
 write_mteObjectsID(int action,
@@ -788,6 +822,9 @@
     return SNMP_ERR_NOERROR;
 }
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+
 void
 mte_add_objects(netsnmp_variable_list * vars,
                 struct mteTriggerTable_data *item, const char *owner,
diff --git a/agent/mibgroup/disman/mteObjectsTable.h b/agent/mibgroup/disman/mteObjectsTable.h
index d3c3c50..4d44c87 100644
--- a/agent/mibgroup/disman/mteObjectsTable.h
+++ b/agent/mibgroup/disman/mteObjectsTable.h
@@ -59,11 +59,12 @@
                                              oid * oidname,
                                              size_t oidname_len,
                                              int iswild);
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteObjectsID;
      WriteMethod     write_mteObjectsIDWildcard;
      WriteMethod     write_mteObjectsEntryStatus;
-
-     WriteMethod     write_mteObjectsEntryStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 
diff --git a/agent/mibgroup/disman/mteTriggerBooleanTable.c b/agent/mibgroup/disman/mteTriggerBooleanTable.c
index fba4980..5b17927 100644
--- a/agent/mibgroup/disman/mteTriggerBooleanTable.c
+++ b/agent/mibgroup/disman/mteTriggerBooleanTable.c
@@ -48,6 +48,7 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteTriggerBooleanTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
@@ -73,8 +74,36 @@
 #define   MTETRIGGERBOOLEANEVENT  9
     {MTETRIGGERBOOLEANEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerBooleanTable, 2, {1, 7}},
-
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteTriggerBooleanTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTETRIGGERBOOLEANCOMPARISON  3
+    {MTETRIGGERBOOLEANCOMPARISON, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 1}},
+#define   MTETRIGGERBOOLEANVALUE  4
+    {MTETRIGGERBOOLEANVALUE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 2}},
+#define   MTETRIGGERBOOLEANSTARTUP  5
+    {MTETRIGGERBOOLEANSTARTUP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 3}},
+#define   MTETRIGGERBOOLEANOBJECTSOWNER  6
+    {MTETRIGGERBOOLEANOBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 4}},
+#define   MTETRIGGERBOOLEANOBJECTS  7
+    {MTETRIGGERBOOLEANOBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 5}},
+#define   MTETRIGGERBOOLEANEVENTOWNER  8
+    {MTETRIGGERBOOLEANEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 6}},
+#define   MTETRIGGERBOOLEANEVENT  9
+    {MTETRIGGERBOOLEANEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 7}},
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * (L = length of the oidsuffix) 
  */
@@ -126,6 +155,10 @@
 
     DEBUGMSGTL(("mteTriggerBooleanTable",
                 "var_mteTriggerBooleanTable: Entering...  \n"));
+
+	/* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
@@ -144,37 +177,51 @@
 
 
     case MTETRIGGERBOOLEANCOMPARISON:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanComparison;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerBooleanComparison);
         return (u_char *) & StorageTmp->mteTriggerBooleanComparison;
 
     case MTETRIGGERBOOLEANVALUE:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanValue;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerBooleanValue);
         return (u_char *) & StorageTmp->mteTriggerBooleanValue;
 
     case MTETRIGGERBOOLEANSTARTUP:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanStartup;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerBooleanStartup);
         return (u_char *) & StorageTmp->mteTriggerBooleanStartup;
 
     case MTETRIGGERBOOLEANOBJECTSOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanObjectsOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerBooleanObjectsOwnerLen;
         return (u_char *) StorageTmp->mteTriggerBooleanObjectsOwner;
 
     case MTETRIGGERBOOLEANOBJECTS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanObjects;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerBooleanObjectsLen;
         return (u_char *) StorageTmp->mteTriggerBooleanObjects;
 
     case MTETRIGGERBOOLEANEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerBooleanEventOwnerLen;
         return (u_char *) StorageTmp->mteTriggerBooleanEventOwner;
 
     case MTETRIGGERBOOLEANEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerBooleanEventLen;
         return (u_char *) StorageTmp->mteTriggerBooleanEvent;
 
@@ -187,6 +234,7 @@
 
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 
 int
 write_mteTriggerBooleanComparison(int action,
@@ -800,3 +848,5 @@
     }
     return SNMP_ERR_NOERROR;
 }
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/mteTriggerBooleanTable.h b/agent/mibgroup/disman/mteTriggerBooleanTable.h
index f685586..6413da5 100644
--- a/agent/mibgroup/disman/mteTriggerBooleanTable.h
+++ b/agent/mibgroup/disman/mteTriggerBooleanTable.h
@@ -31,6 +31,7 @@
      void            init_mteTriggerBooleanTable(void);
      FindVarMethod   var_mteTriggerBooleanTable;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteTriggerBooleanComparison;
      WriteMethod     write_mteTriggerBooleanValue;
      WriteMethod     write_mteTriggerBooleanStartup;
@@ -38,6 +39,7 @@
      WriteMethod     write_mteTriggerBooleanObjects;
      WriteMethod     write_mteTriggerBooleanEventOwner;
      WriteMethod     write_mteTriggerBooleanEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 
diff --git a/agent/mibgroup/disman/mteTriggerDeltaTable.c b/agent/mibgroup/disman/mteTriggerDeltaTable.c
index 137e097..c829e6a 100644
--- a/agent/mibgroup/disman/mteTriggerDeltaTable.c
+++ b/agent/mibgroup/disman/mteTriggerDeltaTable.c
@@ -48,6 +48,7 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteTriggerDeltaTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
@@ -61,8 +62,24 @@
 #define   MTETRIGGERDELTADISCONTINUITYIDTYPE  5
     {MTETRIGGERDELTADISCONTINUITYIDTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerDeltaTable, 2, {1, 3}},
-
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteTriggerDeltaTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTETRIGGERDELTADISCONTINUITYID  3
+    {MTETRIGGERDELTADISCONTINUITYID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerDeltaTable, 2, {1, 1}},
+#define   MTETRIGGERDELTADISCONTINUITYIDWILDCARD  4
+    {MTETRIGGERDELTADISCONTINUITYIDWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerDeltaTable, 2, {1, 2}},
+#define   MTETRIGGERDELTADISCONTINUITYIDTYPE  5
+    {MTETRIGGERDELTADISCONTINUITYIDTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerDeltaTable, 2, {1, 3}},
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * (L = length of the oidsuffix) 
  */
@@ -114,6 +131,10 @@
 
     DEBUGMSGTL(("mteTriggerDeltaTable",
                 "var_mteTriggerDeltaTable: Entering...  \n"));
+
+    /* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
@@ -129,24 +150,29 @@
 
 
     case MTETRIGGERDELTADISCONTINUITYID:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerDeltaDiscontinuityID;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len =
             StorageTmp->mteTriggerDeltaDiscontinuityIDLen * sizeof(oid);
         return (u_char *) StorageTmp->mteTriggerDeltaDiscontinuityID;
 
     case MTETRIGGERDELTADISCONTINUITYIDWILDCARD:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerDeltaDiscontinuityIDWildcard;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len =
             sizeof(StorageTmp->mteTriggerDeltaDiscontinuityIDWildcard);
         return (u_char *) & StorageTmp->
             mteTriggerDeltaDiscontinuityIDWildcard;
 
     case MTETRIGGERDELTADISCONTINUITYIDTYPE:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerDeltaDiscontinuityIDType;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerDeltaDiscontinuityIDType);
         return (u_char *) & StorageTmp->mteTriggerDeltaDiscontinuityIDType;
 
-
     default:
         ERROR_MSG("");
     }
@@ -155,7 +181,7 @@
 
 
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 write_mteTriggerDeltaDiscontinuityID(int action,
                                      u_char * var_val,
@@ -414,3 +440,4 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/mteTriggerDeltaTable.h b/agent/mibgroup/disman/mteTriggerDeltaTable.h
index 0e8a17e..fa4872a 100644
--- a/agent/mibgroup/disman/mteTriggerDeltaTable.h
+++ b/agent/mibgroup/disman/mteTriggerDeltaTable.h
@@ -30,8 +30,10 @@
      void            init_mteTriggerDeltaTable(void);
      FindVarMethod   var_mteTriggerDeltaTable;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteTriggerDeltaDiscontinuityID;
      WriteMethod     write_mteTriggerDeltaDiscontinuityIDWildcard;
      WriteMethod     write_mteTriggerDeltaDiscontinuityIDType;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 #endif                          /* _MIBGROUP_MTETRIGGERDELTATABLE_H */
diff --git a/agent/mibgroup/disman/mteTriggerExistenceTable.c b/agent/mibgroup/disman/mteTriggerExistenceTable.c
index c5761b5..4e6b64b 100644
--- a/agent/mibgroup/disman/mteTriggerExistenceTable.c
+++ b/agent/mibgroup/disman/mteTriggerExistenceTable.c
@@ -48,6 +48,7 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteTriggerExistenceTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
@@ -70,8 +71,33 @@
 #define   MTETRIGGEREXISTENCEEVENT  8
     {MTETRIGGEREXISTENCEEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerExistenceTable, 2, {1, 6}},
-
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteTriggerExistenceTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTETRIGGEREXISTENCETEST  3
+    {MTETRIGGEREXISTENCETEST, ASN_BIT_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 1}},
+#define   MTETRIGGEREXISTENCESTARTUP  4
+    {MTETRIGGEREXISTENCESTARTUP, ASN_BIT_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 2}},
+#define   MTETRIGGEREXISTENCEOBJECTSOWNER  5
+    {MTETRIGGEREXISTENCEOBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 3}},
+#define   MTETRIGGEREXISTENCEOBJECTS  6
+    {MTETRIGGEREXISTENCEOBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 4}},
+#define   MTETRIGGEREXISTENCEEVENTOWNER  7
+    {MTETRIGGEREXISTENCEEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 5}},
+#define   MTETRIGGEREXISTENCEEVENT  8
+    {MTETRIGGEREXISTENCEEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 6}},
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * (L = length of the oidsuffix) 
  */
@@ -131,6 +157,10 @@
 
     DEBUGMSGTL(("mteTriggerExistenceTable",
                 "var_mteTriggerExistenceTable: Entering...  \n"));
+
+	/* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
@@ -149,32 +179,44 @@
 
 
     case MTETRIGGEREXISTENCETEST:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceTest;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceTestLen;
         return (u_char *) StorageTmp->mteTriggerExistenceTest;
 
     case MTETRIGGEREXISTENCESTARTUP:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceStartup;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceStartupLen;
         return (u_char *) StorageTmp->mteTriggerExistenceStartup;
 
     case MTETRIGGEREXISTENCEOBJECTSOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceObjectsOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceObjectsOwnerLen;
         return (u_char *) StorageTmp->mteTriggerExistenceObjectsOwner;
 
     case MTETRIGGEREXISTENCEOBJECTS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceObjects;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceObjectsLen;
         return (u_char *) StorageTmp->mteTriggerExistenceObjects;
 
     case MTETRIGGEREXISTENCEEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceEventOwnerLen;
         return (u_char *) StorageTmp->mteTriggerExistenceEventOwner;
 
     case MTETRIGGEREXISTENCEEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceEventLen;
         return (u_char *) StorageTmp->mteTriggerExistenceEvent;
 
@@ -187,6 +229,7 @@
 
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 
 int
 write_mteTriggerExistenceTest(int action,
@@ -735,3 +778,5 @@
     }
     return SNMP_ERR_NOERROR;
 }
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/mteTriggerExistenceTable.h b/agent/mibgroup/disman/mteTriggerExistenceTable.h
index 40dbd4e..75c6427 100644
--- a/agent/mibgroup/disman/mteTriggerExistenceTable.h
+++ b/agent/mibgroup/disman/mteTriggerExistenceTable.h
@@ -29,11 +29,13 @@
      void            init_mteTriggerExistenceTable(void);
      FindVarMethod   var_mteTriggerExistenceTable;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteTriggerExistenceTest;
      WriteMethod     write_mteTriggerExistenceStartup;
      WriteMethod     write_mteTriggerExistenceObjectsOwner;
      WriteMethod     write_mteTriggerExistenceObjects;
      WriteMethod     write_mteTriggerExistenceEventOwner;
      WriteMethod     write_mteTriggerExistenceEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 #endif                          /* _MIBGROUP_MTETRIGGEREXISTENCETABLE_H */
diff --git a/agent/mibgroup/disman/mteTriggerTable.c b/agent/mibgroup/disman/mteTriggerTable.c
index 5a2bd7b..80a45a3 100644
--- a/agent/mibgroup/disman/mteTriggerTable.c
+++ b/agent/mibgroup/disman/mteTriggerTable.c
@@ -8,6 +8,7 @@
  * This should always be included first before anything else 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -20,6 +21,13 @@
 #include <limits.h>
 #endif
 
+netsnmp_feature_require(mib_snprint_variable)
+netsnmp_feature_require(tdomain_support)
+netsnmp_feature_require(check_vb_uint)
+netsnmp_feature_require(string_time_to_secs)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * minimal include directives 
@@ -78,6 +86,7 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteTriggerTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
@@ -121,8 +130,54 @@
 #define   MTETRIGGERENTRYSTATUS  17
     {MTETRIGGERENTRYSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerTable, 2, {1, 15}},
-
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteTriggerTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTETRIGGERCOMMENT     5
+    {MTETRIGGERCOMMENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 3}},
+#define   MTETRIGGERTEST        6
+    {MTETRIGGERTEST, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 4}},
+#define   MTETRIGGERSAMPLETYPE  7
+    {MTETRIGGERSAMPLETYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 5}},
+#define   MTETRIGGERVALUEID     8
+    {MTETRIGGERVALUEID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 6}},
+#define   MTETRIGGERVALUEIDWILDCARD  9
+    {MTETRIGGERVALUEIDWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 7}},
+#define   MTETRIGGERTARGETTAG   10
+    {MTETRIGGERTARGETTAG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 8}},
+#define   MTETRIGGERCONTEXTNAME  11
+    {MTETRIGGERCONTEXTNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 9}},
+#define   MTETRIGGERCONTEXTNAMEWILDCARD  12
+    {MTETRIGGERCONTEXTNAMEWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 10}},
+#define   MTETRIGGERFREQUENCY   13
+    {MTETRIGGERFREQUENCY, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 11}},
+#define   MTETRIGGEROBJECTSOWNER  14
+    {MTETRIGGEROBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 12}},
+#define   MTETRIGGEROBJECTS     15
+    {MTETRIGGEROBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 13}},
+#define   MTETRIGGERENABLED     16
+    {MTETRIGGERENABLED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 14}},
+#define   MTETRIGGERENTRYSTATUS  17
+    {MTETRIGGERENTRYSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 15}},
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * (L = length of the oidsuffix) 
  */
@@ -403,8 +458,17 @@
            break;
         case 'r':
             if (cp) {
+                int freq;
                 cp = copy_nword(cp, buf, sizeof(buf));
-                StorageNew->mteTriggerFrequency = strtoul(buf, NULL, 0);
+                freq = netsnmp_string_time_to_secs(buf);
+                if (freq == -1) {
+                    config_perror("Invalid -r value\n");
+                    /*
+                     * XXX: free StorageNew 
+                     */
+                    return;
+                }
+                StorageNew->mteTriggerFrequency = (unsigend long) freq;
             } else {
                 config_perror("No parameter after -r given\n");
                 /*
@@ -593,7 +657,7 @@
 
     DEBUGMSGTL(("mteTriggerTable", "added simple monitor: %s\n",
                 StorageNew->mteTriggerName));
-}
+} /* parse_simple_monitor */
 
 
 /*
@@ -1076,9 +1140,7 @@
         mte_enable_trigger(StorageTmp);
 
     DEBUGMSGTL(("mteTriggerTable", "done.\n"));
-}
-
-
+} /* parse_mteTriggerTable */
 
 
 /*
@@ -1429,14 +1491,20 @@
 
     DEBUGMSGTL(("mteTriggerTable",
                 "var_mteTriggerTable: Entering...  \n"));
+
+	/* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
     if ((StorageTmp =
          header_complex(mteTriggerTableStorage, vp, name, length, exact,
                         var_len, write_method)) == NULL) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (vp->magic == MTETRIGGERENTRYSTATUS)
             *write_method = write_mteTriggerEntryStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         return NULL;
     }
 
@@ -1448,67 +1516,93 @@
 
 
     case MTETRIGGERCOMMENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerComment;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerCommentLen;
         return (u_char *) StorageTmp->mteTriggerComment;
 
     case MTETRIGGERTEST:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerTest;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerTestLen;
         return (u_char *) StorageTmp->mteTriggerTest;
 
     case MTETRIGGERSAMPLETYPE:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerSampleType;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerSampleType);
         return (u_char *) & StorageTmp->mteTriggerSampleType;
 
     case MTETRIGGERVALUEID:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerValueID;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerValueIDLen * sizeof(oid);
         return (u_char *) StorageTmp->mteTriggerValueID;
 
     case MTETRIGGERVALUEIDWILDCARD:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerValueIDWildcard;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerValueIDWildcard);
         return (u_char *) & StorageTmp->mteTriggerValueIDWildcard;
 
     case MTETRIGGERTARGETTAG:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerTargetTag;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerTargetTagLen;
         return (u_char *) StorageTmp->mteTriggerTargetTag;
 
     case MTETRIGGERCONTEXTNAME:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerContextName;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerContextNameLen;
         return (u_char *) StorageTmp->mteTriggerContextName;
 
     case MTETRIGGERCONTEXTNAMEWILDCARD:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerContextNameWildcard;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerContextNameWildcard);
         return (u_char *) & StorageTmp->mteTriggerContextNameWildcard;
 
     case MTETRIGGERFREQUENCY:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerFrequency;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerFrequency);
         return (u_char *) & StorageTmp->mteTriggerFrequency;
 
     case MTETRIGGEROBJECTSOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerObjectsOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerObjectsOwnerLen;
         return (u_char *) StorageTmp->mteTriggerObjectsOwner;
 
     case MTETRIGGEROBJECTS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerObjects;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerObjectsLen;
         return (u_char *) StorageTmp->mteTriggerObjects;
 
     case MTETRIGGERENABLED:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerEnabled;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerEnabled);
         return (u_char *) & StorageTmp->mteTriggerEnabled;
 
     case MTETRIGGERENTRYSTATUS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerEntryStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerEntryStatus);
         return (u_char *) & StorageTmp->mteTriggerEntryStatus;
 
@@ -1521,7 +1615,7 @@
 
 
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 write_mteTriggerComment(int action,
                         u_char * var_val,
@@ -1608,7 +1702,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerComment */
 
 
 
@@ -1695,7 +1789,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerTest */
 
 
 
@@ -1778,7 +1872,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerSampleType */
 
 
 
@@ -1872,7 +1966,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerValueID */
 
 
 
@@ -1956,7 +2050,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerValueIDWildcard */
 
 
 
@@ -2045,7 +2139,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerTargetTag */
 
 
 
@@ -2135,7 +2229,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerContextName */
 
 
 
@@ -2219,7 +2313,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerContextNameWildcard */
 
 
 
@@ -2306,7 +2400,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerFrequency */
 
 
 
@@ -2396,7 +2490,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerObjectsOwner */
 
 
 
@@ -2485,7 +2579,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerObjects */
 
 
 
@@ -2574,10 +2668,7 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
-
-
-
+} /* write_mteTriggerEnabled */
 
 
 
@@ -2905,7 +2996,11 @@
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerEntryStatus */
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+
 
 /*
  * send trap 
@@ -3000,7 +3095,8 @@
 
     send_v2trap(var_list);
     snmp_free_varbind(var_list);
-}
+} /* send_mte_trap */
+
 
 void
 last_state_clean(void *data)
@@ -3010,6 +3106,7 @@
     SNMP_FREE(cleanme);
 }
 
+
 /*
  * retrieves requested info in pdu from the current target 
  */
@@ -3101,7 +3198,7 @@
     buf[sizeof(buf) - 1] = '\0';
     DEBUGMSGTL(("mteTriggerTable", "got a variables: %s\n", buf));
     return response;
-}
+} /* mte_get_response */
 
 
 /*
@@ -3132,7 +3229,6 @@
 }
 
 
-
 /*
  * Return 0 if the discontinuity object was checked and no discontinuity has
  * occurred, 1 if the discontinuity object was checked and a discontinuity
@@ -3263,7 +3359,7 @@
      */
     DEBUGMSGTL(("mte_disco", "no discontinuity\n"));
     return 0;
-}
+} /* mte_discontinuity_occurred */
 
 
 void
@@ -3670,7 +3766,8 @@
     }
 
     item->started = MTE_STARTED;
-}
+} /* mte_run_trigger */
+
 
 
 /*
diff --git a/agent/mibgroup/disman/mteTriggerTable.h b/agent/mibgroup/disman/mteTriggerTable.h
index 18914dd..c427602 100644
--- a/agent/mibgroup/disman/mteTriggerTable.h
+++ b/agent/mibgroup/disman/mteTriggerTable.h
@@ -229,7 +229,7 @@
      netsnmp_pdu    *mte_get_response(struct mteTriggerTable_data *,
                                       netsnmp_pdu *);
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteTriggerComment;
      WriteMethod     write_mteTriggerTest;
      WriteMethod     write_mteTriggerSampleType;
@@ -243,8 +243,7 @@
      WriteMethod     write_mteTriggerObjects;
      WriteMethod     write_mteTriggerEnabled;
      WriteMethod     write_mteTriggerEntryStatus;
-
-     WriteMethod     write_mteTriggerEntryStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
      void            mte_enable_trigger(struct mteTriggerTable_data *item);
      void            mte_disable_trigger(struct mteTriggerTable_data
diff --git a/agent/mibgroup/disman/mteTriggerThresholdTable.c b/agent/mibgroup/disman/mteTriggerThresholdTable.c
index 28b33d8..be963c1 100644
--- a/agent/mibgroup/disman/mteTriggerThresholdTable.c
+++ b/agent/mibgroup/disman/mteTriggerThresholdTable.c
@@ -48,6 +48,7 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteTriggerThresholdTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
@@ -97,13 +98,65 @@
 #define   MTETRIGGERTHRESHOLDDELTAFALLINGEVENT  17
     {MTETRIGGERTHRESHOLDDELTAFALLINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 15}},
-
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteTriggerThresholdTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTETRIGGERTHRESHOLDSTARTUP  3
+    {MTETRIGGERTHRESHOLDSTARTUP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 1}},
+#define   MTETRIGGERTHRESHOLDRISING  4
+    {MTETRIGGERTHRESHOLDRISING, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 2}},
+#define   MTETRIGGERTHRESHOLDFALLING  5
+    {MTETRIGGERTHRESHOLDFALLING, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 3}},
+#define   MTETRIGGERTHRESHOLDDELTARISING  6
+    {MTETRIGGERTHRESHOLDDELTARISING, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 4}},
+#define   MTETRIGGERTHRESHOLDDELTAFALLING  7
+    {MTETRIGGERTHRESHOLDDELTAFALLING, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 5}},
+#define   MTETRIGGERTHRESHOLDOBJECTSOWNER  8
+    {MTETRIGGERTHRESHOLDOBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 6}},
+#define   MTETRIGGERTHRESHOLDOBJECTS  9
+    {MTETRIGGERTHRESHOLDOBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 7}},
+#define   MTETRIGGERTHRESHOLDRISINGEVENTOWNER  10
+    {MTETRIGGERTHRESHOLDRISINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 8}},
+#define   MTETRIGGERTHRESHOLDRISINGEVENT  11
+    {MTETRIGGERTHRESHOLDRISINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 9}},
+#define   MTETRIGGERTHRESHOLDFALLINGEVENTOWNER  12
+    {MTETRIGGERTHRESHOLDFALLINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 10}},
+#define   MTETRIGGERTHRESHOLDFALLINGEVENT  13
+    {MTETRIGGERTHRESHOLDFALLINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 11}},
+#define   MTETRIGGERTHRESHOLDDELTARISINGEVENTOWNER  14
+    {MTETRIGGERTHRESHOLDDELTARISINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 12}},
+#define   MTETRIGGERTHRESHOLDDELTARISINGEVENT  15
+    {MTETRIGGERTHRESHOLDDELTARISINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 13}},
+#define   MTETRIGGERTHRESHOLDDELTAFALLINGEVENTOWNER  16
+    {MTETRIGGERTHRESHOLDDELTAFALLINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 14}},
+#define   MTETRIGGERTHRESHOLDDELTAFALLINGEVENT  17
+    {MTETRIGGERTHRESHOLDDELTAFALLINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 15}},
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+
 /*
  * (L = length of the oidsuffix) 
  */
 
-
 /*
  * global storage of our data, saved in and configured by header_complex() 
  */
@@ -151,6 +204,10 @@
 
     DEBUGMSGTL(("mteTriggerThresholdTable",
                 "var_mteTriggerThresholdTable: Entering...  \n"));
+
+	/* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
@@ -170,80 +227,110 @@
 
 
     case MTETRIGGERTHRESHOLDSTARTUP:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdStartup;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerThresholdStartup);
         return (u_char *) & StorageTmp->mteTriggerThresholdStartup;
 
     case MTETRIGGERTHRESHOLDRISING:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdRising;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerThresholdRising);
         return (u_char *) & StorageTmp->mteTriggerThresholdRising;
 
     case MTETRIGGERTHRESHOLDFALLING:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdFalling;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerThresholdFalling);
         return (u_char *) & StorageTmp->mteTriggerThresholdFalling;
 
     case MTETRIGGERTHRESHOLDDELTARISING:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaRising;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerThresholdDeltaRising);
         return (u_char *) & StorageTmp->mteTriggerThresholdDeltaRising;
 
     case MTETRIGGERTHRESHOLDDELTAFALLING:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaFalling;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerThresholdDeltaFalling);
         return (u_char *) & StorageTmp->mteTriggerThresholdDeltaFalling;
 
     case MTETRIGGERTHRESHOLDOBJECTSOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdObjectsOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdObjectsOwnerLen;
         return (u_char *) StorageTmp->mteTriggerThresholdObjectsOwner;
 
     case MTETRIGGERTHRESHOLDOBJECTS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdObjects;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdObjectsLen;
         return (u_char *) StorageTmp->mteTriggerThresholdObjects;
 
     case MTETRIGGERTHRESHOLDRISINGEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdRisingEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdRisingEventOwnerLen;
         return (u_char *) StorageTmp->mteTriggerThresholdRisingEventOwner;
 
     case MTETRIGGERTHRESHOLDRISINGEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdRisingEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdRisingEventLen;
         return (u_char *) StorageTmp->mteTriggerThresholdRisingEvent;
 
     case MTETRIGGERTHRESHOLDFALLINGEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdFallingEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdFallingEventOwnerLen;
         return (u_char *) StorageTmp->mteTriggerThresholdFallingEventOwner;
 
     case MTETRIGGERTHRESHOLDFALLINGEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdFallingEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdFallingEventLen;
         return (u_char *) StorageTmp->mteTriggerThresholdFallingEvent;
 
     case MTETRIGGERTHRESHOLDDELTARISINGEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaRisingEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdDeltaRisingEventOwnerLen;
         return (u_char *) StorageTmp->
             mteTriggerThresholdDeltaRisingEventOwner;
 
     case MTETRIGGERTHRESHOLDDELTARISINGEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaRisingEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdDeltaRisingEventLen;
         return (u_char *) StorageTmp->mteTriggerThresholdDeltaRisingEvent;
 
     case MTETRIGGERTHRESHOLDDELTAFALLINGEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaFallingEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len =
             StorageTmp->mteTriggerThresholdDeltaFallingEventOwnerLen;
         return (u_char *) StorageTmp->
             mteTriggerThresholdDeltaFallingEventOwner;
 
     case MTETRIGGERTHRESHOLDDELTAFALLINGEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaFallingEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdDeltaFallingEventLen;
         return (u_char *) StorageTmp->mteTriggerThresholdDeltaFallingEvent;
 
@@ -256,7 +343,7 @@
 
 
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
 int
 write_mteTriggerThresholdStartup(int action,
                                  u_char * var_val,
@@ -1607,3 +1694,5 @@
     }
     return SNMP_ERR_NOERROR;
 }
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/mteTriggerThresholdTable.h b/agent/mibgroup/disman/mteTriggerThresholdTable.h
index 7aa6cec..8f33011 100644
--- a/agent/mibgroup/disman/mteTriggerThresholdTable.h
+++ b/agent/mibgroup/disman/mteTriggerThresholdTable.h
@@ -27,6 +27,7 @@
      void            init_mteTriggerThresholdTable(void);
      FindVarMethod   var_mteTriggerThresholdTable;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteTriggerThresholdStartup;
      WriteMethod     write_mteTriggerThresholdRising;
      WriteMethod     write_mteTriggerThresholdFalling;
@@ -42,5 +43,6 @@
      WriteMethod     write_mteTriggerThresholdDeltaRisingEvent;
      WriteMethod     write_mteTriggerThresholdDeltaFallingEventOwner;
      WriteMethod     write_mteTriggerThresholdDeltaFallingEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 #endif                          /* _MIBGROUP_MTETRIGGERTHRESHOLDTABLE_H */
diff --git a/agent/mibgroup/disman/nslookup/lookupCtlTable.c b/agent/mibgroup/disman/nslookup/lookupCtlTable.c
index 225c95c..0f71da6 100644
--- a/agent/mibgroup/disman/nslookup/lookupCtlTable.c
+++ b/agent/mibgroup/disman/nslookup/lookupCtlTable.c
@@ -16,9 +16,14 @@
  * This should always be included first before anything else 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 #include <arpa/inet.h>
 #include <netdb.h>
 
@@ -46,6 +51,7 @@
     { 1, 3, 6, 1, 2, 1, 82, 1, 3 };
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 lookupCtlTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix
@@ -63,6 +69,25 @@
     {COLUMN_LOOKUPCTLROWSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_lookupCtlTable, 2, {1, 8}}
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 lookupCtlTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix
+     */
+    {COLUMN_LOOKUPCTLTARGETADDRESSTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 3}},
+    {COLUMN_LOOKUPCTLTARGETADDRESS,   ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 4}},
+    {COLUMN_LOOKUPCTLOPERSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 5}},
+    {COLUMN_LOOKUPCTLTIME,      ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 6}},
+    {COLUMN_LOOKUPCTLRC,         ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 7}},
+    {COLUMN_LOOKUPCTLROWSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 8}}
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 /*
@@ -373,6 +398,7 @@
                    int exact, size_t *var_len, WriteMethod ** write_method)
 {
     struct lookupTable_data *StorageTmp = NULL;
+        *write_method = NULL;
 
     /*
      * this assumes you have registered all your data properly
@@ -390,12 +416,16 @@
      */
     switch (vp->magic) {
     case COLUMN_LOOKUPCTLTARGETADDRESSTYPE:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_lookupCtlTargetAddressType;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->lookupCtlTargetAddressType);
         return (u_char *) & StorageTmp->lookupCtlTargetAddressType;
 
     case COLUMN_LOOKUPCTLTARGETADDRESS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_lookupCtlTargetAddress;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = (StorageTmp->lookupCtlTargetAddressLen);
         return (u_char *) StorageTmp->lookupCtlTargetAddress;
 
@@ -412,7 +442,9 @@
         return (u_char *) & StorageTmp->lookupCtlRc;
 
     case COLUMN_LOOKUPCTLROWSTATUS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_lookupCtlRowStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->lookupCtlRowStatus);
         return (u_char *) & StorageTmp->lookupCtlRowStatus;
 
@@ -505,9 +537,9 @@
             return;
         }
 
-        gettimeofday(&tpstart, NULL);
-        lookup = gethostbyaddr(&addr_in, sizeof(addr_in), AF_INET);
-        gettimeofday(&tpend, NULL);
+        netsnmp_get_monotonic_clock(&tpstart);
+        lookup = netsnmp_gethostbyaddr(&addr_in, sizeof(addr_in), AF_INET);
+        netsnmp_get_monotonic_clock(&tpend);
         timeuse = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
         timeuse /= 1000;
@@ -555,9 +587,9 @@
         struct addrinfo hints = { 0, AF_INET6, SOCK_DGRAM };
 #endif
 
-        gettimeofday(&tpstart, NULL);
-        lookup = gethostbyname(address);
-        gettimeofday(&tpend, NULL);
+        netsnmp_get_monotonic_clock(&tpstart);
+        lookup = netsnmp_gethostbyname(address);
+        netsnmp_get_monotonic_clock(&tpend);
         timeuse4 = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
         if (lookup == NULL) {
@@ -584,6 +616,7 @@
                     temp = add_result(item, n, INETADDRESSTYPE_UNKNOWN, "", 0);
                     break;
                 }
+                DEBUGMSGTL(("lookupCtlTable", "Adding %d %s\n", n, buf));
 
                 if (n == 1)
                     item->ResultsTable = temp;
@@ -596,9 +629,9 @@
         }
 
 #if HAVE_GETADDRINFO
-        gettimeofday(&tpstart, NULL);
-        res = getaddrinfo(address, NULL, &hints, &ais);
-        gettimeofday(&tpend, NULL);
+        netsnmp_get_monotonic_clock(&tpstart);
+        res = netsnmp_getaddrinfo(address, NULL, &hints, &ais);
+        netsnmp_get_monotonic_clock(&tpend);
         timeuse6 = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
 
@@ -616,14 +649,14 @@
                 switch (aip->ai_family) {
                 case AF_INET:
                     inet_ntop(aip->ai_family,
-                        &((struct sockaddr_in *)aip->ai_addr)->sin_addr,
+                            &((struct sockaddr_in *)aip->ai_addr)->sin_addr,
                         buf, sizeof(buf));
                     buflen = strlen(buf);
                     temp = add_result(item, n, INETADDRESSTYPE_IPV4, buf, buflen);
                     break;
                 case AF_INET6:
                     inet_ntop(aip->ai_family,
-                        &((struct sockaddr_in6 *)aip->ai_addr)->sin6_addr,
+                            &((struct sockaddr_in6 *)aip->ai_addr)->sin6_addr,
                         buf, sizeof(buf));
                     buflen = strlen(buf);
                     temp = add_result(item, n, INETADDRESSTYPE_IPV6, buf, buflen);
@@ -646,9 +679,9 @@
             freeaddrinfo(ais);
         }
 #elif HAVE_GETHOSTBYNAME2
-        gettimeofday(&tpstart, NULL);
+        netsnmp_get_monotonic_clock(&tpstart);
         lookup = gethostbyname2(address, AF_INET6);
-        gettimeofday(&tpend, NULL);
+        netsnmp_get_monotonic_clock(&tpend);
         timeuse6 = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
 
@@ -715,9 +748,9 @@
         else
             DEBUGMSGTL(("lookupCtlTable", "error! \n"));
 
-        gettimeofday(&tpstart, NULL);
-        lookup = gethostbyaddr(&addr_in6, sizeof(addr_in6), AF_INET6);
-        gettimeofday(&tpend, NULL);
+        netsnmp_get_monotonic_clock(&tpstart);
+        lookup = netsnmp_gethostbyaddr(&addr_in6, sizeof(addr_in6), AF_INET6);
+        netsnmp_get_monotonic_clock(&tpend);
         timeuse = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
         timeuse /= 1000;
@@ -892,6 +925,7 @@
 }
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 write_lookupCtlTargetAddressType(int action,
                                  u_char * var_val,
@@ -1378,3 +1412,4 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/nslookup/lookupCtlTable.h b/agent/mibgroup/disman/nslookup/lookupCtlTable.h
index 7a729ab..085b25b 100644
--- a/agent/mibgroup/disman/nslookup/lookupCtlTable.h
+++ b/agent/mibgroup/disman/nslookup/lookupCtlTable.h
@@ -64,12 +64,13 @@
 void            parse_lookupCtlTable(const char *, char *);
 SNMPCallback    store_lookupCtlTable;
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
 WriteMethod     write_lookupCtlTargetAddressType;
 WriteMethod     write_lookupCtlTargetAddress;
 WriteMethod     write_lookupCtlRowStatus;
 
 WriteMethod     write_lookupCtlRowStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * column number definitions for table lookupCtlTable 
diff --git a/agent/mibgroup/disman/ping/pingCtlTable.c b/agent/mibgroup/disman/ping/pingCtlTable.c
index 35218f8..87b09ef 100644
--- a/agent/mibgroup/disman/ping/pingCtlTable.c
+++ b/agent/mibgroup/disman/ping/pingCtlTable.c
@@ -55,6 +55,7 @@
 static __inline__ int ipv6_addr_any(struct in6_addr *);
 static char    *pr_addr(struct in6_addr *, int);
 static char    *pr_addr_n(struct in6_addr *);
+void pingCtlTable_cleaner(struct header_complex_index *thestuff);
 
 /*
  *pingCtlTable_variables_oid:
@@ -64,6 +65,7 @@
 
 oid             pingCtlTable_variables_oid[] =
     { 1, 3, 6, 1, 2, 1, 80, 1, 2 };
+static const int pingCtlTable_variables_oid_len = sizeof(pingCtlTable_variables_oid)/sizeof(pingCtlTable_variables_oid[0]);
 
 /* trap */
 oid             pingProbeFailed[] = { 1, 3, 6, 1, 2, 1, 80, 0, 1 };
@@ -157,14 +159,24 @@
     DEBUGMSGTL(("pingCtlTable", "done.\n"));
 }
 
+void shutdown_pingCtlTable(void)
+{
+    snmp_unregister_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
+                             store_pingCtlTable, NULL, 1);
+    snmpd_unregister_config_handler("pingCtlTable");
+    unregister_mib(pingCtlTable_variables_oid, pingCtlTable_variables_oid_len);
+    pingCtlTable_cleaner(pingCtlTableStorage);
+    pingCtlTableStorage = NULL;
+}
+
 struct pingCtlTable_data *
 create_pingCtlTable_data(void)
 {
     struct pingCtlTable_data *StorageNew = NULL;
+
     StorageNew = SNMP_MALLOC_STRUCT(pingCtlTable_data);
-    if (StorageNew == NULL) {
-        exit(1);
-    }
+    if (StorageNew == NULL)
+        return NULL;
     StorageNew->pingCtlTargetAddressType = 1;
     StorageNew->pingCtlTargetAddress = strdup("");
     StorageNew->pingCtlTargetAddressLen = 0;
@@ -172,19 +184,17 @@
     StorageNew->pingCtlTimeOut = 3;
     StorageNew->pingCtlProbeCount = 1;
     StorageNew->pingCtlAdminStatus = 2;
-    StorageNew->pingCtlDataFill = (char *) malloc(strlen("00") + 1);
+    StorageNew->pingCtlDataFill = strdup("00");
     if (StorageNew->pingCtlDataFill == NULL) {
-        exit(1);
+        free(StorageNew);
+        return NULL;
     }
-    memcpy(StorageNew->pingCtlDataFill, "00", strlen("00") + 1);
-    StorageNew->pingCtlDataFill[strlen("00")] = '\0';
     StorageNew->pingCtlDataFillLen = strlen(StorageNew->pingCtlDataFill);
     StorageNew->pingCtlFrequency = 0;
     StorageNew->pingCtlMaxRows = 50;
     StorageNew->pingCtlStorageType = 1;
     StorageNew->pingCtlTrapGeneration = strdup("");
     StorageNew->pingCtlTrapGenerationLen = 0;
-    StorageNew->pingCtlTrapGenerationLen = 0;
     StorageNew->pingCtlTrapProbeFailureFilter = 1;
     StorageNew->pingCtlTrapTestFailureFilter = 1;
     StorageNew->pingCtlType = calloc(1, sizeof(oid) * sizeof(2));       /* 0.0 */
@@ -205,6 +215,20 @@
     return StorageNew;
 }
 
+static void free_pingCtlTable_data(struct pingCtlTable_data *StorageDel)
+{
+    netsnmp_assert(StorageDel);
+    free(StorageDel->pingCtlOwnerIndex);
+    free(StorageDel->pingCtlTestName);
+    free(StorageDel->pingCtlTargetAddress);
+    free(StorageDel->pingCtlDataFill);
+    free(StorageDel->pingCtlTrapGeneration);
+    free(StorageDel->pingCtlType);
+    free(StorageDel->pingCtlDescr);
+    free(StorageDel->pingCtlSourceAddress);
+    free(StorageDel);
+}
+
 /*
  * pingCtlTable_add(): adds a structure node to our data set 
  */
@@ -221,15 +245,16 @@
      */
 
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlOperationName */
-
-
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
     header_complex_add_data(&pingCtlTableStorage, vars, thedata);
 
     DEBUGMSGTL(("pingCtlTable", "registered an entry\n"));
-    vars = NULL;
-    DEBUGMSGTL(("pingCtlTable", "done.\n"));
+
     return SNMPERR_SUCCESS;
 }
 
@@ -237,12 +262,16 @@
 pingResultsTable_add(struct pingCtlTable_data *thedata)
 {
     netsnmp_variable_list *vars_list = NULL;
-    struct pingResultsTable_data *p = NULL;
+    struct pingResultsTable_data *p;
+
     p = thedata->pingResults;
     if (thedata->pingResults != NULL) {
 
-        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) p->pingCtlOwnerIndex, p->pingCtlOwnerIndexLen);  /* pingCtlOwnerIndex */
-        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) p->pingCtlTestName, p->pingCtlTestNameLen);      /* pingCtlOperationName */
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  p->pingCtlOwnerIndex,
+                                  p->pingCtlOwnerIndexLen);
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  p->pingCtlTestName, p->pingCtlTestNameLen);
 
         /*
          * XXX: fill in default row values here into StorageNew 
@@ -262,8 +291,6 @@
 
     }
 
-    DEBUGMSGTL(("pingResultsTable", "done.\n"));
-    vars_list = NULL;
     return SNMPERR_SUCCESS;
 }
 
@@ -272,11 +299,18 @@
 pingProbeHistoryTable_add(struct pingProbeHistoryTable_data *thedata)
 {
     netsnmp_variable_list *vars_list;
+
     vars_list = NULL;
     if (thedata != NULL) {
-        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);      /* pingCtlOwnerIndex */
-        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);  /* pingCtlTestName */
-        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED, (char *) &thedata->pingProbeHistoryIndex, sizeof(thedata->pingProbeHistoryIndex)); /* pingProbeHistoryIndex */
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  thedata->pingCtlOwnerIndex,
+                                  thedata->pingCtlOwnerIndexLen);
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  thedata->pingCtlTestName,
+                                  thedata->pingCtlTestNameLen);
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED,
+                                  &thedata->pingProbeHistoryIndex,
+                                  sizeof(thedata->pingProbeHistoryIndex));
 
         /*
          * XXX: fill in default row values here into StorageNew 
@@ -295,56 +329,43 @@
         DEBUGMSGTL(("pingProbeHistoryTable", "out finished\n"));
     }
     
-    vars_list = NULL;
-    DEBUGMSGTL(("pingProbeHistoryTable", "done.\n"));
     return SNMPERR_SUCCESS;
 }
 
 int
 pingProbeHistoryTable_addall(struct pingCtlTable_data *thedata)
 {
-    netsnmp_variable_list *vars_list = NULL;
-    struct pingProbeHistoryTable_data *p = NULL;
-    p = thedata->pingProbeHis;
-    if (thedata->pingProbeHis != NULL)
-        do {
-            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) p->pingCtlOwnerIndex, p->pingCtlOwnerIndexLen);      /* pingCtlOwnerIndex */
-            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) p->pingCtlTestName, p->pingCtlTestNameLen);  /* pingCtlTestName */
-            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED, (char *) &p->pingProbeHistoryIndex, sizeof(p->pingProbeHistoryIndex)); /* pingProbeHistoryIndex */
+    netsnmp_variable_list *vars_list;
+    struct pingProbeHistoryTable_data *p;
 
-            /*
-             * XXX: fill in default row values here into StorageNew 
-             * 
-             */
+    for (p = thedata->pingProbeHis; p; p = p->next) {
+        vars_list = NULL;
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  p->pingCtlOwnerIndex,
+                                  p->pingCtlOwnerIndexLen);
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  p->pingCtlTestName,
+                                  p->pingCtlTestNameLen);
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED,
+                                  &p->pingProbeHistoryIndex,
+                                  sizeof(p->pingProbeHistoryIndex));
+        header_complex_add_data(&pingProbeHistoryTableStorage, vars_list, p);
+    }
 
-
-            DEBUGMSGTL(("pingProbeHistoryTable", "adding data...  "));
-            /*
-             * add the index variables to the varbind list, which is 
-             * used by header_complex to index the data 
-             */
-
-            header_complex_add_data(&pingProbeHistoryTableStorage,
-                                    vars_list, p);
-
-
-            DEBUGMSGTL(("pingProbeHistoryTable", "out finished\n"));
-            vars_list = NULL;
-            p = p->next;
-        } while (p != NULL);
-
-    DEBUGMSGTL(("pingProbeHistoryTable", "done.\n"));
     return SNMPERR_SUCCESS;
 }
 
 void
 pingCtlTable_cleaner(struct header_complex_index *thestuff)
 {
-    struct header_complex_index *hciptr;
+    struct header_complex_index *hciptr, *next;
+    struct pingCtlTable_data *StorageDel;
 
     DEBUGMSGTL(("pingProbeHistoryTable", "cleanerout  "));
-    for (hciptr = thestuff; hciptr != NULL; hciptr = hciptr->next) {
-        header_complex_extract_entry(&pingCtlTableStorage, hciptr);
+    for (hciptr = thestuff; hciptr; hciptr = next) {
+        next = hciptr->next;
+        StorageDel = header_complex_extract_entry(&pingCtlTableStorage, hciptr);
+        free_pingCtlTable_data(StorageDel);
         DEBUGMSGTL(("pingProbeHistoryTable", "cleaner  "));
     }
 }
@@ -842,10 +863,15 @@
     size_t          newoid_len;
     unsigned long   count = 0;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlOperationName */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
 
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
+    snmp_free_varbind(vars);
 
     for (hciptr2 = pingProbeHistoryTableStorage; hciptr2 != NULL;
          hciptr2 = hciptr2->next) {
@@ -863,17 +889,21 @@
 {
     struct header_complex_index *hciptr2 = NULL;
     struct header_complex_index *hcilast = NULL;
-    struct pingProbeHistoryTable_data *StorageTmp = NULL;
+    struct pingProbeHistoryTable_data *StorageTmp, *StorageDel;
     netsnmp_variable_list *vars = NULL;
     oid             newoid[MAX_OID_LEN];
     size_t          newoid_len;
     time_t          last_time = 2147483647;
     time_t          tp;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlOperationName */
-
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
+    snmp_free_varbind(vars);
 
     for (hcilast = hciptr2 = pingProbeHistoryTableStorage; hciptr2 != NULL;
          hciptr2 = hciptr2->next) {
@@ -893,7 +923,25 @@
 
         }
     }
-    header_complex_extract_entry(&pingProbeHistoryTableStorage, hcilast);
+    StorageDel =
+        header_complex_extract_entry(&pingProbeHistoryTableStorage, hcilast);
+    for (hciptr2 = pingCtlTableStorage; hciptr2; hciptr2 = hciptr2->next) {
+        struct pingCtlTable_data *tmp;
+
+        tmp = hciptr2->data;
+        if (tmp->pingProbeHis == StorageDel) {
+            tmp->pingProbeHis = tmp->pingProbeHis->next;
+            DEBUGMSGTL(("pingProbeHistoryTable",
+                        "deleting the last one succeeded!\n"));
+            break;
+    	}
+    }
+    if (StorageDel) {
+        free(StorageDel->pingProbeHistoryTime);
+        free(StorageDel->pingCtlTestName);
+        free(StorageDel->pingCtlOwnerIndex);
+        free(StorageDel);
+    }
     DEBUGMSGTL(("pingProbeHistoryTable",
                 "delete the last one success!\n"));
 }
@@ -969,8 +1017,10 @@
 {
     char           *ptr;
 
-    if ((ptr = sock_ntop_host(sa, salen)) == NULL)
-        printf("sock_ntop_host error"); /* inet_ntop() sets errno */
+    if ((ptr = sock_ntop_host(sa, salen)) == NULL) {
+        /* inet_ntop() sets errno */
+        snmp_log_perror("pingCtlTable: sock_ntop_host()");
+    }
     return (ptr);
 }
 
@@ -1023,7 +1073,7 @@
     hints.ai_family = family;   /* AF_UNSPEC, AF_INET, AF_INET6, etc. */
     hints.ai_socktype = socktype;       /* 0, SOCK_STREAM, SOCK_DGRAM, etc. */
 
-    if ((n = getaddrinfo(host, serv, &hints, &res)) != 0)
+    if ((n = netsnmp_getaddrinfo(host, serv, &hints, &res)) != 0)
         return (NULL);
 
     return (res);               /* return pointer to first on linked list */
@@ -1051,17 +1101,18 @@
     hints.ai_family = family;   /* 0, AF_INET, AF_INET6, etc. */
     hints.ai_socktype = socktype;       /* 0, SOCK_STREAM, SOCK_DGRAM, etc. */
 
-    if ((n = getaddrinfo(host, serv, &hints, &res)) != 0)
+    if ((n = netsnmp_getaddrinfo(host, serv, &hints, &res)) != 0) {
 #if HAVE_GAI_STRERROR
-        printf("host_serv error for %s, %s: %s",
-               (host == NULL) ? "(no hostname)" : host,
-               (serv == NULL) ? "(no service name)" : serv,
-               gai_strerror(n));
+        snmp_log(LOG_ERR, "host_serv error for %s, %s: %s",
+                 (host == NULL) ? "(no hostname)" : host,
+                 (serv == NULL) ? "(no service name)" : serv,
+                 gai_strerror(n));
 #else
-        printf("host_serv error for %s, %s",
-               (host == NULL) ? "(no hostname)" : host,
-               (serv == NULL) ? "(no service name)" : serv);
+        snmp_log(LOG_ERR, "host_serv error for %s, %s",
+                 (host == NULL) ? "(no hostname)" : host,
+                 (serv == NULL) ? "(no service name)" : serv);
 #endif
+    }
 
     return (res);               /* return pointer to first on linked list */
 }
@@ -1105,13 +1156,16 @@
     oid             pingResultsSendProbes[] =
         { 1, 3, 6, 1, 2, 1, 80, 1, 3, 1, 8 };
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /* pingCtlOperationName */
-    StorageTmp = SNMP_MALLOC_STRUCT(pingResultsTable_data);
-    if ((StorageTmp =
-         (struct pingResultsTable_data *)
-         header_complex_get(pingResultsTableStorage, vars)) == NULL)
-        return ;
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlOwnerIndex,
+                              item->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlTestName,
+                              item->pingCtlTestNameLen);
+    StorageTmp = header_complex_get(pingResultsTableStorage, vars);
+    snmp_free_varbind(vars);
+    if (!StorageTmp)
+        return;
 
     /*
      * snmpTrap oid 
@@ -1237,14 +1291,16 @@
     /* struct pingProbeHistoryTable_data * current=NULL; */
     struct pingProbeHistoryTable_data current_var;
     int             sockfd;
+    int             select_result;
     int             current_probe_temp;
     int             success_probe = 0;
     int             fail_probe = 0;
     int             flag;
-    unsigned long  *sumrtt;
+    unsigned long   sumrtt;
     struct timeval  tv;
 
-    sumrtt = (unsigned long *) malloc(sizeof(unsigned long));
+    memset(sendbuf, 0, sizeof(sendbuf));
+
     sockfd = socket(pr->sasend->sa_family, SOCK_RAW, pr->icmpproto);
     if (sockfd < 0) {
 	snmp_log_perror("pingCtlTable: failed to create socket");
@@ -1263,29 +1319,29 @@
         (*pr->fsend) (datalen, pid, nsent, sockfd, sendbuf);
         nsent++;
         len = pr->salen;
-        if (readable_timeo(sockfd, item->pingCtlTimeOut) == 0) {
-            /* printf("socket timeout!\n"); */
-            n = -1;
-            fail_probe = fail_probe + 1;
-            flag = 1;
-        } else {
-            n = recvfrom(sockfd, recvbuf, sizeof(recvbuf), 0, pr->sarecv,
-                         &len);
-            success_probe = success_probe + 1;
-            flag = 0;
-        }
+        select_result = readable_timeo(sockfd, item->pingCtlTimeOut);
+        do {
+            if (select_result == 0) {
+                DEBUGMSGTL(("pingCtlTable", "socket timeout\n"));
+                n = -1;
+                fail_probe = fail_probe + 1;
+                flag = 1;
+            } else {
+                n = recvfrom(sockfd, recvbuf, sizeof(recvbuf), 0, pr->sarecv,
+                             &len);
+                success_probe = success_probe + 1;
+                flag = 0;
+            }
 
-        gettimeofday(&tval, NULL);
+            netsnmp_get_monotonic_clock(&tval);
 
-        time(&timep);
+            time(&timep);
 
-        (*pr->fproc) (recvbuf, n, &tval, timep, item, ai, datalen, minrtt,
-                      maxrtt, sumrtt, averagertt, current_probe_temp,
-                      success_probe, fail_probe, flag, &current_var, pid);
-        if (current_probe_temp >= item->pingCtlProbeCount) {
-            SNMP_FREE(sumrtt);
-            return;
-        }
+            (*pr->fproc) (recvbuf, n, &tval, timep, item, ai, datalen, minrtt,
+                          maxrtt, &sumrtt, averagertt, current_probe_temp,
+                          success_probe, fail_probe, flag, &current_var, pid);
+            select_result = readable_timeo(sockfd, 0);
+        } while (select_result > 0);
     }
     close(sockfd);
 }
@@ -1320,9 +1376,11 @@
     static int      probeFailed = 0;
     static int      testFailed = 0;
     static int      series = 0;
-
     netsnmp_variable_list *vars = NULL;
     struct pingResultsTable_data *StorageNew = NULL;
+
+    DEBUGMSGTL(("pingCtlTable", "proc_v4(flag = %d)\n", flag));
+
     if (flag == 0) {
         series = 0;
         ip = (struct ip *) ptr; /* start of IP header */
@@ -1330,14 +1388,20 @@
 
         icmp = (struct icmp *) (ptr + hlen1);   /* start of ICMP header */
         if ((icmplen = len - hlen1) < 8)
-            printf("icmplen (%d) < 8", icmplen);
+            DEBUGMSGTL(("pingCtlTable", "icmplen (%d) < 8", icmplen));
+
+        DEBUGMSGTL(("pingCtlTable", "ICMP type = %d (%sa reply)\n",
+                    icmp->icmp_type,
+                    icmp->icmp_type == ICMP_ECHOREPLY ? "" : "not a "));
 
         if (icmp->icmp_type == ICMP_ECHOREPLY) {
-            if (icmp->icmp_id != pid)
-                return SNMP_ERR_NOERROR;         /* not a response to our ECHO_REQUEST */
-            if (icmplen < 16)
-                printf("icmplen (%d) < 16", icmplen);
+            if (icmp->icmp_id != pid) {
+                DEBUGMSGTL(("pingCtlTable", "not a response to our ECHO_REQUEST\n"));
+                return SNMP_ERR_NOERROR;
+            }
 
+            if (icmplen < 16)
+                DEBUGMSGTL(("pingCtlTable", "icmplen (%d) < 16", icmplen));
 
             tvsend = (struct timeval *) icmp->icmp_data;
 
@@ -1345,14 +1409,19 @@
                 round_double((1000000 * (tvrecv->tv_sec - tvsend->tv_sec) +
                               tvrecv->tv_usec - tvsend->tv_usec) / 1000);
 
-            snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /* pingCtlOwnerIndex */
-            snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /* pingCtlTestName */
+            snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                      item->pingCtlOwnerIndex,
+                                      item->pingCtlOwnerIndexLen);
+            snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                      item->pingCtlTestName,
+                                      item->pingCtlTestNameLen);
 
-
-            if ((StorageNew =
-                 header_complex_get(pingResultsTableStorage,
-                                    vars)) == NULL)
+            StorageNew = header_complex_get(pingResultsTableStorage, vars);
+            snmp_free_varbind(vars);
+            if (!StorageNew) {
+                DEBUGMSGTL(("pingCtlTable", "StorageNew == NULL\n"));
                 return SNMP_ERR_NOSUCHNAME;
+            }
 
             if (current_probe == 1) {
                 *averagertt = rtt;
@@ -1360,7 +1429,6 @@
                 *maxrtt = rtt;
                 *sumrtt = rtt;
             } else {
-                printf("else\n");
                 if (rtt < *minrtt)
                     *minrtt = rtt;
                 if (rtt > *maxrtt)
@@ -1384,6 +1452,7 @@
                 StorageNew->pingResultsRttSumOfSquares + rtt * rtt;
 
 	    StorageNew->pingResultsLastGoodProbe_time = timep;
+            free(StorageNew->pingResultsLastGoodProbe);
             StorageNew->pingResultsLastGoodProbe =
                 netsnmp_memdup(date_n_time(&timep,
                                       &StorageNew->pingResultsLastGoodProbeLen),
@@ -1428,52 +1497,39 @@
 
             if (StorageNew->pingResultsSendProbes == 1)
                 item->pingProbeHis = temp;
-            else {
+            else
                 (current_temp)->next = temp;
-            }
 
             current_temp = temp;
 
-            if (StorageNew->pingResultsSendProbes >=
-                item->pingCtlProbeCount) {
+            if (StorageNew->pingResultsSendProbes >= item->pingCtlProbeCount)
                 current_temp->next = NULL;
-            }
 
             if (item->pingProbeHis != NULL) {
-                if (pingProbeHistoryTable_count(item) <
-                    item->pingCtlMaxRows) {
-                    if (pingProbeHistoryTable_add(current_temp) !=
-                        SNMPERR_SUCCESS)
-                        DEBUGMSGTL(("pingProbeHistoryTable",
-                                    "registered an entry error\n"));
-                } else {
+                if (pingProbeHistoryTable_count(item) >= item->pingCtlMaxRows)
                     pingProbeHistoryTable_delLast(item);
-                    if (pingProbeHistoryTable_add(current_temp) !=
-                        SNMPERR_SUCCESS)
-                        DEBUGMSGTL(("pingProbeHistoryTable",
-                                    "registered an entry error\n"));
-
-                }
+                if (pingProbeHistoryTable_add(current_temp) != SNMPERR_SUCCESS)
+                    DEBUGMSGTL(("pingProbeHistoryTable",
+                                "failed to add a row\n"));
 	    }
         }
-    }
-
-    else if (flag == 1)
-    {
-
-
+    } else if (flag == 1) {
         if (series == 0)
             probeFailed = 1;
         else
             probeFailed = probeFailed + 1;
         series = 1;
         testFailed = testFailed + 1;
-        snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen); /*  pingCtlOwnerIndex */
-        snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen);     /* pingCtlTestName */
+        snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                  item->pingCtlOwnerIndex,
+                                  item->pingCtlOwnerIndexLen);
+        snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                  item->pingCtlTestName,
+                                  item->pingCtlTestNameLen);
 
-
-        if ((StorageNew =
-             header_complex_get(pingResultsTableStorage, vars)) == NULL)
+        StorageNew = header_complex_get(pingResultsTableStorage, vars);
+        snmp_free_varbind(vars);
+        if (!StorageNew)
             return SNMP_ERR_NOSUCHNAME;
 
         if (current_probe == 1) {
@@ -1603,7 +1659,7 @@
     icmp->icmp_code = 0;
     icmp->icmp_id = pid;
     icmp->icmp_seq = nsent;
-    gettimeofday((struct timeval *) icmp->icmp_data, NULL);
+    netsnmp_get_monotonic_clock((struct timeval *) icmp->icmp_data);
 
     len = 8 + datalen;          /* checksum ICMP header and data */
     icmp->icmp_cksum = 0;
@@ -1621,12 +1677,15 @@
     netsnmp_variable_list *vars = NULL;
     struct pingResultsTable_data *StorageNew = NULL;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /* pingCtlOwnerIndex  */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /* pingCtlTestName  */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlOwnerIndex,
+                              item->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlTestName, item->pingCtlTestNameLen);
 
-
-    if ((StorageNew =
-         header_complex_get(pingResultsTableStorage, vars)) == NULL)
+    StorageNew = header_complex_get(pingResultsTableStorage, vars);
+    snmp_free_varbind(vars);
+    if (!StorageNew)
         return;
 
     StorageNew->pingResultsSendProbes = 0;
@@ -1654,34 +1713,41 @@
 
         ai = host_serv(host, NULL, 0, 0);
 
-        printf("PING %s (%s): %d data bytes\n", ai->ai_canonname,
-               sock_ntop_host(ai->ai_addr, ai->ai_addrlen), datalen);
+        if (ai) {
+            DEBUGMSGTL(("pingCtlTable", "PING %s (%s): %d data bytes\n",
+                        ai->ai_canonname,
+                        sock_ntop_host(ai->ai_addr, ai->ai_addrlen), datalen));
 
-        /*
-         * 4initialize according to protocol 
-         */
-        if (ai->ai_family == AF_INET) {
-            pr = &proto_v4;
+            /*
+             * 4initialize according to protocol 
+             */
+            if (ai->ai_family == AF_INET) {
+                pr = &proto_v4;
 #ifdef	IPV6
-        } else if (ai->ai_family == AF_INET6) {
-            pr = &proto_v6;
+            } else if (ai->ai_family == AF_INET6) {
+                pr = &proto_v6;
 
-            if (IN6_IS_ADDR_V4MAPPED(&(((struct sockaddr_in6 *)
-                                        ai->ai_addr)->sin6_addr)))
-                printf("cannot ping IPv4-mapped IPv6 address");
+                if (IN6_IS_ADDR_V4MAPPED(&(((struct sockaddr_in6 *)
+                                            ai->ai_addr)->sin6_addr)))
+                    snmp_log(LOG_ERR, "cannot ping IPv4-mapped IPv6 address");
 #endif
-        } else
-            printf("unknown address family %d", ai->ai_family);
+            } else {
+                snmp_log(LOG_ERR, "unknown address family %d", ai->ai_family);
+            }
 
-        pr->sasend = ai->ai_addr;
-        pr->sarecv = calloc(1, ai->ai_addrlen);
-        pr->salen = ai->ai_addrlen;
-        readloop(item, ai, datalen, minrtt, maxrtt, averagertt, pid);
+            pr->sasend = ai->ai_addr;
+            pr->sarecv = calloc(1, ai->ai_addrlen);
+            pr->salen = ai->ai_addrlen;
+            readloop(item, ai, datalen, minrtt, maxrtt, averagertt, pid);
+            free(pr->sarecv);
+        } else {
+            snmp_log(LOG_ERR, "PING: name resolution for %s failed.\n", host);
+        }
 
         SNMP_FREE(minrtt);
         SNMP_FREE(maxrtt);
         SNMP_FREE(averagertt);
-        SNMP_FREE(ai);
+        freeaddrinfo(ai);
     }
 
     else if (item->pingCtlTargetAddressType == 2) {
@@ -1757,13 +1823,11 @@
         hostname = target;
 
         if (ipv6_addr_any(&source.sin6_addr)) {
-
             socklen_t       alen;
             int             probe_fd = socket(AF_INET6, SOCK_DGRAM, 0);
 
             if (probe_fd < 0) {
-                printf("error!\n");
-                perror("socket");
+                snmp_log_perror("pingCtlTable: IPv6 datagram socket creation");
                 return;
             }
             if (device) {
@@ -1782,6 +1846,7 @@
                         if (ioctl(probe_fd, SIOCGIFINDEX, &ifr) < 0) {
                             fprintf(stderr, "ping: unknown iface %s\n",
                                     device);
+                            close(probe_fd);
                             return;
                         }
                         firsthop.sin6_scope_id = ifr.ifr_ifindex;
@@ -1794,12 +1859,14 @@
                 (probe_fd, (struct sockaddr *) &firsthop,
                  sizeof(firsthop)) == -1) {
                 perror("connect");
+                close(probe_fd);
                 return;
             }
             alen = sizeof(source);
             if (getsockname(probe_fd, (struct sockaddr *) &source, &alen)
                 == -1) {
                 perror("getsockname");
+                close(probe_fd);
                 return;
             }
             source.sin6_port = 0;
@@ -1912,15 +1979,16 @@
             }
         }
 
-        printf("PING %s(%s) ", hostname,
-               pr_addr(&whereto.sin6_addr, options));
+        DEBUGMSGTL(("pingCtlTable", "PING %s(%s) ", hostname,
+                    pr_addr(&whereto.sin6_addr, options)));
         if (flowlabel)
-            printf(", flow 0x%05x, ", (unsigned) ntohl(flowlabel));
+            DEBUGMSGTL(("pingCtlTable", ", flow 0x%05x, ",
+                        (unsigned) ntohl(flowlabel)));
         if (device || (options & F_NUMERIC)) {
-            printf("from %s %s: ",
-                   pr_addr_n(&source.sin6_addr), device ? : "");
+            DEBUGMSGTL(("pingCtlTable", "from %s %s: ",
+                        pr_addr_n(&source.sin6_addr), device ? : ""));
         }
-        printf("%d data bytes\n", datalen);
+        DEBUGMSGTL(("pingCtlTable", "%d data bytes\n", datalen));
 
         setup(icmp_sock, options, uid, timeout, preload, interval, datalen,
               (char *) outpack, &ident, &start_time, &screen_width,
@@ -1946,18 +2014,20 @@
     char           *host = NULL;
     netsnmp_variable_list *vars = NULL;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /* pingCtlOwnerIndex  */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /* pingCtlTestName  */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlOwnerIndex,
+                              item->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlTestName, item->pingCtlTestNameLen);
 
-
-    if ((StorageNew =
-         header_complex_get(pingResultsTableStorage, vars)) != NULL) {
+    StorageNew = header_complex_get(pingResultsTableStorage, vars);
+    snmp_free_varbind(vars);
+    if (StorageNew) {
         StorageNew->pingResultsSendProbes = 0;
         StorageNew->pingResultsProbeResponses = 0;
         return;
-
     }
-    ai = malloc(sizeof(struct addrinfo));
+
     host = item->pingCtlTargetAddress;
     ai = host_serv(host, NULL, 0, 0);
     StorageTmp = SNMP_MALLOC_STRUCT(pingResultsTable_data);
@@ -1980,26 +2050,14 @@
 
     if (item->pingCtlTargetAddressType == 1
         || item->pingCtlTargetAddressType == 16) {
-        if (ai == NULL) {
-            StorageTmp->pingResultsIpTargetAddressType = 0;
-            StorageTmp->pingResultsIpTargetAddress = strdup("");
-            StorageTmp->pingResultsIpTargetAddressLen = 0;
-        } else {
-            StorageTmp->pingResultsIpTargetAddressType = 1;
-            StorageTmp->pingResultsIpTargetAddress =
-                (char *)
-                malloc(strlen(sock_ntop_host(ai->ai_addr, ai->ai_addrlen))
-                       + 1);
-            StorageTmp->pingResultsIpTargetAddress =
-                strdup(sock_ntop_host(ai->ai_addr, ai->ai_addrlen));
-            StorageTmp->
-                pingResultsIpTargetAddress[strlen
-                                           (sock_ntop_host
-                                            (ai->ai_addr,
-                                             ai->ai_addrlen))] = '\0';
-            StorageTmp->pingResultsIpTargetAddressLen =
-                strlen(sock_ntop_host(ai->ai_addr, ai->ai_addrlen));
-        }
+        const char* str;
+
+        StorageTmp->pingResultsIpTargetAddressType = ai ? 1 : 0;
+        str = ai ? sock_ntop_host(ai->ai_addr, ai->ai_addrlen) : NULL;
+        if (!str)
+            str = "";
+        StorageTmp->pingResultsIpTargetAddress = strdup(str);
+        StorageTmp->pingResultsIpTargetAddressLen = strlen(str);
     }
     if (item->pingCtlTargetAddressType == 2) {
 
@@ -2014,10 +2072,7 @@
 
         if (inet_pton(AF_INET6, host, &to->sin6_addr) > 0) {
             StorageTmp->pingResultsIpTargetAddressType = 2;
-            StorageTmp->pingResultsIpTargetAddress =
-                (char *) malloc(strlen(host) + 1);
             StorageTmp->pingResultsIpTargetAddress = strdup(host);
-            StorageTmp->pingResultsIpTargetAddress[strlen(host)] = '\0';
             StorageTmp->pingResultsIpTargetAddressLen = strlen(host);
         } else {
             hp = gethostbyname2(host, AF_INET6);
@@ -2026,13 +2081,8 @@
                 memmove((caddr_t) & to->sin6_addr, hp->h_addr, 16);
                 hostname = inet_ntop(AF_INET6, &to->sin6_addr, pa, 64);
                 StorageTmp->pingResultsIpTargetAddressType = 2;
-                StorageTmp->pingResultsIpTargetAddress =
-                    (char *) malloc(strlen(hostname) + 1);
                 StorageTmp->pingResultsIpTargetAddress = strdup(hostname);
-                StorageTmp->pingResultsIpTargetAddress[strlen(hostname)] =
-                    '\0';
-                StorageTmp->pingResultsIpTargetAddressLen =
-                    strlen(hostname);
+                StorageTmp->pingResultsIpTargetAddressLen = strlen(hostname);
             } else {
                 (void) fprintf(stderr,
                                "traceroute: unknown host %s\n", host);
@@ -2061,8 +2111,7 @@
             }
         }
     }
-    SNMP_FREE(ai);
-
+    freeaddrinfo(ai);
 }
 
 
@@ -2072,12 +2121,16 @@
     netsnmp_variable_list *vars = NULL;
     struct pingResultsTable_data *StorageTmp = NULL;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlTestName */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
 
-
-    if ((StorageTmp =
-         header_complex_get(pingResultsTableStorage, vars)) == NULL)
+    StorageTmp = header_complex_get(pingResultsTableStorage, vars);
+    snmp_free_varbind(vars);
+    if (!StorageTmp)
         return SNMP_ERR_NOSUCHNAME;
     StorageTmp->pingResultsOperStatus = val;
 
@@ -2089,19 +2142,23 @@
 int
 pingResultsTable_del(struct pingCtlTable_data *thedata)
 {
-    struct header_complex_index *hciptr2 = NULL;
+    struct header_complex_index *hciptr2, *next;
     struct pingResultsTable_data *StorageDel = NULL;
     netsnmp_variable_list *vars = NULL;
     oid             newoid[MAX_OID_LEN];
     size_t          newoid_len;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlOperationName */
-
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
+    snmp_free_varbind(vars);
 
-    for (hciptr2 = pingResultsTableStorage; hciptr2 != NULL;
-         hciptr2 = hciptr2->next) {
+    for (hciptr2 = pingResultsTableStorage; hciptr2; hciptr2 = next) {
+        next = hciptr2->next;
         if (snmp_oid_compare(newoid, newoid_len, hciptr2->name, newoid_len)
             == 0) {
             StorageDel =
@@ -2125,19 +2182,23 @@
 int
 pingProbeHistoryTable_del(struct pingCtlTable_data *thedata)
 {
-    struct header_complex_index *hciptr2 = NULL;
+    struct header_complex_index *hciptr2, *next;
     struct pingProbeHistoryTable_data *StorageDel = NULL;
     netsnmp_variable_list *vars = NULL;
     oid             newoid[MAX_OID_LEN];
     size_t          newoid_len;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlOperationName */
-
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
+    snmp_free_varbind(vars);
 
-    for (hciptr2 = pingProbeHistoryTableStorage; hciptr2 != NULL;
-         hciptr2 = hciptr2->next) {
+    for (hciptr2 = pingProbeHistoryTableStorage; hciptr2; hciptr2 = next) {
+        next = hciptr2->next;
         if (snmp_oid_compare(newoid, newoid_len, hciptr2->name, newoid_len)
             == 0) {
             StorageDel =
@@ -4011,14 +4072,13 @@
                        size_t var_val_len,
                        u_char * statP, oid * name, size_t name_len)
 {
-    struct pingCtlTable_data *StorageTmp = NULL;
+    struct pingCtlTable_data *StorageTmp;
     static struct pingCtlTable_data *StorageNew, *StorageDel;
     size_t          newlen =
         name_len - (sizeof(pingCtlTable_variables_oid) / sizeof(oid) +
                     3 - 1);
     static int      old_value;
     int             set_value;
-    static netsnmp_variable_list *vars, *vp;
     struct header_complex_index *hciptr = NULL;
 
     DEBUGMSGTL(("pingCtlTable",
@@ -4117,6 +4177,8 @@
          * memory reseveration, final preparation... 
          */
         if (StorageTmp == NULL) {
+            netsnmp_variable_list *vars, *vp;
+
             if (set_value == RS_DESTROY) {
                 return SNMP_ERR_NOERROR;
             }
@@ -4136,15 +4198,14 @@
                  (name
                   [sizeof(pingCtlTable_variables_oid) / sizeof(oid) +
                    2]), newlen, vars) != SNMPERR_SUCCESS) {
-                /*
-                 * XXX: free, zero vars 
-                 */
-                /* snmp_free_varbind(vars); */
+                snmp_free_varbind(vars);
                 return SNMP_ERR_INCONSISTENTNAME;
             }
             vp = vars;
 
             StorageNew = create_pingCtlTable_data();
+            if (!StorageNew)
+                return SNMP_ERR_GENERR;
             if (vp->val_len <= 32) {
                 StorageNew->pingCtlOwnerIndex = malloc(vp->val_len + 1);
                 memcpy(StorageNew->pingCtlOwnerIndex, vp->val.string,
@@ -4181,10 +4242,7 @@
             StorageNew->pingCtlRowStatus = set_value;
 
 
-            /*
-             * XXX: free, zero vars, no longer needed? 
-             */
-            /* snmp_free_varbind(vars); */
+            snmp_free_varbind(vars);
         }
 
 
@@ -4195,12 +4253,17 @@
 
     case FREE:
         /*
-         * XXX: free, zero vars 
-         */
-
-        /*
          * Release any resources that have been allocated 
          */
+
+        if (set_value == RS_DESTROY && StorageNew)
+            free_pingCtlTable_data(StorageNew);
+        StorageNew = NULL;
+
+        if (StorageDel) {
+            free_pingCtlTable_data(StorageDel);
+            StorageDel = NULL;
+        }
         break;
 
 
@@ -4271,10 +4334,8 @@
                 header_complex_find_entry(pingCtlTableStorage, StorageNew);
             StorageDel =
                 header_complex_extract_entry(&pingCtlTableStorage, hciptr);
-
-            /*
-             * XXX: free it 
-             */
+            free_pingCtlTable_data(StorageDel);
+            StorageDel = NULL;
         } else if (StorageDel != NULL) {
             /*
              * row deletion, so add it again 
@@ -4282,6 +4343,7 @@
             pingCtlTable_add(StorageDel);
             pingResultsTable_add(StorageDel);
             pingProbeHistoryTable_addall(StorageDel);
+            StorageDel = NULL;
         } else {
             StorageTmp->pingCtlRowStatus = old_value;
         }
@@ -4303,37 +4365,8 @@
         }
 
         if (StorageDel != NULL) {
-            /*
-             * if(strlen(StorageDel->pingCtlOwnerIndex)!=0)
-             * SNMP_FREE(StorageDel->pingCtlOwnerIndex);
-             * printf("COMMIT1 \n");
-             * if(strlen(StorageDel->pingCtlTestName)!=0)
-             * SNMP_FREE(StorageDel->pingCtlTestName);
-             * printf("COMMIT2 \n");
-             * if(strlen(StorageDel->pingCtlTargetAddress)!=0)
-             * SNMP_FREE(StorageDel->pingCtlTargetAddress);
-             * printf("COMMIT3 \n");
-             * if(strlen(StorageDel->pingCtlDataFill)!=0)
-             * SNMP_FREE(StorageDel->pingCtlDataFill);
-             * printf("COMMIT4 \n");
-             * if(strlen(StorageDel->pingCtlTrapGeneration)!=0)
-             * SNMP_FREE(StorageDel->pingCtlTrapGeneration);
-             * printf("COMMIT5 \n");
-             * if(StorageDel->pingCtlTypeLen!=0)
-             * SNMP_FREE(StorageDel->pingCtlType);
-             * printf("COMMIT6 \n");
-             * if(strlen(StorageDel->pingCtlDescr)!=0)
-             * SNMP_FREE(StorageDel->pingCtlDescr);
-             * printf("COMMIT7 \n");
-             * if(strlen(StorageDel->pingCtlSourceAddress)!=0)
-             * SNMP_FREE(StorageDel->pingCtlSourceAddress);
-             * printf("COMMIT8 \n");
-             */
+            free_pingCtlTable_data(StorageDel);
             StorageDel = NULL;
-            /* StorageDel = 0; */
-            /*
-             * XXX: free it, its dead 
-             */
         } else {
             if (StorageTmp
                 && StorageTmp->pingCtlRowStatus == RS_CREATEANDGO) {
@@ -4506,14 +4539,13 @@
      * Check that packets < rate*time + preload 
      */
     if ((*cur_time).tv_sec == 0) {
-
-        gettimeofday(cur_time, NULL);
+        netsnmp_get_monotonic_clock(cur_time);
         tokens = interval * (preload - 1);
     } else {
         long            ntokens;
         struct timeval  tv;
 
-        gettimeofday(&tv, NULL);
+        netsnmp_get_monotonic_clock(&tv);
         ntokens = (tv.tv_sec - (*cur_time).tv_sec) * 1000 +
             (tv.tv_usec - (*cur_time).tv_usec) / 1000;
         if (!interval) {
@@ -4738,7 +4770,7 @@
 
     *ident = getpid() & 0xFFFF;
 
-    gettimeofday(start_time, NULL);
+    netsnmp_get_monotonic_clock(start_time);
 
 #if 0
     if (*deadline) {
@@ -4822,11 +4854,11 @@
             break;
         }
         if (npackets && nreceived >= npackets) {
-            printf("npackets,nreceived=%ld\n", nreceived);
+            DEBUGMSGTL(("pingCtlTable", "npackets,nreceived=%ld\n", nreceived));
             break;
         }
         if (deadline && nerrors) {
-            printf("deadline\n");
+            DEBUGMSGTL(("pingCtlTable", "deadline\n"));
             break;
         }
 
@@ -4841,7 +4873,7 @@
          * Send probes scheduled to this time. 
          */
         do {
-            printf("pinger\n");
+            DEBUGMSGTL(("pingCtlTable", "pinger\n"));
             next =
                 pinger(icmp_sock, preload, cmsglen, cmsgbuf, whereto,
                        &rtt_addend, uid, options, interval, datalen,
@@ -4849,11 +4881,11 @@
                        deadline, &acked, &npackets, &nreceived,
                        &ntransmitted, &nerrors, &confirm_flag, &confirm,
                        &pipesize, &cur_time);
-            printf("1:next=%d\n", next);
+            DEBUGMSGTL(("pingCtlTable", "1:next=%d\n", next));
             next =
                 schedule_exit(next, deadline, &npackets, &nreceived,
                               &ntransmitted, &tmax);
-            printf("2:next=%d\n", next);
+            DEBUGMSGTL(("pingCtlTable", "2:next=%d\n", next));
         } while (next <= 0);
 
         /*
@@ -4942,8 +4974,6 @@
                     struct pingProbeHistoryTable_data *temp = NULL;
                     netsnmp_variable_list *vars = NULL;
 
-
-
                     if (series == 0)
                         probeFailed = 1;
                     else
@@ -4951,13 +4981,17 @@
                     series = 1;
                     testFailed = testFailed + 1;
 
-                    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /*  pingCtlOwnerIndex  */
-                    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /*  pingCtlTestName  */
+                    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                              item->pingCtlOwnerIndex,
+                                              item->pingCtlOwnerIndexLen);
+                    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                              item->pingCtlTestName,
+                                              item->pingCtlTestNameLen);
 
-
-                    if ((StorageNew =
-                         header_complex_get(pingResultsTableStorage,
-                                            vars)) == NULL)
+                    StorageNew = header_complex_get(pingResultsTableStorage,
+                                                    vars);
+                    snmp_free_varbind(vars);
+                    if (!StorageNew)
                         return;
 
                     StorageNew->pingResultsSendProbes =
@@ -5052,7 +5086,7 @@
                     not_ours = 1;
                 }
             } else {
-                printf("cc>=0,else\n");
+                DEBUGMSGTL(("pingCtlTable", "cc>=0,else\n"));
 #ifdef SO_TIMESTAMP
                 for (c = CMSG_FIRSTHDR(&msg); c; c = CMSG_NXTHDR(&msg, c)) {
                     if (c->cmsg_level != SOL_SOCKET ||
@@ -5067,7 +5101,7 @@
                 if ((options & F_LATENCY) || recv_timep == NULL) {
                     if ((options & F_LATENCY) ||
                         ioctl(icmp_sock, SIOCGSTAMP, &recv_time))
-                        gettimeofday(&recv_time, NULL);
+                        netsnmp_get_monotonic_clock(&recv_time);
                     recv_timep = &recv_time;
                 }
 
@@ -5167,19 +5201,14 @@
         struct timeval  tmp_tv;
         memcpy(&tmp_tv, ptr, sizeof(tmp_tv));
 
-      restamp:
         tvsub(tv, &tmp_tv);
         triptime = tv->tv_sec * 1000000 + tv->tv_usec;
         if (triptime < 0) {
-            fprintf(stderr,
-                    "Warning: time of day goes back (%ldus), taking countermeasures.\n",
-                    triptime);
+            snmp_log(LOG_INFO,
+                     "Warning: invalid timestamp in ICMP response.\n");
             triptime = 0;
-            if (!(options & F_LATENCY)) {
-                gettimeofday(tv, NULL);
+            if (!(options & F_LATENCY))
                 options |= F_LATENCY;
-                goto restamp;
-            }
         }
         if (!csfailed) {
             (*tsum) += triptime;
@@ -5221,32 +5250,34 @@
     } else {
         int             i;
         __u8           *cp, *dp;
-        printf("%d bytes from %s: icmp_seq=%u", cc, from, seq);
+
+        DEBUGMSGTL(("pingCtlTable", "%d bytes from %s: icmp_seq=%u", cc, from,
+                    seq));
 
         if (hops >= 0)
-            printf(" ttl=%d", hops);
+            DEBUGMSGTL(("pingCtlTable", " ttl=%d", hops));
 
         if (cc < datalen + 8) {
-            printf(" (truncated)\n");
+            DEBUGMSGTL(("pingCtlTable", " (truncated)\n"));
             return 1;
         }
         if (timing) {
             if (triptime >= 100000)
-                printf(" time=%ld ms", triptime / 1000);
+                DEBUGMSGTL(("pingCtlTable", " time=%ld ms", triptime / 1000));
             else if (triptime >= 10000)
-                printf(" time=%ld.%01ld ms", triptime / 1000,
-                       (triptime % 1000) / 100);
+                DEBUGMSGTL(("pingCtlTable", " time=%ld.%01ld ms",
+                            triptime / 1000, (triptime % 1000) / 100));
             else if (triptime >= 1000)
-                printf(" time=%ld.%02ld ms", triptime / 1000,
-                       (triptime % 1000) / 10);
+                DEBUGMSGTL(("pingCtlTable", " time=%ld.%02ld ms",
+                            triptime / 1000, (triptime % 1000) / 10));
             else
-                printf(" time=%ld.%03ld ms", triptime / 1000,
-                       triptime % 1000);
+                DEBUGMSGTL(("pingCtlTable", " time=%ld.%03ld ms",
+                            triptime / 1000, triptime % 1000));
         }
         if (dupflag)
-            printf(" (DUP!)");
+            DEBUGMSGTL(("pingCtlTable", " (DUP!)"));
         if (csfailed)
-            printf(" (BAD CHECKSUM!)");
+            DEBUGMSGTL(("pingCtlTable", " (BAD CHECKSUM!)"));
 
         /*
          * check the data 
@@ -5255,13 +5286,14 @@
         dp = (u_char *)&outpack[8 + sizeof(struct timeval)];
         for (i = sizeof(struct timeval); i < datalen; ++i, ++cp, ++dp) {
             if (*cp != *dp) {
-                printf("\nwrong data byte #%d should be 0x%x but was 0x%x",
-                       i, *dp, *cp);
+                DEBUGMSGTL(("pingCtlTable",
+                            "\nwrong data byte #%d should be 0x%x but was 0x%x",
+                            i, *dp, *cp));
                 cp = (u_char *) ptr + sizeof(struct timeval);
                 for (i = sizeof(struct timeval); i < datalen; ++i, ++cp) {
                     if ((i % 32) == sizeof(struct timeval))
-                        printf("\n#%d\t", i);
-                    printf("%x ", *cp);
+                        DEBUGMSGTL(("pingCtlTable", "\n#%d\t", i));
+                    DEBUGMSGTL(("pingCtlTable", "%x ", *cp));
                 }
                 break;
             }
@@ -5269,12 +5301,16 @@
     }
 
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /*  pingCtlOwnerIndex  */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /*  pingCtlTestName  */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlOwnerIndex,
+                              item->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlTestName,
+                              item->pingCtlTestNameLen);
 
-
-    if ((StorageNew =
-         header_complex_get(pingResultsTableStorage, vars)) == NULL)
+    StorageNew = header_complex_get(pingResultsTableStorage, vars);
+    snmp_free_varbind(vars);
+    if (!StorageNew)
         return SNMP_ERR_NOSUCHNAME;
 
 
@@ -5289,6 +5325,7 @@
     StorageNew->pingResultsRttSumOfSquares = *tsum2;
 
     StorageNew->pingResultsLastGoodProbe_time = timep;
+    free(StorageNew->pingResultsLastGoodProbe);
     StorageNew->pingResultsLastGoodProbe =
         netsnmp_memdup(date_n_time(&timep,
                                    &StorageNew->pingResultsLastGoodProbeLen),
@@ -5399,20 +5436,21 @@
 
     putchar('\n');
     fflush(stdout);
-    printf("--- %s ping statistics ---\n", hostname);
+    DEBUGMSGTL(("pingCtlTable", "--- %s ping statistics ---\n", hostname));
 
     if (*nrepeats)
-        printf(", +%ld duplicates", *nrepeats);
+        DEBUGMSGTL(("pingCtlTable", ", +%ld duplicates", *nrepeats));
     if (*nchecksum)
-        printf(", +%ld corrupted", *nchecksum);
+        DEBUGMSGTL(("pingCtlTable", ", +%ld corrupted", *nchecksum));
     if (*nerrors)
-        printf(", +%ld errors", *nerrors);
+        DEBUGMSGTL(("pingCtlTable", ", +%ld errors", *nerrors));
     if (*ntransmitted) {
-        printf(", %d%% loss",
-               (int) ((((long long) ((*ntransmitted) -
-                                     (*nreceived))) * 100) /
-                      (*ntransmitted)));
-        printf(", time %ldms", 1000 * tv.tv_sec + tv.tv_usec / 1000);
+        DEBUGMSGTL(("pingCtlTable", ", %d%% loss",
+                    (int) ((((long long) ((*ntransmitted) -
+                                          (*nreceived))) * 100) /
+                           (*ntransmitted))));
+        DEBUGMSGTL(("pingCtlTable", ", time %ldms",
+                    1000 * tv.tv_sec + tv.tv_usec / 1000));
     }
     putchar('\n');
 
@@ -5423,21 +5461,23 @@
         (*tsum2) /= (*nreceived) + (*nrepeats);
         tmdev = llsqrt((*tsum2) - (*tsum) * (*tsum));
 
-        printf
-            ("rtt min/avg/max/mdev = %ld.%03ld/%lu.%03ld/%ld.%03ld/%ld.%03ld ms",
-             (*tmin) / 1000, (*tmin) % 1000,
-             (unsigned long) ((*tsum) / 1000), (long) ((*tsum) % 1000),
-             (*tmax) / 1000, (*tmax) % 1000, tmdev / 1000, tmdev % 1000);
+        DEBUGMSGTL(("pingCtlTable", "rtt min/avg/max/mdev = %ld.%03ld/%lu.%03ld"
+                    "/%ld.%03ld/%ld.%03ld ms",
+                    (*tmin) / 1000, (*tmin) % 1000,
+                    (unsigned long) ((*tsum) / 1000), (long) ((*tsum) % 1000),
+                    (*tmax) / 1000, (*tmax) % 1000, tmdev / 1000,
+                    tmdev % 1000));
     }
     if ((*pipesize) > 1)
-        printf(", pipe %d", *pipesize);
+        DEBUGMSGTL(("pingCtlTable", ", pipe %d", *pipesize));
     if ((*ntransmitted) > 1
         && (!interval || (options & (F_FLOOD | F_ADAPTIVE)))) {
         int             ipg =
             (1000000 * (long long) tv.tv_sec +
              tv.tv_usec) / ((*ntransmitted) - 1);
-        printf(", ipg/ewma %d.%03d/%d.%03d ms", ipg / 1000, ipg % 1000,
-               (*rtt) / 8000, ((*rtt) / 8) % 1000);
+        DEBUGMSGTL(("pingCtlTable", ", ipg/ewma %d.%03d/%d.%03d ms",
+                    ipg / 1000, ipg % 1000,
+                    (*rtt) / 8000, ((*rtt) / 8) % 1000));
     }
     putchar('\n');
     return;
@@ -5460,19 +5500,19 @@
             (((long long) ((*ntransmitted) -
                            (*nreceived))) * 100) / (*ntransmitted);
 
-    fprintf(stderr, "\r%ld/%ld packets, %d%% loss", *ntransmitted,
-            *nreceived, loss);
+    DEBUGMSGTL(("pingCtlTable", "\n%ld/%ld packets, %d%% loss", *ntransmitted,
+                *nreceived, loss));
 
     if ((*nreceived) && timing) {
         tavg = (*tsum) / ((*nreceived) + (*nrepeats));
 
-        fprintf(stderr,
-                ", min/avg/ewma/max = %ld.%03ld/%lu.%03ld/%d.%03d/%ld.%03ld ms",
-                (*tmin) / 1000, (*tmin) % 1000, tavg / 1000, tavg % 1000,
-                (*rtt) / 8000, ((*rtt) / 8) % 1000, (*tmax) / 1000,
-                (*tmax) % 1000);
+        DEBUGMSGTL(("pingCtlTable", ", min/avg/ewma/max = %ld.%03ld/%lu.%03ld"
+                    "/%d.%03d/%ld.%03ld ms",
+                    (*tmin) / 1000, (*tmin) % 1000, tavg / 1000, tavg % 1000,
+                    (*rtt) / 8000, ((*rtt) / 8) % 1000, (*tmax) / 1000,
+                    (*tmax) % 1000));
     }
-    fprintf(stderr, "\n");
+    DEBUGMSGTL(("pingCtlTable", "\n"));
 }
 
 
@@ -5530,12 +5570,10 @@
         if (options & F_FLOOD)
             write(STDOUT_FILENO, "E", 1);
         else if (e->ee_errno != EMSGSIZE)
-            fprintf(stderr, "ping: local error: %s\n",
-                    strerror(e->ee_errno));
+            snmp_log(LOG_ERR, "ping: local error: %s\n", strerror(e->ee_errno));
         else
-            fprintf(stderr,
-                    "ping: local error: Message too long, mtu=%u\n",
-                    e->ee_info);
+            snmp_log(LOG_ERR, "ping: local error: Message too long, mtu=%u\n",
+                     e->ee_info);
         (*nerrors)++;
     } else if (e->ee_origin == SO_EE_ORIGIN_ICMP6) {
         if (res < sizeof(icmph) ||
@@ -5657,7 +5695,7 @@
     icmph = (struct icmp6_hdr *) buf;
     if (cc < 8) {
         if (options & F_VERBOSE)
-            fprintf(stderr, "ping: packet too short (%d bytes)\n", cc);
+            snmp_log(LOG_ERR, "ping: packet too short (%d bytes)\n", cc);
         return 1;
     }
     if (icmph->icmp6_type == ICMP6_ECHO_REPLY) {
@@ -5710,16 +5748,17 @@
                 write(STDOUT_FILENO, "\bE", 2);
                 return 0;
             }
-            printf("From %s: icmp_seq=%u ",
-                   pr_addr(&from->sin6_addr, options),
-                   icmph1->icmp6_seq);
+            DEBUGMSGTL(("pingCtlTable", "From %s: icmp_seq=%u ",
+                        pr_addr(&from->sin6_addr, options),
+                        icmph1->icmp6_seq));
         } else {
             /*
              * We've got something other than an ECHOREPLY 
              */
             if (!(options & F_VERBOSE) || uid)
                 return 1;
-            printf("From %s: ", pr_addr(&from->sin6_addr, options));
+            DEBUGMSGTL(("pingCtlTable", "From %s: ",
+                        pr_addr(&from->sin6_addr, options)));
         }
         /* pr_icmph(icmph->icmp6_type, icmph->icmp6_code, ntohl(icmph->icmp6_mtu)); */
     }
@@ -5784,8 +5823,8 @@
     struct hostent *hp = NULL;
 
     if (!(options & F_NUMERIC))
-        hp = gethostbyaddr((__u8 *) addr, sizeof(struct in6_addr),
-                           AF_INET6);
+        hp = netsnmp_gethostbyaddr((__u8 *) addr, sizeof(struct in6_addr),
+                                   AF_INET6);
 
     return hp ? hp->h_name : pr_addr_n(addr);
 }
diff --git a/agent/mibgroup/disman/ping/pingCtlTable.h b/agent/mibgroup/disman/ping/pingCtlTable.h
index ea8da31..ca69d13 100644
--- a/agent/mibgroup/disman/ping/pingCtlTable.h
+++ b/agent/mibgroup/disman/ping/pingCtlTable.h
@@ -206,6 +206,7 @@
  * function declarations 
  */
 void            init_pingCtlTable(void);
+void            shutdown_pingCtlTable(void);
 FindVarMethod   var_pingCtlTable;
 void            parse_pingCtlTable(const char *, char *);
 SNMPCallback    store_pingCtlTable;
diff --git a/agent/mibgroup/disman/schedule/schedConf.c b/agent/mibgroup/disman/schedule/schedConf.c
index 4fb9850..0cbdbc6 100644
--- a/agent/mibgroup/disman/schedule/schedConf.c
+++ b/agent/mibgroup/disman/schedule/schedConf.c
@@ -4,12 +4,16 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <ctype.h>
 #include "disman/schedule/schedCore.h"
 #include "disman/schedule/schedConf.h"
 
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(string_time_to_secs)
+
 static int schedEntries;
 
 /** Initializes the schedConf module */
@@ -51,7 +55,7 @@
 {
     netsnmp_tdata_row       *row;
     struct schedTable_entry *entry;
-    char   buf[24];
+    char   buf[24], tmpbuf[SPRINT_MAX_LEN];
     long   frequency;
     long   value;
     size_t tmpint;
@@ -65,7 +69,13 @@
     /*
      *  Parse the configure directive line
      */
-    line = read_config_read_data(ASN_INTEGER,   line, &frequency, &tmpint);
+    line = copy_nword(line, tmpbuf, sizeof(tmpbuf));
+    frequency = netsnmp_string_time_to_secs(tmpbuf);
+    if (frequency == -1) {
+        config_perror("Illegal frequency specified");
+        return;
+    }
+
     line = read_config_read_data(ASN_OBJECT_ID, line, &var_ptr,   &var_len);
     if (var_len == 0) {
         config_perror("invalid specification for schedVariable");
diff --git a/agent/mibgroup/disman/schedule/schedCore.c b/agent/mibgroup/disman/schedule/schedCore.c
index c914769..c3db34f 100644
--- a/agent/mibgroup/disman/schedule/schedCore.c
+++ b/agent/mibgroup/disman/schedule/schedCore.c
@@ -4,11 +4,16 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/schedule/schedCore.h"
 #include "utilities/iquery.h"
 
+netsnmp_feature_require(iquery)
+
+netsnmp_feature_child_of(sched_nextrowtime, netsnmp_unused)
+
 netsnmp_tdata *schedule_table;
 
 
@@ -297,15 +302,14 @@
              entry->schedNextRun = now + entry->schedInterval;
         }
         DEBUGMSGTL(("disman:schedule:time", "periodic: (%ld) %s",
-                                  entry->schedNextRun,
-                           ctime(&entry->schedNextRun)));
+                    (long) entry->schedNextRun, ctime(&entry->schedNextRun)));
         break;
 
     case SCHED_TYPE_ONESHOT:
         if ( entry->schedLastRun ) {
             DEBUGMSGTL(("disman:schedule:time", "one-shot: expired (%ld) %s",
-                                  entry->schedNextRun,
-                           ctime(&entry->schedNextRun)));
+                        (long) entry->schedNextRun,
+                        ctime(&entry->schedNextRun)));
             return;
         }
         /* Fallthrough */
@@ -342,8 +346,8 @@
          *    the first specified day (in that month)
          */
 
-        localtime_r( &now, &now_tm );
-        localtime_r( &now, &next_tm );
+        (void) localtime_r( &now, &now_tm );
+        (void) localtime_r( &now, &next_tm );
 
         next_tm.tm_mon=-1;
         next_tm.tm_mday=-1;
@@ -420,8 +424,7 @@
          */
         entry->schedNextRun = mktime( &next_tm );
         DEBUGMSGTL(("disman:schedule:time", "calendar: (%ld) %s",
-                                  entry->schedNextRun,
-                           ctime(&entry->schedNextRun)));
+                    (long) entry->schedNextRun, ctime(&entry->schedNextRun)));
         return;
 
     default:
@@ -435,11 +438,13 @@
     return;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SCHED_NEXTROWTIME
 void
 sched_nextRowTime( netsnmp_tdata_row *row )
 {
     sched_nextTime((struct schedTable_entry *) row->data );
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SCHED_NEXTROWTIME */
 
 /*
  * create a new row in the table 
diff --git a/agent/mibgroup/disman/schedule/schedTable.c b/agent/mibgroup/disman/schedule/schedTable.c
index d8863fd..bba48fd 100644
--- a/agent/mibgroup/disman/schedule/schedTable.c
+++ b/agent/mibgroup/disman/schedule/schedTable.c
@@ -7,12 +7,27 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "utilities/iquery.h"
 #include "disman/schedule/schedCore.h"
 #include "disman/schedule/schedTable.h"
 
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(iquery_pdu_session)
+netsnmp_feature_require(table_tdata)
+netsnmp_feature_require(date_n_time)
+netsnmp_feature_require(check_vb_uint)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_truthvalue)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
+
 /** Initializes the schedTable module */
 void
 init_schedTable(void)
@@ -20,7 +35,6 @@
     static oid      schedTable_oid[] = { 1, 3, 6, 1, 2, 1, 63, 1, 2 };
     size_t          schedTable_oid_len = OID_LENGTH(schedTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     DEBUGMSGTL(("disman:schedule:init", "Initializing table\n"));
     /*
@@ -48,6 +62,14 @@
     netsnmp_tdata_register(reg, schedule_table, table_info);
 }
 
+void
+shutdown_schedTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
 
 /** handles requests for the schedTable table */
 int
diff --git a/agent/mibgroup/disman/schedule/schedTable.h b/agent/mibgroup/disman/schedule/schedTable.h
index efd1f2e..52033ba 100644
--- a/agent/mibgroup/disman/schedule/schedTable.h
+++ b/agent/mibgroup/disman/schedule/schedTable.h
@@ -8,6 +8,7 @@
  * function declarations 
  */
 void            init_schedTable(void);
+void            shutdown_schedTable(void);
 Netsnmp_Node_Handler schedTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c b/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
index 46fe97d..b925c5e 100644
--- a/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
+++ b/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
@@ -18,10 +18,15 @@
 
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <pthread.h>
 #include <math.h>
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 #include "traceRouteCtlTable.h"
 #include "traceRouteResultsTable.h"
 #include "traceRouteProbeHistoryTable.h"
@@ -1695,8 +1700,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlTargetAddress);
-        StorageTmp->traceRouteCtlTargetAddress = NULL;
-
         StorageTmp->traceRouteCtlTargetAddress = tmpvar;
         StorageTmp->traceRouteCtlTargetAddressLen = tmplen;
         break;
@@ -2469,7 +2472,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlSourceAddress);
-        StorageTmp->traceRouteCtlSourceAddress = NULL;
         StorageTmp->traceRouteCtlSourceAddress = tmpvar;
         StorageTmp->traceRouteCtlSourceAddressLen = tmplen;
         break;
@@ -2651,7 +2653,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlMiscOptions);
-        StorageTmp->traceRouteCtlMiscOptions = NULL;
         StorageTmp->traceRouteCtlMiscOptions = tmpvar;
         StorageTmp->traceRouteCtlMiscOptionsLen = tmplen;
         break;
@@ -3301,7 +3302,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlDescr);
-        StorageTmp->traceRouteCtlDescr = NULL;
         StorageTmp->traceRouteCtlDescr = tmpvar;
         StorageTmp->traceRouteCtlDescrLen = tmplen;
         break;
@@ -3484,7 +3484,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlTrapGeneration);
-        StorageTmp->traceRouteCtlTrapGeneration = NULL;
         StorageTmp->traceRouteCtlTrapGeneration = tmpvar;
         StorageTmp->traceRouteCtlTrapGenerationLen = tmplen;
         break;
@@ -3660,7 +3659,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlType);
-        StorageTmp->traceRouteCtlType = NULL;
         StorageTmp->traceRouteCtlType = tmpvar;
         StorageTmp->traceRouteCtlTypeLen = tmplen;
         break;
@@ -5981,7 +5979,7 @@
         return (hi);
     }
 
-    hp = gethostbyname(hostname);
+    hp = netsnmp_gethostbyname(hostname);
     if (hp == NULL) {
         Fprintf(stderr, "%s: unknown host %s\n", "traceroute", hostname);
         printf("hp=NULL\n");
diff --git a/agent/mibgroup/disman/traceroute/traceRouteResultsTable.c b/agent/mibgroup/disman/traceroute/traceRouteResultsTable.c
index 19e73b6..aba6cf1 100644
--- a/agent/mibgroup/disman/traceroute/traceRouteResultsTable.c
+++ b/agent/mibgroup/disman/traceroute/traceRouteResultsTable.c
@@ -18,6 +18,8 @@
 
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -40,6 +42,8 @@
 #include "traceRouteHopsTable.h"
 #include "header_complex.h"
 
+netsnmp_feature_require(table_dataset)
+
 /*
  *traceRouteResultsTable_variables_oid:
  *
diff --git a/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c b/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
index ef83450..6eb69f7 100644
--- a/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
+++ b/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
@@ -39,7 +39,8 @@
     for (p = addrs; p; p = p->ifa_next) {
 
         if (!list_head) {
-            if ( (list_head = (struct ifname *) malloc (sizeof(struct ifname))) < 0) {
+            list_head = malloc(sizeof(struct ifname));
+            if (!list_head) {
                 DEBUGMSGTL(("access:dot3StatsTable:interface_name_list_get",
                             "memory allocation failed\n"));
                 snmp_log (LOG_ERR, "access:dot3StatsTable,interface_name_list_get, memory allocation failed\n");
@@ -59,7 +60,8 @@
         if (nameptr1)
             continue;
 
-        if ( (nameptr2->ifn_next = (struct ifname *) malloc (sizeof(struct ifname))) < 0) {
+        nameptr2->ifn_next = malloc(sizeof(struct ifname));
+        if (!nameptr2->ifn_next) {
             DEBUGMSGTL(("access:dot3StatsTable:interface_name_list_get",
                         "memory allocation failed\n"));
             snmp_log (LOG_ERR, "access:dot3StatsTable,interface_name_list_get, memory allocation failed\n");
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
index 5414001..74f33bf 100644
--- a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
@@ -211,7 +211,6 @@
 int
 dot3StatsTable_container_load(netsnmp_container * container)
 {
-    dot3StatsTable_rowreq_ctx *rowreq_ctx;
     size_t          count = 0;
     int             fd;
 #if defined(linux)
@@ -269,6 +268,8 @@
      */
 
     for (p = list_head; p; p = p->ifn_next) {
+        dot3StatsTable_rowreq_ctx *rowreq_ctx;
+
         DEBUGMSGTL(("access:dot3StatsTable", "processing '%s'\n", p->name));
 
         /*
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c
index 743424a..e0741f3 100644
--- a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c
@@ -31,6 +31,7 @@
  */
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 /*
@@ -46,6 +47,10 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
 /**********************************************************************
  **********************************************************************
  ***
diff --git a/agent/mibgroup/examples/data_set.c b/agent/mibgroup/examples/data_set.c
index daed8f3..cc6a04a 100644
--- a/agent/mibgroup/examples/data_set.c
+++ b/agent/mibgroup/examples/data_set.c
@@ -65,8 +65,18 @@
  */
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_require(table_set_multi_add_default_row)
+netsnmp_feature_require(unregister_auto_data_table)
+netsnmp_feature_require(delete_table_data_set)
+netsnmp_feature_require(table_dataset)
+netsnmp_feature_require(table_set_multi_add_default_row)
+netsnmp_feature_require(table_dataset_unregister_auto_data_table)
+
+static netsnmp_table_data_set *table_set;
+
 /*
  * our initialization routine, automatically called by the agent 
  */
@@ -76,7 +86,6 @@
 void
 init_data_set(void)
 {
-    netsnmp_table_data_set *table_set;
     netsnmp_table_row *row;
 
     /*
@@ -204,3 +213,11 @@
 
     DEBUGMSGTL(("example_data_set", "Done initializing.\n"));
 }
+
+void
+shutdown_data_set(void)
+{
+    netsnmp_unregister_auto_data_table(table_set, NULL);
+    netsnmp_delete_table_data_set(table_set);
+    table_set = NULL;
+}
diff --git a/agent/mibgroup/examples/data_set.h b/agent/mibgroup/examples/data_set.h
index e56f600..c9cf8b2 100644
--- a/agent/mibgroup/examples/data_set.h
+++ b/agent/mibgroup/examples/data_set.h
@@ -6,6 +6,7 @@
 #endif
 
 void            init_data_set(void);
+void            shutdown_data_set(void);
 
 
 #ifdef __cplusplus
diff --git a/agent/mibgroup/examples/delayed_instance.c b/agent/mibgroup/examples/delayed_instance.c
index 833a4f7..5d54569 100644
--- a/agent/mibgroup/examples/delayed_instance.c
+++ b/agent/mibgroup/examples/delayed_instance.c
@@ -172,6 +172,7 @@
                                  sizeof(delay_time));
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         /*
          * check type 
@@ -246,6 +247,7 @@
          * we don't have anything to actually do here 
          */
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
     /*
diff --git a/agent/mibgroup/examples/netSnmpHostsTable.c b/agent/mibgroup/examples/netSnmpHostsTable.c
index b691a7f..8ea2d03 100644
--- a/agent/mibgroup/examples/netSnmpHostsTable.c
+++ b/agent/mibgroup/examples/netSnmpHostsTable.c
@@ -4,12 +4,17 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "netSnmpHostsTable.h"
 #include "netSnmpHostsTable_checkfns.h"
 #include "netSnmpHostsTable_access.h"
 
+netsnmp_feature_require(oid_stash)
+netsnmp_feature_require(oid_stash_get_data)
+netsnmp_feature_require(oid_stash_add_data)
+
 static netsnmp_oid_stash_node *undoStorage = NULL;
 static netsnmp_oid_stash_node *commitStorage = NULL;
 
@@ -92,7 +97,7 @@
      */
     DEBUGMSGTL(("initialize_table_netSnmpHostsTable",
                 "Registering table netSnmpHostsTable as a table iterator\n"));
-    netsnmp_register_table_iterator(my_handler, iinfo);
+    netsnmp_register_table_iterator2(my_handler, iinfo);
 }
 
 /** Initializes the netSnmpHostsTable module */
diff --git a/agent/mibgroup/examples/netSnmpHostsTable_checkfns.c b/agent/mibgroup/examples/netSnmpHostsTable_checkfns.c
index 4cb9339..25a7330 100644
--- a/agent/mibgroup/examples/netSnmpHostsTable_checkfns.c
+++ b/agent/mibgroup/examples/netSnmpHostsTable_checkfns.c
@@ -14,11 +14,14 @@
  * standard headers 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "netSnmpHostsTable_checkfns.h"
 #include "netSnmpHostsTable_checkfns_local.h"
 #include "netSnmpHostsTable_enums.h"
 
+netsnmp_feature_require(check_storage_transition)
+
 /** Decides if an incoming value for the netSnmpHostAddressType mib node is legal.
  *  @param type    The incoming data type.
  *  @param val     The value to be checked.
diff --git a/agent/mibgroup/examples/scalar_int.c b/agent/mibgroup/examples/scalar_int.c
index 4380fce..db4d295 100644
--- a/agent/mibgroup/examples/scalar_int.c
+++ b/agent/mibgroup/examples/scalar_int.c
@@ -23,13 +23,20 @@
  * start be including the appropriate header files 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 /*
+ * if --enable-minimalist has been turned on, we need to register
+ * the support we need so the needed functions aren't removed at compile time
+ */
+netsnmp_feature_require(long_instance)
+
+/*
  * Then, we declare the variables we want to be accessed 
  */
-static long      example1 = 42;  /* default value */
+static long     example1 = 42;  /* default value */
 
 /*
  * our initialization routine, automatically called by the agent 
diff --git a/agent/mibgroup/hardware/cpu/cpu.c b/agent/mibgroup/hardware/cpu/cpu.c
index 2b6868e..2772001 100644
--- a/agent/mibgroup/hardware/cpu/cpu.c
+++ b/agent/mibgroup/hardware/cpu/cpu.c
@@ -1,8 +1,16 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/cpu.h>
 
+netsnmp_feature_child_of(hardware_cpu, libnetsnmpmibs)
+
+netsnmp_feature_child_of(hardware_cpu_copy_stats, hardware_cpu)
+netsnmp_feature_child_of(hardware_cpu_load, hardware_cpu)
+netsnmp_feature_child_of(hardware_cpu_get_cache, hardware_cpu)
+netsnmp_feature_child_of(hardware_cpu_get_byName, hardware_cpu)
+
 extern NetsnmpCacheLoad netsnmp_cpu_arch_load;
 static void _cpu_update_stats( unsigned int, void* );
 
@@ -107,14 +115,14 @@
             return cpu;
         }
     }
-    if (cpu)
-        SNMP_FREE(cpu); /* just in case */
+    SNMP_FREE(cpu); /* just in case */
     return NULL;  /* Shouldn't happen! */
 }
 
     /*
      * Work with a list of CPU entries, indexed by name
      */
+#ifndef NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_GET_BYNAME
 netsnmp_cpu_info *netsnmp_cpu_get_byName( char *name, int create ) {
     netsnmp_cpu_info *cpu;
 
@@ -152,11 +160,15 @@
     }
     return cpu;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_GET_BYNAME */
 
+#ifndef NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_GET_CACHE
 netsnmp_cache *netsnmp_cpu_get_cache( void ) {
     return _cpu_cache;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_GET_CACHE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_LOAD
 int netsnmp_cpu_load( void ) {
         /*
          * If we're automatically updating the stats regularly,
@@ -165,6 +177,7 @@
     return ( _cpuAutoUpdate ? 1
                             : netsnmp_cache_check_and_reload( _cpu_cache ));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_LOAD */
 
     /*
      * Call the system-specific load routine regularly,
@@ -220,10 +233,14 @@
                            cpu->wait_ticks +
                            cpu->kern_ticks +
                            cpu->intrpt_ticks +
-                           cpu->sirq_ticks;
+                           cpu->sirq_ticks +
+                           cpu->steal_ticks +
+                           cpu->guest_ticks +
+                           cpu->guestnice_ticks;
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_COPY_STATS
 void _cpu_copy_stats( netsnmp_cpu_info *cpu )
 {
     netsnmp_cpu_info *cpu2;
@@ -243,6 +260,9 @@
     cpu2->kern_ticks = cpu->kern_ticks;
     cpu2->intrpt_ticks = cpu->intrpt_ticks;
     cpu2->sirq_ticks = cpu->sirq_ticks;
+    cpu2->steal_ticks = cpu->steal_ticks;
+    cpu2->guest_ticks = cpu->guest_ticks;
+    cpu2->guestnice_ticks = cpu->guestnice_ticks;
 
     cpu2->nInterrupts  = cpu->nInterrupts;
     cpu2->nCtxSwitches = cpu->nCtxSwitches;
@@ -251,3 +271,4 @@
     cpu2->pageIn     = cpu->pageIn;
     cpu2->pageOut    = cpu->pageOut;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_COPY_STATS */
diff --git a/agent/mibgroup/hardware/cpu/cpu_kinfo.c b/agent/mibgroup/hardware/cpu/cpu_kinfo.c
index facbc7b..37cf847 100644
--- a/agent/mibgroup/hardware/cpu/cpu_kinfo.c
+++ b/agent/mibgroup/hardware/cpu/cpu_kinfo.c
@@ -2,6 +2,7 @@
  *  DragonFly kinfo interface
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/cpu.h>
@@ -13,6 +14,7 @@
 #include <unistd.h>
 #include <sys/sysctl.h>
 
+netsnmp_feature_require(hardware_cpu_copy_stats)
 void _cpu_copy_stats( netsnmp_cpu_info *cpu );
 
     /*
diff --git a/agent/mibgroup/hardware/cpu/cpu_linux.c b/agent/mibgroup/hardware/cpu/cpu_linux.c
index 5d6eaf1..b1dc308 100644
--- a/agent/mibgroup/hardware/cpu/cpu_linux.c
+++ b/agent/mibgroup/hardware/cpu/cpu_linux.c
@@ -99,11 +99,12 @@
     static char *buff  = NULL;
     static int   bsize = 0;
     static int   first = 1;
-    static int   has_cpu_26 = 1;
+    static int   num_cpuline_elem = 0;
     int          bytes_read, statfd, i;
     char        *b1, *b2;
     unsigned long long cusell = 0, cicell = 0, csysll = 0, cidell = 0,
-                       ciowll = 0, cirqll = 0, csoftll = 0;
+                       ciowll = 0, cirqll = 0, csoftll = 0, cstealll = 0,
+                       cguestll = 0, cguest_nicell = 0;
     netsnmp_cpu_info* cpu;
 
     if ((statfd = open(STAT_FILE, O_RDONLY, 0)) == -1) {
@@ -158,22 +159,33 @@
             b1++;
         }
 
-	if (!has_cpu_26 ||
-            sscanf(b1, "%llu %llu %llu %llu %llu %llu %llu", &cusell,
-                   &cicell, &csysll, &cidell, &ciowll, &cirqll, &csoftll) != 7) {
-	    has_cpu_26 = 0;
-	    sscanf(b1, "%llu %llu %llu %llu", &cusell, &cicell, &csysll,
-                   &cidell);
+        num_cpuline_elem = sscanf(b1, "%llu %llu %llu %llu %llu %llu %llu %llu %llu %llu",
+         &cusell, &cicell, &csysll, &cidell, &ciowll, &cirqll, &csoftll, &cstealll, &cguestll, &cguest_nicell);
+        DEBUGMSGTL(("cpu", "/proc/stat cpu line number of elements: %i\n", num_cpuline_elem));
 
-	} else {
-            cpu->wait_ticks   = (unsigned long long)ciowll;
-            cpu->intrpt_ticks = (unsigned long long)cirqll;
-            cpu->sirq_ticks   = (unsigned long long)csoftll;
- 	}
-        cpu->user_ticks = (unsigned long long)cusell;
-        cpu->nice_ticks = (unsigned long long)cicell;
-        cpu->sys_ticks  = (unsigned long long)csysll;
-        cpu->idle_ticks = (unsigned long long)cidell;
+        /* kernel 2.6.33 and above */
+        if (num_cpuline_elem == 10) {
+            cpu->guestnice_ticks = cguest_nicell;
+        }
+        /* kernel 2.6.24 and above */
+        if (num_cpuline_elem >= 9) {
+            cpu->guest_ticks = cguestll;
+        }
+        /* kernel 2.6.11 and above */
+        if (num_cpuline_elem >= 8) {
+            cpu->steal_ticks = cstealll;
+        }
+        /* kernel 2.6 */
+        if (num_cpuline_elem >= 5) {
+            cpu->wait_ticks   = ciowll;
+            cpu->intrpt_ticks = cirqll;
+            cpu->sirq_ticks   = csoftll;
+        }
+        /* rest */
+        cpu->user_ticks = cusell;
+        cpu->nice_ticks = cicell;
+        cpu->sys_ticks  = csysll;
+        cpu->idle_ticks = cidell;
     }
     if ( b1 == buff ) {
 	if (first)
diff --git a/agent/mibgroup/hardware/cpu/cpu_mach.c b/agent/mibgroup/hardware/cpu/cpu_mach.c
index d527b3d..7f090c9 100644
--- a/agent/mibgroup/hardware/cpu/cpu_mach.c
+++ b/agent/mibgroup/hardware/cpu/cpu_mach.c
@@ -108,6 +108,7 @@
     cpu0->pageIn = vmstat.pageins;
     cpu0->pageOut = vmstat.pageouts;
 	/* not implemented: swapIn, swapOut, nInterrupts, nCtxSwitches */
+    return 1;
 }
 
  	  	 
diff --git a/agent/mibgroup/hardware/cpu/cpu_nlist.c b/agent/mibgroup/hardware/cpu/cpu_nlist.c
index a9eb1e2..974028a 100644
--- a/agent/mibgroup/hardware/cpu/cpu_nlist.c
+++ b/agent/mibgroup/hardware/cpu/cpu_nlist.c
@@ -3,6 +3,7 @@
  *     e.g. FreeBSD
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/cpu.h>
@@ -31,6 +32,7 @@
 #define CPU_SYMBOL  "cp_time"
 #define MEM_SYMBOL  "cnt"
 
+netsnmp_feature_require(hardware_cpu_copy_stats)
 void _cpu_copy_stats( netsnmp_cpu_info *cpu );
 
     /*
diff --git a/agent/mibgroup/hardware/cpu/cpu_perfstat.c b/agent/mibgroup/hardware/cpu/cpu_perfstat.c
index f0ff2d2..5fdd531 100644
--- a/agent/mibgroup/hardware/cpu/cpu_perfstat.c
+++ b/agent/mibgroup/hardware/cpu/cpu_perfstat.c
@@ -3,6 +3,7 @@
  *     e.g. AIX
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/cpu.h>
@@ -14,6 +15,7 @@
 #include <sys/protosw.h>
 #include <libperfstat.h>
 
+netsnmp_feature_require(hardware_cpu_copy_stats)
 void _cpu_copy_stats( netsnmp_cpu_info *cpu );
 
     /*
diff --git a/agent/mibgroup/hardware/cpu/cpu_sysctl.c b/agent/mibgroup/hardware/cpu/cpu_sysctl.c
index 29282f8..5ecb68e 100644
--- a/agent/mibgroup/hardware/cpu/cpu_sysctl.c
+++ b/agent/mibgroup/hardware/cpu/cpu_sysctl.c
@@ -3,6 +3,7 @@
  *     e.g. BSD/OS, NetBSD, OpenBSD, later Darwin releases
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/cpu.h>
@@ -30,6 +31,8 @@
 #include <vm/vm_extern.h>
 #endif
 
+netsnmp_feature_require(hardware_cpu_copy_stats)
+
 void _cpu_copy_stats( netsnmp_cpu_info *cpu );
 
     /*
@@ -87,11 +90,8 @@
 #define NETSNMP_KERN_CPU  KERN_CPTIME
 
 #elif defined(__FreeBSD__)
-#define NETSNMP_KERN_CPU  0    /* dummy value - sysctlnametomib(2) should be used */
-#if defined(HAVE_KERN_CP_TIMES)
 #define NETSNMP_KERN_MCPU 1    /* Enable support for multi-cpu stats. Valid for FreeBSD >=6.4, >=7.1, >=8.0 and beyond */
 #define NETSNMP_KERN_MCPU_TYPE NETSNMP_CPU_STATS
-#endif
 
 #else
 #error "No CPU statistics sysctl token"
@@ -159,9 +159,6 @@
      * Load the latest CPU usage statistics
      */
 int netsnmp_cpu_arch_load( netsnmp_cache *cache, void *magic ) {
-#ifdef NETSNMP_KERN_MCPU
-    int                     i;
-#endif
 
     /*
      * Strictly speaking, BSDi ought to use
@@ -171,14 +168,19 @@
      * Don't fight it, Dave - go with the flow....
      */
     NETSNMP_CPU_STATS cpu_stats[CPUSTATES];
+    size_t         cpu_size  = sizeof(cpu_stats);
 #if !defined(__FreeBSD__) && !defined(__NetBSD__)
     int            cpu_mib[] = { CTL_KERN, NETSNMP_KERN_CPU };
 #endif
+#ifdef __FreeBSD__
+    static int     cp_times = -1;
+#endif
 #ifdef KERN_CPTIME2
     int            mcpu_mib[] = { CTL_KERN, KERN_CPTIME2, 0 };
 #endif
-    size_t         cpu_size  = sizeof(cpu_stats);
 #ifdef NETSNMP_KERN_MCPU 
+    int            i;
+    int            act_cpu = cpu_num;
     NETSNMP_KERN_MCPU_TYPE *mcpu_stats;
     size_t         mcpu_size;
 #endif
@@ -187,7 +189,7 @@
     size_t         mem_size  = sizeof(NETSNMP_VM_STATS_TYPE);
     netsnmp_cpu_info *cpu = netsnmp_cpu_get_byIdx( -1, 0 );
 
-#if (defined(__FreeBSD__) || defined(__NetBSD__))
+#if defined(__FreeBSD__) || defined(__NetBSD__)
     sysctlbyname("kern.cp_time", cpu_stats, &cpu_size, NULL, 0);
 #else
     sysctl(cpu_mib, 2,  cpu_stats, &cpu_size, NULL, 0);
@@ -217,24 +219,36 @@
 #endif
 
 #ifdef NETSNMP_KERN_MCPU
-#if defined(HAVE_KERN_CP_TIMES)
-    sysctlbyname("kern.cp_times", NULL, &mcpu_size, NULL, 0);
+#if defined(KERN_CPTIME2)
+    mcpu_size  = cpu_num*sizeof(cpu_stats);
     mcpu_stats = malloc(mcpu_size);
-    sysctlbyname("kern.cp_times", mcpu_stats, &mcpu_size, NULL, 0);
-#elif defined(KERN_CPTIME2)
-    mcpu_size  = sizeof(cpu_stats);
-    mcpu_stats = malloc(mcpu_size);
-#else
+#elif defined(__NetBSD__)
     mcpu_size  = cpu_num*sizeof(cpu_stats);
     mcpu_stats = malloc(mcpu_size);
     sysctlbyname("kern.cp_time", mcpu_stats, &mcpu_size, NULL, 0);
+#elif defined(__FreeBSD__)
+    if (cp_times == -1) {
+	int ret = sysctlbyname("kern.cp_times", NULL, &mcpu_size, NULL, 0);
+	cp_times = ret == -1 ? 0 : 1;
+    }
+    if (cp_times) {
+	sysctlbyname("kern.cp_times", NULL, &mcpu_size, NULL, 0);
+	mcpu_stats = malloc(mcpu_size);
+	sysctlbyname("kern.cp_times", mcpu_stats, &mcpu_size, NULL, 0);
+    }
+    else {
+	mcpu_size  = sizeof(cpu_stats);
+	mcpu_stats = malloc(mcpu_size);
+	sysctlbyname("kern.cp_time", mcpu_stats, &mcpu_size, NULL, 0);
+	act_cpu = 1;
+    }
 #endif
-    for ( i = 0; i < cpu_num; i++ ) {
+    for ( i = 0; i < act_cpu; i++ ) {
         cpu = netsnmp_cpu_get_byIdx( i, 0 );
         /* XXX - per-CPU statistics - mcpu_mib[i].??? */
 #ifdef KERN_CPTIME2
 	mcpu_mib[2] = i;
-	sysctl(mcpu_mib, 3, mcpu_stats, &mcpu_size, NULL, 0);
+	sysctl(mcpu_mib, 3, mcpu_stats+i*CPUSTATES, &mcpu_size, NULL, 0);
 #endif
 	/* Almost copy & paste of previous cpu stats stuff :) */
 	cpu->user_ticks = mcpu_stats[(i*CPUSTATES)+CP_USER];
@@ -250,7 +264,7 @@
 	     *   XXX - Do these really belong here ?
 	     */
 
-	/* There's no really need to execute another sysctl()
+	/* There's no real need to execute another sysctl()
 	 *
 	 * sysctl(mem_mib, 2, &mem_stats, &mem_size, NULL, 0);
 	 */
@@ -266,10 +280,10 @@
 #endif
     }
     free(mcpu_stats);
-#else
+#else	/* NETSNMP_KERN_MCPU */
         /* Copy "overall" figures to cpu0 entry */
     _cpu_copy_stats( cpu );
-#endif
+#endif  /* NETSNMP_KERN_MCPU */
 
     return 0;
 }
diff --git a/agent/mibgroup/hardware/fsys.h b/agent/mibgroup/hardware/fsys.h
index e30a5a6..8cbf439 100644
--- a/agent/mibgroup/hardware/fsys.h
+++ b/agent/mibgroup/hardware/fsys.h
@@ -3,6 +3,8 @@
 config_require(hardware/fsys/fsys_mntctl)
 #elif defined(HAVE_GETVFSSTAT) || defined(HAVE_GETFSSTAT)
 config_require(hardware/fsys/fsys_getfsstats)
-#else
+#elif defined(HAVE_GETMNTENT) && !defined(irix6)
 config_require(hardware/fsys/fsys_mntent)
+#else
+config_require(hardware/fsys/fsys_void)
 #endif
diff --git a/agent/mibgroup/hardware/fsys/fsys_getfsstats.c b/agent/mibgroup/hardware/fsys/fsys_getfsstats.c
index addb32a..05027f4 100644
--- a/agent/mibgroup/hardware/fsys/fsys_getfsstats.c
+++ b/agent/mibgroup/hardware/fsys/fsys_getfsstats.c
@@ -161,6 +161,8 @@
         if (  stats[i].NSFS_FLAGS & MNT_ROOTFS ) {
             entry->flags |= NETSNMP_FS_FLAG_BOOTABLE;
         }
-        
+        netsnmp_fsys_calculate32(entry);
     }
+
+    free(stats);
 }
diff --git a/agent/mibgroup/hardware/fsys/fsys_mntctl.c b/agent/mibgroup/hardware/fsys/fsys_mntctl.c
index 8eb43ce..9fbb068 100644
--- a/agent/mibgroup/hardware/fsys/fsys_mntctl.c
+++ b/agent/mibgroup/hardware/fsys/fsys_mntctl.c
@@ -96,7 +96,7 @@
     /*
      * Retrieve information about the currently mounted filesystems...
      */
-    ret = mntctl(MCTL_QUERY, sizeof(uint), &size);
+    ret = mntctl(MCTL_QUERY, sizeof(uint), (void *) &size);
     if ( ret != 0 || size<=0 ) {
         snmp_log_perror( "initial mntctl failed" );
         return;
@@ -108,7 +108,7 @@
         return;
     }
 
-    ret = mntctl(MCTL_QUERY, size, aixmnt );
+    ret = mntctl(MCTL_QUERY, size, (void *) aixmnt);
     if ( ret <= 0 ) {
         free(aixmnt);
         snmp_log_perror( "main mntctl failed" );
@@ -173,6 +173,7 @@
         entry->avail =  stat_buf.f_bavail;
         entry->inums_total = stat_buf.f_files;
         entry->inums_avail = stat_buf.f_ffree;
+        netsnmp_fsys_calculate32(entry);
     }
     free(aixmnt);
     aixmnt  = NULL;
diff --git a/agent/mibgroup/hardware/fsys/fsys_mntent.c b/agent/mibgroup/hardware/fsys/fsys_mntent.c
index 63a8538..94d23db 100644
--- a/agent/mibgroup/hardware/fsys/fsys_mntent.c
+++ b/agent/mibgroup/hardware/fsys/fsys_mntent.c
@@ -255,6 +255,7 @@
             entry->avail =  stat_buf.f_bavail;
         entry->inums_total = stat_buf.f_files;
         entry->inums_avail = stat_buf.f_ffree;
+        netsnmp_fsys_calculate32(entry);
     }
     fclose( fp );
 }
diff --git a/agent/mibgroup/hardware/fsys/fsys_void.c b/agent/mibgroup/hardware/fsys/fsys_void.c
new file mode 100644
index 0000000..7edc344
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/fsys_void.c
@@ -0,0 +1,24 @@
+#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/agent/hardware/fsys.h>
+
+int
+_fsys_remote( char *device, int type )
+{
+    return 0;
+}
+
+int
+_fsys_type( char *typename )
+{
+    return NETSNMP_FS_TYPE_UNKNOWN;
+}
+
+void
+netsnmp_fsys_arch_init( void )
+{ }
+
+void
+netsnmp_fsys_arch_load( void )
+{ }
diff --git a/agent/mibgroup/hardware/fsys/hw_fsys.c b/agent/mibgroup/hardware/fsys/hw_fsys.c
index 048ee66..a6cd94d 100644
--- a/agent/mibgroup/hardware/fsys/hw_fsys.c
+++ b/agent/mibgroup/hardware/fsys/hw_fsys.c
@@ -1,8 +1,13 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/fsys.h>
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
 
+netsnmp_feature_child_of(hw_fsys_get_container, netsnmp_unused)
 
 extern void             netsnmp_fsys_arch_load( void );
 extern void             netsnmp_fsys_arch_init( void );
@@ -59,10 +64,12 @@
     _fsys_free();
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_HW_FSYS_GET_CONTAINER
 /*
  *  Return the main fsys container
  */
 netsnmp_container *netsnmp_fsys_get_container( void ) { return _fsys_container; }
+#endif /* NETSNMP_FEATURE_REMOVE_HW_FSYS_GET_CONTAINER */
 
 /*
  *  Return the main fsys cache control structure (if defined)
@@ -236,7 +243,7 @@
         sp->idx.oids[0] = ++_fsys_idx;
     }
 
-    DEBUGMSGTL(("fsys:new", "Create filesystem entry (index = %d\n", _fsys_idx));
+    DEBUGMSGTL(("fsys:new", "Create filesystem entry (index = %d)\n", _fsys_idx));
     CONTAINER_INSERT( _fsys_container, sp );
     return sp;
 }
@@ -247,7 +254,7 @@
  *    (attempting to avoid 32-bit overflow!)
  */
 unsigned long long
-_fsys_to_K( int size, int units )
+_fsys_to_K( unsigned long long size, unsigned long long units )
 {
     int factor = 1;
 
@@ -309,3 +316,34 @@
     return (int)v;
 }
 
+#ifndef INT32_MAX
+#define INT32_MAX 0x7fffffff
+#endif
+
+#ifndef PRIu64
+#define PRIu64 "llu"
+#endif
+
+/* recalculate f->size_32, used_32, avail_32 and units_32 from f->size & comp.*/
+void
+netsnmp_fsys_calculate32(netsnmp_fsys_info *f)
+{
+    unsigned long long s = f->size;
+    unsigned shift = 0;
+
+    while (s > INT32_MAX) {
+        s = s >> 1;
+        shift++;
+    }
+
+    f->size_32 = s;
+    f->units_32 = f->units << shift;
+    f->avail_32 = f->avail >> shift;
+    f->used_32 = f->used >> shift;
+
+    DEBUGMSGTL(("fsys", "Results of 32-bit conversion: size %" PRIu64 " -> %lu;"
+		" units %" PRIu64 " -> %lu; avail %" PRIu64 " -> %lu;"
+                " used %" PRIu64 " -> %lu\n",
+		(uint64_t)f->size, f->size_32, (uint64_t)f->units, f->units_32,
+		(uint64_t)f->avail, f->avail_32, (uint64_t)f->used, f->used_32));
+}
diff --git a/agent/mibgroup/hardware/memory.h b/agent/mibgroup/hardware/memory.h
index c33450a..7e4e88e 100644
--- a/agent/mibgroup/hardware/memory.h
+++ b/agent/mibgroup/hardware/memory.h
@@ -3,7 +3,7 @@
 #if defined(linux)
 config_require(hardware/memory/memory_linux)
 
-#elif (defined(darwin7) || defined(darwin8) || defined(darwin9))
+#elif (defined(darwin))
 config_require(hardware/memory/memory_darwin)
 
 #elif (defined(freebsd2) || defined(freebsd3) || defined(freebsd4)  || defined(freebsd5)|| defined(freebsd6))
diff --git a/agent/mibgroup/hardware/memory/hw_mem.c b/agent/mibgroup/hardware/memory/hw_mem.c
index b18a9b8..1f4474f 100644
--- a/agent/mibgroup/hardware/memory/hw_mem.c
+++ b/agent/mibgroup/hardware/memory/hw_mem.c
@@ -3,14 +3,27 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/memory.h>
 
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_child_of(hardware_memory, netsnmp_unused)
+
+netsnmp_feature_child_of(memory_get_cache, hardware_memory)
+
 extern NetsnmpCacheLoad netsnmp_mem_arch_load;
 
 netsnmp_memory_info *_mem_head  = NULL;
 netsnmp_cache       *_mem_cache = NULL;
 
+#ifdef darwin
+/* the code in memory_darwin.c is *very* expensive */
+#define	MEMORY_CACHE_SECONDS	300
+#else
+#define	MEMORY_CACHE_SECONDS	5
+#endif
+
 void init_hw_mem( void ) {
     oid nsMemory[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 31 };
-    _mem_cache = netsnmp_cache_create( 5, netsnmp_mem_arch_load, NULL,
+    _mem_cache = netsnmp_cache_create( MEMORY_CACHE_SECONDS, netsnmp_mem_arch_load, NULL,
                                           nsMemory, OID_LENGTH(nsMemory));
 }
 
@@ -87,9 +100,11 @@
 
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_GET_CACHE
 netsnmp_cache *netsnmp_memory_get_cache( void ) {
     return _mem_cache;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_GET_CACHE */
 
 int netsnmp_memory_load( void ) {
      return netsnmp_cache_check_and_reload( _mem_cache );
diff --git a/agent/mibgroup/hardware/memory/memory_darwin.c b/agent/mibgroup/hardware/memory/memory_darwin.c
index 4914f0c..4462c45 100644
--- a/agent/mibgroup/hardware/memory/memory_darwin.c
+++ b/agent/mibgroup/hardware/memory/memory_darwin.c
@@ -5,10 +5,14 @@
 
 #include <dirent.h>
 #include <unistd.h>
-#include <mach/mach_host.h>
+
 #include <sys/stat.h>
 #include <sys/sysctl.h>
 
+#include <mach/mach.h>
+#include <mach/mach_time.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include <IOKit/ps/IOPowerSources.h>
 
 /*
  * Retained from UCD implementation
@@ -44,8 +48,7 @@
      mach_port = mach_host_self();
      error = host_processor_sets(mach_port, &psets, &pcnt);
      if (error != KERN_SUCCESS) {
-        snprintf(errmsg, sizeof(errmsg), "Error in host_processor_sets(): %s\n", mach_error_string(error));
-        snmp_log_perror(errmsg);
+        snmp_log(LOG_ERR, "Error in host_processor_sets(): %s\n", mach_error_string(error));
         return(0);
      }
 
@@ -75,7 +78,11 @@
             for (address = 0;; address += size) {
                 /* Get memory region. */
                 count = VM_REGION_EXTENDED_INFO_COUNT; 
-                if (vm_region(tasks[j], &address, &size, VM_REGION_EXTENDED_INFO, (vm_region_extended_info_t)&info, &count, &object_name) != KERN_SUCCESS) {
+#if defined(__ppc64__) || defined(__x86_64__)
+                if (vm_region_64(tasks[j], &address, &size, VM_REGION_EXTENDED_INFO, &info, &count, &object_name) != KERN_SUCCESS) {
+#else
+                if (vm_region(tasks[j], &address, &size, VM_REGION_EXTENDED_INFO, &info, &count, &object_name) != KERN_SUCCESS) {
+#endif
                     /* No more memory regions. */
                     break;
                 }
diff --git a/agent/mibgroup/hardware/sensors/lmsensors_v3.c b/agent/mibgroup/hardware/sensors/lmsensors_v3.c
index 60af9e6..e34da19 100644
--- a/agent/mibgroup/hardware/sensors/lmsensors_v3.c
+++ b/agent/mibgroup/hardware/sensors/lmsensors_v3.c
@@ -26,9 +26,9 @@
 	int             a = 0;
 
         while ((data = sensors_get_features( chip, &a))) {
-            DEBUGMSGTL(("sensors:arch:detail", "get_features (%s, %d)\n", data->name, data->number));
 	    int             b = 0;
- 
+
+            DEBUGMSGTL(("sensors:arch:detail", "get_features (%s, %d)\n", data->name, data->number));
 
             while ((data2 = sensors_get_all_subfeatures( chip, data, &b))) {
                 char           *label = NULL;
diff --git a/agent/mibgroup/header_complex.c b/agent/mibgroup/header_complex.c
index ee42544..d34d906 100644
--- a/agent/mibgroup/header_complex.c
+++ b/agent/mibgroup/header_complex.c
@@ -18,6 +18,13 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "header_complex.h"
 
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_child_of(header_complex_all, libnetsnmpmibs)
+
+netsnmp_feature_child_of(header_complex_free_all, header_complex_all)
+netsnmp_feature_child_of(header_complex_find_entry, header_complex_all)
+
 int
 header_complex_generate_varoid(netsnmp_variable_list * var)
 {
@@ -337,8 +344,9 @@
 }
 
 struct header_complex_index *
-header_complex_add_data(struct header_complex_index **thedata,
-                        netsnmp_variable_list * var, void *data)
+header_complex_maybe_add_data(struct header_complex_index **thedata,
+                              netsnmp_variable_list * var, void *data,
+                              int dont_allow_duplicates)
 {
     oid             newoid[MAX_OID_LEN];
     size_t          newoid_len;
@@ -349,7 +357,8 @@
 
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, var);
     ret =
-        header_complex_add_data_by_oid(thedata, newoid, newoid_len, data);
+        header_complex_maybe_add_data_by_oid(thedata, newoid, newoid_len, data,
+                                             dont_allow_duplicates);
     /*
      * free the variable list, but not the enclosed data!  it's not ours! 
      */
@@ -358,34 +367,21 @@
 }
 
 struct header_complex_index *
-header_complex_add_data_by_oid(struct header_complex_index **thedata,
-                               oid * newoid, size_t newoid_len, void *data)
+header_complex_add_data(struct header_complex_index **thedata,
+                        netsnmp_variable_list * var, void *data)
 {
-    struct header_complex_index *hciptrn, *hciptrp, *ourself;
-    int rc;
+    return
+        header_complex_maybe_add_data(thedata, var, data, 0);
+}
 
-    if (thedata == NULL || newoid == NULL || data == NULL)
-        return NULL;
 
-    for (hciptrn = *thedata, hciptrp = NULL;
-         hciptrn != NULL; hciptrp = hciptrn, hciptrn = hciptrn->next) {
-        /*
-         * XXX: check for == and error (overlapping table entries) 
-         * 8/2005 rks Ok, I added duplicate entry check, but only log
-         *            warning and continue, because it seems that nobody
-         *            that calls this fucntion does error checking!.
-         */
-        rc = snmp_oid_compare(hciptrn->name, hciptrn->namelen,
-                              newoid, newoid_len);
-        if (rc > 0)
-            break;
-        else if (0 == rc) {
-            snmp_log(LOG_WARNING, "header_complex_add_data_by_oid with "
-                     "duplicate index.\n");
-            /** uncomment null return when callers do error checking */
-            /** return NULL; */
-        }
-    }
+struct header_complex_index *
+_header_complex_add_between(struct header_complex_index **thedata,
+                            struct header_complex_index *hciptrp,
+                            struct header_complex_index *hciptrn,
+                            oid * newoid, size_t newoid_len, void *data)
+{
+    struct header_complex_index *ourself;
 
     /*
      * nptr should now point to the spot that we need to add ourselves
@@ -429,6 +425,50 @@
     return hciptrp;
 }
 
+
+struct header_complex_index *
+header_complex_maybe_add_data_by_oid(struct header_complex_index **thedata,
+                                     oid * newoid, size_t newoid_len, void *data,
+                                     int dont_allow_duplicates)
+{
+    struct header_complex_index *hciptrn, *hciptrp;
+    int rc;
+
+    if (thedata == NULL || newoid == NULL || data == NULL)
+        return NULL;
+
+    for (hciptrn = *thedata, hciptrp = NULL;
+         hciptrn != NULL; hciptrp = hciptrn, hciptrn = hciptrn->next) {
+        /*
+         * XXX: check for == and error (overlapping table entries) 
+         * 8/2005 rks Ok, I added duplicate entry check, but only log
+         *            warning and continue, because it seems that nobody
+         *            that calls this fucntion does error checking!.
+         */
+        rc = snmp_oid_compare(hciptrn->name, hciptrn->namelen,
+                              newoid, newoid_len);
+        if (rc > 0)
+            break;
+        else if (0 == rc) {
+            snmp_log(LOG_WARNING, "header_complex_add_data_by_oid with "
+                     "duplicate index.\n");
+            if (dont_allow_duplicates)
+                return NULL;
+        }
+    }
+
+    return _header_complex_add_between(thedata, hciptrp, hciptrn,
+                                       newoid, newoid_len, data);
+}
+
+struct header_complex_index *
+header_complex_add_data_by_oid(struct header_complex_index **thedata,
+                               oid * newoid, size_t newoid_len, void *data)
+{
+    return header_complex_maybe_add_data_by_oid(thedata, newoid, newoid_len,
+                                                data, 0);
+}
+
 /*
  * extracts an entry from the storage space (removing it from future
  * accesses) and returns the data stored there
@@ -485,6 +525,7 @@
 /*
  * completely wipe out all entries in our data store 
  */
+#ifndef NETSNMP_FEATURE_REMOVE_HEADER_COMPLEX_FREE_ALL
 void
 header_complex_free_all(struct header_complex_index *thestuff,
                         HeaderComplexCleaner * cleaner)
@@ -496,7 +537,9 @@
         header_complex_free_entry(hciptr, cleaner);
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HEADER_COMPLEX_FREE_ALL */
 
+#ifndef NETSNMP_FEATURE_REMOVE_HEADER_COMPLEX_FIND_ENTRY
 struct header_complex_index *
 header_complex_find_entry(struct header_complex_index *thestuff,
                           void *theentry)
@@ -507,6 +550,7 @@
          hciptr = hciptr->next);
     return hciptr;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HEADER_COMPLEX_FIND_ENTRY */
 
 #ifdef TESTING
 
diff --git a/agent/mibgroup/header_complex.h b/agent/mibgroup/header_complex.h
index 2028cee..2a1728a 100644
--- a/agent/mibgroup/header_complex.h
+++ b/agent/mibgroup/header_complex.h
@@ -57,6 +57,10 @@
                                                      **thedata,
                                                      netsnmp_variable_list
                                                      * var, void *data);
+struct header_complex_index *header_complex_maybe_add_data(struct header_complex_index **thedata,
+                                                           netsnmp_variable_list * var,
+                                                           void *data,
+                                                           int dont_allow_duplicates);
 
 /*
  * Note: newoid is copied/cloned for you 
@@ -68,5 +72,10 @@
                                                             size_t
                                                             newoid_len,
                                                             void *data);
+struct header_complex_index *header_complex_maybe_add_data_by_oid(struct header_complex_index **thedata,
+                                                                  oid * newoid,
+                                                                  size_t newoid_len,
+                                                                  void *data,
+                                                                  int dont_allow_duplicates);
 
 #endif                          /* _MIBGROUP_HEADER_COMPLEX_H */
diff --git a/agent/mibgroup/host/data_access/swinst.c b/agent/mibgroup/host/data_access/swinst.c
index bb55181..3ef05e9 100644
--- a/agent/mibgroup/host/data_access/swinst.c
+++ b/agent/mibgroup/host/data_access/swinst.c
@@ -7,6 +7,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/data_access/swinst.h>
@@ -14,6 +15,10 @@
 #include <stdlib.h>
 #include <unistd.h>
 
+netsnmp_feature_child_of(software_installed, libnetsnmpmibs)
+
+netsnmp_feature_child_of(swinst_entry_remove, netsnmp_unused)
+
 /* ---------------------------------------------------------------------
  */
 
@@ -181,6 +186,7 @@
 /*
  * remove a row from the table 
  */
+#ifndef NETSNMP_FEATURE_REMOVE_SWINST_ENTRY_REMOVE
 void
 netsnmp_swinst_entry_remove(netsnmp_container * container,
                             netsnmp_swinst_entry *entry)
@@ -190,6 +196,7 @@
         return;                 /* Nothing to remove */
     CONTAINER_REMOVE(container, entry);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SWINST_ENTRY_REMOVE */
 
 /* ---------------------------------------------------------------------
  */
diff --git a/agent/mibgroup/host/data_access/swinst.h b/agent/mibgroup/host/data_access/swinst.h
index 0c80561..bda3e47 100644
--- a/agent/mibgroup/host/data_access/swinst.h
+++ b/agent/mibgroup/host/data_access/swinst.h
@@ -14,7 +14,6 @@
 /*
  * all platforms use this generic code
  */
-config_require(host/data_access/swinst)
 config_exclude(host/hr_swinst)
 
 /*
diff --git a/agent/mibgroup/host/data_access/swinst_darwin.c b/agent/mibgroup/host/data_access/swinst_darwin.c
index bbf5a2f..7a47372 100644
--- a/agent/mibgroup/host/data_access/swinst_darwin.c
+++ b/agent/mibgroup/host/data_access/swinst_darwin.c
@@ -7,6 +7,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/library/container.h>
@@ -26,6 +27,9 @@
 #include <CoreFoundation/CoreFoundation.h>
 #include <ApplicationServices/ApplicationServices.h>
 
+netsnmp_feature_require(container_directory)
+netsnmp_feature_require(date_n_time)
+
 /* ---------------------------------------------------------------------
  */
 static int _add_applications_in_dir(netsnmp_container *, const char* path);
@@ -125,7 +129,8 @@
     return 0;
 }
 
-void  _dump_flags(u_long flags)
+static void
+_dump_flags(u_long flags)
 {
     static struct {
         const char*name;
@@ -251,6 +256,8 @@
             rc = -1;
             SNMP_CFRelease(prodName);
             SNMP_CFRelease(version);
+            CFRelease(currentPath);
+            CFRelease(currentURL);
             break;
         }
 
@@ -281,7 +288,7 @@
     return rc;
 }
 
-int
+static int
 _check_bundled_app(CFURLRef currentURL, CFStringRef *prodName,
                    CFStringRef *version, const char* file)
 {
diff --git a/agent/mibgroup/host/data_access/swinst_pkginfo.c b/agent/mibgroup/host/data_access/swinst_pkginfo.c
index bc8ee2e..a122cb1 100644
--- a/agent/mibgroup/host/data_access/swinst_pkginfo.c
+++ b/agent/mibgroup/host/data_access/swinst_pkginfo.c
@@ -3,6 +3,7 @@
  *     hrSWInstalledTable data access:
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <sys/stat.h>
@@ -31,12 +32,19 @@
 #include <pkginfo.h>
 #endif
 
+#ifdef HAVE_PKG_H
+#define restrict
+#include <pkg.h>
+#endif
+
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/snmp_debug.h>
 #include <net-snmp/data_access/swinst.h>
 
+netsnmp_feature_require(date_n_time)
+
    /*
     * Location of package directory.
     * Used for:
@@ -94,52 +102,115 @@
     size_t                date_len;
     int                   i = 1;
     netsnmp_swinst_entry *entry;
+#ifdef HAVE_LIBPKG
+    struct pkgdb *db = NULL;
+    struct pkgdb_it *it = NULL;
+    struct pkg *pkg = NULL;
+    char pkgname[ SNMP_MAXPATH ];
+    char pkgdate[ BUFSIZ ];
+    int pkgng = 0;
 
-    if ( !pkg_directory[0] ) {
-        return 1;    /* Can't report installed packages
-                         if there isn't a list of them! */
+    if (pkg_init(NULL, NULL)) {
+        snmp_log( LOG_ERR, "SWInst: error initializing pkgng db\n" );
+        return 1;
     }
-    d = opendir( pkg_directory );
-    if (!d)
+
+    if (pkgdb_open(&db, PKGDB_DEFAULT) != EPKG_OK) {
+	snmp_log( LOG_ERR, "SWInst: error opening pkgng db\n" );
 	return 1;
-    while ((dp = readdir(d)) != NULL) {
-        if ( '.' == dp->d_name[0] )
-            continue;
-        entry = netsnmp_swinst_entry_create( i++ );
-        if (NULL == entry)
-            continue;   /* error already logged by function */
-        CONTAINER_INSERT(container, entry);
+    }
+
+    if (pkg_status(NULL) == PKG_STATUS_ACTIVE) {
+	pkgng = 1;
+    } else {
+	snmp_log( LOG_INFO, "SWInst: not a pkgng system\n" );
+    }
+
+    /* if we are using FreeBSD's pkgng */
+    if (pkgng) {
+        if ((it = pkgdb_query(db, NULL, MATCH_ALL)) == NULL) {
+            snmp_log( LOG_ERR, "SWInst: error querying pkgng db\n" );
+            return 1;
+        }
+
+        while (pkgdb_it_next(it, &pkg, PKG_LOAD_BASIC) == EPKG_OK) {
+            pkg_snprintf(pkgname, sizeof(pkgname), "%n-%v", pkg, pkg);
+            pkg_snprintf(pkgdate, sizeof(pkgdate), "%t", pkg);
+
+            entry = netsnmp_swinst_entry_create( i++ );
+
+            if (NULL == entry)
+                continue;   /* error already logged by function */
+
+            CONTAINER_INSERT(container, entry);
+
+            entry->swName_len = snprintf( entry->swName, sizeof(entry->swName),
+                                          "%s", pkgname );
+            if (entry->swName_len >= sizeof(entry->swName))
+                entry->swName_len = sizeof(entry->swName)-1;
+
+            install_time = atoi(pkgdate);
+            cp = date_n_time( &install_time, &date_len );
+            memcpy( entry->swDate, cp, date_len );
+            entry->swDate_len = date_len;
+        }
+
+        pkgdb_it_free(it);
+        pkgdb_close(db);
+        pkg_shutdown();
+    } else {
+#endif /* HAVE_LIBPKG */
+        if ( !pkg_directory[0] ) {
+            return 1;    /* Can't report installed packages
+                         if there isn't a list of them! */
+        }
+
+        d = opendir( pkg_directory );
+        if (!d)
+            return 1;
+
+        while ((dp = readdir(d)) != NULL) {
+            if ( '.' == dp->d_name[0] )
+                continue;
+            snprintf( buf, BUFSIZ, "%s/%s", pkg_directory, dp->d_name );
+            if (stat( buf, &stat_buf ) < 0)
+                continue;
+            entry = netsnmp_swinst_entry_create( i++ );
+            if (NULL == entry)
+                continue;   /* error already logged by function */
+            CONTAINER_INSERT(container, entry);
 
 #ifdef HAVE_PKGINFO
-        v = pkgparam( dp->d_name, "VERSION" );
-        c = pkgparam( dp->d_name, "CATEGORY" );
+	    v = pkgparam( dp->d_name, "VERSION" );
+	    c = pkgparam( dp->d_name, "CATEGORY" );
 
-        entry->swName_len = snprintf( entry->swName, sizeof(entry->swName),
-                                      "%s-%s", dp->d_name, v );
-	if (entry->swName_len >= sizeof(entry->swName))
-	    entry->swName_len = sizeof(entry->swName)-1;
-        entry->swType = (NULL != strstr( c, "system"))
-                        ? 2      /* operatingSystem */
-                        : 4;     /*  application    */
+	    entry->swName_len = snprintf( entry->swName, sizeof(entry->swName),
+					  "%s-%s", dp->d_name, v );
+	    if (entry->swName_len >= sizeof(entry->swName))
+		entry->swName_len = sizeof(entry->swName)-1;
+	    entry->swType = (NULL != strstr( c, "system"))
+			    ? 2      /* operatingSystem */
+			    : 4;     /*  application    */
 
-        /* Do we need to free 'v' & 'c' ??? */
+	    /* Do we need to free 'v' & 'c' ??? */
 #else
-        entry->swName_len = snprintf( entry->swName, sizeof(entry->swName),
-                                      "%s", dp->d_name );
-	if (entry->swName_len >= sizeof(entry->swName))
-	    entry->swName_len = sizeof(entry->swName)-1;
+	    entry->swName_len = snprintf( entry->swName, sizeof(entry->swName),
+					  "%s", dp->d_name );
+	    if (entry->swName_len >= sizeof(entry->swName))
+		entry->swName_len = sizeof(entry->swName)-1;
 
-        /* no information about O/S vs application packages ??? */
+	    /* no information about O/S vs application packages ??? */
 #endif
 
-        snprintf( buf, BUFSIZ, "%s/%s", pkg_directory, dp->d_name );
-        stat( buf, &stat_buf );
-        install_time = stat_buf.st_mtime;
-        cp = date_n_time( &install_time, &date_len );
-        memcpy( entry->swDate, cp, date_len );
-        entry->swDate_len = date_len;
+	    install_time = stat_buf.st_mtime;
+	    cp = date_n_time( &install_time, &date_len );
+	    memcpy( entry->swDate, cp, date_len );
+	    entry->swDate_len = date_len;
+	}
+	closedir( d );
+#ifdef HAVE_LIBPKG
     }
-    closedir( d );
+#endif
 
     DEBUGMSGTL(("swinst:load:arch"," loaded %d entries\n",
                 (int)CONTAINER_SIZE(container)));
diff --git a/agent/mibgroup/host/data_access/swinst_rpm.c b/agent/mibgroup/host/data_access/swinst_rpm.c
index dae8f6a..71595be 100644
--- a/agent/mibgroup/host/data_access/swinst_rpm.c
+++ b/agent/mibgroup/host/data_access/swinst_rpm.c
@@ -3,6 +3,7 @@
  *     hrSWInstalledTable data access:
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #ifdef HAVE_STDLIB_H
@@ -43,6 +44,8 @@
 #include <net-snmp/library/snmp_debug.h>
 #include <net-snmp/data_access/swinst.h>
 
+netsnmp_feature_require(date_n_time)
+
    /*
     * Location of RPM package directory.
     * Used for:
diff --git a/agent/mibgroup/host/data_access/swrun.c b/agent/mibgroup/host/data_access/swrun.c
index 812030f..d18ea5f 100644
--- a/agent/mibgroup/host/data_access/swrun.c
+++ b/agent/mibgroup/host/data_access/swrun.c
@@ -9,11 +9,16 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/data_access/swrun.h>
 
+netsnmp_feature_child_of(software_running, libnetsnmpmibs)
+
+netsnmp_feature_child_of(swrun_max_processes, software_running)
+netsnmp_feature_child_of(swrun_count_processes_by_name, software_running)
 
 /**---------------------------------------------------------------------*/
 /*
@@ -76,12 +81,15 @@
     return ( swrun_container ? CONTAINER_SIZE(swrun_container) : 0 );
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SWRUN_MAX_PROCESSES
 int
 swrun_max_processes( void )
 {
     return _swrun_max;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SWRUN_MAX_PROCESSES */
 
+#ifndef NETSNMP_FEATURE_REMOVE_SWRUN_COUNT_PROCESSES_BY_NAME
 int
 swrun_count_processes_by_name( char *name )
 {
@@ -102,7 +110,7 @@
 
     return i;
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_SWRUN_COUNT_PROCESSES_BY_NAME */
 
 /**---------------------------------------------------------------------*/
 /*
diff --git a/agent/mibgroup/host/data_access/swrun_darwin.c b/agent/mibgroup/host/data_access/swrun_darwin.c
index bbefc4e..3b00fe3 100644
--- a/agent/mibgroup/host/data_access/swrun_darwin.c
+++ b/agent/mibgroup/host/data_access/swrun_darwin.c
@@ -120,7 +120,7 @@
          * skip empty names.
          * p_stat = (SIDL|SRUN|SSLEEP|SSTOP|SZOMB)
          */
-        if ((NULL == processes[i].kp_proc.p_comm) ||
+        if (('\0' == processes[i].kp_proc.p_comm[0]) ||
             (0 == processes[i].kp_proc.p_pid)) {
             DEBUGMSGTL(("swrun:load:arch",
                         " skipping p_comm '%s', pid %5d, p_pstat %d\n",
@@ -193,7 +193,7 @@
             } at, ns;
             at.uq = taskinfo.ptinfo.pti_total_user +
                     taskinfo.ptinfo.pti_total_system;
-            ns.uw = AbsoluteToNanoseconds( at.uw );
+            ns = at;
             ns.uq = ns.uq / 10000000LL; /* nano to deci */
             if (task_mem > INT32_MAX) {
                 DEBUGMSGTL(("swrun:load:arch", SWRUNINDENT "mem overflow\n"));
@@ -210,7 +210,7 @@
     free(processes);
 
     DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
-                CONTAINER_SIZE(container)));
+                (int)CONTAINER_SIZE(container)));
 
     return 0;
 }
@@ -386,8 +386,8 @@
             break; /* End of exec_path reached. */
     }
     if (cp != exec_path + len) {
-        DEBUGMSGTL(("swrun:load:arch:_cn"," OFF BY %d\n",
-                    (exec_path + len) - cp));
+        DEBUGMSGTL(("swrun:load:arch:_cn", " OFF BY %d\n",
+                    (int)((exec_path + len) - cp)));
         netsnmp_assert( cp == exec_path + len );
     }
 #endif
diff --git a/agent/mibgroup/host/hrSWInstalledTable.c b/agent/mibgroup/host/hrSWInstalledTable.c
index 6f940bf..ad8aee3 100644
--- a/agent/mibgroup/host/hrSWInstalledTable.c
+++ b/agent/mibgroup/host/hrSWInstalledTable.c
@@ -23,6 +23,8 @@
 
 #define MYTABLE "hrSWInstalledTable"
 
+static netsnmp_table_registration_info *table_info;
+
 static void _cache_free(netsnmp_cache * cache, void *magic);
 static int _cache_load(netsnmp_cache * cache, void *magic);
 
@@ -36,6 +38,15 @@
     initialize_table_hrSWInstalledTable();
 }
 
+void
+shutdown_hrSWInstalledTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
 /** Initialize the hrSWInstalledTable table by defining its contents and how it's structured */
 void
 initialize_table_hrSWInstalledTable(void)
@@ -48,7 +59,6 @@
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
     netsnmp_cache *cache = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     DEBUGMSGTL(("hrSWInstalled", "initialize\n"));
 
diff --git a/agent/mibgroup/host/hrSWInstalledTable.h b/agent/mibgroup/host/hrSWInstalledTable.h
index 2a1da23..48f17e8 100644
--- a/agent/mibgroup/host/hrSWInstalledTable.h
+++ b/agent/mibgroup/host/hrSWInstalledTable.h
@@ -11,6 +11,7 @@
  * function declarations 
  */
 void            init_hrSWInstalledTable(void);
+void            shutdown_hrSWInstalledTable(void);
 void            initialize_table_hrSWInstalledTable(void);
 Netsnmp_Node_Handler hrSWInstalledTable_handler;
 
diff --git a/agent/mibgroup/host/hrSWRunPerfTable.c b/agent/mibgroup/host/hrSWRunPerfTable.c
index 0bf471b..43b44d1 100644
--- a/agent/mibgroup/host/hrSWRunPerfTable.c
+++ b/agent/mibgroup/host/hrSWRunPerfTable.c
@@ -32,8 +32,15 @@
     initialize_table_hrSWRunPerfTable();
 }
 
+void
+shutdown_hrSWRunPerfTable(void)
+{
+    shutdown_table_hrSWRunPerfTable();
+}
+
 extern oid      hrSWRunTable_oid[];
 extern size_t   hrSWRunTable_oid_len;
+static netsnmp_table_registration_info *table_info;
 
 /** Initialize the hrSWRunPerfTable table by defining its contents and how it's structured */
 void
@@ -45,7 +52,6 @@
         OID_LENGTH(hrSWRunPerfTable_oid);
     netsnmp_handler_registration *reg;
     netsnmp_mib_handler *handler = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("hrSWRunPerfTable",
@@ -128,6 +134,15 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_hrSWRunPerfTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
 /** handles requests for the hrSWRunPerfTable table */
 int
 hrSWRunPerfTable_handler(netsnmp_mib_handler *handler,
diff --git a/agent/mibgroup/host/hrSWRunPerfTable.h b/agent/mibgroup/host/hrSWRunPerfTable.h
index b793627..453fda3 100644
--- a/agent/mibgroup/host/hrSWRunPerfTable.h
+++ b/agent/mibgroup/host/hrSWRunPerfTable.h
@@ -21,7 +21,9 @@
  * function declarations 
  */
 void            init_hrSWRunPerfTable(void);
+void            shutdown_hrSWRunPerfTable(void);
 void            initialize_table_hrSWRunPerfTable(void);
+void            shutdown_table_hrSWRunPerfTable(void);
 Netsnmp_Node_Handler hrSWRunPerfTable_handler;
 
 /*
diff --git a/agent/mibgroup/host/hrSWRunTable.c b/agent/mibgroup/host/hrSWRunTable.c
index 9d92841..03ad256 100644
--- a/agent/mibgroup/host/hrSWRunTable.c
+++ b/agent/mibgroup/host/hrSWRunTable.c
@@ -26,6 +26,8 @@
 
 #define MYTABLE "hrSWRunTable"
 
+static netsnmp_table_registration_info *table_info;
+
 /** Initializes the hrSWRunTable module */
 void
 init_hrSWRunTable(void)
@@ -36,6 +38,15 @@
     initialize_table_hrSWRunTable();
 }
 
+void
+shutdown_hrSWRunTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
 oid      hrSWRunTable_oid[] = { 1, 3, 6, 1, 2, 1, 25, 4, 2 };
 size_t   hrSWRunTable_oid_len = OID_LENGTH(hrSWRunTable_oid);
 
@@ -45,13 +56,15 @@
 {
     netsnmp_handler_registration *reg;
     netsnmp_mib_handler *handler = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #ifdef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
 #  define SWRUN_ACCESS_LEVEL HANDLER_CAN_RWRITE
 #else
 #  define SWRUN_ACCESS_LEVEL HANDLER_CAN_RONLY
 #endif
+#else /* !NETSNMP_NO_WRITE_SUPPORT */ 
+#  define SWRUN_ACCESS_LEVEL HANDLER_CAN_RONLY
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     reg =
         netsnmp_create_handler_registration(MYTABLE,
                                             hrSWRunTable_handler,
@@ -217,6 +230,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #ifdef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
         /*
          * Write-support
@@ -329,6 +343,7 @@
         }
         break;
 #endif /* NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/host/hrSWRunTable.h b/agent/mibgroup/host/hrSWRunTable.h
index 6ca4989..de80fc0 100644
--- a/agent/mibgroup/host/hrSWRunTable.h
+++ b/agent/mibgroup/host/hrSWRunTable.h
@@ -22,6 +22,7 @@
  * function declarations 
  */
 void            init_hrSWRunTable(void);
+void            shutdown_hrSWRunTable(void);
 void            initialize_table_hrSWRunTable(void);
 Netsnmp_Node_Handler hrSWRunTable_handler;
 
diff --git a/agent/mibgroup/host/hr_disk.c b/agent/mibgroup/host/hr_disk.c
index 679264b..c4ac52f 100644
--- a/agent/mibgroup/host/hr_disk.c
+++ b/agent/mibgroup/host/hr_disk.c
@@ -133,8 +133,10 @@
 void            Init_HR_Disk(void);
 int             Get_Next_HR_Disk(void);
 int             Get_Next_HR_Disk_Partition(char *, size_t, int);
+#if !(defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7))
 static void     Add_HR_Disk_entry(const char *, int, int, int, int,
                                   const char *, int, int);
+#endif
 static void     Save_HR_Disk_General(void);
 static void     Save_HR_Disk_Specific(void);
 static int      Query_Disk(int, const char *);
@@ -150,7 +152,9 @@
 static int      HRD_index;
 static char     HRD_savedModel[40];
 static long     HRD_savedCapacity = 1044;
+#if defined(DIOC_DESCRIBE) || defined(DKIOCINFO) || defined(HAVE_LINUX_HDREG_H)
 static int      HRD_savedFlags;
+#endif
 static time_t   HRD_history[HRDEV_TYPE_MASK + 1];
 
 #ifdef DIOC_DESCRIBE
@@ -668,6 +672,7 @@
 static HRD_disk_t disk_devices[MAX_NUMBER_DISK_TYPES];
 static int      HR_number_disk_types = 0;
 
+#if !(defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7))
 static void
 Add_HR_Disk_entry(const char *devpart_string,
                   int first_ctl,
@@ -724,6 +729,7 @@
                     devpart_string, nbr_created));
 #endif
 }
+#endif
 
 void
 Init_HR_Disk(void)
diff --git a/agent/mibgroup/host/hr_filesys.c b/agent/mibgroup/host/hr_filesys.c
index 60a1629..b23d322 100644
--- a/agent/mibgroup/host/hr_filesys.c
+++ b/agent/mibgroup/host/hr_filesys.c
@@ -14,6 +14,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/memory.h>
@@ -63,6 +64,10 @@
 #include <sys/statfs.h>
 #endif
 
+netsnmp_feature_require(se_find_free_value_in_slist)
+netsnmp_feature_require(date_n_time)
+netsnmp_feature_require(ctime_to_timet)
+
 #if defined(bsdi4) || defined(freebsd3) || defined(freebsd4) || defined(freebsd5) || defined(darwin)
 #if HAVE_GETFSSTAT && defined(MFSNAMELEN)
 #define MOUNT_NFS	"nfs"
diff --git a/agent/mibgroup/host/hr_network.c b/agent/mibgroup/host/hr_network.c
index 48d747d..6cce58c 100644
--- a/agent/mibgroup/host/hr_network.c
+++ b/agent/mibgroup/host/hr_network.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/data_access/interface.h>
@@ -22,6 +23,9 @@
 #include "mibII/interfaces.h"
 #include "hr_network.h"
 
+#if !defined( solaris2 )
+netsnmp_feature_require(interface_legacy)
+#endif /* !solaris2 */
 
         /*********************
 	 *
diff --git a/agent/mibgroup/host/hr_partition.c b/agent/mibgroup/host/hr_partition.c
index abe7692..3b9abd6 100644
--- a/agent/mibgroup/host/hr_partition.c
+++ b/agent/mibgroup/host/hr_partition.c
@@ -47,6 +47,10 @@
 #ifdef NETSNMP_CAN_GET_DISK_LABEL
 static char     HRP_savedLabel[1024];
 #endif
+#ifdef darwin
+extern int
+Get_HR_Disk_Label(char *string, size_t str_len, const char *devfull);
+#endif
 
 static int      HRP_DiskIndex;
 
diff --git a/agent/mibgroup/host/hr_swinst.c b/agent/mibgroup/host/hr_swinst.c
index c03ae44..25582bd 100644
--- a/agent/mibgroup/host/hr_swinst.c
+++ b/agent/mibgroup/host/hr_swinst.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_SYS_PARAM_H
 #include <sys/param.h>
@@ -71,6 +72,8 @@
 
 #define HRSWINST_MONOTONICALLY_INCREASING
 
+netsnmp_feature_require(date_n_time)
+
         /*********************
 	 *
 	 *  Kernel & interface information,
@@ -512,9 +515,12 @@
                 snprintf(string, sizeof(string), "%s/%s",
                          swi->swi_directory, swi->swi_name);
                 string[ sizeof(string)-1 ] = 0;
-                stat(string, &stat_buf);
-                ret = date_n_time(&stat_buf.st_mtime, var_len);
+                if (stat(string, &stat_buf) >= 0)
+                    ret = date_n_time(&stat_buf.st_mtime, var_len);
+                else
+                    goto err;
             } else {
+err:
 #if NETSNMP_NO_DUMMY_VALUES
                 ret = NULL;
 #else
diff --git a/agent/mibgroup/host/hr_swrun.c b/agent/mibgroup/host/hr_swrun.c
index dda1d3f..f40e997 100644
--- a/agent/mibgroup/host/hr_swrun.c
+++ b/agent/mibgroup/host/hr_swrun.c
@@ -524,6 +524,12 @@
     if ((cp = get_proc_file_line("/proc/%d/stat", pid, buf, buflen)) == NULL )
 	return NULL;
     for (i = 0; *cp && i < skip; ++i) {
+        /*
+         * The second field is 'comm' and can contain spaces. Hence skip to
+         * the closing parenthesis.
+         */
+        if (i == 1 && *cp == '(')
+            cp = strrchr(cp, ')');
 	cp = skip_to_next_field(cp);
     }
     return cp;
diff --git a/agent/mibgroup/host/hr_system.c b/agent/mibgroup/host/hr_system.c
index 88b0fbb..d99cc7d 100644
--- a/agent/mibgroup/host/hr_system.c
+++ b/agent/mibgroup/host/hr_system.c
@@ -15,6 +15,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_STRING_H
 #include <string.h>
 #else
@@ -77,6 +78,8 @@
 #include <sys/sysctl.h>
 #endif
 
+netsnmp_feature_require(date_n_time)
+
 #if !defined(UTMP_FILE) && defined(_PATH_UTMP)
 #define UTMP_FILE _PATH_UTMP
 #endif
@@ -98,11 +101,16 @@
 #if defined(solaris2)
 static struct openpromio * op_malloc(size_t size);
 static void op_free(struct openpromio *op);
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 static int set_solaris_bootcommand_parameter(int action, u_char * var_val, u_char var_val_type, size_t var_val_len, u_char * statP, oid * name, size_t name_len);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 static int set_solaris_eeprom_parameter(const char *key, const char *value, size_t value_len);
 static int get_solaris_eeprom_parameter(const char *parameter, char *output);
 static long     get_max_solaris_processes(void);
 #endif
+
 static int      get_load_dev(void);
 static int      count_users(void);
 extern int      count_processes(void);
@@ -123,6 +131,7 @@
 #define	HRSYS_MAXPROCS		7
 
 #if defined(solaris2)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 hrsystem_variables[] = {
     {HRSYS_UPTIME, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
      var_hrsys, 1, {1}},
@@ -139,6 +148,24 @@
     {HRSYS_MAXPROCS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
      var_hrsys, 1, {7}}
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 hrsystem_variables[] = {
+    {HRSYS_UPTIME, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {1}},
+    {HRSYS_DATE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {2}},
+    {HRSYS_LOAD_DEV, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {3}},
+    {HRSYS_LOAD_PARAM, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {4}},
+    {HRSYS_USERS, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {5}},
+    {HRSYS_PROCS, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {6}},
+    {HRSYS_MAXPROCS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {7}}
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #else
 struct variable2 hrsystem_variables[] = {
     {HRSYS_UPTIME, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
@@ -157,6 +184,7 @@
      var_hrsys, 1, {7}}
 };
 #endif
+
 oid             hrsystem_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 1 };
 
 
@@ -250,7 +278,9 @@
         return (u_char *) & long_return;
     case HRSYS_DATE:
 #if defined(HAVE_MKTIME) && defined(HAVE_STIME)
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
         *write_method=ns_set_time;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #endif
         time(&now);
         return (u_char *) date_n_time(&now, var_len);
@@ -266,7 +296,9 @@
             return NULL;
         }
 #elif defined(solaris2)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method=set_solaris_bootcommand_parameter;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         if ( get_solaris_eeprom_parameter("boot-command",bootparam) ) {
             snmp_log(LOG_ERR,"unable to lookup boot-command from eeprom\n");
             return NULL;
@@ -365,6 +397,7 @@
     free(op);
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 static int
 set_solaris_bootcommand_parameter(int action,
             u_char * var_val,
@@ -429,6 +462,7 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 static int set_solaris_eeprom_parameter(const char *key, const char *value,
                                         size_t var_val_len) {
@@ -508,6 +542,7 @@
 #endif
 
 #if defined(HAVE_MKTIME) && defined(HAVE_STIME)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 ns_set_time(int action,
             u_char * var_val,
@@ -601,6 +636,7 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #endif
 
                 /*
diff --git a/agent/mibgroup/host/hr_system.h b/agent/mibgroup/host/hr_system.h
index 5e12c0d..feffa60 100644
--- a/agent/mibgroup/host/hr_system.h
+++ b/agent/mibgroup/host/hr_system.h
@@ -9,7 +9,9 @@
 extern FindVarMethod var_hrsys;
 
 #if defined(HAVE_MKTIME) && defined(HAVE_STIME)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int ns_set_time(int action, u_char * var_val, u_char var_val_type, size_t var_val_len, u_char * statP, oid * name, size_t name_len);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #endif
 
 #endif                          /* _MIBGROUP_HRSYSTEM_H */
diff --git a/agent/mibgroup/host/hrh_filesys.c b/agent/mibgroup/host/hrh_filesys.c
index ec343ed..4aab6a0 100644
--- a/agent/mibgroup/host/hrh_filesys.c
+++ b/agent/mibgroup/host/hrh_filesys.c
@@ -14,6 +14,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/memory.h>
@@ -60,6 +61,8 @@
 #include <sys/statfs.h>
 #endif
 
+netsnmp_feature_require(date_n_time)
+netsnmp_feature_require(ctime_to_timet)
 
 #define HRFS_MONOTONICALLY_INCREASING
 
diff --git a/agent/mibgroup/host/hrh_storage.c b/agent/mibgroup/host/hrh_storage.c
index c458d4d..ca2f854 100644
--- a/agent/mibgroup/host/hrh_storage.c
+++ b/agent/mibgroup/host/hrh_storage.c
@@ -130,6 +130,10 @@
 			       NETSNMP_DS_APPLICATION_ID,
 			       NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES);
 
+    netsnmp_ds_register_config(ASN_BOOLEAN, appname, "realStorageUnits",
+                   NETSNMP_DS_APPLICATION_ID,
+                   NETSNMP_DS_AGENT_REALSTORAGEUNITS);
+
     snmpd_register_config_handler("storageUseNFS", parse_storage_config, NULL,
 	"1 | 2\t\t(1 = enable, 2 = disable)");
 }
@@ -414,27 +418,39 @@
             return (u_char *) mem->descr;
         }
     case HRSTORE_UNITS:
-        if (store_idx > NETSNMP_MEM_TYPE_MAX)
-            long_return = HRFS_entry->units;
-        else {
+        if (store_idx > NETSNMP_MEM_TYPE_MAX) {
+            if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                    NETSNMP_DS_AGENT_REALSTORAGEUNITS))
+                long_return = HRFS_entry->units & 0xffffffff;
+            else
+                long_return = HRFS_entry->units_32;
+        } else {
             if ( !mem || mem->units == -1 )
                 goto try_next;
             long_return = mem->units;
         }
         return (u_char *) & long_return;
     case HRSTORE_SIZE:
-        if (store_idx > NETSNMP_MEM_TYPE_MAX)
-            long_return = HRFS_entry->size;
-        else {
+        if (store_idx > NETSNMP_MEM_TYPE_MAX) {
+            if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                    NETSNMP_DS_AGENT_REALSTORAGEUNITS))
+                long_return = HRFS_entry->size & 0xffffffff;
+            else
+                long_return = HRFS_entry->size_32;
+        } else {
             if ( !mem || mem->size == -1 )
                 goto try_next;
             long_return = mem->size;
         }
         return (u_char *) & long_return;
     case HRSTORE_USED:
-        if (store_idx > NETSNMP_MEM_TYPE_MAX)
-            long_return = HRFS_entry->used;
-        else {
+        if (store_idx > NETSNMP_MEM_TYPE_MAX) {
+            if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                    NETSNMP_DS_AGENT_REALSTORAGEUNITS))
+                long_return = HRFS_entry->used & 0xffffffff;
+            else
+                long_return = HRFS_entry->used_32;
+        } else {
             if ( !mem || mem->size == -1 || mem->free == -1 )
                 goto try_next;
             long_return = mem->size - mem->free;
diff --git a/agent/mibgroup/if-mib/data_access/interface.c b/agent/mibgroup/if-mib/data_access/interface.c
index 5f5c7ff..26e31fc 100644
--- a/agent/mibgroup/if-mib/data_access/interface.c
+++ b/agent/mibgroup/if-mib/data_access/interface.c
@@ -4,15 +4,25 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
-#include "mibII/mibII_common.h"
-#include "if-mib/ifTable/ifTable_constants.h"
-#include "if-mib/data_access/interface.h"
 
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/library/snmp_enum.h>
 #include <net-snmp/data_access/interface.h>
 
+#include "mibII/mibII_common.h"
+#include "if-mib/ifTable/ifTable.h"
+#include "if-mib/data_access/interface.h"
+
+netsnmp_feature_child_of(interface_all, libnetsnmpmibs)
+netsnmp_feature_child_of(interface, interface_all)
+netsnmp_feature_child_of(interface_access_entry_set_admin_status, interface_all)
+netsnmp_feature_child_of(interface_legacy, interface_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_INTERFACE_ACCESS_ENTRY_SET_ADMIN_STATUS
+netsnmp_feature_require(interface_arch_set_admin_status)
+#endif /* NETSNMP_FEATURE_REQUIRE_INTERFACE_ACCESS_ENTRY_SET_ADMIN_STATUS */
 
 /**---------------------------------------------------------------------*/
 /*
@@ -337,6 +347,7 @@
     free(entry);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_LEGACY
 /*
  * Blech - backwards compatible mibII/interfaces style interface
  * functions, so we don't have to update older modules to use
@@ -346,33 +357,33 @@
     ! defined( NETSNMP_NO_BACKWARDS_COMPATABILITY )
 
 static netsnmp_iterator *it = NULL;
-static netsnmp_container *c = NULL;
-static netsnmp_interface_entry *e = NULL;
+static ifTable_rowreq_ctx *row = NULL;
 
 /**
- * 
+ * Setup an iterator for scanning the interfaces using the cached entry
+ * from if-mib/ifTable.
  */
 void
 Interface_Scan_Init(void)
 {
-    /*
-     * ifTable container shouldn't change, so we shouldn' have to
-     * re-fetch it every time.
-     */
-    if (NULL != c)
-        netsnmp_access_interface_container_free(c, 0);
-
-    c = netsnmp_access_interface_container_load(NULL, 0);
+    netsnmp_container *cont = NULL;
+    netsnmp_cache *cache    = NULL; 
     
-    if (NULL != c) {
+    cache = netsnmp_cache_find_by_oid(ifTable_oid, ifTable_oid_size);
+    if (NULL != cache) {
+        netsnmp_cache_check_and_reload(cache);
+        cont = (netsnmp_container*) cache->magic;
+    }
+    
+    if (NULL != cont) {
         if (NULL != it)
             ITERATOR_RELEASE(it);
     
-        it = CONTAINER_ITERATOR(c);
+        it = CONTAINER_ITERATOR(cont);
     }
    
     if (NULL != it)
-        e = (netsnmp_interface_entry*)ITERATOR_FIRST(it);
+        row = (ifTable_rowreq_ctx*)ITERATOR_FIRST(it);
 }
 
 int
@@ -394,9 +405,12 @@
 Interface_Scan_NextInt(int *index, char *name, netsnmp_interface_entry **entry,
                     void *dc)
 {
-    if (NULL == e)
-        return 0;
+    netsnmp_interface_entry* e = NULL;
 
+    if (NULL == row)
+        return 0;
+    
+    e = row->data.ifentry;
     if(index)
         *index = e->index;
 
@@ -406,13 +420,14 @@
     if (entry)
         *entry = e;
 
-    e = (netsnmp_interface_entry*)ITERATOR_NEXT(it);
+    row = (ifTable_rowreq_ctx*) ITERATOR_NEXT(it);
 
     return 1;
 }
 #endif /* NETSNMP_NO_BACKWARDS_COMPATABILITY */
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_LEGACY */
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_ACCESS_ENTRY_SET_ADMIN_STATUS
 /**
  *
  * @retval 0   : success
@@ -441,6 +456,7 @@
     return rc;
 }
 #endif
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_ACCESS_ENTRY_SET_ADMIN_STATUS */
 
 /**---------------------------------------------------------------------*/
 /*
@@ -456,6 +472,7 @@
                   ((const netsnmp_interface_entry *) rhs)->name);
 }
 
+#ifndef NETSNMP_ACCESS_INTERFACE_NOARCH
 /**
  */
 static void
@@ -463,6 +480,7 @@
 {
     netsnmp_access_interface_entry_free(entry);
 }
+#endif
 
 /**
  */
@@ -681,8 +699,7 @@
        (0 == strcmp(lhs->descr, rhs->descr)))
         ;
     else {
-        if (NULL != lhs->descr)
-            SNMP_FREE(lhs->descr);
+        SNMP_FREE(lhs->descr);
         if (rhs->descr) {
             lhs->descr = strdup(rhs->descr);
             if(NULL == lhs->descr)
@@ -710,8 +727,7 @@
         if(rhs->paddr_len)
             memcpy(lhs->paddr,rhs->paddr,rhs->paddr_len);
     } else {
-        if (NULL != lhs->paddr)
-            SNMP_FREE(lhs->paddr);
+        SNMP_FREE(lhs->paddr);
         if (rhs->paddr) {
             lhs->paddr = (char*)malloc(rhs->paddr_len);
             if(NULL == lhs->paddr)
diff --git a/agent/mibgroup/if-mib/data_access/interface_ioctl.c b/agent/mibgroup/if-mib/data_access/interface_ioctl.c
index 5bfbf9a..db2c245 100644
--- a/agent/mibgroup/if-mib/data_access/interface_ioctl.c
+++ b/agent/mibgroup/if-mib/data_access/interface_ioctl.c
@@ -4,6 +4,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "mibII/mibII_common.h"
 #include "if-mib/ifTable/ifTable_constants.h"
@@ -13,6 +14,8 @@
 #include <net-snmp/data_access/ipaddress.h>
 #include "if-mib/data_access/interface.h"
 
+netsnmp_feature_child_of(interface_ioctl_flags_set, interface_all)
+
 #ifdef HAVE_NET_IF_H
 #include <net/if.h>
 #endif
@@ -282,6 +285,7 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_IOCTL_FLAGS_SET
 /**
  * interface entry flags ioctl wrapper
  *
@@ -349,6 +353,7 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_IOCTL_FLAGS_SET */
 #endif /* SIOCGIFFLAGS */
 
 #ifdef SIOCGIFMTU
diff --git a/agent/mibgroup/if-mib/data_access/interface_linux.c b/agent/mibgroup/if-mib/data_access/interface_linux.c
index df09737..f196fc8 100644
--- a/agent/mibgroup/if-mib/data_access/interface_linux.c
+++ b/agent/mibgroup/if-mib/data_access/interface_linux.c
@@ -4,14 +4,56 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
+netsnmp_feature_require(fd_event_manager)
+netsnmp_feature_require(delete_prefix_info)
+netsnmp_feature_require(create_prefix_info)
+netsnmp_feature_child_of(interface_arch_set_admin_status, interface_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_INTERFACE_ARCH_SET_ADMIN_STATUS
+netsnmp_feature_require(interface_ioctl_flags_set)
+#endif /* NETSNMP_FEATURE_REQUIRE_INTERFACE_ARCH_SET_ADMIN_STATUS */
+
+#ifdef HAVE_PCI_LOOKUP_NAME
+#include <pci/pci.h>
+#include <setjmp.h>
+static struct pci_access *pci_access;
+
+/* Avoid letting libpci call exit(1) when no PCI bus is available. */
+static int do_longjmp =0;
+static jmp_buf err_buf;
+static void
+netsnmp_pci_error(char *msg, ...)
+{
+    va_list args;
+    char *buf;
+    int buflen;
+
+    va_start(args, msg);
+    buflen = strlen("pcilib: ")+strlen(msg)+2;
+    buf = malloc(buflen);
+    snprintf(buf, buflen, "pcilib: %s\n", msg);
+    snmp_vlog(LOG_ERR, buf, args);
+    free(buf);
+    va_end(args);
+    if (do_longjmp)
+	longjmp(err_buf, 1);
+    else
+	exit(1);
+}
+#endif
+
 #ifdef HAVE_LINUX_ETHTOOL_H
 #include <linux/types.h>
+#ifndef HAVE_PCI_LOOKUP_NAME
 typedef __u64 u64;         /* hack, so we may include kernel's ethtool.h */
 typedef __u32 u32;         /* ditto */
 typedef __u16 u16;         /* ditto */
 typedef __u8 u8;           /* ditto */
+#endif
+
 #include <linux/ethtool.h>
 #endif /* HAVE_LINUX_ETHTOOL_H */
 
@@ -34,7 +76,6 @@
 
 #include <sys/types.h>
 #include <sys/stat.h>
-#include <errno.h>
 #include <unistd.h>
 #include <errno.h>
 
@@ -127,6 +168,26 @@
     list_info.list_head = &prefix_head_list;
     netsnmp_prefix_listen();
 #endif
+
+#ifdef HAVE_PCI_LOOKUP_NAME
+    pci_access = pci_alloc();
+    if (!pci_access) {
+	snmp_log(LOG_ERR, "pcilib: pci_alloc failed\n");
+	return;
+    }
+
+    pci_access->error = netsnmp_pci_error;
+
+    do_longjmp = 1;
+    if (setjmp(err_buf)) {
+        pci_cleanup(pci_access);
+	snmp_log(LOG_ERR, "pcilib: pci_init failed\n");
+        pci_access = NULL;
+    }
+    else if (pci_access)
+	pci_init(pci_access);
+    do_longjmp = 0;
+#endif
 }
 
 /*
@@ -256,6 +317,69 @@
     }
 }
 
+#ifdef HAVE_PCI_LOOKUP_NAME
+
+/* Get value from sysfs file */
+static int sysfs_get_id(const char *path, unsigned short *id)
+{
+    FILE *fin;
+    int n;
+
+    if (!(fin = fopen(path, "r"))) {
+        DEBUGMSGTL(("access:interface",
+                    "Failed to open %s\n", path));
+	return 0;
+    }
+
+    n = fscanf(fin, "%hx", id);
+    fclose(fin);
+
+    return n == 1;
+}
+
+/* Get interface description for PCI device
+ * by using sysfs to find vendor and device
+ * then lookup name (-lpci)
+ *
+ * For software interfaces there is no PCI information
+ * so description will not be set.
+ */
+static void
+_arch_interface_description_get(netsnmp_interface_entry *entry)
+{
+    const char *descr;
+    char buf[256];
+    unsigned short vendor_id, device_id;
+
+    if (!pci_access)
+	return;
+
+    snprintf(buf, sizeof(buf),
+	     "/sys/class/net/%s/device/vendor", entry->name);
+
+    if (!sysfs_get_id(buf, &vendor_id))
+	return;
+
+    snprintf(buf, sizeof(buf),
+	     "/sys/class/net/%s/device/device", entry->name);
+
+    if (!sysfs_get_id(buf, &device_id))
+	return;
+
+    descr = pci_lookup_name(pci_access, buf, sizeof(buf),
+			    PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE,
+			    vendor_id, device_id, 0, 0);
+    if (descr) {
+	free(entry->descr);
+	entry->descr = strdup(descr);
+    } else {
+        DEBUGMSGTL(("access:interface",
+                    "Failed pci_lookup_name vendor=%#hx device=%#hx\n",
+		    vendor_id, device_id));
+    }
+}
+#endif
+
 
 #ifdef NETSNMP_ENABLE_IPV6
 /**
@@ -613,9 +737,9 @@
         }
         entry->ns_flags = flags; /* initial flags; we'll set more later */
 
-        /*
-         * xxx-rks: get descr by linking mem from /proc/pci and /proc/iomem
-         */
+#ifdef HAVE_PCI_LOOKUP_NAME
+	_arch_interface_description_get(entry);
+#endif
 
 
         /*
@@ -779,6 +903,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS
 int
 netsnmp_arch_set_admin_status(netsnmp_interface_entry * entry,
                               int ifAdminStatus_val)
@@ -795,6 +920,7 @@
     return netsnmp_access_interface_ioctl_flags_set(-1, entry,
                                                     IFF_UP, and_complement);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS */
 
 #ifdef HAVE_LINUX_ETHTOOL_H
 /**
diff --git a/agent/mibgroup/if-mib/data_access/interface_openbsd.c b/agent/mibgroup/if-mib/data_access/interface_openbsd.c
index 204568b..8340dc6 100644
--- a/agent/mibgroup/if-mib/data_access/interface_openbsd.c
+++ b/agent/mibgroup/if-mib/data_access/interface_openbsd.c
@@ -4,10 +4,13 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "mibII/mibII_common.h"
 #include "if-mib/ifTable/ifTable_constants.h"
 
+netsnmp_feature_child_of(interface_arch_set_admin_status, interface_all)
+
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #if HAVE_SYS_IOCTL_H
@@ -386,6 +389,7 @@
     return *speed;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS
 int
 netsnmp_arch_set_admin_status(netsnmp_interface_entry * entry,
                               int ifAdminStatus_val)
@@ -399,4 +403,5 @@
 
     return -4;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS */
 
diff --git a/agent/mibgroup/if-mib/data_access/interface_solaris2.c b/agent/mibgroup/if-mib/data_access/interface_solaris2.c
index 2b0fc4c..8aa47f8 100644
--- a/agent/mibgroup/if-mib/data_access/interface_solaris2.c
+++ b/agent/mibgroup/if-mib/data_access/interface_solaris2.c
@@ -2,6 +2,7 @@
  *  Interface MIB architecture support for Solaris
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "if-mib/ifTable/ifTable_constants.h"
 #include "kernel_sunos5.h"
@@ -16,6 +17,8 @@
 #include <strings.h>
 #include <string.h>
 
+netsnmp_feature_child_of(interface_arch_set_admin_status, interface_all)
+
 static int _set_ip_flags_v4(netsnmp_interface_entry *, mib2_ifEntry_t *);
 static int _match_ifname_v4addr(void *ifname, void *ipaddr);
 static int _get_v4addr(mib2_ifEntry_t *ife, mib2_ipAddrEntry_t *e);
@@ -345,6 +348,7 @@
 }
 #endif /* SOLARIS_HAVE_IPV6_MIB_SUPPORT */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS
 int
 netsnmp_arch_set_admin_status(netsnmp_interface_entry * entry,
                               int ifAdminStatus_val)
@@ -356,3 +360,4 @@
      */
     return (-1);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS */
diff --git a/agent/mibgroup/if-mib/data_access/interface_sysctl.c b/agent/mibgroup/if-mib/data_access/interface_sysctl.c
index cce3881..6076d19 100644
--- a/agent/mibgroup/if-mib/data_access/interface_sysctl.c
+++ b/agent/mibgroup/if-mib/data_access/interface_sysctl.c
@@ -6,6 +6,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "mibII/mibII_common.h"
 #include "if-mib/ifTable/ifTable_constants.h"
@@ -29,6 +30,8 @@
 #include <net/if_types.h>
 #include <net/if_media.h>
 
+netsnmp_feature_child_of(interface_arch_set_admin_status, interface_all)
+
 /*
  * account for minor differences between FreeBSD and OpenBSD.
  * If this gets unruly, split stuff out into the respective
@@ -561,6 +564,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS
 int
 netsnmp_arch_set_admin_status(netsnmp_interface_entry * entry,
                               int ifAdminStatus_val)
@@ -575,3 +579,4 @@
 
     return -4;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS */
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable.c b/agent/mibgroup/if-mib/ifTable/ifTable.c
index 80829cc..d9b7252 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable.c
@@ -14,9 +14,14 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(interface_access_entry_set_admin_status)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * include our parent header 
  */
@@ -1783,6 +1788,9 @@
 
 
 /** @} */
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -2329,6 +2337,8 @@
 }                               /* ifTable_check_dependencies */
 
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 static int
 _if_number_handler(netsnmp_mib_handler *handler,
                       netsnmp_handler_registration *reginfo,
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable.h b/agent/mibgroup/if-mib/ifTable/ifTable.h
index 452b863..e90634f 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable.h
+++ b/agent/mibgroup/if-mib/ifTable/ifTable.h
@@ -451,6 +451,7 @@
 
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     /*
      *********************************************************************
      * SET function declarations
@@ -666,7 +667,7 @@
 
 
     int             ifTable_check_dependencies(ifTable_rowreq_ctx * ctx);
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * DUMMY markers, ignore
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
index faf37d6..b8a09b5 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
@@ -8,9 +8,12 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_require(container_linked_list)
+
 /*
  * include our parent header 
  */
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable_interface.c b/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
index 49de356..41d38ee 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -47,6 +48,21 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ifTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+netsnmp_feature_child_of(iftable_container_get, ifTable_external_access)
+netsnmp_feature_child_of(ifxtable_shutdown_interface, netsnmp_unused)
+netsnmp_feature_child_of(ifXTable_container_size, ifXTable_external_access)
+netsnmp_feature_child_of(ifXTable_registration_set, ifXTable_external_access)
+netsnmp_feature_child_of(ifXTable_registration_get, ifXTable_external_access)
+netsnmp_feature_child_of(ifXTable_container_get, ifXTable_external_access)
+netsnmp_feature_child_of(iftable_container_size, ifTable_external_access)
+netsnmp_feature_child_of(iftable_registration_set, ifTable_external_access)
+netsnmp_feature_child_of(iftable_registration_get, ifTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -82,19 +98,23 @@
 static void     _ifTable_container_shutdown(ifTable_interface_ctx *
                                             if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IFTABLE_CONTAINER_GET
 netsnmp_container *
 ifTable_container_get(void)
 {
     return ifTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFTABLE_REGISTRATION_GET
 ifTable_registration *
 ifTable_registration_get(void)
 {
     return ifTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFTABLE_REGISTRATION_SET
 ifTable_registration *
 ifTable_registration_set(ifTable_registration * newreg)
 {
@@ -102,12 +122,15 @@
     ifTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFTABLE_CONTAINER_SIZE
 int
 ifTable_container_size(void)
 {
     return CONTAINER_SIZE(ifTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFTABLE_CONTAINER_SIZE */
 
 u_int
 ifTable_dirty_get(void)
@@ -145,7 +168,7 @@
 static Netsnmp_Node_Handler _mfd_ifTable_post_request;
 static Netsnmp_Node_Handler _mfd_ifTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_ifTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_ifTable_check_objects;
 static Netsnmp_Node_Handler _mfd_ifTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_ifTable_set_values;
@@ -160,7 +183,7 @@
                                                rowreq_ctx,
                                                netsnmp_variable_list * var,
                                                int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 ifTable_data   *ifTable_allocate_data(void);
 
@@ -250,7 +273,7 @@
     access_multiplexer->post_request = _mfd_ifTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -273,7 +296,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_ifTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -286,11 +309,14 @@
     reginfo =
         netsnmp_handler_registration_create("ifTable", handler,
                                             ifTable_oid, ifTable_oid_size,
-                                            HANDLER_CAN_BABY_STEP
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
-                                          | HANDLER_CAN_RWRITE
-#endif
-                                          );
+                                            HANDLER_CAN_BABY_STEP |
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+                                            HANDLER_CAN_RWRITE
+#else
+                                            HANDLER_CAN_RONLY
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
+            );
+
     if (NULL == reginfo) {
         snmp_log(LOG_ERR, "error registering table ifTable\n");
         return;
@@ -308,7 +334,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -331,7 +357,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -373,7 +399,7 @@
      */
     {
         const oid       iftlc_oid[] = { IFTABLE_LAST_CHANGE };
-        netsnmp_register_watched_scalar(netsnmp_create_handler_registration
+        netsnmp_register_watched_scalar2(netsnmp_create_handler_registration
                                         ("ifTableLastChanged", NULL,
                                          iftlc_oid, OID_LENGTH(iftlc_oid),
                                          HANDLER_CAN_RONLY),
@@ -1039,8 +1065,8 @@
 
 
 
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
 /***********************************************************************
  *
  * SET processing
@@ -1818,7 +1844,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ifTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -1964,6 +1990,7 @@
 }                               /* _ifTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFTABLE_EXTERNAL_ACCESS
 ifTable_rowreq_ctx *
 ifTable_row_find_by_mib_index(ifTable_mib_index * mib_idx)
 {
@@ -1989,3 +2016,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable.c b/agent/mibgroup/if-mib/ifXTable/ifXTable.c
index 23f7137..bb3e736 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable.c
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable.c
@@ -14,6 +14,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -29,6 +30,9 @@
 
 #include "ifXTable_interface.h"
 
+netsnmp_feature_require(ifTable_container_get)
+netsnmp_feature_require(ifTable_container_size)
+
 /*
  * not sure if we want to support set for promiscuous mode, because
  * 1) careful thought should go into any settable object that performs
@@ -1572,6 +1576,7 @@
 }                               /* ifCounterDiscontinuityTime_get */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 
 /** @} */
 /**********************************************************************
@@ -2530,5 +2535,7 @@
     return rc;
 }                               /* ifXTable_check_dependencies */
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /** @} */
 /** @{ */
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable.h b/agent/mibgroup/if-mib/ifXTable/ifXTable.h
index f9b25d4..ba22f97 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable.h
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable.h
@@ -218,7 +218,7 @@
      * OID: .1.3.6.1.2.1.31.1.1, length: 9
      */
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     int             ifXTable_undo_setup(ifXTable_rowreq_ctx * rowreq_ctx);
     int             ifXTable_undo_cleanup(ifXTable_rowreq_ctx *
                                           rowreq_ctx);
@@ -438,7 +438,7 @@
 
 
     int             ifXTable_check_dependencies(ifXTable_rowreq_ctx * ctx);
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * DUMMY markers, ignore
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h b/agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h
index 728ef57..67e1996 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h
@@ -67,7 +67,11 @@
      * TODO:405:r: Review IFXTABLE_SETTABLE_COLS macro.
      * OR together all the writable cols.
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define IFXTABLE_SETTABLE_COLS (COLUMN_IFLINKUPDOWNTRAPENABLE_FLAG | COLUMN_IFALIAS_FLAG)
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+#define IFXTABLE_SETTABLE_COLS 0
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     /*
      * NOTES on enums
      * ==============
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c b/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
index 15074ea..23b50d0 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
@@ -30,6 +30,8 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -48,6 +50,16 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ifXTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(cache_find_by_oid)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -81,19 +93,23 @@
 static void     _ifXTable_container_shutdown(ifXTable_interface_ctx *
                                              if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_CONTAINER_GET
 netsnmp_container *
 ifXTable_container_get(void)
 {
     return ifXTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_REGISTRATION_GET
 ifXTable_registration *
 ifXTable_registration_get(void)
 {
     return ifXTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_REGISTRATION_SET
 ifXTable_registration *
 ifXTable_registration_set(ifXTable_registration * newreg)
 {
@@ -101,12 +117,15 @@
     ifXTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_CONTAINER_SIZE
 int
 ifXTable_container_size(void)
 {
     return CONTAINER_SIZE(ifXTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_CONTAINER_SIZE */
 
 u_int
 ifXTable_dirty_get(void)
@@ -130,7 +149,7 @@
 static Netsnmp_Node_Handler _mfd_ifXTable_post_request;
 static Netsnmp_Node_Handler _mfd_ifXTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_ifXTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_ifXTable_check_objects;
 static Netsnmp_Node_Handler _mfd_ifXTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_ifXTable_set_values;
@@ -145,7 +164,7 @@
                                                 rowreq_ctx,
                                                 netsnmp_variable_list *
                                                 var, int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 ifXTable_data  *ifXTable_allocate_data(void);
 
@@ -223,7 +242,7 @@
     access_multiplexer->post_request = _mfd_ifXTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -246,7 +265,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_ifXTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -260,11 +279,14 @@
         netsnmp_handler_registration_create("ifXTable", handler,
                                             ifXTable_oid,
                                             ifXTable_oid_size,
-                                            HANDLER_CAN_BABY_STEP
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
-                                          | HANDLER_CAN_RWRITE
-#endif
-                                          );
+                                            HANDLER_CAN_BABY_STEP |
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+                                            HANDLER_CAN_RWRITE
+#else
+                                            HANDLER_CAN_RONLY
+#endif     /* NETSNMP_NO_WRITE_SUPPORT  || NETSNMP_DISABLE_SET_SUPPORT */
+            );
+
     if (NULL == reginfo) {
         snmp_log(LOG_ERR, "error registering table ifXTable\n");
         return;
@@ -282,7 +304,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -305,7 +327,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -352,6 +374,7 @@
  * @internal
  * Shutdown the table ifXTable
  */
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_SHUTDOWN_INTERFACE
 void
 _ifXTable_shutdown_interface(ifXTable_registration * reg_ptr)
 {
@@ -360,6 +383,7 @@
      */
     _ifXTable_container_shutdown(&ifXTable_if_ctx);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_SHUTDOWN_INTERFACE */
 
 void
 ifXTable_valid_columns_set(netsnmp_column_info *vc)
@@ -912,7 +936,7 @@
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ifXTable_get_values */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1193,7 +1217,6 @@
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ifXTable_check_objects */
 
-
 /*----------------------------------------------------------------------
  *
  * SET: check dependencies
@@ -1709,7 +1732,8 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ifXTable_irreversible_commit */
-#endif
+
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -1798,13 +1822,17 @@
 void
 ifXTable_container_init_persistence(netsnmp_container *container)
 {
+    netsnmp_container **container_p;
     int             rc;
 
     register_config_handler(NULL, row_token,
                             _ifXTable_container_row_restore, NULL, NULL);
+    netsnmp_assert(container);
+    container_p = netsnmp_memdup(&container, sizeof(container));
+    netsnmp_assert(container_p);
     rc = snmp_register_callback(SNMP_CALLBACK_LIBRARY,
                                 SNMP_CALLBACK_STORE_DATA,
-                                _ifXTable_container_save_rows, container);
+                                _ifXTable_container_save_rows, container_p);
 
     if (rc != SNMP_ERR_NOERROR)
         snmp_log(LOG_ERR, "error registering for STORE_DATA callback "
@@ -1827,7 +1855,7 @@
     /*
      * save all rows
      */
-    CONTAINER_FOR_EACH((netsnmp_container *) clientarg,
+    CONTAINER_FOR_EACH(*(netsnmp_container **)clientarg,
                        (netsnmp_container_obj_func *)
                        _ifXTable_container_row_save, type);
 
@@ -2144,6 +2172,7 @@
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_EXTERNAL_ACCESS
 ifXTable_rowreq_ctx *
 ifXTable_row_find_by_mib_index(ifXTable_mib_index * mib_idx)
 {
@@ -2169,3 +2198,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route.h b/agent/mibgroup/ip-forward-mib/data_access/route.h
index a2b4ee4..2c731a6 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route.h
+++ b/agent/mibgroup/ip-forward-mib/data_access/route.h
@@ -22,6 +22,10 @@
 #if defined( linux )
 config_require(ip-forward-mib/data_access/route_linux)
 config_require(ip-forward-mib/data_access/route_ioctl)
+#elif defined( freebsd7 ) || defined( netbsd5 ) || defined( openbsd4 ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-forward-mib/data_access/route_sysctl)
+#elif defined(solaris2) && defined( HAVE_MIB2_IPIFSTATSENTRY_T )
+config_require(ip-forward-mib/data_access/route_solaris)
 #else
 config_error(the route data access library is not available in this environment.)
 #endif
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route_common.c b/agent/mibgroup/ip-forward-mib/data_access/route_common.c
index e2901f9..84c1810 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route_common.c
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_common.c
@@ -242,8 +242,7 @@
     lhs->rt_proto = rhs->rt_proto;
 
 #ifdef USING_IP_FORWARD_MIB_IPCIDRROUTETABLE_IPCIDRROUTETABLE_MODULE
-    if (NULL != lhs->rt_info)
-        SNMP_FREE(lhs->rt_info);
+    SNMP_FREE(lhs->rt_info);
     if (NULL != rhs->rt_info)
         snmp_clone_mem((void **) &lhs->rt_info, rhs->rt_info,
                        rhs->rt_info_len * sizeof(oid));
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c b/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c
index 815c415..ff89161 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c
@@ -56,6 +56,7 @@
 
 #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/route.h>
 
 #include "ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h"
@@ -97,7 +98,7 @@
 
     s = socket(AF_INET, SOCK_RAW, NETSNMP_ROUTE_WRITE_PROTOCOL);
     if (s < 0) {
-        snmp_log_perror("socket");
+        snmp_log_perror("netsnmp_ioctl_route_set_v4: socket");
         return -3;
     }
 
@@ -106,7 +107,7 @@
     dst.sin_family = AF_INET;
     memcpy(&dst.sin_addr.s_addr, entry->rt_dest, 4);
     DEBUGSTR = inet_ntoa(dst.sin_addr);
-    DEBUGMSGTL(("access:route","*** route to %s\n", DEBUGSTR));
+    DEBUGMSGTL(("access:route","add route to %s\n", DEBUGSTR));
 
     gateway.sin_family = AF_INET;
     memcpy(&gateway.sin_addr.s_addr, entry->rt_nexthop, 4);
@@ -114,7 +115,10 @@
     DEBUGMSGTL(("access:route","    via %s\n", DEBUGSTR));
 
     mask.sin_family = AF_INET;
-    mask.sin_addr.s_addr = htonl(0);
+    if (entry->rt_pfx_len != 0)
+	mask.sin_addr.s_addr = netsnmp_ipaddress_ipv4_mask(entry->rt_pfx_len);
+    else
+	mask.sin_addr.s_addr = entry->rt_mask;
     DEBUGSTR = inet_ntoa(mask.sin_addr);
     DEBUGMSGTL(("access:route","    mask %s\n", DEBUGSTR));
 
@@ -133,30 +137,31 @@
 #endif
 
     rc = ioctl(s, SIOCADDRT, (caddr_t) & route);
-    close(s);
     if (rc < 0) {
-        snmp_log_perror("ioctl");
-        return -4;
+        snmp_log_perror("netsnmp_ioctl_route_set_v4: ioctl");
+        rc = -4;
     }
+    close(s);
 
-    return 0;
+    return rc;
 }
 #endif
 
 #if defined SIOCDELRT && !defined(irix6)
 int _netsnmp_ioctl_route_delete_v4(netsnmp_route_entry * entry)
 {
-    struct sockaddr_in dst;
+    struct sockaddr_in dst, mask;
     struct sockaddr_in gateway;
     int             s, rc;
     RTENTRY         route;
+    char           *DEBUGSTR;
 
     netsnmp_assert(NULL != entry); /* checked in netsnmp_arch_route_delete */
     netsnmp_assert((4 == entry->rt_dest_len) && (4 == entry->rt_nexthop_len));
 
     s = socket(AF_INET, SOCK_RAW, NETSNMP_ROUTE_WRITE_PROTOCOL);
     if (s < 0) {
-        snmp_log_perror("socket");
+        snmp_log_perror("netsnmp_ioctl_route_delete_v4: socket");
         return -3;
     }
 
@@ -164,11 +169,20 @@
 
     dst.sin_family = AF_INET;
     memcpy(&dst.sin_addr.s_addr, entry->rt_dest, 4);
+    DEBUGSTR = inet_ntoa(dst.sin_addr);
+    DEBUGMSGTL(("access:route","del route to %s\n", DEBUGSTR));
+
+    mask.sin_family = AF_INET;
+    if (entry->rt_pfx_len != 0)
+	mask.sin_addr.s_addr = netsnmp_ipaddress_ipv4_mask(entry->rt_pfx_len);
+    else
+	mask.sin_addr.s_addr = entry->rt_mask;
 
     gateway.sin_family = AF_INET;
     memcpy(&gateway.sin_addr.s_addr, entry->rt_nexthop, 4);
 
     memcpy(&route.rt_dst, &dst, sizeof(struct sockaddr_in));
+    memcpy(&route.rt_genmask, &mask, sizeof(struct sockaddr_in));
     memcpy(&route.rt_gateway, &gateway, sizeof(struct sockaddr_in));
 
     if (32 == entry->rt_pfx_len)
@@ -182,11 +196,11 @@
 #endif
 
     rc = ioctl(s, SIOCDELRT, (caddr_t) & route);
-    close(s);
     if (rc < 0) {
-        snmp_log_perror("ioctl");
+        snmp_log_perror("netsnmp_ioctl_route_delete_v4: ioctl");
         rc = -4;
     }
+    close(s);
 
     return rc;
 }
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route_linux.c b/agent/mibgroup/ip-forward-mib/data_access/route_linux.c
index f8d78a9..0f80fe8 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route_linux.c
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_linux.c
@@ -72,7 +72,7 @@
     while (fgets(line, sizeof(line), in)) {
         char            rtent_name[32];
         int             refcnt, rc;
-        uint32_t        dest, nexthop, mask, tmp_mask;
+        uint32_t        dest, nexthop, mask;
         unsigned        flags, use;
 
         entry = netsnmp_access_route_entry_create();
@@ -89,7 +89,7 @@
                      * XXX: fix type of the args 
                      */
                     &flags, &refcnt, &use, &entry->rt_metric1,
-                    &tmp_mask);
+                    &mask);
         DEBUGMSGTL(("9:access:route:container", "line |%s|\n", line));
         if (8 != rc) {
             snmp_log(LOG_ERR,
@@ -121,10 +121,8 @@
          */
         entry->ns_rt_index = ++(*index);
 
-        mask = htonl(tmp_mask);
-
 #ifdef USING_IP_FORWARD_MIB_IPCIDRROUTETABLE_IPCIDRROUTETABLE_MODULE
-        entry->rt_mask = mask;
+        memcpy(&entry->rt_mask, &mask, 4);
         /** entry->rt_tos = XXX; */
         /** rt info ?? */
 #endif
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route_solaris.c b/agent/mibgroup/ip-forward-mib/data_access/route_solaris.c
new file mode 100644
index 0000000..5d8ad22
--- /dev/null
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_solaris.c
@@ -0,0 +1,258 @@
+/*
+ *  Interface MIB architecture support
+ *
+ * $Id$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include "mibII/mibII_common.h"
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/interface.h>
+#include <net-snmp/data_access/route.h>
+#include <net-snmp/data_access/ipaddress.h>
+
+#include <inet/ip.h>
+#include <inet/mib2.h>
+
+#include "ip-forward-mib/data_access/route_ioctl.h"
+#include "ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_constants.h"
+#include "if-mib/data_access/interface_ioctl.h"
+
+static int _load_v4(netsnmp_container *container, u_long *count);
+static int _load_v6(netsnmp_container *container, u_long *count);
+
+/** arch specific load
+ * @internal
+ *
+ * @retval  0 success
+ * @retval -1 no container specified
+ * @retval -2 could not open data file
+ */
+int
+netsnmp_access_route_container_arch_load(netsnmp_container* container,
+                                         u_int load_flags)
+{
+    u_long          count = 0;
+    int             rc;
+
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_load (flags %x)\n", load_flags));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for access_route\n");
+        return -1;
+    }
+
+    rc = _load_v4(container, &count);
+    
+#ifdef NETSNMP_ENABLE_IPV6
+    if((0 != rc) || (load_flags & NETSNMP_ACCESS_ROUTE_LOAD_IPV4_ONLY))
+        return rc;
+
+    /*
+     * load ipv6. ipv6 module might not be loaded,
+     * so ignore -2 err (file not found)
+     */
+    rc = _load_v6(container, &count);
+    if (-2 == rc)
+        rc = 0;
+#endif
+
+    return rc;
+}
+
+/*
+ * create a new entry
+ */
+int
+netsnmp_arch_route_create(netsnmp_route_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    if (4 != entry->rt_dest_len) {
+        DEBUGMSGT(("access:route:create", "only ipv4 supported\n"));
+        return -2;
+    }
+
+    /* return _netsnmp_ioctl_route_set_v4(entry); */
+    return -2;
+}
+
+/*
+ * create a new entry
+ */
+int
+netsnmp_arch_route_delete(netsnmp_route_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    if (4 != entry->rt_dest_len) {
+        DEBUGMSGT(("access:route:create", "only ipv4 supported\n"));
+        return -2;
+    }
+
+    /* return _netsnmp_ioctl_route_delete_v4(entry); */
+    return -2;
+}
+
+
+static int
+IP_Cmp_Route(void *addr, void *ep)
+{
+    mib2_ipRouteEntry_t *Ep = ep, *Addr = addr;
+
+    if ((Ep->ipRouteDest == Addr->ipRouteDest) &&
+        (Ep->ipRouteNextHop == Addr->ipRouteNextHop) &&
+        (Ep->ipRouteType == Addr->ipRouteType) &&
+        (Ep->ipRouteProto == Addr->ipRouteProto) &&
+        (Ep->ipRouteMask == Addr->ipRouteMask) &&
+        (Ep->ipRouteInfo.re_max_frag == Addr->ipRouteInfo.re_max_frag) &&
+        (Ep->ipRouteInfo.re_rtt == Addr->ipRouteInfo.re_rtt) &&
+        (Ep->ipRouteInfo.re_ref == Addr->ipRouteInfo.re_ref) &&
+        (Ep->ipRouteInfo.re_frag_flag == Addr->ipRouteInfo.re_frag_flag) &&
+        (Ep->ipRouteInfo.re_src_addr == Addr->ipRouteInfo.re_src_addr) &&
+        (Ep->ipRouteInfo.re_ire_type == Addr->ipRouteInfo.re_ire_type) &&
+        (Ep->ipRouteInfo.re_obpkt == Addr->ipRouteInfo.re_obpkt) &&
+        (Ep->ipRouteInfo.re_ibpkt == Addr->ipRouteInfo.re_ibpkt)
+        )
+        return (0);
+    else
+        return (1);             /* Not found */
+}
+
+
+static int
+IP6_Cmp_Route(void *addr, void *ep)
+{
+    mib2_ipv6RouteEntry_t *Ep = ep, *Addr = addr;
+
+    if ((memcmp(&Ep->ipv6RouteDest, &Addr->ipv6RouteDest, 16) == 0) &&
+        (memcmp(&Ep->ipv6RouteNextHop, &Addr->ipv6RouteNextHop, 16) == 0) &&
+        (Ep->ipv6RouteType == Addr->ipv6RouteType) &&
+        (Ep->ipv6RouteInfo.re_max_frag == Addr->ipv6RouteInfo.re_max_frag) &&
+        (Ep->ipv6RouteInfo.re_rtt == Addr->ipv6RouteInfo.re_rtt) &&
+        (Ep->ipv6RouteInfo.re_ref == Addr->ipv6RouteInfo.re_ref) &&
+        (Ep->ipv6RouteInfo.re_frag_flag == Addr->ipv6RouteInfo.re_frag_flag) &&
+        (memcmp(&Ep->ipv6RouteInfo.re_src_addr, &Addr->ipv6RouteInfo.re_src_addr, 16) == 0) &&
+        (Ep->ipv6RouteInfo.re_ire_type == Addr->ipv6RouteInfo.re_ire_type) &&
+        (Ep->ipv6RouteInfo.re_obpkt == Addr->ipv6RouteInfo.re_obpkt) &&
+        (Ep->ipv6RouteInfo.re_ibpkt == Addr->ipv6RouteInfo.re_ibpkt)
+        )
+        return (0);
+    else
+        return (1);             /* Not found */
+}
+
+
+static int _load_v4(netsnmp_container *container, u_long *count)
+{
+    netsnmp_route_entry *entry;
+    mib2_ipRouteEntry_t Curentry, Nextentry;
+    int req_type;
+
+    for (Nextentry.ipRouteDest = (u_long) -2, req_type = GET_FIRST;;
+             Nextentry = Curentry, req_type = GET_NEXT) {
+	if (getMibstat(MIB_IP_ROUTE, &Curentry, sizeof(mib2_ipRouteEntry_t),
+		       req_type, &IP_Cmp_Route, &Nextentry) != 0)
+	    break;
+#ifdef HAVE_DEFINED_IRE_CACHE
+	if (Curentry.ipRouteInfo.re_ire_type & IRE_CACHE)
+	    continue;
+#endif /* HAVE_DEFINED_IRE_CACHE */
+	if (Curentry.ipRouteInfo.re_ire_type & IRE_BROADCAST)
+	    continue;
+	entry = netsnmp_access_route_entry_create();
+	Curentry.ipRouteIfIndex.o_bytes[Curentry.ipRouteIfIndex.o_length] = '\0';
+	entry->if_index = netsnmp_access_interface_index_find(
+                Curentry.ipRouteIfIndex.o_bytes);
+	entry->ns_rt_index = entry->if_index;
+
+	entry->rt_dest_type = INETADDRESSTYPE_IPV4;
+	entry->rt_dest_len = 4;
+	memcpy(entry->rt_dest, &Curentry.ipRouteDest, 4);
+	memcpy(&entry->rt_mask, &Curentry.ipRouteMask, 4);
+
+	entry->rt_nexthop_type = INETADDRESSTYPE_IPV4;
+	entry->rt_nexthop_len = 4;
+	memcpy(entry->rt_nexthop, &Curentry.ipRouteNextHop, 4);
+
+	entry->rt_pfx_len = netsnmp_ipaddress_ipv4_prefix_len(Curentry.ipRouteMask);
+	entry->rt_type = Curentry.ipRouteType;
+	entry->rt_proto = Curentry.ipRouteProto;
+	entry->rt_age = Curentry.ipRouteAge;
+	entry->rt_metric1 = Curentry.ipRouteMetric1;
+	entry->rt_metric2 = Curentry.ipRouteMetric2;
+	entry->rt_metric3 = Curentry.ipRouteMetric3;
+	entry->rt_metric4 = Curentry.ipRouteMetric4;
+
+	/*
+	 * insert into container
+	 */
+	if (CONTAINER_INSERT(container, entry) < 0) {
+	    DEBUGMSGTL(("access:route:container", "error with route_entry: insert into container failed.\n"));
+	    netsnmp_access_route_entry_free(entry);
+	    continue;
+	}
+	*count++;
+    }
+    return 0;
+}
+
+
+static int _load_v6(netsnmp_container *container, u_long *count)
+{
+    netsnmp_route_entry *entry;
+    mib2_ipv6RouteEntry_t Curentry, Nextentry;
+    int req_type;
+
+    memset(&Nextentry, 0, sizeof(Nextentry));
+    for (req_type = GET_FIRST;;
+             Nextentry = Curentry, req_type = GET_NEXT) {
+	if (getMibstat(MIB_IP6_ROUTE, &Curentry, sizeof(mib2_ipv6RouteEntry_t),
+		       req_type, &IP6_Cmp_Route, &Nextentry) != 0)
+	    break;
+#ifdef HAVE_DEFINED_IRE_CACHE
+	if (Curentry.ipv6RouteInfo.re_ire_type & IRE_CACHE)
+	    continue;
+#endif /* HAVE_DEFINED_IRE_CACHE */
+	if (Curentry.ipv6RouteInfo.re_ire_type & IRE_BROADCAST)
+	    continue;
+	entry = netsnmp_access_route_entry_create();
+	Curentry.ipv6RouteIfIndex.o_bytes[Curentry.ipv6RouteIfIndex.o_length] = '\0';
+	entry->if_index = netsnmp_access_interface_index_find(
+                Curentry.ipv6RouteIfIndex.o_bytes);
+	entry->ns_rt_index = entry->if_index;
+
+	entry->rt_dest_type = INETADDRESSTYPE_IPV6;
+	entry->rt_dest_len = 16;
+	memcpy(entry->rt_dest, &Curentry.ipv6RouteDest, 16);
+
+	entry->rt_nexthop_type = INETADDRESSTYPE_IPV6;
+	entry->rt_nexthop_len = 16;
+	memcpy(entry->rt_nexthop, &Curentry.ipv6RouteNextHop, 16);
+
+	entry->rt_pfx_len = Curentry.ipv6RoutePfxLength;
+	entry->rt_type = Curentry.ipv6RouteType;
+	entry->rt_proto = Curentry.ipv6RouteProtocol;
+	entry->rt_age = Curentry.ipv6RouteAge;
+	entry->rt_policy = calloc(3, sizeof(oid));
+	entry->rt_policy_len = 3;
+	entry->rt_policy[2] = Curentry.ipv6RoutePolicy;
+	entry->rt_metric1 = Curentry.ipv6RouteMetric;
+	entry->rt_metric2 = Curentry.ipv6RouteWeight;
+
+	/*
+	 * insert into container
+	 */
+	if (CONTAINER_INSERT(container, entry) < 0) {
+	    DEBUGMSGTL(("access:route:container", "error with route_entry: insert into container failed.\n"));
+	    netsnmp_access_route_entry_free(entry);
+	    continue;
+	}
+	*count++;
+    }
+    return 0;
+}
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.c b/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.c
new file mode 100644
index 0000000..d4f926b
--- /dev/null
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.c
@@ -0,0 +1,436 @@
+/*
+ *  Interface MIB architecture support
+ *
+ * $Id$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include "mibII/mibII_common.h"
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/interface.h>
+#include <net-snmp/data_access/route.h>
+#include <net-snmp/data_access/ipaddress.h>
+#include <net/if_dl.h>
+
+#include "ip-forward-mib/data_access/route_sysctl.h"
+#include "ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_constants.h"
+#include "if-mib/data_access/interface_ioctl.h"
+
+static int _load_ipv4(netsnmp_container*, int*);
+static int _load_ipv6(netsnmp_container*, int*);
+static int _create_ipv4(netsnmp_route_entry *);
+static int _create_ipv6(netsnmp_route_entry *);
+static int _delete_ipv4(netsnmp_route_entry *);
+static int _delete_ipv6(netsnmp_route_entry *);
+
+#if !defined(SA_SIZE) && !defined(RT_ROUNDUP)
+#define RT_ROUNDUP(a)  \
+        ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
+#endif
+#ifndef SA_SIZE
+#define SA_SIZE(x) RT_ROUNDUP(((struct sockaddr *)(x))->sa_len)
+#endif
+
+/** arch specific load
+ * @internal
+ *
+ * @retval  0 success
+ * @retval -1 no container specified
+ * @retval -2 could not access data source
+ */
+int
+netsnmp_access_route_container_arch_load(netsnmp_container* container,
+					 u_int load_flags)
+{
+    int count, err;
+
+    err = 0;
+
+    DEBUGMSGTL(("access:route:container", "route_container_arch_load\n"));
+
+    if (container == NULL) {
+        snmp_log(LOG_ERR, "no container specified/found for access_route\n");
+        return -1;
+    }
+
+    err = _load_ipv4(container, &count);
+    if (err != 0) {
+        NETSNMP_LOGONCE((LOG_ERR, "_load_ipv4 failed %d\n", err));
+        goto out;
+    }
+
+    if (err != 0 || load_flags & NETSNMP_ACCESS_ROUTE_LOAD_IPV4_ONLY)
+	return err;
+
+    err = _load_ipv6(container, &count);
+    if (err != 0) {
+        NETSNMP_LOGONCE((LOG_ERR, "_load_ipv6 failed %d\n", err));
+        goto out;
+    }
+
+out:
+    return (err == 0 ? 0 : -3);
+}
+
+/** arch specific new route entry creation
+ * @internal
+ *
+ * @retval  0 success
+ * @retval -1 invalid entry specified
+ * @retval -2 could not create route entry
+ */
+int
+netsnmp_arch_route_create(netsnmp_route_entry *entry)
+{
+    int err;
+
+    if (NULL == entry)
+        return -1;
+
+    switch (entry->rt_dest_type) {
+    case INETADDRESSTYPE_IPV4:
+        err = _create_ipv4(entry);
+        break;
+#ifdef NETSNMP_ENABLE_IPV6
+    case INETADDRESSTYPE_IPV6:
+        err = _create_ipv6(entry);
+        break;
+#endif
+    default:
+        err = 0;
+    }
+
+    return (err == 0 ? 0 : -2);
+}
+
+/** arch specific new route entry deletion
+ * @internal
+ *
+ * @retval  0 success
+ * @retval -1 invalid entry specified
+ * @retval -2 could not delete route entry
+ */
+int
+netsnmp_arch_route_delete(netsnmp_route_entry *entry)
+{
+    int err;
+
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_delete\n"));
+
+    if (NULL == entry)
+        return -1;
+
+    switch (entry->rt_dest_type) {
+    case INETADDRESSTYPE_IPV4:
+        err = _delete_ipv4(entry);
+        break;
+#ifdef NETSNMP_ENABLE_IPV6
+    case INETADDRESSTYPE_IPV6:
+        err = _delete_ipv6(entry);
+        break;
+#endif
+    default:
+        err = 0;
+    }
+
+    return (err == 0 ? 0 : -2);
+}
+
+#if defined(freebsd4) || defined(netbsd4) || defined(openbsd) || defined(darwin)
+static int
+_type_from_flags(int flags)
+{
+    if (flags & RTF_UP) {
+        if (flags & RTF_BLACKHOLE)
+            return INETCIDRROUTETYPE_REJECT;
+#ifdef RTF_LOCAL
+        else if (flags & RTF_LOCAL)
+            return INETCIDRROUTETYPE_LOCAL;
+#endif
+        else if (flags & RTF_GATEWAY)
+            return INETCIDRROUTETYPE_REMOTE;
+        else
+            return INETCIDRROUTETYPE_OTHER;
+    }
+    return 0;
+}
+
+
+static int
+_load_routing_table_from_sysctl(netsnmp_container* container, int *index,
+    int family)
+{
+    char *buf, *lim, *next;
+    int mib[6];
+    size_t needed;
+    int err;
+    u_char dest_len, dest_type;
+    struct rt_msghdr *rtm;
+
+    buf = NULL;
+    err = 0;
+
+    if (family == AF_INET) {
+        dest_len = 4;
+        dest_type = INETADDRESSTYPE_IPV4;
+    } else if (family == AF_INET6) {
+        dest_len = 16;
+        dest_type = INETADDRESSTYPE_IPV6;
+    } else {
+        err = EINVAL;
+        goto out;
+    }
+
+    mib[0] = CTL_NET;
+    mib[1] = PF_ROUTE;
+    mib[2] = 0;
+    mib[3] = family;
+    mib[4] = NET_RT_DUMP;
+    mib[5] = 0;
+
+    if (sysctl(mib, (sizeof(mib) / sizeof(mib[0])), NULL, &needed, NULL,
+        0) == -1) {
+        err = errno;
+        goto out;
+    }
+
+    if ((buf = malloc(needed)) == NULL) {
+        err = ENOMEM;
+        goto out;
+    }
+
+    if (sysctl(mib, (sizeof(mib) / sizeof(mib[0])), buf, &needed, NULL,
+        0) == -1) {
+        err = errno;
+        goto out;
+    }
+
+    lim = buf + needed;
+
+    for (next = buf; next < lim; next += rtm->rtm_msglen) {    
+	struct sockaddr *if_name = NULL, *if_addr = NULL;
+	struct sockaddr *dest_sa = NULL, *gateway_sa = NULL, *netmask_sa = NULL;
+	netsnmp_route_entry *entry;
+	char *addr_ptr;
+
+        rtm = (struct rt_msghdr*)next;
+
+        /* 
+         * Some code in netstat checks for this ("netmasks done" case).
+         * Filter this out (I don't know why it should exist).
+         */
+        if (rtm->rtm_addrs == RTA_DST)
+            continue;
+
+        entry = netsnmp_access_route_entry_create();
+        if (entry == NULL)
+            return -3;
+        memset(entry->rt_dest, 0, dest_len);
+        entry->rt_mask = 0;
+        memset(entry->rt_nexthop, 0, dest_len);
+
+        addr_ptr = (char *)(rtm + 1);
+
+	if (rtm->rtm_addrs &  RTA_DST) {
+	    dest_sa = (struct sockaddr *)addr_ptr;
+	    addr_ptr += SA_SIZE(dest_sa);
+	}
+	if (rtm->rtm_addrs &  RTA_GATEWAY) {
+	    gateway_sa = (struct sockaddr *)addr_ptr;
+	    addr_ptr += SA_SIZE(gateway_sa);
+	}
+	if (rtm->rtm_addrs &  RTA_NETMASK) {
+	    netmask_sa = (struct sockaddr *)addr_ptr;
+	    addr_ptr += SA_SIZE(netmask_sa);
+	}
+	if (rtm->rtm_addrs &  RTA_IFP) {
+	    if_name = (struct sockaddr *)addr_ptr;
+	    addr_ptr += SA_SIZE(if_name);
+	}
+	if (rtm->rtm_addrs &  RTA_IFA) {
+	    if_addr = (struct sockaddr *)addr_ptr;
+	    addr_ptr += SA_SIZE(if_addr);
+	}
+
+        entry->if_index = rtm->rtm_index;
+
+        /* arbitrary index */
+        entry->ns_rt_index = ++(*index);
+
+        /* copy dest & next hop */
+        entry->rt_dest_type = dest_type;
+        entry->rt_dest_len = dest_len;
+        if (rtm->rtm_addrs & RTA_DST) {
+            if (family == AF_INET)
+                memcpy(entry->rt_dest,
+                    &((struct sockaddr_in*)dest_sa)->sin_addr, dest_len);
+#ifdef NETSNMP_ENABLE_IPV6
+            if (family == AF_INET6)
+                memcpy(entry->rt_dest,
+                    &((struct sockaddr_in6*)dest_sa)->sin6_addr, dest_len);
+#endif
+        }
+
+        entry->rt_nexthop_type = dest_type;
+        entry->rt_nexthop_len = dest_len;
+        if (rtm->rtm_addrs & RTA_GATEWAY) {
+            if (family == AF_INET)
+                memcpy(entry->rt_nexthop,
+                    &((struct sockaddr_in*)gateway_sa)->sin_addr, dest_len);
+#ifdef NETSNMP_ENABLE_IPV6
+            if (family == AF_INET6)
+                memcpy(entry->rt_nexthop,
+                    &((struct sockaddr_in6*)gateway_sa)->sin6_addr, dest_len);
+#endif
+        }
+        else {
+            if (family == AF_INET)
+                memcpy(entry->rt_nexthop,
+                    &((struct sockaddr_in*)if_addr)->sin_addr, dest_len);
+#ifdef NETSNMP_ENABLE_IPV6
+            if (family == AF_INET6)
+                memcpy(entry->rt_nexthop,
+                    &((struct sockaddr_in6*)if_addr)->sin6_addr, dest_len);
+#endif
+        }
+
+        if (family == AF_INET) {
+	    if (netmask_sa) {
+            /* count bits in mask */
+		entry->rt_pfx_len = netsnmp_ipaddress_ipv4_prefix_len(
+			((struct sockaddr_in *)netmask_sa)->sin_addr.s_addr);
+		memcpy(&entry->rt_mask, &((struct sockaddr_in *)netmask_sa)->sin_addr, 4);
+	    }
+	    else {
+		entry->rt_pfx_len = 32;
+	    }
+        }
+#ifdef NETSNMP_ENABLE_IPV6
+        if (family == AF_INET6) {
+	    if (netmask_sa) {
+            /* count bits in mask */
+		entry->rt_pfx_len = netsnmp_ipaddress_ipv6_prefix_len(
+			((struct sockaddr_in6 *)netmask_sa)->sin6_addr);
+		memcpy(&entry->rt_mask, &((struct sockaddr_in6 *)netmask_sa)->sin6_addr, 16);
+	    }
+	    else {
+		entry->rt_pfx_len = 128;
+	    }
+        }
+#endif
+
+#ifdef USING_IP_FORWARD_MIB_INETCIDRROUTETABLE_INETCIDRROUTETABLE_MODULE
+        /*
+    inetCidrRoutePolicy OBJECT-TYPE 
+        SYNTAX     OBJECT IDENTIFIER 
+        MAX-ACCESS not-accessible 
+        STATUS     current 
+        DESCRIPTION 
+               "This object is an opaque object without any defined 
+                semantics.  Its purpose is to serve as an additional 
+                index which may delineate between multiple entries to 
+                the same destination.  The value { 0 0 } shall be used 
+                as the default value for this object."
+        */
+	entry->rt_policy = calloc(3, sizeof(oid));
+	entry->rt_policy[2] = entry->if_index;
+	entry->rt_policy_len = sizeof(oid)*3;
+#endif
+
+        entry->rt_type = _type_from_flags(rtm->rtm_flags);
+	entry->rt_age = rtm->rtm_rmx.rmx_expire;
+	entry->rt_nexthop_as = 0;
+	/* entry->rt_metric1 = rtm->rtm_rmx.rmx_hopcount; */
+
+        if (rtm->rtm_flags & RTF_DYNAMIC)
+            entry->rt_proto = IANAIPROUTEPROTOCOL_ICMP;
+        else if (rtm->rtm_flags & RTF_STATIC)
+            entry->rt_proto = IANAIPROUTEPROTOCOL_NETMGMT;
+#ifdef RTF_LOCAL
+        else if (rtm->rtm_flags & RTF_LOCAL)
+            entry->rt_proto = IANAIPROUTEPROTOCOL_LOCAL;
+#endif
+        else
+            entry->rt_proto = IANAIPROUTEPROTOCOL_OTHER;
+
+        if (CONTAINER_INSERT(container, entry) < 0) {
+            DEBUGMSGTL(("access:route:container",
+                "error with route_entry: insert into container failed.\n"));
+            netsnmp_access_route_entry_free(entry);
+            continue;
+        }
+    }
+
+out:
+    free(buf);
+
+    return err;
+}
+
+/**
+ * netsnmp_access_route_container_arch_load* functions.
+ */
+static int
+_load_ipv4(netsnmp_container* container, int *index)
+{
+
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_load ipv4\n"));
+    return _load_routing_table_from_sysctl(container, index, AF_INET);
+}
+
+static int
+_load_ipv6(netsnmp_container* container, int *index)
+{
+
+#ifdef NETSNMP_ENABLE_IPV6
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_load ipv6\n"));
+    return _load_routing_table_from_sysctl(container, index, AF_INET6);
+#else
+    return 0;
+#endif
+}
+
+/**
+ * netsnmp_access_route_create* functions.
+ *
+ * TODO: add logic similar to newroute(..) in sbin/route/route.c .
+ */
+static int
+_create_ipv4(netsnmp_route_entry *entry)
+{
+
+    return 0;
+}
+
+static int
+_create_ipv6(netsnmp_route_entry *entry)
+{
+
+    return 0;
+}
+
+/**
+ * netsnmp_access_route_delete* functions.
+ *
+ * TODO: add logic similar to newroute(..) in sbin/route/route.c .
+ */
+static int
+_delete_ipv4(netsnmp_route_entry *entry)
+{
+
+    return 0;
+}
+
+static int
+_delete_ipv6(netsnmp_route_entry *entry)
+{
+#ifdef NETSNMP_ENABLE_IPV6
+
+#endif
+    return 0;
+}
+#endif /* defined(freebsd7) || defined(netbsd) || defined(openbsd) */
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.h b/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.h
new file mode 100644
index 0000000..65eccc7
--- /dev/null
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.h
@@ -0,0 +1,9 @@
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+#include <sys/time.h>
+#include <net/if.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <errno.h>
+#include <ifaddrs.h>
diff --git a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
index 8def1d9..0f013ea 100644
--- a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
+++ b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
@@ -14,6 +14,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -26,6 +27,9 @@
 
 #include "inetCidrRouteTable_interface.h"
 
+netsnmp_feature_require(inetCidrRouteTable_container_get)
+netsnmp_feature_require(inetCidrRouteTable_container_size)
+
 const oid       inetCidrRouteTable_oid[] = { INETCIDRROUTETABLE_OID };
 const int       inetCidrRouteTable_oid_size =
 OID_LENGTH(inetCidrRouteTable_oid);
diff --git a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
index 559c0ca..5df46b6 100644
--- a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
+++ b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,16 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(inetCidrRouteTable_external_access, libnetsnmpmibs)
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+
+netsnmp_feature_child_of(inetCidrRouteTable_container_size, inetCidrRouteTable_external_access)
+netsnmp_feature_child_of(inetCidrRouteTable_registration_set, inetCidrRouteTable_external_access)
+netsnmp_feature_child_of(inetCidrRouteTable_registration_get, inetCidrRouteTable_external_access)
+netsnmp_feature_child_of(inetCidrRouteTable_container_get, inetCidrRouteTable_external_access)
 /**********************************************************************
  **********************************************************************
  ***
@@ -82,19 +93,23 @@
                 _inetCidrRouteTable_container_shutdown(inetCidrRouteTable_interface_ctx *
                                                        if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_CONTAINER_GET
 netsnmp_container *
 inetCidrRouteTable_container_get(void)
 {
     return inetCidrRouteTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_REGISTRATION_GET
 inetCidrRouteTable_registration *
 inetCidrRouteTable_registration_get(void)
 {
     return inetCidrRouteTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_REGISTRATION_SET
 inetCidrRouteTable_registration *
 inetCidrRouteTable_registration_set(inetCidrRouteTable_registration *
                                     newreg)
@@ -104,12 +119,15 @@
     inetCidrRouteTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_CONTAINER_SIZE
 int
 inetCidrRouteTable_container_size(void)
 {
     return CONTAINER_SIZE(inetCidrRouteTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_CONTAINER_SIZE */
 
 u_int
 inetCidrRouteTable_dirty_get(void)
@@ -140,7 +158,7 @@
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_post_request;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_check_objects;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_set_values;
@@ -150,7 +168,7 @@
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_undo_commit;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_irreversible_commit;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 NETSNMP_STATIC_INLINE int
                 _inetCidrRouteTable_check_indexes(inetCidrRouteTable_rowreq_ctx * rowreq_ctx);
@@ -237,7 +255,7 @@
         _mfd_inetCidrRouteTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -262,7 +280,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_inetCidrRouteTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -298,7 +316,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -321,7 +339,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -1210,6 +1228,8 @@
     if (MFD_SUCCESS != rc)
         return SNMP_ERR_NOCREATION;
 
+    /* MORE CHECKING REQUIRED */
+
     /*
      * (INDEX) inetCidrRouteDest(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h 
      */
@@ -1308,7 +1328,7 @@
                                              user_ctx, rowreq_ctx);
 }                               /* _inetCidrRouteTable_check_indexes */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -2192,7 +2212,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_inetCidrRouteTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -2328,9 +2348,9 @@
 
     if_ctx->container->container_name = strdup("inetCidrRouteTable");
 
-    /* set allow duplicates this makes insert O(1) */
-    netsnmp_binary_array_options_set(if_ctx->container, 1,
-                                     CONTAINER_KEY_ALLOW_DUPLICATES);
+   /* set allow duplicates this makes insert O(1) */
+   netsnmp_binary_array_options_set(if_ctx->container, 1,
+                                    CONTAINER_KEY_ALLOW_DUPLICATES);
 
     if (NULL != if_ctx->cache)
         if_ctx->cache->magic = (void *) if_ctx->container;
@@ -2353,6 +2373,7 @@
 }                               /* _inetCidrRouteTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_EXTERNAL_ACCESS
 inetCidrRouteTable_rowreq_ctx *
 inetCidrRouteTable_row_find_by_mib_index(inetCidrRouteTable_mib_index *
                                          mib_idx)
@@ -2380,3 +2401,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
index a31f4cc..45f8483 100644
--- a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
+++ b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,17 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ipCidrRouteTable_external_access, libnetsnmpmibs)
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(ipCidrRouteTable_container_size, ipCidrRouteTable_external_access)
+netsnmp_feature_child_of(ipCidrRouteTable_registration_set, ipCidrRouteTable_external_access)
+netsnmp_feature_child_of(ipCidrRouteTable_registration_get, ipCidrRouteTable_external_access)
+netsnmp_feature_child_of(ipCidrRouteTable_container_get, ipCidrRouteTable_external_access)
 /**********************************************************************
  **********************************************************************
  ***
@@ -81,19 +93,23 @@
                 _ipCidrRouteTable_container_shutdown(ipCidrRouteTable_interface_ctx *
                                                      if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_CONTAINER_GET
 netsnmp_container *
 ipCidrRouteTable_container_get(void)
 {
     return ipCidrRouteTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_REGISTRATION_GET
 ipCidrRouteTable_registration *
 ipCidrRouteTable_registration_get(void)
 {
     return ipCidrRouteTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_REGISTRATION_SET
 ipCidrRouteTable_registration *
 ipCidrRouteTable_registration_set(ipCidrRouteTable_registration * newreg)
 {
@@ -101,12 +117,15 @@
     ipCidrRouteTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_CONTAINER_SIZE
 int
 ipCidrRouteTable_container_size(void)
 {
     return CONTAINER_SIZE(ipCidrRouteTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_CONTAINER_SIZE */
 
 u_int
 ipCidrRouteTable_dirty_get(void)
@@ -130,7 +149,7 @@
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_post_request;
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_check_objects;
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_set_values;
@@ -144,7 +163,7 @@
                 _ipCidrRouteTable_undo_column(ipCidrRouteTable_rowreq_ctx * rowreq_ctx,
                                               netsnmp_variable_list * var,
                                               int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 NETSNMP_STATIC_INLINE int
                 _ipCidrRouteTable_check_indexes(ipCidrRouteTable_rowreq_ctx * rowreq_ctx);
@@ -227,7 +246,7 @@
     access_multiplexer->post_request = _mfd_ipCidrRouteTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -245,7 +264,7 @@
     access_multiplexer->undo_commit = _mfd_ipCidrRouteTable_undo_commit;
     access_multiplexer->irreversible_commit =
         _mfd_ipCidrRouteTable_irreversible_commit;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -278,7 +297,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -301,7 +320,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -1151,7 +1170,7 @@
                                            user_ctx, rowreq_ctx);
 }                               /* _ipCidrRouteTable_check_indexes */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -2145,7 +2164,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ipCidrRouteTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -2304,6 +2323,7 @@
 }                               /* _ipCidrRouteTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_EXTERNAL_ACCESS
 ipCidrRouteTable_rowreq_ctx *
 ipCidrRouteTable_row_find_by_mib_index(ipCidrRouteTable_mib_index *
                                        mib_idx)
@@ -2331,3 +2351,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-mib/data_access/arp.h b/agent/mibgroup/ip-mib/data_access/arp.h
index e9c371b..648cb28 100644
--- a/agent/mibgroup/ip-mib/data_access/arp.h
+++ b/agent/mibgroup/ip-mib/data_access/arp.h
@@ -18,8 +18,12 @@
  *    be handled in the *_hpux.h header file.
  */
 config_require(ip-mib/data_access/arp_common)
-#if defined( linux )
+#if defined( HAVE_LINUX_RTNETLINK_H )
+config_require(ip-mib/data_access/arp_netlink)
+#elif defined( linux )
 config_require(ip-mib/data_access/arp_linux)
+#elif defined( freebsd7 ) || defined ( netbsd5 ) || defined( openbsd4 ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-mib/data_access/arp_sysctl)
 #else
 /*
  * couldn't determine the correct file!
diff --git a/agent/mibgroup/ip-mib/data_access/arp_common.c b/agent/mibgroup/ip-mib/data_access/arp_common.c
index 5c7d6d5..2958719 100644
--- a/agent/mibgroup/ip-mib/data_access/arp_common.c
+++ b/agent/mibgroup/ip-mib/data_access/arp_common.c
@@ -11,102 +11,6 @@
 
 /**---------------------------------------------------------------------*/
 /*
- * local static prototypes
- */
-static void _access_arp_entry_release(netsnmp_arp_entry * entry,
-                                      void *unused);
-
-/**---------------------------------------------------------------------*/
-/*
- * external per-architecture functions prototypes
- *
- * These shouldn't be called by the general public, so they aren't in
- * the header file.
- */
-extern int
-netsnmp_access_arp_container_arch_load(netsnmp_container* container,
-                                       u_int load_flags);
-
-
-/**---------------------------------------------------------------------*/
-/*
- * container functions
- */
-/**
- */
-netsnmp_container *
-netsnmp_access_arp_container_init(u_int flags)
-{
-    netsnmp_container *container1;
-
-    DEBUGMSGTL(("access:arp:container", "init\n"));
-
-    /*
-     * create the containers. one indexed by ifIndex, the other
-     * indexed by ifName.
-     */
-    container1 = netsnmp_container_find("access_arp:table_container");
-    if (NULL == container1)
-        return NULL;
-    return container1;
-}
-
-/**
- * @retval NULL  error
- * @retval !NULL pointer to container
- */
-netsnmp_container*
-netsnmp_access_arp_container_load(netsnmp_container* container, u_int load_flags)
-{
-    int rc;
-
-    DEBUGMSGTL(("access:arp:container", "load\n"));
-
-    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;
-    }
-
-    rc =  netsnmp_access_arp_container_arch_load(container, load_flags);
-    if (0 != rc) {
-        netsnmp_access_arp_container_free(container,
-                                          NETSNMP_ACCESS_ARP_FREE_NOFLAGS);
-        container = NULL;
-    }
-
-    return container;
-}
-
-void
-netsnmp_access_arp_container_free(netsnmp_container *container, u_int free_flags)
-{
-    DEBUGMSGTL(("access:arp:container", "free\n"));
-
-    if (NULL == container) {
-        snmp_log(LOG_ERR, "invalid container for netsnmp_access_arp_free\n");
-        return;
-    }
-
-    if(! (free_flags & NETSNMP_ACCESS_ARP_FREE_DONT_CLEAR)) {
-        /*
-         * free all items.
-         */
-        CONTAINER_CLEAR(container,
-                        (netsnmp_container_obj_func*)_access_arp_entry_release,
-                        NULL);
-    }
-
-    if(! (free_flags & NETSNMP_ACCESS_ARP_FREE_KEEP_CONTAINER))
-        CONTAINER_FREE(container);
-}
-
-/**---------------------------------------------------------------------*/
-/*
  * arp_entry functions
  */
 /**
@@ -140,14 +44,6 @@
  */
 
 /**
- */
-void
-_access_arp_entry_release(netsnmp_arp_entry * entry, void *context)
-{
-    netsnmp_access_arp_entry_free(entry);
-}
-
-/**
  * Update given entry with new data. Calculate new arp_last_updated, if any
  * field is changed.
  */
@@ -156,6 +52,7 @@
 {
     int modified = 0;
 
+    entry->generation = new_data->generation;
     if (entry->arp_ipaddress_len != new_data->arp_ipaddress_len
             || memcmp(entry->arp_ipaddress, new_data->arp_ipaddress, entry->arp_ipaddress_len) != 0 ) {
         modified = 1;
diff --git a/agent/mibgroup/ip-mib/data_access/arp_linux.c b/agent/mibgroup/ip-mib/data_access/arp_linux.c
index 4ddaffd..a2fa49a 100644
--- a/agent/mibgroup/ip-mib/data_access/arp_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/arp_linux.c
@@ -14,68 +14,74 @@
 #include <arpa/inet.h>
 #include <linux/types.h>
 #include <asm/types.h>
-#ifdef HAVE_LINUX_RTNETLINK_H
-#include <linux/rtnetlink.h>
-#endif
-#ifdef NETSNMP_ENABLE_IPV6
-#define NIP6(addr) \
-        ntohs((addr).s6_addr16[0]), \
-        ntohs((addr).s6_addr16[1]), \
-        ntohs((addr).s6_addr16[2]), \
-        ntohs((addr).s6_addr16[3]), \
-        ntohs((addr).s6_addr16[4]), \
-        ntohs((addr).s6_addr16[5]), \
-        ntohs((addr).s6_addr16[6]), \
-        ntohs((addr).s6_addr16[7])
-#define NIP6_FMT "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x"
-#endif
 
-int _load_v4(netsnmp_container *container, int idx_offset);
-#ifdef NETSNMP_ENABLE_IPV6
-static int _load_v6(netsnmp_container *container, int idx_offset);
-#endif
-#ifdef HAVE_LINUX_RTNETLINK_H
-int get_translation_table_info (int sd, int *status, 
-                                char *buff, size_t size);
-int fillup_entry_info(netsnmp_arp_entry *entry,
-                      struct nlmsghdr *nlmp);
-#endif
-/**
- */
-int
-netsnmp_access_arp_container_arch_load(netsnmp_container *container)
+static int _load_v4(netsnmp_arp_access *access);
+
+netsnmp_arp_access *
+netsnmp_access_arp_create(u_int init_flags,
+                          NetsnmpAccessArpUpdate *update_hook,
+                          NetsnmpAccessArpGC *gc_hook,
+                          int *cache_timeout, int *cache_flags,
+                          char *cache_expired)
 {
-    int rc = 0, idx_offset = 0;
+    netsnmp_arp_access *access;
 
-    rc = _load_v4(container, idx_offset);
-    if(rc < 0) {
-        u_int flags = NETSNMP_ACCESS_ARP_FREE_KEEP_CONTAINER;
-        netsnmp_access_arp_container_free(container, flags);
+    access = SNMP_MALLOC_TYPEDEF(netsnmp_arp_access);
+    if (NULL == access) {
+        snmp_log(LOG_ERR,"malloc error in netsnmp_access_arp_create\n");
+        return NULL;
     }
 
-#if defined (NETSNMP_ENABLE_IPV6)
-    idx_offset = (rc < 0) ? 0 : rc;
+    access->arch_magic = NULL;
+    access->magic = NULL;
+    access->update_hook = update_hook;
+    access->gc_hook = gc_hook;
+    access->synchronized = 0;
 
-    rc = _load_v6(container, idx_offset);
-    if(rc < 0) {
-        u_int flags = NETSNMP_ACCESS_ARP_FREE_KEEP_CONTAINER;
-        netsnmp_access_arp_container_free(container, flags);
-    }
-#endif
+    if (cache_timeout != NULL)
+        *cache_timeout = 5;
+    if (cache_flags != NULL)
+        *cache_flags |= NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD
+                        | NETSNMP_CACHE_AUTO_RELOAD;
+    access->cache_expired = cache_expired;
 
-    /*
-     * return no errors (0) if we found any interfaces
-     */
-    if(rc > 0)
-        rc = 0;
+    return access;
+}
+
+int netsnmp_access_arp_delete(netsnmp_arp_access *access)
+{
+    if (NULL == access)
+        return 0;
+
+    netsnmp_access_arp_unload(access);
+    free(access);
+
+    return 0;
+}
+
+int netsnmp_access_arp_load(netsnmp_arp_access *access)
+{
+    int rc = 0;
+
+    access->generation++;
+    rc =_load_v4(access);
+    access->gc_hook(access);
+    access->synchronized = (rc == 0);
 
     return rc;
 }
 
+int netsnmp_access_arp_unload(netsnmp_arp_access *access)
+{
+    access->synchronized = 0;
+
+    return 0;
+}
+
 /**
  */
-int
-_load_v4(netsnmp_container *container, int idx_offset)
+static int
+_load_v4(netsnmp_arp_access *access)
 {
     FILE           *in;
     char            line[128];
@@ -85,7 +91,7 @@
     char           *arp_token;
     int             i;
 
-    netsnmp_assert(NULL != container);
+    netsnmp_assert(NULL != access);
 
 #define PROCFILE "/proc/net/arp"
     if (!(in = fopen(PROCFILE, "r"))) {
@@ -132,6 +138,7 @@
         /*
          * look up ifIndex
          */
+        entry->generation = access->generation;
         entry->if_index = netsnmp_access_interface_index_find(ifname);
         if(0 == entry->if_index) {
             snmp_log(LOG_ERR,"couldn't find ifIndex for '%s', skipping\n",
@@ -144,7 +151,7 @@
          * now that we've passed all the possible 'continue', assign
          * index offset.
          */
-        entry->ns_arp_index = ++idx_offset;
+        /* entry->ns_arp_index = ++idx_offset; */
 
         /*
          * parse ip addr
@@ -199,249 +206,9 @@
         /*
          * add entry to container
          */
-        if (CONTAINER_INSERT(container, entry) < 0)
-        {
-            DEBUGMSGTL(("access:arp:container","error with arp_entry: insert into container failed.\n"));
-            netsnmp_access_arp_entry_free(entry);
-            continue;
-        }
+        access->update_hook(access, entry);
     }
 
     fclose(in);
-    if( rc < 0 )
-        return rc;
-
-    return idx_offset;
-}
-
-#if defined (NETSNMP_ENABLE_IPV6)
-static int
-_load_v6(netsnmp_container *container, int idx_offset)
-{
-    char              buffer[16384];
-#if defined(HAVE_LINUX_RTNETLINK_H)
-    struct nlmsghdr   *nlmp;
-#endif
-    int               sd = 0;
-    int               status = 0;
-    int               rc = 0;
-    int               len, req_len;
-    netsnmp_arp_entry *entry;
-
-    netsnmp_assert(NULL != container);
-#if defined(HAVE_LINUX_RTNETLINK_H)
-    if((sd = socket (PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE)) < 0) {
-        snmp_log(LOG_ERR,"Unable to create netlink socket\n");
-        return -2;
-    }
-
-    if(get_translation_table_info (sd, &status, buffer, sizeof(buffer)) < 0) {
-       snmp_log(LOG_ERR,"Unable to fetch translation table info\n");
-       close(sd);
-       return -2;
-    }
-
-    for (nlmp = (struct nlmsghdr *)buffer; status > sizeof(*nlmp); ) {
-         len = nlmp->nlmsg_len;
-         req_len = len - sizeof(*nlmp);
-         if (req_len < 0 || len > status) {
-             snmp_log(LOG_ERR,"invalid length\n");
-             return -2;
-         }
-         if (!NLMSG_OK (nlmp, status)) {
-             snmp_log(LOG_ERR,"NLMSG not OK\n");
-             return -2;
-         }
-         entry = netsnmp_access_arp_entry_create();
-         if(NULL == entry) {
-            rc = -3;
-            break;
-         }
-         entry->ns_arp_index = ++idx_offset;
-         if(fillup_entry_info (entry, nlmp) < 0) {
-            DEBUGMSGTL(("access:arp:load_v6", "skipping netlink message that"
-                        " did not contain valid ARP information\n"));
-            netsnmp_access_arp_entry_free(entry);
-            status -= NLMSG_ALIGN(len);
-            nlmp = (struct nlmsghdr*)((char*)nlmp + NLMSG_ALIGN(len));
-            continue;
-         }
-         CONTAINER_INSERT(container, entry);
-         status -= NLMSG_ALIGN(len);
-         nlmp = (struct nlmsghdr*)((char*)nlmp + NLMSG_ALIGN(len));
-    }
-
-    close(sd);
-#endif
-    if(rc<0) {
-        return rc;
-    }
-
-    return idx_offset;
-}
-#if defined(HAVE_LINUX_RTNETLINK_H)
-int 
-get_translation_table_info (int sd, int *status, char *buff, size_t size)
-{
-    struct {
-                struct nlmsghdr n;
-                struct ndmsg r;
-                char   buf[1024];
-    } req;
-    struct rtattr   *rta;
-
-    memset(&req, 0, sizeof(req));
-    req.n.nlmsg_len = NLMSG_LENGTH (sizeof(struct ndmsg));
-    req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT;
-    req.n.nlmsg_type = RTM_GETNEIGH;
-
-    req.r.ndm_family = AF_INET6;
-    rta = (struct rtattr *)(((char *)&req) + NLMSG_ALIGN(req.n.nlmsg_len));
-    rta->rta_len = RTA_LENGTH(16);
-
-    if(send(sd, &req, req.n.nlmsg_len, 0) < 0) {
-       snmp_log(LOG_ERR,"Sending request failed\n");
-       return -1;
-    }
-    if((*status = recv(sd, buff, size, 0)) < 0) {
-       snmp_log(LOG_ERR,"Recieving request failed\n");
-       return -1;
-    }
-    if(*status == 0) {
-       snmp_log(LOG_ERR,"End of file\n");
-       return -1;
-    }
     return 0;
 }
-
-int
-fillup_entry_info(netsnmp_arp_entry *entry, struct nlmsghdr *nlmp)
-{
-    struct ndmsg   *rtmp;
-    struct in6_addr *in6p;
-    struct rtattr  *tb[NDA_MAX + 1], *rta;
-    size_t          in_len, out_len;
-    unsigned int    i;
-    int             length;
-    char            addr[40];
-    u_char         *buf;
-    u_char         *hwaddr;
-
-    rtmp = (struct ndmsg *) NLMSG_DATA(nlmp);
-    if (nlmp->nlmsg_type != RTM_NEWNEIGH) {
-        snmp_log(LOG_ERR, "Wrong netlink message type %d\n", nlmp->nlmsg_type);
-        return -1;
-    }
-
-    if (rtmp->ndm_state != NUD_NOARP) {
-        memset(tb, 0, sizeof(struct rtattr *) * (NDA_MAX + 1));
-        length = nlmp->nlmsg_len - NLMSG_LENGTH(sizeof(*rtmp));
-        if (length < 0) {
-            snmp_log(LOG_ERR, "netlink message length %d < %d is invalid\n",
-                     nlmp->nlmsg_len, (int)NLMSG_LENGTH(sizeof(*rtmp)));
-            return -1;
-        }
-        /*
-         * this is what the kernel-removed NDA_RTA define did 
-         */
-        rta = ((struct rtattr *) (((char *) (rtmp)) +
-                                  NLMSG_ALIGN(sizeof(struct ndmsg))));
-        while (RTA_OK(rta, length)) {
-            if (rta->rta_type <= NDA_MAX)
-                tb[rta->rta_type] = rta;
-            rta = RTA_NEXT(rta, length);
-        }
-        if (length) {
-            snmp_log(LOG_ERR, "Received uneven number of netlink"
-                        " messages - %d bytes remaining\n", length);
-            return -1;
-        }
-        /*
-         * Fill up the index
-         */
-        entry->if_index = rtmp->ndm_ifindex;
-        /*
-         * Fill up ip address 
-         */
-        if (tb[NDA_DST]) {
-            memset(&addr, '\0', sizeof(addr));
-            in6p = (struct in6_addr *) RTA_DATA(tb[NDA_DST]);
-            sprintf(addr, NIP6_FMT, NIP6(*in6p));
-            in_len = entry->arp_ipaddress_len =
-                sizeof(entry->arp_ipaddress);
-            netsnmp_assert(16 == in_len);
-            out_len = 0;
-            buf = entry->arp_ipaddress;
-            if (1 != netsnmp_hex_to_binary(&buf, &in_len,
-                                           &out_len, 0, addr, ":")) {
-                snmp_log(LOG_ERR, "error parsing '%s', skipping\n",
-                         entry->arp_ipaddress);
-                return -1;
-            }
-            netsnmp_assert(16 == out_len);
-            entry->arp_ipaddress_len = out_len;
-        }
-        if (tb[NDA_LLADDR]) {
-            memset(&addr, '\0', sizeof(addr));
-            hwaddr = RTA_DATA(tb[NDA_LLADDR]);
-            entry->arp_physaddress_len = RTA_PAYLOAD(tb[NDA_LLADDR]);
-            buf = entry->arp_physaddress;
-            for (i = 0; i < entry->arp_physaddress_len; i++)
-                entry->arp_physaddress[i] = hwaddr[i];
-        }
-
-        switch (rtmp->ndm_state) {
-        case NUD_INCOMPLETE:
-            entry->arp_state = INETNETTOMEDIASTATE_INCOMPLETE;
-            break;
-        case NUD_REACHABLE:
-        case NUD_PERMANENT:
-            entry->arp_state = INETNETTOMEDIASTATE_REACHABLE;
-            break;
-        case NUD_STALE:
-            entry->arp_state = INETNETTOMEDIASTATE_STALE;
-            break;
-        case NUD_DELAY:
-            entry->arp_state = INETNETTOMEDIASTATE_DELAY;
-            break;
-        case NUD_PROBE:
-            entry->arp_state = INETNETTOMEDIASTATE_PROBE;
-            break;
-        case NUD_FAILED:
-            entry->arp_state = INETNETTOMEDIASTATE_INVALID;
-            break;
-        case NUD_NONE:
-            entry->arp_state = INETNETTOMEDIASTATE_UNKNOWN;
-            break;
-        default:
-            snmp_log(LOG_ERR, "Unrecognized ARP entry state %d", rtmp->ndm_state);
-            break;
-        }
-
-        switch (rtmp->ndm_state) {
-        case NUD_INCOMPLETE:
-        case NUD_FAILED:
-        case NUD_NONE:
-            entry->arp_type = INETNETTOMEDIATYPE_INVALID;
-            break;
-        case NUD_REACHABLE:
-        case NUD_STALE:
-        case NUD_DELAY:
-        case NUD_PROBE:
-            entry->arp_type = INETNETTOMEDIATYPE_DYNAMIC;
-            break;
-        case NUD_PERMANENT:
-            entry->arp_type = INETNETTOMEDIATYPE_STATIC;
-            break;
-        default:
-            entry->arp_type = INETNETTOMEDIATYPE_LOCAL;
-            break;
-        }
-    } else {
-        return -1;              /* could not create data for this interface */
-    }
-
-    return 0;
-}
-#endif
-#endif
diff --git a/agent/mibgroup/ip-mib/data_access/arp_netlink.c b/agent/mibgroup/ip-mib/data_access/arp_netlink.c
new file mode 100644
index 0000000..2059c23
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/arp_netlink.c
@@ -0,0 +1,304 @@
+/*
+ *  Interface 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/arp.h>
+#include <net-snmp/data_access/interface.h>
+
+#include <errno.h>
+#include <sys/types.h>
+#include <linux/types.h>
+#include <linux/rtnetlink.h>
+
+
+static int fillup_entry_info(netsnmp_arp_entry *entry, struct nlmsghdr *h);
+static void netsnmp_access_arp_read_netlink(int fd, void *data);
+
+/**
+ */
+netsnmp_arp_access *
+netsnmp_access_arp_create(u_int init_flags,
+                          NetsnmpAccessArpUpdate *update_hook,
+                          NetsnmpAccessArpGC *gc_hook,
+                          int *cache_timeout, int *cache_flags,
+                          char *cache_expired)
+{
+    netsnmp_arp_access *access;
+
+    access = SNMP_MALLOC_TYPEDEF(netsnmp_arp_access);
+    if (NULL == access) {
+        snmp_log(LOG_ERR,"malloc error in netsnmp_access_arp_create\n");
+        return NULL;
+    }
+
+    access->arch_magic = NULL;
+    access->magic = NULL;
+    access->update_hook = update_hook;
+    access->gc_hook = gc_hook;
+    access->synchronized = 0;
+
+    if (cache_timeout != NULL)
+        *cache_timeout = 5;
+    if (cache_flags != NULL)
+        *cache_flags |= NETSNMP_CACHE_RESET_TIMER_ON_USE | NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD;
+    access->cache_expired = cache_expired;
+
+    DEBUGMSGTL(("access:netlink:arp", "create arp cache\n"));
+
+    return access;
+}
+
+int netsnmp_access_arp_delete(netsnmp_arp_access *access)
+{
+    if (NULL == access)
+        return 0;
+
+    netsnmp_access_arp_unload(access);
+    free(access);
+
+    return 0;
+}
+
+int netsnmp_access_arp_load(netsnmp_arp_access *access)
+{
+    int r, fd = (uintptr_t) access->arch_magic;
+    struct {
+        struct nlmsghdr n;
+        struct ndmsg r;
+    } req;
+
+    if (access->synchronized)
+        return 0;
+
+    if (fd == 0) {
+        struct sockaddr_nl sa;
+
+        fd = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
+        if (fd < 0) {
+            snmp_log(LOG_ERR,"netsnmp_access_arp_load: netlink socket create error\n");
+            return -1;
+        }
+        access->arch_magic = (void *)(uintptr_t)fd;
+
+        memset(&sa, 0, sizeof(sa));
+        sa.nl_family = AF_NETLINK;
+        sa.nl_groups = RTMGRP_NEIGH;
+        if (bind(fd, (struct sockaddr*) &sa, sizeof(sa)) < 0) {
+            snmp_log(LOG_ERR,"netsnmp_access_arp_load: netlink bind failed\n");
+            return -1;
+        }
+
+        if (register_readfd(fd, netsnmp_access_arp_read_netlink, access) != 0) {
+            snmp_log(LOG_ERR,"netsnmp_access_arp_load: error registering netlink socket\n");
+            return -1;
+        }
+    }
+
+    DEBUGMSGTL(("access:netlink:arp", "synchronizing arp table\n"));
+
+    access->generation++;
+
+    memset(&req, 0, sizeof(req));
+    req.n.nlmsg_len = sizeof(req);
+    req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT;
+    req.n.nlmsg_type = RTM_GETNEIGH;
+    req.r.ndm_family = AF_UNSPEC;
+
+    r = send(fd, &req, req.n.nlmsg_len, 0);
+    if (r < 0) {
+        snmp_log(LOG_ERR,"netsnmp_access_arp_refresh: send failed\n");
+        return -1;
+    }
+
+    while (!access->synchronized)
+        netsnmp_access_arp_read_netlink(fd, access);
+    access->gc_hook(access);
+
+    return 0;
+}
+
+int netsnmp_access_arp_unload(netsnmp_arp_access *access)
+{
+    int fd;
+
+    DEBUGMSGTL(("access:netlink:arp", "unload arp cache\n"));
+
+    fd = (uintptr_t) access->arch_magic;
+    if (fd > 0) {
+         unregister_readfd(fd);
+         close(fd);
+         access->arch_magic = NULL;
+	 access->synchronized = 0;
+    }
+    return 0;
+}
+
+static void netsnmp_access_arp_read_netlink(int fd, void *data)
+{
+    netsnmp_arp_access *access = (netsnmp_arp_access *) data;
+    netsnmp_arp_entry *entry;
+    char buf[16384];
+    struct nlmsghdr *h;
+    int r, len;
+
+    do {
+        r = recv(fd, buf, sizeof(buf), MSG_DONTWAIT);
+        if (r < 0) {
+            if (errno == EINTR)
+                continue;
+            if (errno == EAGAIN)
+                return;
+            snmp_log(LOG_WARNING, "netlink buffer overrun\n");
+            access->synchronized = 0;
+            if (access->cache_expired != NULL)
+		*access->cache_expired = 1;
+            return;
+        }
+    } while (0);
+    len = r;
+
+    for (h = (struct nlmsghdr *) buf; NLMSG_OK(h, len); h = NLMSG_NEXT(h, len)) {
+         if (h->nlmsg_type == NLMSG_DONE) {
+             access->synchronized = 1;
+             continue;
+         }
+
+         entry = netsnmp_access_arp_entry_create();
+         if (NULL == entry)
+             break;
+
+         DEBUGMSGTL(("access:netlink:arp", "arp netlink notification\n"));
+    
+         entry->generation = access->generation;
+         r = fillup_entry_info (entry, h);
+         if (r > 0) {
+             access->update_hook(access, entry);
+         } else {
+             if (r < 0) {
+                 NETSNMP_LOGONCE((LOG_ERR, "filling entry info failed\n"));
+                 DEBUGMSGTL(("access:netlink:arp", "filling entry info failed\n"));
+             }
+             netsnmp_access_arp_entry_free(entry);
+         }
+    }
+}
+
+static int
+fillup_entry_info(netsnmp_arp_entry *entry, struct nlmsghdr *nlmp)
+{
+    struct ndmsg   *rtmp;
+    struct rtattr  *tb[NDA_MAX + 1], *rta;
+    int             length;
+
+    rtmp = (struct ndmsg *) NLMSG_DATA(nlmp);
+    switch (nlmp->nlmsg_type) {
+    case RTM_NEWNEIGH:
+        if (rtmp->ndm_state == NUD_FAILED)
+            entry->flags = NETSNMP_ACCESS_ARP_ENTRY_FLAG_DELETE;
+        else
+            entry->flags = 0;
+        break;
+    case RTM_DELNEIGH:
+        entry->flags = NETSNMP_ACCESS_ARP_ENTRY_FLAG_DELETE;
+        break;
+    case RTM_GETNEIGH:
+        return 0;
+    default:
+        DEBUGMSGTL(("access:netlink:arp",
+                    "Wrong Netlink message type %d\n", nlmp->nlmsg_type));
+        return -1;
+    }
+
+    if (rtmp->ndm_state == NUD_NOARP) {
+        /* NUD_NOARP is for broadcast addresses and similar,
+         * drop them silently */
+        return 0;
+    }
+
+    memset(tb, 0, sizeof(struct rtattr *) * (NDA_MAX + 1));
+    length = nlmp->nlmsg_len - NLMSG_LENGTH(sizeof(*rtmp));
+    rta = ((struct rtattr *) (((char *) (rtmp)) + NLMSG_ALIGN(sizeof(struct ndmsg))));
+    while (RTA_OK(rta, length)) {
+        if (rta->rta_type <= NDA_MAX)
+            tb[rta->rta_type] = rta;
+        rta = RTA_NEXT(rta, length);
+    }
+
+    /*
+     * Fill up the index and addresses
+     */
+    entry->if_index = rtmp->ndm_ifindex;
+    if (tb[NDA_DST]) {
+        entry->arp_ipaddress_len = RTA_PAYLOAD(tb[NDA_DST]);
+        if (entry->arp_ipaddress_len > sizeof(entry->arp_ipaddress)) {
+            snmp_log(LOG_ERR, "netlink ip address length %d is too long\n",
+                     entry->arp_ipaddress_len);
+            return -1;
+        }
+        memcpy(entry->arp_ipaddress, RTA_DATA(tb[NDA_DST]),
+       entry->arp_ipaddress_len);
+    }
+    if (tb[NDA_LLADDR]) {
+        entry->arp_physaddress_len = RTA_PAYLOAD(tb[NDA_LLADDR]);
+        if (entry->arp_physaddress_len > sizeof(entry->arp_physaddress)) {
+            snmp_log(LOG_ERR, "netlink hw address length %d is too long\n",
+                     entry->arp_physaddress_len);
+            return -1;
+        }
+        memcpy(entry->arp_physaddress, RTA_DATA(tb[NDA_LLADDR]),
+               entry->arp_physaddress_len);
+    }
+
+    switch (rtmp->ndm_state) {
+    case NUD_INCOMPLETE:
+        entry->arp_state = INETNETTOMEDIASTATE_INCOMPLETE;
+        break;
+    case NUD_REACHABLE:
+    case NUD_PERMANENT:
+        entry->arp_state = INETNETTOMEDIASTATE_REACHABLE;
+        break;
+    case NUD_STALE:
+        entry->arp_state = INETNETTOMEDIASTATE_STALE;
+        break;
+    case NUD_DELAY:
+        entry->arp_state = INETNETTOMEDIASTATE_DELAY;
+        break;
+    case NUD_PROBE:
+        entry->arp_state = INETNETTOMEDIASTATE_PROBE;
+        break;
+    case NUD_FAILED:
+        entry->arp_state = INETNETTOMEDIASTATE_INVALID;
+        break;
+    case NUD_NONE:
+        entry->arp_state = INETNETTOMEDIASTATE_UNKNOWN;
+        break;
+    default:
+        snmp_log(LOG_ERR, "Unrecognized ARP entry state %d", rtmp->ndm_state);
+        break;
+    }
+
+    switch (rtmp->ndm_state) {
+    case NUD_INCOMPLETE:
+    case NUD_FAILED:
+    case NUD_NONE:
+        entry->arp_type = INETNETTOMEDIATYPE_INVALID;
+        break;
+    case NUD_REACHABLE:
+    case NUD_STALE:
+    case NUD_DELAY:
+    case NUD_PROBE:
+        entry->arp_type = INETNETTOMEDIATYPE_DYNAMIC;
+        break;
+    case NUD_PERMANENT:
+        entry->arp_type = INETNETTOMEDIATYPE_STATIC;
+        break;
+    default:
+        entry->arp_type = INETNETTOMEDIATYPE_LOCAL;
+        break;
+    }
+
+    return 1;
+}
diff --git a/agent/mibgroup/ip-mib/data_access/arp_sysctl.c b/agent/mibgroup/ip-mib/data_access/arp_sysctl.c
new file mode 100644
index 0000000..24e9cda
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/arp_sysctl.c
@@ -0,0 +1,330 @@
+/*
+ *  Interface 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/arp.h>
+#include <net-snmp/data_access/interface.h>
+
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/if_types.h>
+#include <net/route.h>
+#include <netinet/if_ether.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <errno.h>
+
+#if !defined(SA_SIZE) && !defined(RT_ROUNDUP)
+#define RT_ROUNDUP(a)  \
+	((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
+#endif
+
+static int _load_arp_table_from_sysctl(netsnmp_arp_access *);
+static int _load_ndp_table_from_sysctl(netsnmp_arp_access *);
+
+netsnmp_arp_access *
+netsnmp_access_arp_create(u_int init_flags,
+                          NetsnmpAccessArpUpdate *update_hook,
+                          NetsnmpAccessArpGC *gc_hook,
+                          int *cache_timeout, int *cache_flags,
+                          char *cache_expired)
+{
+    netsnmp_arp_access *access;
+
+    access = SNMP_MALLOC_TYPEDEF(netsnmp_arp_access);
+    if (NULL == access) {
+        snmp_log(LOG_ERR, "malloc error in netsnmp_access_arp_create\n");
+        return NULL;
+    }
+
+    access->arch_magic = NULL;
+    access->magic = NULL;
+    access->update_hook = update_hook;
+    access->gc_hook = gc_hook;
+    access->synchronized = 0;
+
+    if (cache_timeout != NULL)
+        *cache_timeout = 5;
+    if (cache_flags != NULL)
+        *cache_flags |= NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD
+                        | NETSNMP_CACHE_AUTO_RELOAD;
+    access->cache_expired = cache_expired;
+
+    return access;
+}
+
+int netsnmp_access_arp_delete(netsnmp_arp_access *access)
+{
+    if (NULL == access)
+        return 0;
+
+    netsnmp_access_arp_unload(access);
+    free(access);
+
+    return 0;
+}
+
+int netsnmp_access_arp_load(netsnmp_arp_access *access)
+{
+    int err = 0;
+
+    access->generation++;
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_load ipv4\n"));
+    err = _load_arp_table_from_sysctl(access);
+    if (err != 0) {
+        NETSNMP_LOGONCE((LOG_ERR,
+            "netsnmp_access_arp_ipv4 failed %d\n", err));
+        goto out;
+    }
+    access->gc_hook(access);
+    access->synchronized = (err == 0);
+
+#ifdef NETSNMP_ENABLE_IPV6
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_load ipv6\n"));
+    err = _load_ndp_table_from_sysctl(access);
+    if (err != 0) {
+        NETSNMP_LOGONCE((LOG_ERR,
+            "netsnmp_access_arp_ipv6 failed %d\n", err));
+        goto out;
+    }
+    access->gc_hook(access);
+    access->synchronized = (err == 0);
+#endif
+
+out:
+    return (err == 0 ? 0 : -1);
+}
+
+int netsnmp_access_arp_unload(netsnmp_arp_access *access)
+{
+    access->synchronized = 0;
+
+    return 0;
+}
+
+static int
+_load_arp_table_from_sysctl(netsnmp_arp_access *access)
+{
+    netsnmp_arp_entry *entry;
+    struct rt_msghdr *rtm;
+    struct sockaddr_inarp *sin2;
+    struct sockaddr_dl *sdl;
+    char *buf, *lim, *newbuf, *next;
+    int mib[6];
+    size_t needed;
+    int err, st;
+
+    netsnmp_assert(NULL != access);
+
+    mib[0] = CTL_NET;
+    mib[1] = PF_ROUTE;
+    mib[2] = 0;
+    mib[3] = AF_INET;
+    mib[4] = NET_RT_FLAGS;
+    mib[5] = RTF_LLINFO;
+
+    err = 0;
+    buf = newbuf = NULL;
+
+    /* The following logic was adapted from search(..) in usr.sbin/arp/arp.c */
+
+    if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) {
+        err = errno;
+        goto out;
+    }
+
+    /* Empty arp table. */
+    if (needed == 0)
+        goto out;
+
+    for (;;) {
+        newbuf = realloc(buf, needed);
+        if (newbuf == NULL) {
+            err = ENOMEM;
+            goto out;
+        }
+        buf = newbuf;
+        st = sysctl(mib, 6, buf, &needed, NULL, 0);
+        if (st == 0 || errno != ENOMEM)
+            break;
+        else
+            needed += needed / 8; /* XXX: why 8? */
+    }
+    if (st == -1) {
+        err = errno;
+        goto out;
+    }
+
+    lim = buf + needed;
+    for (next = buf; next < lim; next += rtm->rtm_msglen) {
+
+        rtm = (struct rt_msghdr *)next;
+        sin2 = (struct sockaddr_inarp*)(rtm + 1);
+#ifdef SA_SIZE
+        sdl = (struct sockaddr_dl*)((char *)sin2 + SA_SIZE(sin2));
+#else
+	sdl = (struct sockaddr_dl*)(void *)(RT_ROUNDUP(sin2->sin_len) + (char *)(void *)sin2);
+#endif
+
+        entry = netsnmp_access_arp_entry_create();
+        if (NULL == entry) {
+            err = ENOMEM;
+            break;
+        }
+
+        entry->generation = access->generation;
+        entry->if_index = rtm->rtm_index;
+
+        entry->arp_ipaddress_len = 4;
+
+        memcpy(entry->arp_ipaddress, &sin2->sin_addr.s_addr,
+            entry->arp_ipaddress_len);
+
+        /* HW Address */
+        entry->arp_physaddress_len = 6;
+        if (0 < sdl->sdl_alen &&
+            sdl->sdl_alen <= NETSNMP_ACCESS_ARP_PHYSADDR_BUF_SIZE) {
+            memcpy(entry->arp_physaddress, LLADDR(sdl), sdl->sdl_alen);
+            /* Process status */
+            /* XXX: setting this value for all states is wrong. */
+            entry->arp_state = INETNETTOMEDIASTATE_REACHABLE;
+        } else {
+            entry->arp_physaddress[0] = '\0';
+            entry->arp_state = INETNETTOMEDIASTATE_INCOMPLETE;
+        }
+
+        /* Process type */
+        /* XXX: more states should be handled here, probably.. */
+        if (rtm->rtm_rmx.rmx_expire == 0)
+            entry->arp_type = INETNETTOMEDIATYPE_STATIC;
+        else
+            entry->arp_type = INETNETTOMEDIATYPE_DYNAMIC;
+
+        access->update_hook(access, entry);
+
+    }
+
+out:
+    free(buf);
+    return err;
+}
+
+static int
+_load_ndp_table_from_sysctl(netsnmp_arp_access *access)
+{
+#if 1
+    netsnmp_arp_entry *entry;
+    struct rt_msghdr *rtm;
+    struct sockaddr_in6 *sin2;
+    struct sockaddr_dl *sdl;
+    size_t needed;
+    int err, mib[6], st;
+    char *buf, *lim, *newbuf, *next;
+
+    netsnmp_assert(NULL != access);
+
+    mib[0] = CTL_NET;
+    mib[1] = PF_ROUTE;
+    mib[2] = 0;
+    mib[3] = AF_INET6;
+    mib[4] = NET_RT_FLAGS;
+    mib[5] = RTF_LLINFO;
+
+    err = 0;
+    buf = newbuf = NULL;
+
+    if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) {
+        err = errno;
+        goto out;
+    }
+
+    /* Empty arp table. */
+    if (needed == 0)
+        goto out;
+
+    for (;;) {
+        newbuf = realloc(buf, needed);
+        if (newbuf == NULL) {
+            err = ENOMEM;
+            goto out;
+        }
+        buf = newbuf;
+        st = sysctl(mib, 6, buf, &needed, NULL, 0);
+        if (st == 0 || errno != ENOMEM)
+            break;
+        else
+            needed += needed / 8; /* XXX: why 8? */
+    }
+    if (st == -1) {
+        err = errno;
+        goto out;
+    }
+
+    lim = buf + needed;
+    for (next = buf; next < lim; next += rtm->rtm_msglen) {
+
+        rtm = (struct rt_msghdr *)next;
+        sin2 = (struct sockaddr_in6*)(rtm + 1);
+#ifdef SA_SIZE
+        sdl = (struct sockaddr_dl*)((char *)sin2 + SA_SIZE(sin2));
+#else
+	sdl = (struct sockaddr_dl*)(void *)(RT_ROUNDUP(sin2->sin6_len) + (char *)(void *)sin2);
+#endif
+
+        if (!(rtm->rtm_flags & RTF_HOST) ||
+            IN6_IS_ADDR_MULTICAST(&sin2->sin6_addr))
+            continue;
+
+        entry = netsnmp_access_arp_entry_create();
+        if (NULL == entry) {
+            err = ENOMEM;
+            break;
+        }
+
+        entry->generation = access->generation;
+        entry->if_index = rtm->rtm_index;
+
+        entry->arp_ipaddress_len = 16;
+
+        memcpy(entry->arp_ipaddress, &sin2->sin6_addr.s6_addr,
+            entry->arp_ipaddress_len);
+
+        /* HW Address */
+        entry->arp_physaddress_len = sdl->sdl_alen;
+        if (0 < sdl->sdl_alen &&
+            sdl->sdl_alen <= NETSNMP_ACCESS_ARP_PHYSADDR_BUF_SIZE) {
+            memcpy(entry->arp_physaddress, LLADDR(sdl), sdl->sdl_alen);
+            /* Process status */
+            /* XXX: setting this value for all states is wrong. */
+            entry->arp_state = INETNETTOMEDIASTATE_REACHABLE;
+        } else {
+            entry->arp_physaddress[0] = '\0';
+            entry->arp_state = INETNETTOMEDIASTATE_INCOMPLETE;
+        }
+
+        /* Process type */
+        /* XXX: more states should be handled here, probably.. */
+        if (rtm->rtm_rmx.rmx_expire == 0)
+            entry->arp_type = INETNETTOMEDIATYPE_STATIC;
+        else
+            entry->arp_type = INETNETTOMEDIATYPE_DYNAMIC;
+
+        access->update_hook(access, entry);
+
+    }
+
+out:
+    free(buf);
+    return err;
+#else
+    return 0;
+#endif
+}
diff --git a/agent/mibgroup/ip-mib/data_access/defaultrouter.h b/agent/mibgroup/ip-mib/data_access/defaultrouter.h
index a4dfbb1..49b9927 100644
--- a/agent/mibgroup/ip-mib/data_access/defaultrouter.h
+++ b/agent/mibgroup/ip-mib/data_access/defaultrouter.h
@@ -20,6 +20,8 @@
 config_require(ip-mib/data_access/defaultrouter_common)
 #if defined( linux )
 config_require(ip-mib/data_access/defaultrouter_linux)
+#elif defined( freebsd4 ) || defined( netbsd5 ) || defined( openbsd ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-mib/data_access/defaultrouter_sysctl)
 #else
 /*
  * couldn't determine the correct file!
diff --git a/agent/mibgroup/ip-mib/data_access/defaultrouter_sysctl.c b/agent/mibgroup/ip-mib/data_access/defaultrouter_sysctl.c
new file mode 100644
index 0000000..dc46eb8
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/defaultrouter_sysctl.c
@@ -0,0 +1,230 @@
+/*
+ *  Interface MIB architecture support
+ *
+ * $Id:$
+ */
+#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/defaultrouter.h>
+
+#include "ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h"
+
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <errno.h>
+#include <unistd.h>
+
+#if !defined(SA_SIZE) && !defined(RT_ROUNDUP)
+#define RT_ROUNDUP(a)  \
+        ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
+#endif
+
+/**---------------------------------------------------------------------*/
+/*
+ * local static prototypes
+ */
+static int _load_defaultrouter_from_sysctl(netsnmp_container *, int);
+
+static int idx_offset;
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_defaultrouter_entry_init(netsnmp_defaultrouter_entry *entry)
+{
+    /*
+     * init
+     */
+    return 0;
+}
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_defaultrouter_container_load(netsnmp_container *container,
+                                          u_int load_flags)
+{
+    int err;
+
+    err = 0;
+    idx_offset = 0;
+
+    DEBUGMSGTL(("access:defaultrouter:entry:arch", "load\n"));
+    if (NULL == container) {
+        snmp_log(LOG_ERR,
+            "netsnmp_arch_defaultrouter_container_load: container invalid\n");
+        return 1;
+    }
+
+    err = _load_defaultrouter_from_sysctl(container, AF_INET);
+    if (err != 0) {
+        u_int flags = NETSNMP_ACCESS_DEFAULTROUTER_FREE_KEEP_CONTAINER;
+        netsnmp_access_defaultrouter_container_free(container, flags);
+        goto out;
+    }
+
+#ifdef NETSNMP_ENABLE_IPV6
+    err = _load_defaultrouter_from_sysctl(container, AF_INET6);
+    if (err != 0) {
+        u_int flags = NETSNMP_ACCESS_DEFAULTROUTER_FREE_KEEP_CONTAINER;
+        netsnmp_access_defaultrouter_container_free(container, flags);
+        goto out;
+    }
+#endif
+
+out:
+    return err;
+}
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+static int
+_load_defaultrouter_from_sysctl(netsnmp_container *container, int family)
+{
+    netsnmp_defaultrouter_entry *entry;
+    struct rt_msghdr *rtm;
+    struct sockaddr *dst_sa, *gw_sa;
+    char *buf, *lim, *newbuf, *next;
+    char address[NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE];
+    int mib[6];
+    size_t address_len, needed;
+    int address_type, err, preference, st;
+
+    netsnmp_assert(NULL != container);
+
+    mib[0] = CTL_NET;
+    mib[1] = PF_ROUTE;
+    mib[2] = 0;
+    mib[3] = family;
+    mib[4] = NET_RT_DUMP;
+    mib[5] = 0;
+
+    err = 0;
+
+    buf = newbuf = NULL;
+
+    if (family == AF_INET) {
+        address_len = 4;
+        address_type = INETADDRESSTYPE_IPV4;
+#ifdef NETSNMP_ENABLE_IPV6
+    } else if (family == AF_INET6) {
+        address_len = 16;
+        address_type = INETADDRESSTYPE_IPV6;
+#endif
+    } else {
+        err = EINVAL;
+        goto out;
+    }
+
+    if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) {
+        err = errno;
+        goto out;
+    }
+
+    /* Empty arp table. */
+    if (needed == 0)
+        goto out;
+
+    for (;;) {
+        newbuf = realloc(buf, needed);
+        if (newbuf == NULL) {
+            err = ENOMEM;
+            goto out;
+        }
+        buf = newbuf;
+        st = sysctl(mib, sizeof(mib) / sizeof(mib[0]), buf, &needed, NULL, 0);
+        if (st == 0 || errno != ENOMEM)
+            break;
+        else
+            needed += needed / 8; /* XXX: why 8? */
+    }
+    if (st == -1) {
+        err = errno;
+        goto out;
+    }
+
+    lim = buf + needed;
+    for (next = buf; next < lim; next += rtm->rtm_msglen) {
+#ifdef NETSNMP_ENABLE_IPV6
+	struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
+#endif
+
+        rtm = (struct rt_msghdr *)next;
+
+        if (!(rtm->rtm_addrs & RTA_GATEWAY))
+            continue;
+
+        dst_sa = (struct sockaddr*)(rtm + 1);
+#ifdef SA_SIZE
+        gw_sa = (struct sockaddr*)(SA_SIZE(dst_sa) + (char*)dst_sa);
+#else
+        gw_sa = (struct sockaddr*)(RT_ROUNDUP(dst_sa->sa_len) + (char*)dst_sa);
+#endif
+
+        switch (family) {
+        case AF_INET:
+            if (((struct sockaddr_in*)dst_sa)->sin_addr.s_addr != INADDR_ANY)
+                continue;
+	    memcpy(address, &((struct sockaddr_in*)gw_sa)->sin_addr.s_addr,
+	           address_len);
+            break;
+#ifdef NETSNMP_ENABLE_IPV6
+        case AF_INET6:
+            if (memcmp(((struct sockaddr_in6*)dst_sa)->sin6_addr.s6_addr,
+			&in6addr_any, sizeof in6addr_any) != 0)
+		continue; /* XXX: need to determine qualifying criteria for
+                       * default gateways in IPv6. */
+            memcpy(address, &((struct sockaddr_in6*)dst_sa)->sin6_addr.s6_addr,
+		   address_len);
+            break;
+#endif
+        default:
+            break;
+        }
+
+        entry = netsnmp_access_defaultrouter_entry_create();
+        if (NULL == entry) {
+            err = ENOMEM;
+            break;
+        }
+
+        /* XXX: this is wrong (hardcoding the router preference to medium). */
+        preference = 0;
+
+        entry->ns_dr_index    = ++idx_offset;
+        entry->dr_addresstype = address_type;
+        entry->dr_address_len = address_len;
+        memcpy(entry->dr_address, address, sizeof(address));
+        entry->dr_if_index = rtm->rtm_index;
+        entry->dr_lifetime    = rtm->rtm_rmx.rmx_expire;
+        entry->dr_preference  = preference;
+
+        if (CONTAINER_INSERT(container, entry) < 0) {
+            DEBUGMSGTL(("access:arp:container",
+                        "error with defaultrouter_entry: "
+                        "insert into container failed.\n"));
+            netsnmp_access_defaultrouter_entry_free(entry);
+            goto out;
+        }
+    }
+
+out:
+    free(buf);
+    return err;
+}
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress.h b/agent/mibgroup/ip-mib/data_access/ipaddress.h
index 9cf8181..d79c7c2 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress.h
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress.h
@@ -22,6 +22,8 @@
 config_require(ip-mib/data_access/ipaddress_linux)
 #elif defined( solaris2 )
 config_require(ip-mib/data_access/ipaddress_solaris2)
+#elif defined( freebsd7 ) || defined( netbsd5 ) || defined( openbsd4 ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-mib/data_access/ipaddress_sysctl)
 #else
 config_error(the ipaddress data access library is not available in this environment.)
 #endif
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_common.c b/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
index b9f3c67..a663985 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
@@ -12,6 +12,19 @@
 
 #include "ip-mib/ipAddressTable/ipAddressTable_constants.h"
 
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_child_of(ipaddress_common, libnetsnmpmibs)
+
+netsnmp_feature_child_of(ipaddress_common_copy_utilities, ipaddress_common)
+netsnmp_feature_child_of(ipaddress_entry_copy, ipaddress_common)
+netsnmp_feature_child_of(ipaddress_entry_update, ipaddress_common)
+netsnmp_feature_child_of(ipaddress_prefix_copy, ipaddress_common_copy_utilities)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_IPADDRESS_ENTRY_COPY
+netsnmp_feature_require(ipaddress_arch_entry_copy)
+#endif /* NETSNMP_FEATURE_REQUIRE_IPADDRESS_ENTRY_COPY */
+
 /**---------------------------------------------------------------------*/
 /*
  * local static prototypes
@@ -247,6 +260,7 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_ENTRY_UPDATE
 /**
  * update an old ipaddress_entry from a new one
  *
@@ -329,7 +343,9 @@
 
     return changed;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_ENTRY_UPDATE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_ENTRY_COPY
 /**
  * copy an  ipaddress_entry
  *
@@ -361,12 +377,14 @@
     
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_ENTRY_COPY */
 
 /**---------------------------------------------------------------------*/
 /*
  * Utility routines
  */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_PREFIX_COPY
 /**
  * copy the prefix portion of an ip address
  */
@@ -392,6 +410,7 @@
 
     return pfx_len;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_PREFIX_COPY */
 
 
 /**
@@ -422,6 +441,50 @@
     return len;
 }
 
+in_addr_t netsnmp_ipaddress_ipv4_mask(int len)
+{
+    int i = 0, m = 0x80;
+    in_addr_t mask;
+    unsigned char *mp = (unsigned char *)&mask;
+
+    if (len < 0 || len > 32) abort();
+
+    memset(mp, 0, sizeof(mask));
+
+    while (len >= 8) {
+        mp[i] = 0xFF;
+	len -= 8;
+	i++;
+    }
+    while (len) {
+        mp[i] |= m;
+	m >>= 1;
+	len--;
+    }
+    return mask;
+}
+
+int
+netsnmp_ipaddress_ipv6_prefix_len(struct in6_addr mask)
+{
+    int i, len = 0;
+    unsigned char *mp = (unsigned char *)&mask.s6_addr;
+
+    for (i = 0; i < 16; i++)
+	if (mp[i] == 0xFF) len += 8;
+	else break;
+
+    if (i == 16)
+	return len;
+
+    while(0x80 & mp[i]) {
+        ++len;
+        mp[i] <<= 1;
+    }
+
+    return len;
+}
+
 
 /**
  */
@@ -454,6 +517,7 @@
     return memcmp(lh->ia_address, rh->ia_address, lh->ia_address_len);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_COMMON_COPY_UTILITIES
 int
 netsnmp_ipaddress_flags_copy(u_long *ipAddressPrefixAdvPreferredLifetime,
                              u_long *ipAddressPrefixAdvValidLifetime,
@@ -498,4 +562,5 @@
     }
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_COMMON_COPY_UTILITIES */
 
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
index f281bb6..6025f05 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
@@ -4,6 +4,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "mibII/mibII_common.h"
 
@@ -20,6 +21,8 @@
 
 #include "ipaddress_ioctl.h"
 
+netsnmp_feature_child_of(ipadress_ioctl_entry_copy, ipaddress_common)
+
 static void _print_flags(short flags);
 
 #define LIST_TOKEN "ioctl_extras"
@@ -86,6 +89,7 @@
     netsnmp_remove_list_node(&entry->arch_data, LIST_TOKEN);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_IOCTL_ENTRY_COPY
 /**
  * copy ioctl extras
  *
@@ -122,6 +126,7 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_IOCTL_ENTRY_COPY */
 
 /**
  * load ipv4 address via ioctl
@@ -159,6 +164,14 @@
 
         DEBUGMSGTL(("access:ipaddress:container",
                     " interface %d, %s\n", i, ifrp->ifr_name));
+
+        if (AF_INET != ifrp->ifr_addr.sa_family) {
+            DEBUGMSGTL(("access:ipaddress:container",
+                        " skipping %s; non AF_INET family %d\n",
+                        ifrp->ifr_name, ifrp->ifr_addr.sa_family));
+            continue;
+        }
+
         /*
          */
         entry = netsnmp_access_ipaddress_entry_create();
@@ -183,7 +196,6 @@
         /*
          * set indexes
          */
-        netsnmp_assert(AF_INET == ifrp->ifr_addr.sa_family);
         si = (struct sockaddr_in *) &ifrp->ifr_addr;
         entry->ia_address_len = sizeof(si->sin_addr.s_addr);
         ipval = si->sin_addr.s_addr;
@@ -545,6 +557,91 @@
     return 0;
 }
 
+
+/**
+ * Add/remove IPv6 address using ioctl.
+ * @retval  0 : no error
+ * @retval -1 : bad parameter
+ * @retval -2 : couldn't create socket
+ * @retval -3 : ioctl failed
+ */
+int
+_netsnmp_ioctl_ipaddress_v6(netsnmp_ipaddress_entry * entry, int operation)
+{
+#ifdef linux
+    /*
+     * From linux/ipv6.h. It cannot be included because it collides
+     * with netinet/in.h
+     */
+    struct in6_ifreq {
+            struct in6_addr ifr6_addr;
+            uint32_t        ifr6_prefixlen;
+            int             ifr6_ifindex;
+    };
+
+    struct in6_ifreq               ifrq;
+    int                            rc, fd = -1;
+
+    DEBUGMSGT(("access:ipaddress:set", "_netsnmp_ioctl_ipaddress_set_v6 started\n"));
+
+    if (NULL == entry)
+        return -1;
+
+    netsnmp_assert(16 == entry->ia_address_len);
+
+    fd = socket(AF_INET6, SOCK_DGRAM, 0);
+    if(fd < 0) {
+        snmp_log(LOG_ERR,"couldn't create socket\n");
+        return -2;
+    }
+    memset(&ifrq, 0, sizeof(ifrq));
+    ifrq.ifr6_ifindex = entry->if_index;
+    ifrq.ifr6_prefixlen = 64;
+
+    memcpy(&ifrq.ifr6_addr, entry->ia_address,
+           entry->ia_address_len);
+
+    rc = ioctl(fd, operation, &ifrq);
+    close(fd);
+    if(rc < 0) {
+        snmp_log(LOG_ERR,"error setting address: %s(%d)\n", strerror(errno), errno);
+        return -3;
+    }
+    DEBUGMSGT(("access:ipaddress:set", "_netsnmp_ioctl_ipaddress_set_v6 finished\n"));
+    return 0;
+#else
+    /* we don't support ipv6 on this platform (yet) */
+    return -3;
+#endif
+
+}
+
+/**
+ *
+ * @retval  0 : no error
+ * @retval -1 : bad parameter
+ * @retval -2 : couldn't create socket
+ * @retval -3 : ioctl failed
+ */
+int
+_netsnmp_ioctl_ipaddress_set_v6(netsnmp_ipaddress_entry * entry)
+{
+    return _netsnmp_ioctl_ipaddress_v6(entry, SIOCSIFADDR);
+}
+
+/**
+ *
+ * @retval  0 : no error
+ * @retval -1 : bad parameter
+ * @retval -2 : couldn't create socket
+ * @retval -3 : ioctl failed
+ */
+int
+_netsnmp_ioctl_ipaddress_delete_v6(netsnmp_ipaddress_entry * entry)
+{
+    return _netsnmp_ioctl_ipaddress_v6(entry, SIOCDIFADDR);
+}
+
 /**
  * get the interface count and populate the ifc_buf
  *
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h
index fc6e771..f2b7847 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h
@@ -22,6 +22,11 @@
 _netsnmp_ioctl_ipaddress_remove_v4(netsnmp_ipaddress_entry * entry);
 
 int
+_netsnmp_ioctl_ipaddress_set_v6(netsnmp_ipaddress_entry * entry);
+int
+_netsnmp_ioctl_ipaddress_remove_v6(netsnmp_ipaddress_entry * entry);
+
+int
 netsnmp_access_ipaddress_ioctl_get_interface_count(int sd, struct ifconf * ifc);
 
 struct address_flag_info
@@ -50,6 +55,8 @@
 
 int
 _netsnmp_ioctl_ipaddress_delete_v4(netsnmp_ipaddress_entry * entry);
+int
+_netsnmp_ioctl_ipaddress_delete_v6(netsnmp_ipaddress_entry * entry);
 
 #ifdef __cplusplus
 }
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c b/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
index 8b34e86..f1cef0a 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
@@ -4,6 +4,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "mibII/mibII_common.h"
 
@@ -18,6 +19,15 @@
 #include <errno.h>
 #include <sys/ioctl.h>
 
+netsnmp_feature_require(prefix_info)
+netsnmp_feature_require(find_prefix_info)
+
+netsnmp_feature_child_of(ipaddress_arch_entry_copy, ipaddress_common)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_IPADDRESS_ARCH_ENTRY_COPY
+netsnmp_feature_require(ipaddress_ioctl_entry_copy)
+#endif /* NETSNMP_FEATURE_REQUIRE_IPADDRESS_ARCH_ENTRY_COPY */
+
 #if defined (NETSNMP_ENABLE_IPV6)
 #include <linux/types.h>
 #include <asm/types.h>
@@ -83,6 +93,7 @@
      */
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY
 /*
  * copy arch specific storage
  */
@@ -106,6 +117,7 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY */
 
 /*
  * create a new entry
@@ -116,12 +128,14 @@
     if (NULL == entry)
         return -1;
 
-    if (4 != entry->ia_address_len) {
-        DEBUGMSGT(("access:ipaddress:create", "only ipv4 supported\n"));
+    if (4 == entry->ia_address_len) {
+        return _netsnmp_ioctl_ipaddress_set_v4(entry);
+    } else if (16 == entry->ia_address_len) {
+        return _netsnmp_ioctl_ipaddress_set_v6(entry);
+    } else {
+        DEBUGMSGT(("access:ipaddress:create", "wrong length of IP address\n"));
         return -2;
     }
-
-    return _netsnmp_ioctl_ipaddress_set_v4(entry);
 }
 
 /*
@@ -133,12 +147,14 @@
     if (NULL == entry)
         return -1;
 
-    if (4 != entry->ia_address_len) {
+    if (4 == entry->ia_address_len) {
+        return _netsnmp_ioctl_ipaddress_delete_v4(entry);
+    } else if (16 == entry->ia_address_len) {
+        return _netsnmp_ioctl_ipaddress_delete_v6(entry);
+    } else {
         DEBUGMSGT(("access:ipaddress:create", "only ipv4 supported\n"));
         return -2;
     }
-
-    return _netsnmp_ioctl_ipaddress_delete_v4(entry);
 }
 
 /**
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c b/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c
index 3979037..e2485e3 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c
@@ -3,6 +3,7 @@
  *
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -14,6 +15,8 @@
 #include "kernel_sunos5.h"
 #include "mibII/mibII_common.h"
 
+netsnmp_feature_child_of(ipaddress_arch_entry_copy, ipaddress_common)
+
 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);
@@ -43,6 +46,7 @@
      */
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY
 /*
  * copy arch specific storage
  */
@@ -55,6 +59,7 @@
      */
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY */
 
 /*
  * create a new entry
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_sysctl.c b/agent/mibgroup/ip-mib/data_access/ipaddress_sysctl.c
new file mode 100644
index 0000000..0a6221b
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_sysctl.c
@@ -0,0 +1,272 @@
+/*
+ *  Interface MIB architecture support
+ *
+ * $Id$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include "mibII/mibII_common.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 "ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_constants.h"
+#include "mibgroup/util_funcs.h"
+
+#include <errno.h>
+#include <sys/ioctl.h>
+#include <arpa/inet.h>
+
+netsnmp_feature_require(prefix_info)
+netsnmp_feature_require(find_prefix_info)
+
+netsnmp_feature_child_of(ipaddress_arch_entry_copy, ipaddress_common)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_IPADDRESS_ARCH_ENTRY_COPY
+netsnmp_feature_require(ipaddress_ioctl_entry_copy)
+#endif /* NETSNMP_FEATURE_REQUIRE_IPADDRESS_ARCH_ENTRY_COPY */
+
+#include "ipaddress_ioctl.h"
+#ifdef SUPPORT_PREFIX_FLAGS
+extern prefix_cbx *prefix_head_list;
+#endif
+
+#define ROUNDUP(a) \
+  ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_ipaddress_entry_init(netsnmp_ipaddress_entry *entry)
+{
+    /*
+     * init ipv4 stuff
+     */
+    /* if (NULL == netsnmp_ioctl_ipaddress_entry_init(entry)) */
+    /*     return -1; */
+
+    /*
+     * init ipv6 stuff
+     *   so far, we can just share the ipv4 stuff, so nothing to do
+     */
+    
+    return 0;
+}
+
+/*
+ * cleanup arch specific storage
+ */
+void
+netsnmp_arch_ipaddress_entry_cleanup(netsnmp_ipaddress_entry *entry)
+{
+    /*
+     * cleanup ipv4 stuff
+     */
+    /*netsnmp_ioctl_ipaddress_entry_cleanup(entry); */
+
+    /*
+     * cleanup ipv6 stuff
+     *   so far, we can just share the ipv4 stuff, so nothing to do
+     */
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY
+/*
+ * copy arch specific storage
+ */
+int
+netsnmp_arch_ipaddress_entry_copy(netsnmp_ipaddress_entry *lhs,
+                                  netsnmp_ipaddress_entry *rhs)
+{
+    int rc;
+
+    rc = 0;
+
+    /*
+     * copy ipv4 stuff
+     */
+    /*rc = netsnmp_ioctl_ipaddress_entry_copy(lhs, rhs); */
+    if (rc)
+        return rc;
+
+    /*
+     * copy ipv6 stuff
+     *   so far, we can just share the ipv4 stuff, so nothing to do
+     */
+
+    return rc;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY */
+
+/*
+ * create a new entry
+ */
+int
+netsnmp_arch_ipaddress_create(netsnmp_ipaddress_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    if (4 == entry->ia_address_len) {
+        return -1;
+    } else if (16 == entry->ia_address_len) {
+        return -1;
+    } else {
+        DEBUGMSGT(("access:ipaddress:create", "wrong length of IP address\n"));
+        return -2;
+    }
+}
+
+/*
+ * create a new entry
+ */
+int
+netsnmp_arch_ipaddress_delete(netsnmp_ipaddress_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    if (4 == entry->ia_address_len) {
+        return -2;
+    } else if (16 == entry->ia_address_len) {
+        return -3;
+    } else {
+        DEBUGMSGT(("access:ipaddress:create", "only ipv4 supported\n"));
+        return -2;
+    }
+}
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_ipaddress_container_load(netsnmp_container *container,
+                                      u_int load_flags)
+{
+    netsnmp_ipaddress_entry *entry = NULL;
+    u_char *if_list = NULL, *cp;
+    size_t if_list_size = 0;
+    int sysctl_oid[] = { CTL_NET, PF_ROUTE, 0, 0, NET_RT_IFLIST, 0 };
+    struct ifa_msghdr *ifa;
+    struct sockaddr *a;
+    int amask;
+    int rc = 0;
+    int idx_offset = 0;
+
+    DEBUGMSGTL(("access:ipaddress:container:sysctl",
+                "load (flags %u)\n", load_flags));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for interface\n");
+        return -1;
+    }
+
+    if (sysctl(sysctl_oid, sizeof(sysctl_oid)/sizeof(int), 0,
+               &if_list_size, 0, 0) == -1) {
+        snmp_log(LOG_ERR, "could not get interface info (size)\n");
+        return -2;
+    }
+
+    if_list = (u_char*)malloc(if_list_size);
+    if (if_list == NULL) {
+        snmp_log(LOG_ERR, "could not allocate memory for interface info "
+                 "(%zu bytes)\n", if_list_size);
+        return -3;
+    } else {
+        DEBUGMSGTL(("access:ipaddress:container:sysctl",
+                    "allocated %zu bytes for if_list\n", if_list_size));
+    }
+
+    if (sysctl(sysctl_oid, sizeof(sysctl_oid)/sizeof(int), if_list,
+               &if_list_size, 0, 0) == -1) {
+        snmp_log(LOG_ERR, "could not get interface info\n");
+        free(if_list);
+        return -2;
+    }
+
+    /* pass 2: walk addresses */
+    for (cp = if_list; cp < if_list + if_list_size; cp += ifa->ifam_msglen) {
+        ifa = (struct ifa_msghdr *) cp;
+        int rtax;
+
+        if (ifa->ifam_type != RTM_NEWADDR)
+            continue;
+
+        DEBUGMSGTL(("access:ipaddress:container:sysctl",
+                    "received 0x%x in RTM_NEWADDR for ifindex %u\n",
+                    ifa->ifam_addrs, ifa->ifam_index));
+
+        entry = netsnmp_access_ipaddress_entry_create();
+        if (entry == NULL) {
+            rc = -3;
+            break;
+        }
+
+        a = (struct sockaddr *) (ifa + 1);
+        entry->ia_status = IPADDRESSSTATUSTC_UNKNOWN;
+        entry->ia_origin = IPADDRESSORIGINTC_OTHER;
+	entry->ia_address_len = 0;
+        for (amask = ifa->ifam_addrs, rtax = 0; amask != 0; amask >>= 1, rtax++) {
+            if ((amask & 1) != 0) {
+                entry->ns_ia_index = ++idx_offset;
+                entry->if_index = ifa->ifam_index;
+                DEBUGMSGTL(("access:ipaddress:container:sysctl",
+                            "%d: a=%p, sa_len=%d, sa_family=0x%x\n",
+                            (int)entry->if_index, a, a->sa_len, a->sa_family));
+
+                if (a->sa_family == AF_INET || a->sa_family == 0) {
+                    struct sockaddr_in *a4 = (struct sockaddr_in *)a;
+		    char str[128];
+		    DEBUGMSGTL(("access:ipaddress:container:sysctl",
+		                "IPv4 addr %s\n", inet_ntop(AF_INET, &a4->sin_addr.s_addr, str, 128)));
+                    if (rtax == RTAX_IFA) {
+			entry->ia_address_len = 4;
+                        memcpy(entry->ia_address, &a4->sin_addr.s_addr, entry->ia_address_len);
+		    }
+                    else if (rtax == RTAX_NETMASK)
+                        entry->ia_prefix_len = netsnmp_ipaddress_ipv4_prefix_len(a4->sin_addr.s_addr);
+                }
+                else if (a->sa_family == AF_INET6) {
+                    struct sockaddr_in6 *a6 = (struct sockaddr_in6 *)a;
+		    char str[128];
+		    DEBUGMSGTL(("access:ipaddress:container:sysctl",
+		                "IPv6 addr %s\n", inet_ntop(AF_INET6, &a6->sin6_addr.s6_addr, str, 128)));
+                    if (rtax == RTAX_IFA) {
+			entry->ia_address_len = 16;
+                        memcpy(entry->ia_address, &a6->sin6_addr, entry->ia_address_len);
+		    }
+                    else if (rtax == RTAX_NETMASK) {
+                        entry->ia_prefix_len = netsnmp_ipaddress_ipv6_prefix_len(a6->sin6_addr);
+			DEBUGMSGTL(("access:ipaddress:container:sysctl",
+			            "prefix_len=%d\n", entry->ia_prefix_len));
+		    }
+                }
+                a = (struct sockaddr *) ( ((char *) a) + ROUNDUP(a->sa_len) );
+            }
+        }
+	if (entry->ia_address_len == 0) {
+	    DEBUGMSGTL(("access:ipaddress:container:sysctl",
+	                "entry skipped\n"));
+	    netsnmp_access_ipaddress_entry_free(entry);
+	}
+	else if (CONTAINER_INSERT(container, entry) < 0) {
+            DEBUGMSGTL(("access:ipaddress:container","error with ipaddress_entry: insert into container failed.\n"));
+            netsnmp_access_ipaddress_entry_free(entry);
+            continue;
+        }
+    }
+
+    if (if_list != NULL)
+        free(if_list);
+
+    return 0;
+}
diff --git a/agent/mibgroup/ip-mib/data_access/scalars_common.h b/agent/mibgroup/ip-mib/data_access/scalars_common.h
index 2f0a63a..ebea21d 100644
--- a/agent/mibgroup/ip-mib/data_access/scalars_common.h
+++ b/agent/mibgroup/ip-mib/data_access/scalars_common.h
@@ -19,6 +19,8 @@
  */
 #if defined( linux )
 config_require(ip-mib/data_access/scalars_linux)
+#elif defined( freebsd4 ) || defined( netbsd5 ) || defined( openbsd4 ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-mib/data_access/scalars_sysctl)
 #else
 /*
  * couldn't determine the correct file!
@@ -26,4 +28,3 @@
  */
 config_require(ip-mib/data_access/scalars-unknown-arch)
 #endif
-
diff --git a/agent/mibgroup/ip-mib/data_access/scalars_linux.c b/agent/mibgroup/ip-mib/data_access/scalars_linux.c
index 6ba356b..85e912a 100644
--- a/agent/mibgroup/ip-mib/data_access/scalars_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/scalars_linux.c
@@ -5,11 +5,16 @@
  */
 #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/ip_scalars.h>
 
+netsnmp_feature_require(register_num_file_instance)
+
 static const char ipfw_name[] = "/proc/sys/net/ipv4/conf/all/forwarding";
+static const char ipttl_name[] = "/proc/sys/net/ipv4/ip_default_ttl";
 static const char ipfw6_name[] = "/proc/sys/net/ipv6/conf/all/forwarding";
+static const char iphop6_name[] = "/proc/sys/net/ipv6/conf/all/hop_limit";
 
 int
 netsnmp_arch_ip_scalars_ipForwarding_get(u_long *value)
@@ -80,6 +85,70 @@
 }
 
 int
+netsnmp_arch_ip_scalars_ipDefaultTTL_get(u_long *value)
+{
+    FILE *filep;
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+
+    filep = fopen(ipttl_name, "r");
+    if (NULL == filep) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "could not open %s\n",
+                    ipttl_name));
+        return -2;
+    }
+
+    rc = fscanf(filep, "%lu", value);
+    fclose(filep);
+    if (1 != rc) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "could not read %s\n",
+                    ipttl_name));
+        return -3;
+    }
+
+    if ((0 == *value) || (255 < *value)) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "unexpected value %ld in %s\n",
+                    *value, ipttl_name));
+        return -4;
+    }
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipDefaultTTL_set(u_long value)
+{
+    FILE *filep;
+    int rc;
+
+    if (value == 0 || value > 255) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "bad value %ld for %s\n",
+                    value, ipttl_name));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    filep = fopen(ipttl_name, "w");
+    if (NULL == filep) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "could not open %s\n",
+                    ipttl_name));
+        return SNMP_ERR_RESOURCEUNAVAILABLE;
+    }
+
+    rc = fprintf(filep, "%ld", value);
+    fclose(filep);
+    if (1 != rc) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "could not write %s\n",
+                    ipttl_name));
+        return SNMP_ERR_GENERR;
+    }
+
+    return 0;
+}
+
+int
 netsnmp_arch_ip_scalars_ipv6IpForwarding_get(u_long *value)
 {
     FILE *filep;
@@ -146,3 +215,80 @@
 
     return 0;
 }
+
+int
+netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_get(u_long *value)
+{
+    FILE *filep;
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+
+    filep = fopen(iphop6_name, "r");
+    if (NULL == filep) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "could not open %s\n",
+                    iphop6_name));
+        return -2;
+    }
+
+    rc = fscanf(filep, "%lu", value);
+    fclose(filep);
+    if (1 != rc) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "could not read %s\n",
+                    iphop6_name));
+        return -3;
+    }
+
+    if ((0 == *value) || (255 < *value)) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "unexpected value %ld in %s\n",
+                    *value, iphop6_name));
+        return -4;
+    }
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_set(u_long value)
+{
+    FILE *filep;
+    int rc;
+
+    if (value == 0 || value > 255) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "bad value %ld for %s\n",
+                    value, iphop6_name));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    filep = fopen(iphop6_name, "w");
+    if (NULL == filep) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "could not open %s\n",
+                    iphop6_name));
+        return SNMP_ERR_RESOURCEUNAVAILABLE;
+    }
+
+    rc = fprintf(filep, "%ld", value);
+    fclose(filep);
+    if (1 != rc) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "could not write %s\n",
+                    iphop6_name));
+        return SNMP_ERR_GENERR;
+    }
+
+    return 0;
+}
+
+void
+netsnmp_arch_ip_scalars_register_handlers(void)
+{
+    static oid ipReasmTimeout_oid[] = { 1, 3, 6, 1, 2, 1, 4, 13, 0 };
+
+    netsnmp_register_num_file_instance
+        ("ipReasmTimeout",
+         ipReasmTimeout_oid, OID_LENGTH(ipReasmTimeout_oid),
+         "/proc/sys/net/ipv4/ipfrag_time", ASN_INTEGER,
+         HANDLER_CAN_RONLY, NULL, NULL);
+
+}
diff --git a/agent/mibgroup/ip-mib/data_access/scalars_sysctl.c b/agent/mibgroup/ip-mib/data_access/scalars_sysctl.c
new file mode 100644
index 0000000..569c743
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/scalars_sysctl.c
@@ -0,0 +1,291 @@
+/*
+ *  IP-MIB architecture support
+ *
+ * $Id$
+ */
+#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/ip_scalars.h>
+
+#include <sys/types.h>
+#include <sys/protosw.h>
+#include <sys/sysctl.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* XXX: the values passed to netsnmp_arch_ip_scalars(..) may or may not be
+ * portable to the other BSDs -- it seems to be portable back to FreeBSD 4.x
+ * (Darwin 10.8.0) at least.
+ */
+
+static int
+netsnmp_arch_ip_scalars_sysctl(const char *access_module,
+                               int mib[], size_t mib_len,
+                               u_long *old_value, u_long *new_value)
+{
+    int newint, oldint;
+    size_t needed;
+    int rc;
+
+    needed = sizeof(oldint);
+    if (new_value)
+        newint = *new_value;
+
+    rc = sysctl(mib, mib_len, &oldint, &needed,
+                new_value ? &newint : NULL, (new_value ? sizeof(newint) : 0));
+    if (rc == -1) {
+        DEBUGMSGTL((access_module, "sysctl %s failed - %s\n",
+                    (new_value == NULL ? "get" : "set"),
+                    strerror(errno)));
+    }
+    *old_value = oldint;
+    return rc;
+}
+
+int ipDefaultTTL_mib[] = {
+    CTL_NET,
+    PF_INET,
+    IPPROTO_IP,
+    IPCTL_DEFTTL
+};
+
+int ipForwarding_mib[] = {
+    CTL_NET,
+    PF_INET,
+    IPPROTO_IP,
+    IPCTL_FORWARDING
+};
+
+int ipv6IpDefaultHopLimit_mib[] = {
+    CTL_NET,
+    PF_INET6,
+    IPPROTO_IP,
+    IPV6CTL_DEFHLIM
+};
+
+int ipv6IpForwarding_mib[] = {
+    CTL_NET,
+    PF_INET6,
+    IPPROTO_IP,
+    IPV6CTL_FORWARDING
+};
+
+#define MIB_LEN(a)		(sizeof(a) / sizeof(*a))
+
+#define IPDEFAULTTTL_LEN	MIB_LEN(ipDefaultTTL_mib)
+#define IPFORWARDING_LEN	MIB_LEN(ipForwarding_mib)
+#define IPV6IPDEFAULTHOPLIMIT_LEN	MIB_LEN(ipv6IpDefaultHopLimit_mib)
+#define IPV6IPFORWARDING_LEN	MIB_LEN(ipv6IpForwarding_mib)
+
+int
+netsnmp_arch_ip_scalars_ipDefaultTTL_get(u_long *value)
+{
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipDefaultTTL",
+                                        ipDefaultTTL_mib,
+                                        IPDEFAULTTTL_LEN,
+                                        value, NULL);
+    if (rc != 0)
+        return -2;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipDefaultTTL_set(u_long value)
+{
+    int rc;
+
+    if (1 == value)
+        ;
+    else if (2 == value)
+        value = 0;
+    else {
+        DEBUGMSGTL(("access:ipDefaultTTL", "bad value %ld\n",
+                    value));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipForwarding",
+                                        ipForwarding_mib,
+                                        IPFORWARDING_LEN,
+                                        NULL, &value);
+    if (rc != 0)
+        return -1;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipForwarding_get(u_long *value)
+{
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipForwarding",
+                                        ipForwarding_mib,
+                                        IPFORWARDING_LEN,
+                                        value, NULL);
+    if (rc != 0)
+        return -2;
+
+    /* On FreeBSD 7.2 at least, the value passed to the sysctl can be coerced
+     * into a non-zero value; convert it into a value that's sane per the
+     * IP-MIB definition.
+     */
+    if (*value != 0)
+        *value = 1;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipForwarding_set(u_long value)
+{
+    int rc;
+
+    if (1 == value)
+        ;
+    else if (2 == value)
+        value = 0;
+    else {
+        DEBUGMSGTL(("access:ipForwarding", "bad value %ld\n",
+                    value));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipForwarding",
+                                        ipForwarding_mib,
+                                        IPFORWARDING_LEN,
+                                        NULL, &value);
+    if (rc != 0)
+        return -1;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_get(u_long *value)
+{
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipv6IpDefaultHopLimit",
+                                        ipv6IpDefaultHopLimit_mib,
+                                        IPV6IPDEFAULTHOPLIMIT_LEN,
+                                        value, NULL);
+    if (rc != 0)
+        return -2;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_set(u_long value)
+{
+    int rc;
+
+    if (1 == value)
+        ;
+    else if (2 == value)
+        value = 0;
+    else {
+        DEBUGMSGTL(("access:ipv6IpDefaultHopLimit", "bad value %ld\n",
+                    value));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipForwarding",
+                                        ipv6IpDefaultHopLimit_mib,
+                                        IPV6IPDEFAULTHOPLIMIT_LEN,
+                                        NULL, &value);
+    if (rc != 0)
+        return -1;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipv6IpForwarding_get(u_long *value)
+{
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipv6IpForwarding",
+                                        ipv6IpForwarding_mib,
+                                        IPV6IPFORWARDING_LEN,
+                                        value, NULL);
+    if (rc != 0)
+        return -2;
+
+    /* On FreeBSD 7.2 at least, the value passed to the sysctl can be coerced
+     * into a non-zero value; convert it into a value that's sane per the
+     * IP-MIB definition.
+     */
+    if (*value != 0)
+        *value = 1;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipv6IpForwarding_set(u_long value)
+{
+    int rc;
+
+    if (1 == value)
+        ;
+    else if (2 == value)
+        value = 0;
+    else {
+        DEBUGMSGTL(("access:ipForwarding", "bad value %ld\n",
+                    value));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipv6IpForwarding",
+                                        ipv6IpForwarding_mib,
+                                        IPV6IPFORWARDING_LEN,
+                                        NULL, &value);
+    if (rc != 0)
+        return -1;
+
+    return 0;
+}
+
+static long ipReasmTimeout_val;
+
+void
+netsnmp_arch_ip_scalars_register_handlers(void)
+{
+    static oid ipReasmTimeout_oid[] = { 1, 3, 6, 1, 2, 1, 4, 13, 0 };
+
+    /* 
+     * This value is static at compile time on FreeBSD; it really should be a
+     * probed via either sysctl or sysconf at runtime as the compiled value and
+     * the runtime value compiled into the kernel can vary.
+     *
+     * Please refer to sys/protosw.h for more details on what this value is (in
+     * particular PR_SLOWHZ).
+     */
+    ipReasmTimeout_val = IPFRAGTTL / PR_SLOWHZ;
+
+    netsnmp_register_long_instance("ipReasmTimeout",
+                                   ipReasmTimeout_oid,
+                                   OID_LENGTH(ipReasmTimeout_oid),
+                                   &ipReasmTimeout_val, NULL);
+}
diff --git a/agent/mibgroup/ip-mib/data_access/systemstats.h b/agent/mibgroup/ip-mib/data_access/systemstats.h
index 28810e3..514807a 100644
--- a/agent/mibgroup/ip-mib/data_access/systemstats.h
+++ b/agent/mibgroup/ip-mib/data_access/systemstats.h
@@ -22,6 +22,8 @@
 config_require(ip-mib/data_access/systemstats_linux)
 #elif defined( solaris2 )
 config_require(ip-mib/data_access/systemstats_solaris2)
+#elif defined( freebsd7 ) || defined( netbsd5 ) || defined( openbsd4 ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-mib/data_access/systemstats_sysctl)
 #else
 config_error(the systemstats data access library is not available in this environment.)
 #endif
diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_sysctl.c b/agent/mibgroup/ip-mib/data_access/systemstats_sysctl.c
new file mode 100644
index 0000000..a1ca16d
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/systemstats_sysctl.c
@@ -0,0 +1,791 @@
+/*
+ *  ipSystemStatsTable and ipIfStatsTable interface MIB architecture support
+ *
+ * $Id$
+ */
+#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 "../ipSystemStatsTable/ipSystemStatsTable.h"
+
+#if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
+#define _KERNEL 1
+#define _I_DEFINED_KERNEL
+#endif
+#if NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES
+#endif
+
+#include <sys/types.h>
+#include <dirent.h>
+#include <ctype.h>
+
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <sys/protosw.h>
+
+#include <net/if.h>
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/ip_var.h>
+#if HAVE_NETINET6_IP6_VAR_H
+#include <netinet6/ip6_var.h>
+#endif
+#ifndef freebsd7
+#include <netinet6/in6_var.h>
+#endif
+
+#ifdef darwin
+
+/* This struct is in netinet6/ip6_var.h which Apple for obscure reasons
+ * do not distribute as part of /usr/include :-(
+ */
+
+struct	ip6stat {
+	u_quad_t ip6s_total;		/* total packets received */
+	u_quad_t ip6s_tooshort;		/* packet too short */
+	u_quad_t ip6s_toosmall;		/* not enough data */
+	u_quad_t ip6s_fragments;	/* fragments received */
+	u_quad_t ip6s_fragdropped;	/* frags dropped(dups, out of space) */
+	u_quad_t ip6s_fragtimeout;	/* fragments timed out */
+	u_quad_t ip6s_fragoverflow;	/* fragments that exceeded limit */
+	u_quad_t ip6s_forward;		/* packets forwarded */
+	u_quad_t ip6s_cantforward;	/* packets rcvd for unreachable dest */
+	u_quad_t ip6s_redirectsent;	/* packets forwarded on same net */
+	u_quad_t ip6s_delivered;	/* datagrams delivered to upper level*/
+	u_quad_t ip6s_localout;		/* total ip packets generated here */
+	u_quad_t ip6s_odropped;		/* lost packets due to nobufs, etc. */
+	u_quad_t ip6s_reassembled;	/* total packets reassembled ok */
+	u_quad_t ip6s_fragmented;	/* datagrams sucessfully fragmented */
+	u_quad_t ip6s_ofragments;	/* output fragments created */
+	u_quad_t ip6s_cantfrag;		/* don't fragment flag was set, etc. */
+	u_quad_t ip6s_badoptions;	/* error in option processing */
+	u_quad_t ip6s_noroute;		/* packets discarded due to no route */
+	u_quad_t ip6s_badvers;		/* ip6 version != 6 */
+	u_quad_t ip6s_rawout;		/* total raw ip packets generated */
+	u_quad_t ip6s_badscope;		/* scope error */
+	u_quad_t ip6s_notmember;	/* don't join this multicast group */
+	u_quad_t ip6s_nxthist[256];	/* next header history */
+	u_quad_t ip6s_m1;		/* one mbuf */
+	u_quad_t ip6s_m2m[32];		/* two or more mbuf */
+	u_quad_t ip6s_mext1;		/* one ext mbuf */
+	u_quad_t ip6s_mext2m;		/* two or more ext mbuf */
+	u_quad_t ip6s_exthdrtoolong;	/* ext hdr are not continuous */
+	u_quad_t ip6s_nogif;		/* no match gif found */
+	u_quad_t ip6s_toomanyhdr;	/* discarded due to too many headers */
+
+	/*
+	 * statistics for improvement of the source address selection
+	 * algorithm:
+	 * XXX: hardcoded 16 = # of ip6 multicast scope types + 1
+	 */
+	/* number of times that address selection fails */
+	u_quad_t ip6s_sources_none;
+	/* number of times that an address on the outgoing I/F is chosen */
+	u_quad_t ip6s_sources_sameif[16];
+	/* number of times that an address on a non-outgoing I/F is chosen */
+	u_quad_t ip6s_sources_otherif[16];
+	/*
+	 * number of times that an address that has the same scope
+	 * from the destination is chosen.
+	 */
+	u_quad_t ip6s_sources_samescope[16];
+	/*
+	 * number of times that an address that has a different scope
+	 * from the destination is chosen.
+	 */
+	u_quad_t ip6s_sources_otherscope[16];
+	/* number of times that an deprecated address is chosen */
+	u_quad_t ip6s_sources_deprecated[16];
+
+	u_quad_t ip6s_forward_cachehit;
+	u_quad_t ip6s_forward_cachemiss;
+};
+
+#endif /* darwin*/
+
+static int _systemstats_v4(netsnmp_container* container, u_int load_flags);
+
+#if defined (NETSNMP_ENABLE_IPV6)
+static int _systemstats_v6(netsnmp_container* container, u_int load_flags);
+#endif
+
+static int ncpus;
+
+void
+netsnmp_access_systemstats_arch_init(void)
+{
+    int    ncpu_mib[]  = { CTL_HW, HW_NCPU };
+    size_t siz = sizeof(ncpus);
+    if (sysctl(ncpu_mib, 2, &ncpus, &siz, NULL, 0) < 0) {
+	snmp_log_perror("hw.ncpu");
+        ncpus = 1;
+    }
+}
+
+/*
+ *
+ * @retval  0 success
+ * @retval -1 no container specified
+ * @retval -2 could not open file
+ * @retval -3 could not create entry (probably malloc)
+ * @retval -4 file format error
+ */
+int
+netsnmp_access_systemstats_container_arch_load(netsnmp_container* container,
+                                             u_int load_flags)
+{
+    int rc1;
+#if defined (NETSNMP_ENABLE_IPV6)
+    int rc2;
+#endif
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for access_systemstats_\n");
+        return -1;
+    }
+    
+    /*
+     * load v4 and v6 stats. Even if one fails, try the other.
+     * If they have the same rc, return it. if the differ, return
+     * the smaller one. No log messages, since each individual function
+     * would have logged its own message.
+     */
+    rc1 = _systemstats_v4(container, load_flags);
+#if defined (NETSNMP_ENABLE_IPV6)
+    rc2 = _systemstats_v6(container, load_flags);
+    if ((rc1 == rc2) || (rc1 < rc2))
+        return rc1;
+        
+    return rc2;
+#else
+    return rc1;
+#endif
+}
+
+/*
+ * Based on load_flags, load ipSystemStatsTable or ipIfStatsTable for ipv4 entries. 
+ */
+#ifdef __NetBSD__
+
+static int
+_systemstats_v4(netsnmp_container* container, u_int load_flags)
+{
+    netsnmp_systemstats_entry *entry = NULL;
+    uint64_t ipstat[IP_NSTATS];
+    size_t len = sizeof(ipstat);
+
+    if (sysctlbyname("net.inet.ip.stats", &ipstat, &len, NULL, 0) < 0) {
+	NETSNMP_LOGONCE((LOG_ERR, "Cannot sysctlbyname net.inet.ip.stats\n"));
+	return -2;
+    }
+
+    DEBUGMSGTL(("access:systemstats:container:arch", "load v4 (flags %x)\n",
+                load_flags));
+
+    netsnmp_assert(container != NULL); /* load function shoulda checked this */
+
+    if (load_flags & NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE) {
+        /* we do not support ipIfStatsTable for ipv4 */
+        return 0;
+    }
+
+    entry = netsnmp_access_systemstats_entry_create(1, 0,
+		"ipSystemStatsTable.ipv4");
+    if(NULL == entry) {
+	snmp_log(LOG_ERR, "systemstats_v4: cannot create entry\n");
+	netsnmp_access_systemstats_container_free(container,
+						  NETSNMP_ACCESS_SYSTEMSTATS_FREE_NOFLAGS);
+	return -3;
+    }
+
+    /*
+     * OK - we've now got (or created) the data structure for
+     *      this systemstats, including any "static" information.
+     * Now parse the rest of the line (i.e. starting from 'stats')
+     *      to extract the relevant statistics, and populate
+     *      data structure accordingly.
+     */
+
+    entry->stats.HCInReceives.low = ipstat[IP_STAT_TOTAL] & 0xffffffff;
+    entry->stats.HCInReceives.high = ipstat[IP_STAT_TOTAL] >> 32;
+    entry->stats.InHdrErrors = ipstat[IP_STAT_BADSUM]
+		    + ipstat[IP_STAT_TOOSHORT] + ipstat[IP_STAT_TOOSMALL]
+	            + ipstat[IP_STAT_BADHLEN] + ipstat[IP_STAT_BADLEN];
+    entry->stats.InAddrErrors = ipstat[IP_STAT_CANTFORWARD];
+    entry->stats.HCOutForwDatagrams.low = ipstat[IP_STAT_FORWARD] & 0xffffffff;
+    entry->stats.HCOutForwDatagrams.high = ipstat[IP_STAT_FORWARD] >> 32;
+    entry->stats.InUnknownProtos = ipstat[IP_STAT_NOPROTO];
+    entry->stats.InDiscards = ipstat[IP_STAT_FRAGDROPPED];
+    entry->stats.HCInDelivers.low = ipstat[IP_STAT_DELIVERED] & 0xffffffff;
+    entry->stats.HCInDelivers.high = ipstat[IP_STAT_DELIVERED] >> 32;
+    entry->stats.HCOutRequests.low = ipstat[IP_STAT_LOCALOUT] & 0xffffffff;
+    entry->stats.HCOutRequests.high = ipstat[IP_STAT_LOCALOUT] >> 32;
+    entry->stats.HCOutDiscards.low = ipstat[IP_STAT_ODROPPED] & 0xffffffff;
+    entry->stats.HCOutDiscards.high = ipstat[IP_STAT_ODROPPED] >> 32;
+    entry->stats.HCOutNoRoutes.low = ipstat[IP_STAT_NOGIF] & 0xffffffff;
+    entry->stats.HCOutNoRoutes.high = ipstat[IP_STAT_NOGIF] >> 32;
+    /* entry->stats. = scan_vals[12]; / * ReasmTimeout */
+    entry->stats.ReasmReqds = ipstat[IP_STAT_FRAGMENTS];
+    entry->stats.ReasmOKs = ipstat[IP_STAT_REASSEMBLED];
+    entry->stats.ReasmFails = ipstat[IP_STAT_FRAGDROPPED]
+		    + ipstat[IP_STAT_FRAGTIMEOUT];
+    entry->stats.HCOutFragOKs.low = ipstat[IP_STAT_FRAGMENTS] & 0xffffffff;
+    entry->stats.HCOutFragOKs.high = ipstat[IP_STAT_FRAGMENTS] >> 32;
+    entry->stats.HCOutFragFails.low = ipstat[IP_STAT_CANTFRAG] & 0xffffffff;
+    entry->stats.HCOutFragFails.high = ipstat[IP_STAT_CANTFRAG] >> 32;
+    entry->stats.HCOutFragCreates.low = ipstat[IP_STAT_OFRAGMENTS] & 0xffffffff;
+    entry->stats.HCOutFragCreates.high = ipstat[IP_STAT_OFRAGMENTS] >> 32;
+
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INUNKNOWNPROTOS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_DISCONTINUITYTIME] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REFRESHRATE] = 1;
+
+    /*
+     * add to container
+     */
+    if (CONTAINER_INSERT(container, entry) < 0)
+    {
+	snmp_log(LOG_ERR, "error with systemstats_v4: insert into container failed.\n");
+	netsnmp_access_systemstats_entry_free(entry);
+    }
+
+    return 0;
+}
+
+
+#if defined (NETSNMP_ENABLE_IPV6)
+
+static int
+_systemstats_v6_load_systemstats(netsnmp_container* container, u_int load_flags)
+{
+    netsnmp_systemstats_entry *entry = NULL;
+    uint64_t ipstat[IP6_NSTATS];
+    size_t len = sizeof(ipstat);
+
+    if (sysctlbyname("net.inet6.ip6.stats", &ipstat, &len, NULL, 0) < 0) {
+	NETSNMP_LOGONCE((LOG_ERR, "Cannot sysctlbyname net.inet6.ip6.stats\n"));
+	return -2;
+    }
+
+    DEBUGMSGTL(("access:systemstats:container:arch", "load v6 (flags %x)\n",
+                load_flags));
+
+    netsnmp_assert(container != NULL); /* load function shoulda checked this */
+
+    entry = netsnmp_access_systemstats_entry_create(2, 0,
+		"ipSystemStatsTable.ipv6");
+    if(NULL == entry) {
+	snmp_log(LOG_ERR, "systemstats_v6_load_systemstats: cannot create entry\n");
+	netsnmp_access_systemstats_container_free(container,
+						  NETSNMP_ACCESS_SYSTEMSTATS_FREE_NOFLAGS);
+	return -3;
+    }
+
+    /*
+     * OK - we've now got (or created) the data structure for
+     *      this systemstats, including any "static" information.
+     */
+
+    entry->stats.HCInReceives.low = ipstat[IP6_STAT_TOTAL] & 0xffffffff;
+    entry->stats.HCInReceives.high = ipstat[IP6_STAT_TOTAL] >> 32;
+    entry->stats.InHdrErrors = ipstat[IP6_STAT_BADOPTIONS]
+		    + ipstat[IP6_STAT_TOOSHORT] + ipstat[IP6_STAT_TOOSMALL]
+		    + ipstat[IP6_STAT_TOOMANYHDR] + ipstat[IP6_STAT_EXTHDRTOOLONG];
+    entry->stats.InAddrErrors = ipstat[IP6_STAT_CANTFORWARD];
+    entry->stats.HCOutForwDatagrams.low = ipstat[IP6_STAT_FORWARD] & 0xffffffff;
+    entry->stats.HCOutForwDatagrams.high = ipstat[IP6_STAT_FORWARD] >> 32;
+    entry->stats.InDiscards = ipstat[IP6_STAT_FRAGDROPPED];
+    entry->stats.HCInDelivers.low = ipstat[IP6_STAT_DELIVERED] & 0xffffffff;
+    entry->stats.HCInDelivers.high = ipstat[IP6_STAT_DELIVERED] >> 32;
+    entry->stats.HCOutRequests.low = ipstat[IP6_STAT_LOCALOUT] & 0xffffffff;
+    entry->stats.HCOutRequests.high = ipstat[IP6_STAT_LOCALOUT] >> 32;
+    entry->stats.HCOutDiscards.low = ipstat[IP6_STAT_ODROPPED] & 0xffffffff;
+    entry->stats.HCOutDiscards.high = ipstat[IP6_STAT_ODROPPED] >> 32;
+    entry->stats.HCOutNoRoutes.low = ipstat[IP6_STAT_NOGIF] & 0xffffffff;
+    entry->stats.HCOutNoRoutes.high = ipstat[IP6_STAT_NOGIF] >> 32;
+    /* entry->stats. = scan_vals[12]; / * ReasmTimeout */
+    entry->stats.ReasmReqds = ipstat[IP6_STAT_FRAGMENTS];
+    entry->stats.ReasmOKs = ipstat[IP6_STAT_REASSEMBLED];
+    entry->stats.ReasmFails = ipstat[IP6_STAT_FRAGDROPPED]
+		    + ipstat[IP6_STAT_FRAGTIMEOUT];
+    entry->stats.HCOutFragOKs.low = ipstat[IP6_STAT_FRAGMENTS] & 0xffffffff;
+    entry->stats.HCOutFragOKs.high = ipstat[IP6_STAT_FRAGMENTS] >> 32;
+    entry->stats.HCOutFragFails.low = ipstat[IP6_STAT_CANTFRAG] & 0xffffffff;
+    entry->stats.HCOutFragFails.high = ipstat[IP6_STAT_CANTFRAG] >> 32;
+    entry->stats.HCOutFragCreates.low = ipstat[IP6_STAT_OFRAGMENTS] & 0xffffffff;
+    entry->stats.HCOutFragCreates.high = ipstat[IP6_STAT_OFRAGMENTS] >> 32;
+
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_DISCONTINUITYTIME] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REFRESHRATE] = 1;
+
+    /*
+     * add to container
+     */
+    if (CONTAINER_INSERT(container, entry) < 0)
+    {
+	snmp_log(LOG_ERR, "systemstats_v6_load_systemstats: cannot insert entry\n");
+	DEBUGMSGTL(("access:systemstats:container","error with systemstats_entry: insert into container failed.\n"));
+	netsnmp_access_systemstats_entry_free(entry);
+    }
+
+    return 0;
+}
+
+
+/*
+ * load ipIfStatsTable for ipv6 entries
+ */
+static int 
+_systemstats_v6_load_ifstats(netsnmp_container* container, u_int load_flags)
+{
+    struct if_nameindex *ifs = if_nameindex();
+    int ix;
+    int rc = 0;
+
+    for (ix = 0; ifs[ix].if_index; ix++) {
+	struct in6_ifstat *ifs6;
+	struct in6_ifreq ifr;
+	int s;
+
+	memset(&ifr, 0, sizeof(ifr));
+	strncpy(ifr.ifr_name, ifs[ix].if_name, sizeof(ifr.ifr_name)-1);
+	if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
+	    rc = -1;
+	    break;
+	}
+	if (ioctl(s, SIOCGIFSTAT_IN6, (caddr_t)&ifr) < 0) {
+	    rc = -2;
+	    close(s);
+	    break;
+	}
+	close(s);
+	ifs6 = &ifr.ifr_ifru.ifru_stat;
+    }
+    if_freenameindex(ifs);
+    return rc;
+}
+#endif
+
+#else
+
+static int
+_systemstats_v4(netsnmp_container* container, u_int load_flags)
+{
+    netsnmp_systemstats_entry *entry = NULL;
+#ifdef __DragonFly__
+    size_t len = ncpus*sizeof(struct ip_stats);
+    struct ip_stats *ipstat = malloc(len);
+    int c;
+#else
+    size_t len = sizeof(struct ipstat);
+    struct ipstat *ipstat = malloc(len);
+#endif
+    int mib[] = { CTL_NET, PF_INET, IPPROTO_IP, IPCTL_STATS };
+
+    if (sysctl(mib, sizeof(mib) / sizeof(mib[0]), ipstat, &len, NULL, 0) == -1) {
+	snmp_log_perror("Cannot sysctlbyname net.inet.ip.stats");
+	free(ipstat);
+	return -2;
+    }
+
+    DEBUGMSGTL(("access:systemstats:container:arch", "load v4 (flags %x)\n",
+                load_flags));
+
+    netsnmp_assert(container != NULL); /* load function shoulda checked this */
+
+    if (load_flags & NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE) {
+        /* we do not support ipIfStatsTable for ipv4 */
+	free(ipstat);
+        return 0;
+    }
+
+    entry = netsnmp_access_systemstats_entry_create(1, 0,
+		"ipSystemStatsTable.ipv4");
+    if(NULL == entry) {
+	netsnmp_access_systemstats_container_free(container,
+						  NETSNMP_ACCESS_SYSTEMSTATS_FREE_NOFLAGS);
+	free(ipstat);
+	return -3;
+    }
+
+    /*
+     * OK - we've now got (or created) the data structure for
+     *      this systemstats, including any "static" information.
+     * Now parse the rest of the line (i.e. starting from 'stats')
+     *      to extract the relevant statistics, and populate
+     *      data structure accordingly.
+     */
+
+#ifdef dragonfly
+    for (c = 1; c < ncpus; c++) {
+	int i, n = sizeof(struct ip_stats)/sizeof(u_long);
+	u_long *up = (u_long *)ipstat;
+	u_long *cp = (u_long *)(ipstat+c);
+	for (i = 0; i < n; i++) {
+	    *up += *cp;
+	    up++;
+	    cp++;
+	}
+    }
+#endif
+    entry->stats.HCInReceives.low = ipstat->ips_total & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCInReceives.high = ipstat->ips_total >> 32;
+#endif
+    entry->stats.InHdrErrors = ipstat->ips_badsum + ipstat->ips_tooshort
+		            + ipstat->ips_toosmall + ipstat->ips_badhlen
+			    + ipstat->ips_badlen;
+    entry->stats.InAddrErrors = ipstat->ips_cantforward;
+    entry->stats.HCOutForwDatagrams.low = ipstat->ips_forward & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutForwDatagrams.high = ipstat->ips_forward >> 32;
+#endif
+    entry->stats.InUnknownProtos = ipstat->ips_noproto;
+    entry->stats.InDiscards = ipstat->ips_fragdropped;
+    entry->stats.HCInDelivers.low = ipstat->ips_delivered & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCInDelivers.high = ipstat->ips_delivered >> 32;
+#endif
+    entry->stats.HCOutRequests.low = ipstat->ips_localout & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutRequests.high = ipstat->ips_localout >> 32;
+#endif
+    entry->stats.HCOutDiscards.low = ipstat->ips_odropped & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutDiscards.high = ipstat->ips_odropped >> 32;
+#endif
+    entry->stats.HCOutNoRoutes.low = ipstat->ips_nogif & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutNoRoutes.high = ipstat->ips_nogif >> 32;
+#endif
+    /* entry->stats. = scan_vals[12]; / * ReasmTimeout */
+    entry->stats.ReasmReqds = ipstat->ips_fragments;
+    entry->stats.ReasmOKs = ipstat->ips_reassembled;
+    entry->stats.ReasmFails = ipstat->ips_fragdropped + ipstat->ips_fragtimeout;
+    entry->stats.HCOutFragOKs.low = ipstat->ips_fragments & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutFragOKs.high = ipstat->ips_fragments >> 32;
+#endif
+    entry->stats.HCOutFragFails.low = ipstat->ips_cantfrag & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutFragFails.high = ipstat->ips_cantfrag >> 32;
+#endif
+    entry->stats.HCOutFragCreates.low = ipstat->ips_ofragments & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutFragCreates.high = ipstat->ips_ofragments >> 32;
+#endif
+
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INUNKNOWNPROTOS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_DISCONTINUITYTIME] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REFRESHRATE] = 1;
+
+    /*
+     * add to container
+     */
+    if (CONTAINER_INSERT(container, entry) < 0)
+    {
+	DEBUGMSGTL(("access:systemstats:container","error with systemstats_entry: insert into container failed.\n"));
+	netsnmp_access_systemstats_entry_free(entry);
+    }
+
+    free(ipstat);
+    return 0;
+}
+
+
+#if defined (NETSNMP_ENABLE_IPV6)
+
+/*
+ * load ipSystemStatsTable for ipv6 entries
+ */
+static int 
+_systemstats_v6_load_systemstats(netsnmp_container* container, u_int load_flags)
+{
+    struct ip6stat ip6stat;
+    int mib[] = { CTL_NET, AF_INET6, IPPROTO_IPV6, IPV6CTL_STATS };
+    size_t len = sizeof(ip6stat);
+    netsnmp_systemstats_entry *entry = NULL;
+
+    if (sysctl(mib, sizeof(mib) / sizeof(mib[0]), &ip6stat, &len, NULL, 0) == -1) {
+  	NETSNMP_LOGONCE((LOG_ERR, "Cannot sysctl(CTL_NET, AF_INET6, IPPROTO_IPV6, IPV6CTL_STATS)\n"));
+	return -1;
+    }
+    
+    entry = netsnmp_access_systemstats_entry_create(2, 0,
+            "ipSystemStatsTable.ipv6");
+    if(NULL == entry)
+        return -3;
+    
+    entry->stats.HCInReceives.low = ip6stat.ip6s_total & 0xffffffff;
+    entry->stats.HCInReceives.high = ip6stat.ip6s_total >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1;
+    /*
+    entry->stats.HCInOctets.low = scan_val & 0xffffffff;
+    entry->stats.HCInOctets.high = scan_val  >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINOCTETS] = 1;
+    */
+    entry->stats.InHdrErrors = ip6stat.ip6s_badoptions + ip6stat.ip6s_tooshort
+                             + ip6stat.ip6s_toosmall + ip6stat.ip6s_badvers
+			     + ip6stat.ip6s_toomanyhdr;
+#if HAVE_STRUCT_IP6STAT_IP6S_EXTHDRTOOLONG
+    entry->stats.InHdrErrors += ip6stat.ip6s_exthdrtoolong;
+#endif
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1;
+    entry->stats.HCInNoRoutes.low = ip6stat.ip6s_cantforward & 0xffffffff;
+    entry->stats.HCInNoRoutes.high = ip6stat.ip6s_cantforward >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINNOROUTES] = 1;
+    /*
+    entry->stats.inAddrErrors = 0;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS] = 1;
+    entry->stats.InUnknownProtos = scan_val;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INUNKNOWNPROTOS] = 1;
+    entry->stats.InTruncatedPkts = scan_val  & 0xffffffff;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INTRUNCATEDPKTS] = 1;
+    */
+    entry->stats.HCInForwDatagrams.low = ip6stat.ip6s_forward & 0xffffffff;
+    entry->stats.HCInForwDatagrams.high = ip6stat.ip6s_forward >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINFORWDATAGRAMS] = 1;
+    entry->stats.ReasmReqds = ip6stat.ip6s_fragments;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS] = 1;
+    entry->stats.ReasmOKs = ip6stat.ip6s_reassembled;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS] = 1;
+    entry->stats.ReasmFails = ip6stat.ip6s_fragdropped + ip6stat.ip6s_fragtimeout;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS] = 1;
+    entry->stats.InDiscards = ip6stat.ip6s_fragdropped;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS] = 1;
+    entry->stats.HCInDelivers.low = ip6stat.ip6s_delivered  & 0xffffffff;
+    entry->stats.HCInDelivers.high = ip6stat.ip6s_delivered >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS] = 1;
+    entry->stats.HCOutRequests.low = ip6stat.ip6s_localout & 0xffffffff;
+    entry->stats.HCOutRequests.high = ip6stat.ip6s_localout >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS] = 1;
+    entry->stats.HCOutNoRoutes.low = ip6stat.ip6s_noroute & 0xffffffff;
+    entry->stats.HCOutNoRoutes.high = ip6stat.ip6s_noroute >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES] = 1;
+    entry->stats.HCOutForwDatagrams.low = ip6stat.ip6s_forward & 0xffffffff;
+    entry->stats.HCOutForwDatagrams.high = ip6stat.ip6s_forward >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS] = 1;
+    entry->stats.HCOutDiscards.low = ip6stat.ip6s_odropped & 0xffffffff;
+    entry->stats.HCOutDiscards.high = ip6stat.ip6s_odropped >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS] = 1;
+    entry->stats.HCOutFragReqds.low = (ip6stat.ip6s_fragmented + ip6stat.ip6s_cantfrag) & 0xffffffff;
+    entry->stats.HCOutFragReqds.high = (ip6stat.ip6s_fragmented + ip6stat.ip6s_cantfrag) >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGREQDS] = 1;
+    entry->stats.HCOutFragOKs.low = ip6stat.ip6s_fragmented & 0xffffffff;
+    entry->stats.HCOutFragOKs.high = ip6stat.ip6s_fragmented >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS] = 1;
+    entry->stats.HCOutFragFails.low = ip6stat.ip6s_cantfrag & 0xffffffff;
+    entry->stats.HCOutFragFails.high = ip6stat.ip6s_cantfrag >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS] = 1;
+    entry->stats.HCOutFragCreates.low = ip6stat.ip6s_ofragments & 0xffffffff;
+    entry->stats.HCOutFragCreates.high = ip6stat.ip6s_ofragments >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES] = 1;
+    /*
+    entry->stats.HCOutTransmits.low = scan_val & 0xffffffff;
+    entry->stats.HCOutTransmits.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTTRANSMITS] = 1;
+    entry->stats.HCOutMcastOctets.low = scan_val & 0xffffffff;
+    entry->stats.HCOutMcastOctets.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTOCTETS] = 1;
+    entry->stats.HCInMcastPkts.low = scan_val  & 0xffffffff;
+    entry->stats.HCInMcastPkts.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTPKTS] = 1;
+    entry->stats.HCInMcastOctets.low = scan_val  & 0xffffffff;
+    entry->stats.HCInMcastOctets.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTOCTETS] = 1;
+    entry->stats.HCOutMcastPkts.low = scan_val & 0xffffffff;
+    entry->stats.HCOutMcastPkts.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTPKTS] = 1;
+    entry->stats.HCOutOctets.low = scan_val & 0xffffffff;
+    entry->stats.HCOutOctets.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTOCTETS] = 1;
+    entry->stats.HCInBcastPkts.low = scan_val  & 0xffffffff;
+    entry->stats.HCInBcastPkts.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINBCASTPKTS] = 1;
+    entry->stats.HCOutBcastPkts.low = scan_val  & 0xffffffff;
+    entry->stats.HCOutBcastPkts.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTBCASTPKTS] = 1;
+    */
+
+    /*
+     * add to container
+     */
+    if (CONTAINER_INSERT(container, entry) < 0) {
+	DEBUGMSGTL(("access:systemstats:container","error with systemstats_entry: insert into container failed.\n"));
+	netsnmp_access_systemstats_entry_free(entry);
+    }
+
+    return 1;
+}
+
+#define DEV_SNMP6_DIRNAME   "/proc/net/dev_snmp6"
+#define IFINDEX_LINE        "ifIndex"
+#define DEV_FILENAME_LEN    64
+
+/*
+ * load ipIfStatsTable for ipv6 entries
+ */
+static int 
+_systemstats_v6_load_ifstats(netsnmp_container* container, u_int load_flags)
+{
+    DIR            *dev_snmp6_dir;
+    struct dirent  *dev_snmp6_entry;
+    char           dev_filename[DEV_FILENAME_LEN];
+    FILE           *devin;
+    char           line[1024];
+    char           *start = line;
+    int            rc;
+    char           *scan_str;
+    uintmax_t       scan_val;
+    netsnmp_systemstats_entry *entry = NULL;
+            
+    /*
+     * try to open /proc/net/dev_snmp6 directory. If we can't, that' ok -
+     * maybe it is not supported by the current running kernel.
+     */
+    if ((dev_snmp6_dir = opendir(DEV_SNMP6_DIRNAME)) == NULL) {
+        DEBUGMSGTL(("access:ifstats",
+        "Failed to load IPv6 IfStats Table (linux)\n"));
+        return 0;
+    }
+    
+    /*
+     * Read each per interface statistics proc file
+     */
+    rc = 0;
+    while ((dev_snmp6_entry = readdir(dev_snmp6_dir)) != NULL) {
+        if (dev_snmp6_entry->d_name[0] == '.')
+            continue;
+    
+        if (snprintf(dev_filename, DEV_FILENAME_LEN, "%s/%s", DEV_SNMP6_DIRNAME,
+                dev_snmp6_entry->d_name) > DEV_FILENAME_LEN) {
+            snmp_log(LOG_ERR, "Interface name %s is too long\n",
+                    dev_snmp6_entry->d_name);
+            continue;
+        }
+        if (NULL == (devin = fopen(dev_filename, "r"))) {
+            snmp_log(LOG_ERR, "Failed to open %s\n", dev_filename);
+            continue;
+        }
+    
+        /*
+         * If a stat file name is made of digits, the name is interface index.
+         * If it is an interface name, the file includes a line labeled ifIndex.
+         */
+        if (isdigit(dev_snmp6_entry->d_name[0])) {
+            scan_val = strtoull(dev_snmp6_entry->d_name, NULL, 0);
+        } else {
+            if (NULL == (start = fgets(line, sizeof(line), devin))) {
+                snmp_log(LOG_ERR, "%s doesn't include any lines\n",
+                        dev_filename);
+                fclose(devin);
+                continue;
+            }
+    
+            if (0 != strncmp(start, IFINDEX_LINE, 7)) {
+                snmp_log(LOG_ERR, "%s doesn't include ifIndex line",
+                        dev_filename);
+                fclose(devin);
+                continue;
+            }
+
+            scan_str = strrchr(line, ' ');
+            if (NULL == scan_str) {
+                snmp_log(LOG_ERR, "%s is wrong format", dev_filename);
+                fclose(devin);
+                continue;
+            }
+            scan_val = strtoull(scan_str, NULL, 0);
+        }
+        
+        entry = netsnmp_access_systemstats_entry_create(2, scan_val,
+                "ipIfStatsTable.ipv6");
+        if(NULL == entry) {
+            fclose(devin);
+            closedir(dev_snmp6_dir);
+            return -3;
+        }
+        
+        /* _systemstats_v6_load_file(entry, devin); */
+        CONTAINER_INSERT(container, entry);
+        fclose(devin);
+    }
+    closedir(dev_snmp6_dir);
+    return 0;
+}
+#endif /* NETSNMP_ENABLE_IPV6 */
+#endif
+
+#ifdef NETSNMP_ENABLE_IPV6
+/*
+ * Based on load_flags, load ipSystemStatsTable or ipIfStatsTable for ipv6 entries. 
+ */
+static int
+_systemstats_v6(netsnmp_container* container, u_int load_flags)
+{
+    DEBUGMSGTL(("access:systemstats:container:arch", "load v6 (flags %u)\n",
+                load_flags));
+
+    netsnmp_assert(container != NULL); /* load function shoulda checked this */
+
+    if (load_flags & NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE) {
+        /* load ipIfStatsTable */
+        return _systemstats_v6_load_ifstats(container, load_flags);
+    } else {
+        /* load ipSystemStatsTable */
+        return _systemstats_v6_load_systemstats(container, load_flags);
+    }
+}
+#endif /* NETSNMP_ENABLE_IPV6 */
diff --git a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
index 85a8738..73afae6 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
@@ -155,9 +155,6 @@
         int             inetNetToMediaRowStatus,
             inetNetToMediaRowStatus_undo;
 
-        /* flag, if the row was present in last read from operating system */
-        int valid;
-
         /*
          * storage for future expansion
          */
diff --git a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
index 8fddb70..1ec8cc6 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
@@ -8,6 +8,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -19,6 +20,9 @@
 
 #include "inetNetToMediaTable_data_access.h"
 
+netsnmp_feature_require(container_lifo)
+static netsnmp_arp_access * arp_access = NULL;
+
 /** @ingroup interface 
  * @addtogroup data_access data_access: Routines to access data
  *
@@ -71,6 +75,123 @@
  */
 
 /**
+ * check entry for update
+ */
+static void
+_add_or_update_arp_entry(netsnmp_arp_entry *arp_entry,
+                 netsnmp_container *container)
+{
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx, *old;
+    int             inetAddressType;
+
+    DEBUGTRACE;
+
+    netsnmp_assert(NULL != arp_entry);
+    netsnmp_assert(NULL != container);
+
+    /*
+     * convert the addr len to an inetAddressType
+     */
+    switch (arp_entry->arp_ipaddress_len) {
+    case 4:
+        inetAddressType = INETADDRESSTYPE_IPV4;
+        break;
+
+    case 16:
+        inetAddressType = INETADDRESSTYPE_IPV6;
+        break;
+
+    default:
+        snmp_log(LOG_ERR, "inetNetToMediaTable:_add_or_update_arpentry: unsupported address type, len = %d\n", arp_entry->arp_ipaddress_len);
+        netsnmp_access_arp_entry_free(arp_entry);
+        return;
+    }
+
+    /*
+     * allocate an row context and set the index(es), then try to find it in
+     * the cache.
+     */
+    rowreq_ctx = inetNetToMediaTable_allocate_rowreq_ctx(arp_entry, NULL);
+    if ((NULL != rowreq_ctx) &&
+        (MFD_SUCCESS == inetNetToMediaTable_indexes_set
+         (rowreq_ctx, rowreq_ctx->data->if_index, inetAddressType,
+          (char *) rowreq_ctx->data->arp_ipaddress,
+          rowreq_ctx->data->arp_ipaddress_len))) {
+
+        /* try to find old entry */
+        old = (inetNetToMediaTable_rowreq_ctx*)CONTAINER_FIND(container, rowreq_ctx);
+        if (arp_entry->flags & NETSNMP_ACCESS_ARP_ENTRY_FLAG_DELETE) {
+            /* delete existing entry */
+            if (old != NULL) {
+                CONTAINER_REMOVE(container, old);
+                inetNetToMediaTable_release_rowreq_ctx(old);
+            }
+            inetNetToMediaTable_release_rowreq_ctx(rowreq_ctx);
+        } else if (old != NULL) {
+            /* the entry is already there, update it */
+            netsnmp_access_arp_entry_update(old->data, arp_entry);
+            /* delete the auxiliary context we used to find the entry
+             * (this deletes also arp_entry) */
+            inetNetToMediaTable_release_rowreq_ctx(rowreq_ctx);
+        } else {
+            /* create new entry and add it to the cache*/
+            rowreq_ctx->inetNetToMediaRowStatus = ROWSTATUS_ACTIVE;
+            rowreq_ctx->data->arp_last_updated = netsnmp_get_agent_uptime();
+            CONTAINER_INSERT(container, rowreq_ctx);
+        }
+    } else {
+        if (rowreq_ctx) {
+            snmp_log(LOG_ERR, "error setting index while loading "
+                     "inetNetToMediaTable cache.\n");
+            inetNetToMediaTable_release_rowreq_ctx(rowreq_ctx);
+        } else
+            netsnmp_access_arp_entry_free(arp_entry);
+    }
+}
+
+static void  _arp_hook_update(netsnmp_arp_access *access, netsnmp_arp_entry *entry)
+{
+    _add_or_update_arp_entry(entry, access->magic);
+}
+
+typedef struct {
+    unsigned generation;
+    netsnmp_container *to_delete;
+} _collect_ctx;
+
+/**
+ * Put all entries with outdated generation to deletion list.
+ */
+static void
+_collect_invalid_arp_ctx(inetNetToMediaTable_rowreq_ctx *ctx,
+                         _collect_ctx *cctx)
+{
+    if (ctx->data->generation != cctx->generation)
+        CONTAINER_INSERT(cctx->to_delete, ctx);
+}
+
+static void _arp_hook_gc(netsnmp_arp_access *access)
+{
+    netsnmp_container *container = access->magic;
+    _collect_ctx cctx;
+
+    cctx.to_delete = netsnmp_container_find("lifo");
+    cctx.generation = access->generation;
+
+    CONTAINER_FOR_EACH(container,
+                       (netsnmp_container_obj_func *) _collect_invalid_arp_ctx,
+                       &cctx);
+
+    while (CONTAINER_SIZE(cctx.to_delete)) {
+        inetNetToMediaTable_rowreq_ctx *ctx = (inetNetToMediaTable_rowreq_ctx*)CONTAINER_FIRST(cctx.to_delete);
+        CONTAINER_REMOVE(container, ctx);
+        inetNetToMediaTable_release_rowreq_ctx(ctx);
+        CONTAINER_REMOVE(cctx.to_delete, NULL);
+    }
+    CONTAINER_FREE(cctx.to_delete);
+}
+
+/**
  * container initialization
  *
  * @param container_ptr_ptr A pointer to a container pointer. If you
@@ -120,104 +241,19 @@
         return;
     }
 
-    /*
-     * TODO:345:A: Set up inetNetToMediaTable cache properties.
-     *
-     * Also for advanced users, you can set parameters for the
-     * cache. Do not change the magic pointer, as it is used
-     * by the MFD helper. To completely disable caching, set
-     * cache->enabled to 0.
-     */
-    cache->timeout = INETNETTOMEDIATABLE_CACHE_TIMEOUT; /* seconds */
-
-    /* We want to manually delete entries in the cache to keep LastUpdated
-     * timestamp. */
-    cache->flags |= NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD
-                    | NETSNMP_CACHE_AUTO_RELOAD;
-}                               /* inetNetToMediaTable_container_init */
-
-/**
- * Put all entries with valid !=1 to the list to delete.
- */
-static void
-_collect_invalid_arp_ctx(inetNetToMediaTable_rowreq_ctx *ctx,
-        netsnmp_container *to_delete)
-{
-    if (ctx->valid)
-            ctx->valid = 0;
-    else
-        CONTAINER_INSERT(to_delete, ctx);
-}
-
-/**
- * check entry for update
- */
-static void
-_add_or_update_arp_entry(netsnmp_arp_entry *arp_entry,
-                 netsnmp_container *container)
-{
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx, *old;
-    int             inetAddressType;
-
-    DEBUGTRACE;
-
-    netsnmp_assert(NULL != arp_entry);
-    netsnmp_assert(NULL != container);
-
-    /*
-     * convert the addr len to an inetAddressType
-     */
-    switch (arp_entry->arp_ipaddress_len) {
-    case 4:
-        inetAddressType = INETADDRESSTYPE_IPV4;
-        break;
-
-    case 16:
-        inetAddressType = INETADDRESSTYPE_IPV6;
-        break;
-
-    default:
-        netsnmp_access_arp_entry_free(arp_entry);
-        snmp_log(LOG_ERR, "unsupported address type\n");
+    arp_access = netsnmp_access_arp_create(
+                           NETSNMP_ACCESS_ARP_CREATE_NOFLAGS,
+                           _arp_hook_update,
+                           _arp_hook_gc,
+                           &cache->timeout,
+                           &cache->flags,
+                           &cache->expired);
+    if (arp_access == NULL) {
+        snmp_log(LOG_ERR,
+                 "unable to create arp access in inetNetToMediaTable_container_init\n");
         return;
     }
-
-    /*
-     * allocate an row context and set the index(es), then try to find it in
-     * the cache.
-     */
-    rowreq_ctx = inetNetToMediaTable_allocate_rowreq_ctx(arp_entry, NULL);
-    if ((NULL != rowreq_ctx) &&
-        (MFD_SUCCESS == inetNetToMediaTable_indexes_set
-         (rowreq_ctx, rowreq_ctx->data->if_index, inetAddressType,
-          (char *) rowreq_ctx->data->arp_ipaddress,
-          rowreq_ctx->data->arp_ipaddress_len))) {
-
-        /* try to find old entry */
-        old = (inetNetToMediaTable_rowreq_ctx*)CONTAINER_FIND(container, rowreq_ctx);
-        if (old != NULL) {
-            /* the entry is already there, update it */
-            netsnmp_access_arp_entry_update(old->data, arp_entry);
-            old->valid = 1; /* do not delete it in following sweep */
-            /* delete the auxiliary context we used to find the entry
-             * (this deletes also arp_entry) */
-            inetNetToMediaTable_release_rowreq_ctx(rowreq_ctx);
-        } else {
-            /* create new entry and add it to the cache*/
-            rowreq_ctx->inetNetToMediaRowStatus = ROWSTATUS_ACTIVE;
-            rowreq_ctx->data->arp_last_updated = netsnmp_get_agent_uptime();
-            rowreq_ctx->valid = 1; /* do not delete it in following sweep */
-            CONTAINER_INSERT(container, rowreq_ctx);
-        }
-    } else {
-        if (rowreq_ctx) {
-            snmp_log(LOG_ERR, "error setting index while loading "
-                     "inetNetToMediaTable cache.\n");
-            inetNetToMediaTable_release_rowreq_ctx(rowreq_ctx);
-        } else
-            netsnmp_access_arp_entry_free(arp_entry);
-    }
-}
+}                               /* inetNetToMediaTable_container_init */
 
 /**
  * container shutdown
@@ -240,12 +276,16 @@
 {
     DEBUGMSGTL(("verbose:inetNetToMediaTable:inetNetToMediaTable_container_shutdown", "called\n"));
 
+    if (NULL != arp_access) {
+        netsnmp_access_arp_delete(arp_access);
+        arp_access = NULL;
+    }
+
     if (NULL == container_ptr) {
         snmp_log(LOG_ERR,
                  "bad params to inetNetToMediaTable_container_shutdown\n");
         return;
     }
-
 }                               /* inetNetToMediaTable_container_shutdown */
 
 /**
@@ -284,54 +324,11 @@
 int
 inetNetToMediaTable_container_load(netsnmp_container *container)
 {
-    netsnmp_container *arp_container;
-    netsnmp_container *to_delete = netsnmp_container_find("lifo");
-
     DEBUGMSGTL(("verbose:inetNetToMediaTable:inetNetToMediaTable_cache_load", "called\n"));
 
-    /*
-     * TODO:351:M: |-> Load/update data in the inetNetToMediaTable container.
-     * loop over your inetNetToMediaTable data, allocate a rowreq context,
-     * set the index(es) [and data, optionally] and insert into
-     * the container.
-     */
-    arp_container =
-        netsnmp_access_arp_container_load(NULL,
-                                          NETSNMP_ACCESS_ARP_LOAD_NOFLAGS);
-    if (NULL == arp_container)
-        return MFD_RESOURCE_UNAVAILABLE;        /* msg already logged */
-
-    /*
-     * we just got a fresh copy of data. snarf data
-     */
-    CONTAINER_FOR_EACH(arp_container,
-                       (netsnmp_container_obj_func *) _add_or_update_arp_entry,
-                       container);
-
-    /*
-     * Delete all cached entries, which were not provided by
-     * netsnmp_access_arp_container_load
-     */
-    CONTAINER_FOR_EACH(container,
-                       (netsnmp_container_obj_func *) _collect_invalid_arp_ctx,
-                       to_delete);
-    while (CONTAINER_SIZE(to_delete)) {
-        inetNetToMediaTable_rowreq_ctx *ctx = (inetNetToMediaTable_rowreq_ctx*)CONTAINER_FIRST(to_delete);
-        CONTAINER_REMOVE(container, ctx);
-        inetNetToMediaTable_release_rowreq_ctx(ctx);
-        CONTAINER_REMOVE(to_delete, NULL);
-    }
-    CONTAINER_FREE(to_delete);
-
-    /*
-     * 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_arp_container_free(arp_container,
-                                      NETSNMP_ACCESS_ARP_FREE_DONT_CLEAR);
-
-    DEBUGMSGT(("verbose:inetNetToMediaTable:inetNetToMediaTable_cache_load",
-               "%" NETSNMP_PRIz "u records\n", CONTAINER_SIZE(container)));
+    arp_access->magic = container;
+    if (netsnmp_access_arp_load(arp_access) < 0)
+        return MFD_ERROR;
 
     return MFD_SUCCESS;
 }                               /* inetNetToMediaTable_container_load */
@@ -354,6 +351,11 @@
 {
     DEBUGMSGTL(("verbose:inetNetToMediaTable:inetNetToMediaTable_container_free", "called\n"));
 
+    if (NULL != arp_access) {
+        netsnmp_access_arp_unload(arp_access);
+        arp_access->magic = NULL;
+    }
+
     /*
      * TODO:380:M: Free inetNetToMediaTable container data.
      */
diff --git a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
index 62e364f..c18689a 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,19 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(inetNetToMediaTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(inetNetToMediaTable_container_size, inetNetToMediaTable_external_access)
+netsnmp_feature_child_of(inetNetToMediaTable_registration_set, inetNetToMediaTable_external_access)
+netsnmp_feature_child_of(inetNetToMediaTable_registration_get, inetNetToMediaTable_external_access)
+netsnmp_feature_child_of(inetNetToMediaTable_container_get, inetNetToMediaTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -82,19 +96,23 @@
                 _inetNetToMediaTable_container_shutdown(inetNetToMediaTable_interface_ctx *
                                                         if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_CONTAINER_GET
 netsnmp_container *
 inetNetToMediaTable_container_get(void)
 {
     return inetNetToMediaTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_REGISTRATION_GET
 inetNetToMediaTable_registration *
 inetNetToMediaTable_registration_get(void)
 {
     return inetNetToMediaTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_REGISTRATION_SET
 inetNetToMediaTable_registration *
 inetNetToMediaTable_registration_set(inetNetToMediaTable_registration *
                                      newreg)
@@ -104,12 +122,15 @@
     inetNetToMediaTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_CONTAINER_SIZE
 int
 inetNetToMediaTable_container_size(void)
 {
     return CONTAINER_SIZE(inetNetToMediaTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_CONTAINER_SIZE */
 
 u_int
 inetNetToMediaTable_dirty_get(void)
@@ -133,7 +154,7 @@
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_post_request;
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_check_objects;
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_set_values;
@@ -149,7 +170,7 @@
                                                  rowreq_ctx,
                                                  netsnmp_variable_list *
                                                  var, int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 NETSNMP_STATIC_INLINE int
                 _inetNetToMediaTable_check_indexes(inetNetToMediaTable_rowreq_ctx *
@@ -232,7 +253,7 @@
         _mfd_inetNetToMediaTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -257,7 +278,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_inetNetToMediaTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -293,7 +314,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -316,7 +337,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -1097,7 +1118,7 @@
                                               user_ctx, rowreq_ctx);
 }                               /* _inetNetToMediaTable_check_indexes */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1821,7 +1842,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_inetNetToMediaTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -1980,6 +2001,7 @@
 }                               /* _inetNetToMediaTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_EXTERNAL_ACCESS
 inetNetToMediaTable_rowreq_ctx *
 inetNetToMediaTable_row_find_by_mib_index(inetNetToMediaTable_mib_index *
                                           mib_idx)
@@ -2007,3 +2029,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
index 4fb6905..4437829 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
@@ -8,6 +8,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -21,6 +22,10 @@
 
 #include "ip-mib/ipAddressTable/ipAddressTable.h"
 
+netsnmp_feature_require(ipAddressTable_container_get)
+netsnmp_feature_require(ipaddress_common_copy_utilities)
+netsnmp_feature_require(ipaddress_prefix_copy)
+
 /** @ingroup interface 
  * @addtogroup data_access data_access: Routines to access data
  *
diff --git a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c
index 942425d..e14a337 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,16 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+netsnmp_feature_child_of(ipaddressprefixtable_row_find_by_mib_index, ipaddressprefixtable_all)
+netsnmp_feature_child_of(ipaddressprefixtable_container_get, ipaddressprefixtable_all)
+netsnmp_feature_child_of(ipAddressPrefixTable_registration_get, ipaddressprefixtable_all)
+netsnmp_feature_child_of(ipAddressPrefixTable_registration_set, ipaddressprefixtable_all)
+netsnmp_feature_child_of(ipAddressPrefixTable_container_size, ipaddressprefixtable_all)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -81,18 +92,23 @@
                                                          * if_ctx);
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_CONTAINER_GET
 netsnmp_container *
 ipAddressPrefixTable_container_get(void)
 {
     return ipAddressPrefixTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_REGISTRATION_GET
 ipAddressPrefixTable_registration *
 ipAddressPrefixTable_registration_get(void)
 {
     return ipAddressPrefixTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_REGISTRATION_SET
 ipAddressPrefixTable_registration *
 ipAddressPrefixTable_registration_set(ipAddressPrefixTable_registration *
                                       newreg)
@@ -102,12 +118,15 @@
     ipAddressPrefixTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_CONTAINER_SIZE
 int
 ipAddressPrefixTable_container_size(void)
 {
     return CONTAINER_SIZE(ipAddressPrefixTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_CONTAINER_SIZE */
 
 /*
  * mfd multiplexer modes
@@ -229,7 +248,8 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+    /* XXX - are these actually necessary? */
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -252,7 +272,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -849,7 +869,7 @@
 }                               /* _mfd_ipAddressPrefixTable_get_values */
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1014,6 +1034,7 @@
 }                               /* _ipAddressPrefixTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_ROW_FIND_BY_MIB_INDEX
 ipAddressPrefixTable_rowreq_ctx *
 ipAddressPrefixTable_row_find_by_mib_index(ipAddressPrefixTable_mib_index *
                                            mib_idx)
@@ -1041,3 +1062,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_ROW_FIND_BY_MIB_INDEX */
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
index ec48fca..deff4e9 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
@@ -14,6 +14,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -28,6 +29,10 @@
 
 #include "ipAddressTable_interface.h"
 
+netsnmp_feature_require(check_storage_transition)
+netsnmp_feature_require(ipaddress_entry_copy)
+netsnmp_feature_require(ipaddress_prefix_copy)
+
 const oid       ipAddressTable_oid[] = { IPADDRESSTABLE_OID };
 const int       ipAddressTable_oid_size = OID_LENGTH(ipAddressTable_oid);
 
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
index ca1ae47..d80b3e7 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
@@ -8,6 +8,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -22,6 +23,8 @@
 #include <sys/ioctl.h>
 #include <errno.h>
 
+netsnmp_feature_require(container_lifo)
+netsnmp_feature_require(ipaddress_entry_update)
 
 /** @ingroup interface 
  * @addtogroup data_access data_access: Routines to access data
@@ -673,9 +676,9 @@
      * TODO:430:M: |-> Validate potential ipAddressTable index.
      *
      *
-     * xxx-rks: we only plan ipv4 support initially
      */
-    if ((4 != rowreq_ctx->tbl_idx.ipAddressAddr_len)) {
+    if ((4 != rowreq_ctx->tbl_idx.ipAddressAddr_len)
+            && (16 != rowreq_ctx->tbl_idx.ipAddressAddr_len)) {
         snmp_log(LOG_WARNING, "invalid index for a new row in the "
                  "ipAddressTable table.\n");
         /*
@@ -692,15 +695,9 @@
             return MFD_CANNOT_CREATE_NOW;
         }
     } else {
-        rowreq_ctx->data->ia_address[0] =
-            rowreq_ctx->tbl_idx.ipAddressAddr[0];
-        rowreq_ctx->data->ia_address[1] =
-            rowreq_ctx->tbl_idx.ipAddressAddr[1];
-        rowreq_ctx->data->ia_address[2] =
-            rowreq_ctx->tbl_idx.ipAddressAddr[2];
-        rowreq_ctx->data->ia_address[3] =
-            rowreq_ctx->tbl_idx.ipAddressAddr[3];
-        rowreq_ctx->data->ia_address_len = 4;
+        memcpy(rowreq_ctx->data->ia_address, rowreq_ctx->tbl_idx.ipAddressAddr,
+                rowreq_ctx->tbl_idx.ipAddressAddr_len);
+        rowreq_ctx->data->ia_address_len = rowreq_ctx->tbl_idx.ipAddressAddr_len;
     }
 
     return rc;
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
index 98c3ad0..48770b0 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,19 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ipAddressTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(ipAddressTable_container_size, ipAddressTable_external_access)
+netsnmp_feature_child_of(ipAddressTable_registration_set, ipAddressTable_external_access)
+netsnmp_feature_child_of(ipAddressTable_registration_get, ipAddressTable_external_access)
+netsnmp_feature_child_of(ipAddressTable_container_get, ipAddressTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -80,19 +94,23 @@
 static void
                 _ipAddressTable_container_shutdown(ipAddressTable_interface_ctx * if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_CONTAINER_GET
 netsnmp_container *
 ipAddressTable_container_get(void)
 {
     return ipAddressTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_REGISTRATION_GET
 ipAddressTable_registration *
 ipAddressTable_registration_get(void)
 {
     return ipAddressTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_REGISTRATION_SET
 ipAddressTable_registration *
 ipAddressTable_registration_set(ipAddressTable_registration * newreg)
 {
@@ -100,12 +118,15 @@
     ipAddressTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_CONTAINER_SIZE
 int
 ipAddressTable_container_size(void)
 {
     return CONTAINER_SIZE(ipAddressTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_CONTAINER_SIZE */
 
 u_int
 ipAddressTable_dirty_get(void)
@@ -129,7 +150,7 @@
 static Netsnmp_Node_Handler _mfd_ipAddressTable_post_request;
 static Netsnmp_Node_Handler _mfd_ipAddressTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_ipAddressTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_ipAddressTable_check_objects;
 static Netsnmp_Node_Handler _mfd_ipAddressTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_ipAddressTable_set_values;
@@ -144,7 +165,7 @@
                 _ipAddressTable_undo_column(ipAddressTable_rowreq_ctx * rowreq_ctx,
                                             netsnmp_variable_list * var,
                                             int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 NETSNMP_STATIC_INLINE int
                 _ipAddressTable_check_indexes(ipAddressTable_rowreq_ctx * rowreq_ctx);
@@ -222,7 +243,7 @@
     access_multiplexer->post_request = _mfd_ipAddressTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -246,7 +267,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_ipAddressTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -282,7 +303,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -305,7 +326,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -1061,7 +1082,7 @@
                                          rowreq_ctx);
 }                               /* _ipAddressTable_check_indexes */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1893,7 +1914,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ipAddressTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -2042,6 +2063,7 @@
 }                               /* _ipAddressTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_EXTERNAL_ACCESS
 ipAddressTable_rowreq_ctx *
 ipAddressTable_row_find_by_mib_index(ipAddressTable_mib_index * mib_idx)
 {
@@ -2067,3 +2089,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
index b354c3d..7d7dcfe 100644
--- a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
@@ -8,6 +8,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -19,6 +20,8 @@
 
 #include "ipDefaultRouterTable_data_access.h"
 
+netsnmp_feature_require(container_lifo)
+
 /** @ingroup interface
  * @addtogroup data_access data_access: Routines to access data
  *
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c
index 52ca44f..40ad72b 100644
--- a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,10 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -227,7 +232,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /* XXX - are these actually necessary? */
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
@@ -251,7 +256,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
index 3fd1d09..559d1c1 100644
--- a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,18 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ipIfStatsTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(ipIfStatsTable_container_size, ipIfStatsTable_external_access)
+netsnmp_feature_child_of(ipIfStatsTable_registration_set, ipIfStatsTable_external_access)
+netsnmp_feature_child_of(ipIfStatsTable_registration_get, ipIfStatsTable_external_access)
+netsnmp_feature_child_of(ipIfStatsTable_container_get, ipIfStatsTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -80,19 +93,23 @@
 static void    
 _ipIfStatsTable_container_shutdown(ipIfStatsTable_interface_ctx * if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_CONTAINER_GET
 netsnmp_container *
 ipIfStatsTable_container_get(void)
 {
     return ipIfStatsTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_REGISTRATION_GET
 ipIfStatsTable_registration *
 ipIfStatsTable_registration_get(void)
 {
     return ipIfStatsTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_REGISTRATION_SET
 ipIfStatsTable_registration *
 ipIfStatsTable_registration_set(ipIfStatsTable_registration * newreg)
 {
@@ -100,12 +117,15 @@
     ipIfStatsTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_CONTAINER_SIZE
 int
 ipIfStatsTable_container_size(void)
 {
     return CONTAINER_SIZE(ipIfStatsTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_CONTAINER_SIZE */
 
 /*
  * ipIfStatsTableLastChanged, which is the last time that a row in
@@ -227,6 +247,13 @@
      */
     if (access_multiplexer->object_lookup)
         mfd_modes |= BABY_STEP_OBJECT_LOOKUP;
+
+    if (access_multiplexer->pre_request)
+        mfd_modes |= BABY_STEP_PRE_REQUEST;
+    if (access_multiplexer->post_request)
+        mfd_modes |= BABY_STEP_POST_REQUEST;
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -234,11 +261,6 @@
     if (access_multiplexer->object_syntax_checks)
         mfd_modes |= BABY_STEP_CHECK_OBJECT;
 
-    if (access_multiplexer->pre_request)
-        mfd_modes |= BABY_STEP_PRE_REQUEST;
-    if (access_multiplexer->post_request)
-        mfd_modes |= BABY_STEP_POST_REQUEST;
-
     if (access_multiplexer->undo_setup)
         mfd_modes |= BABY_STEP_UNDO_SETUP;
     if (access_multiplexer->undo_cleanup)
@@ -254,6 +276,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -295,7 +318,7 @@
      */
     {
         oid     lc_oid[] = { IPIFSTATSTABLELASTCHANGE_OID };
-        netsnmp_register_watched_scalar(netsnmp_create_handler_registration
+        netsnmp_register_watched_scalar2(netsnmp_create_handler_registration
                 ("ipIfStatsTableLastChanged", NULL,
                  lc_oid, OID_LENGTH(lc_oid),
                  HANDLER_CAN_RONLY),
@@ -1368,6 +1391,7 @@
 }                               /* _ipIfStatsTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_EXTERNAL_ACCESS
 ipIfStatsTable_rowreq_ctx *
 ipIfStatsTable_row_find_by_mib_index(ipIfStatsTable_mib_index * mib_idx)
 {
@@ -1393,3 +1417,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
index 097cebb..e1ca2cb 100644
--- a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,18 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ipSystemStatsTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(ipSystemStatsTable_container_size, ipSystemStatsTable_external_access)
+netsnmp_feature_child_of(ipSystemStatsTable_registration_set, ipSystemStatsTable_external_access)
+netsnmp_feature_child_of(ipSystemStatsTable_registration_get, ipSystemStatsTable_external_access)
+netsnmp_feature_child_of(ipSystemStatsTable_container_get, ipSystemStatsTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -80,19 +93,23 @@
                 _ipSystemStatsTable_container_shutdown(ipSystemStatsTable_interface_ctx *
                                                        if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_CONTAINER_GET
 netsnmp_container *
 ipSystemStatsTable_container_get(void)
 {
     return ipSystemStatsTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_REGISTRATION_GET
 ipSystemStatsTable_registration *
 ipSystemStatsTable_registration_get(void)
 {
     return ipSystemStatsTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_REGISTRATION_SET
 ipSystemStatsTable_registration *
 ipSystemStatsTable_registration_set(ipSystemStatsTable_registration *
                                     newreg)
@@ -102,12 +119,15 @@
     ipSystemStatsTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_CONTAINER_SIZE
 int
 ipSystemStatsTable_container_size(void)
 {
     return CONTAINER_SIZE(ipSystemStatsTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_CONTAINER_SIZE */
 
 /*
  * mfd multiplexer modes
@@ -220,7 +240,8 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+    /* XXX - are these actually necessary? */
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -243,7 +264,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -1175,7 +1196,7 @@
 }                               /* _mfd_ipSystemStatsTable_get_values */
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1339,6 +1360,7 @@
 }                               /* _ipSystemStatsTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_EXTERNAL_ACCESS
 ipSystemStatsTable_rowreq_ctx *
 ipSystemStatsTable_row_find_by_mib_index(ipSystemStatsTable_mib_index *
                                          mib_idx)
@@ -1366,3 +1388,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-mib/ip_scalars.c b/agent/mibgroup/ip-mib/ip_scalars.c
index 78021a9..9096269 100644
--- a/agent/mibgroup/ip-mib/ip_scalars.c
+++ b/agent/mibgroup/ip-mib/ip_scalars.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -11,27 +12,33 @@
 
 #include "ip_scalars.h"
 
-int
+static int
 handle_ipForwarding(netsnmp_mib_handler *handler,
                     netsnmp_handler_registration *reginfo,
                     netsnmp_agent_request_info *reqinfo,
                     netsnmp_request_info *requests);
 
-int
+static int
 handle_ipDefaultTTL(netsnmp_mib_handler *handler,
-                          netsnmp_handler_registration *reginfo,
-                          netsnmp_agent_request_info *reqinfo,
-                          netsnmp_request_info *requests);
+                    netsnmp_handler_registration *reginfo,
+                    netsnmp_agent_request_info *reqinfo,
+                    netsnmp_request_info *requests);
 
-int
+static int
 handle_ipv6IpForwarding(netsnmp_mib_handler *handler,
                         netsnmp_handler_registration *reginfo,
                         netsnmp_agent_request_info *reqinfo,
                         netsnmp_request_info *requests);
 
-int ipAddressSpinLockValue;
+static int
+handle_ipv6IpDefaultHopLimit(netsnmp_mib_handler *handler,
+                             netsnmp_handler_registration *reginfo,
+                             netsnmp_agent_request_info *reqinfo,
+                             netsnmp_request_info *requests);
 
-int
+static int ipAddressSpinLockValue;
+
+static int
 handle_ipAddressSpinLock(netsnmp_mib_handler *handler,
                          netsnmp_handler_registration *reginfo,
                          netsnmp_agent_request_info *reqinfo,
@@ -42,26 +49,24 @@
 init_ip_scalars(void)
 {
     static oid 	    ipForwarding_oid[] = { 1, 3, 6, 1, 2, 1, 4, 1 };
-    static oid 	    ipDefaultTTL_oid[] = { 1, 3, 6, 1, 2, 1, 4, 2, 0 };
-    static oid      ipReasmTimeout_oid[] = { 1, 3, 6, 1, 2, 1, 4, 13, 0 };
+    static oid 	    ipDefaultTTL_oid[] = { 1, 3, 6, 1, 2, 1, 4, 2 };
     static oid      ipv6IpForwarding_oid[] = { 1, 3, 6, 1, 2, 1, 4, 25 };
-    static oid      ipv6IpDefaultHopLimit_oid[] =
-        { 1, 3, 6, 1, 2, 1, 4, 26, 0 };
+    static oid      ipv6IpDefaultHopLimit_oid[] = { 1, 3, 6, 1, 2, 1, 4, 26 };
     static oid      ipAddressSpinLock_oid[] = { 1, 3, 6, 1, 2, 1, 4, 33 };
 
     DEBUGMSGTL(("ip_scalar", "Initializing\n"));
 
-    netsnmp_register_num_file_instance
-        ("ipReasmTimeout",
-         ipReasmTimeout_oid, OID_LENGTH(ipReasmTimeout_oid),
-         "/proc/sys/net/ipv4/ipfrag_time", ASN_INTEGER,
-         HANDLER_CAN_RONLY, NULL, NULL);
-                                       
     netsnmp_register_scalar(netsnmp_create_handler_registration
                              ("ipForwarding", handle_ipForwarding,
                               ipForwarding_oid,
                               OID_LENGTH(ipForwarding_oid),
                               HANDLER_CAN_RWRITE));
+                                       
+    netsnmp_register_scalar(netsnmp_create_handler_registration
+                             ("ipDefaultTTL", handle_ipDefaultTTL,
+                              ipDefaultTTL_oid,
+                              OID_LENGTH(ipDefaultTTL_oid),
+                              HANDLER_CAN_RWRITE));
 
     netsnmp_register_scalar(netsnmp_create_handler_registration
                             ("ipv6IpForwarding", handle_ipv6IpForwarding,
@@ -70,6 +75,12 @@
                              HANDLER_CAN_RWRITE));
 
     netsnmp_register_scalar(netsnmp_create_handler_registration
+                            ("ipv6IpDefaultHopLimit", handle_ipv6IpDefaultHopLimit,
+                             ipv6IpDefaultHopLimit_oid,
+                             OID_LENGTH(ipv6IpDefaultHopLimit_oid),
+                             HANDLER_CAN_RWRITE));
+
+    netsnmp_register_scalar(netsnmp_create_handler_registration
                             ("ipAddressSpinLock", handle_ipAddressSpinLock,
                              ipAddressSpinLock_oid,
                              OID_LENGTH(ipAddressSpinLock_oid),
@@ -78,21 +89,9 @@
     /* Initialize spin lock with random value */
     ipAddressSpinLockValue = (int) random();
 
-    netsnmp_register_num_file_instance
-        ("ipv6IpDefaultHopLimit",
-         ipv6IpDefaultHopLimit_oid, OID_LENGTH(ipv6IpDefaultHopLimit_oid),
-         "/proc/sys/net/ipv6/conf/default/hop_limit", ASN_INTEGER,
-         HANDLER_CAN_RWRITE, NULL, NULL);
-
-     netsnmp_register_num_file_instance
-        ("ipDefaultTTL",
-         ipDefaultTTL_oid, OID_LENGTH(ipDefaultTTL_oid),
-         "/proc/sys/net/ipv4/ip_default_ttl", ASN_INTEGER,
-         HANDLER_CAN_RWRITE, NULL, NULL);
-                                       
 }
 
-int
+static int
 handle_ipForwarding(netsnmp_mib_handler *handler,
                           netsnmp_handler_registration *reginfo,
                           netsnmp_agent_request_info   *reqinfo,
@@ -122,6 +121,7 @@
             }
             break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * SET REQUEST
          *
@@ -179,6 +179,7 @@
                  netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_UNDOFAILED);
              }
              break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
         default:
             /* we should never get here, so this is a really bad error */
@@ -190,7 +191,106 @@
 }
 
 
-int
+static int
+handle_ipDefaultTTL(netsnmp_mib_handler *handler,
+                    netsnmp_handler_registration *reginfo,
+                    netsnmp_agent_request_info   *reqinfo,
+                    netsnmp_request_info         *requests)
+{
+    int      rc;
+    u_long   value;
+
+    /* We are never called for a GETNEXT if it's registered as a
+       "instance", as it's "magically" handled for us.  */
+
+    /* a instance handler also only hands us one request at a time, so
+       we don't need to loop over a list of requests; we'll only get one. */
+
+    switch(reqinfo->mode) {
+
+        case MODE_GET:
+            rc = netsnmp_arch_ip_scalars_ipDefaultTTL_get(&value);
+            if (rc != 0) {
+                netsnmp_set_request_error(reqinfo, requests,
+                                      SNMP_NOSUCHINSTANCE);
+            }
+            else {
+                snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
+                                     (u_char *)&value, sizeof(value));
+            }
+            break;
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        /*
+         * SET REQUEST
+         *
+         * multiple states in the transaction.  See:
+         * http://www.net-snmp.org/tutorial-5/toolkit/mib_module/set-actions.jpg
+         */
+        case MODE_SET_RESERVE1:
+            break;
+
+        case MODE_SET_RESERVE2:
+            /*
+             * store old info for undo later
+             */
+            rc = netsnmp_arch_ip_scalars_ipDefaultTTL_get(&value);
+            if (rc < 0) {
+                netsnmp_set_request_error(reqinfo, requests,
+                                          SNMP_ERR_NOCREATION);
+            } else {
+                u_long *value_save;
+                value_save = netsnmp_memdup(&value, sizeof(value));
+                if ( NULL == value_save )
+                    netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_RESOURCEUNAVAILABLE);
+                else
+                    netsnmp_request_add_list_data(requests,
+                                                  netsnmp_create_data_list
+                                                  ("ipttl", value_save,
+                                                  free));
+	    }
+            break;
+
+        case MODE_SET_FREE:
+            /* XXX: free resources allocated in RESERVE1 and/or
+               RESERVE2.  Something failed somewhere, and the states
+               below won't be called. */
+            break;
+
+        case MODE_SET_ACTION:
+            /* XXX: perform the value change here */
+            value =  *(requests->requestvb->val.integer);
+            rc = netsnmp_arch_ip_scalars_ipDefaultTTL_set(value);
+            if ( 0 != rc ) {
+                netsnmp_set_request_error(reqinfo, requests, rc);
+            }
+            break;
+
+        case MODE_SET_COMMIT:
+            break;
+
+        case MODE_SET_UNDO:
+             value =
+                 *((u_long *) netsnmp_request_get_list_data(requests,
+                                                            "ipttl"));
+             rc = netsnmp_arch_ip_scalars_ipDefaultTTL_set(value);
+             if ( 0 != rc ) {
+                 netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_UNDOFAILED);
+             }
+             break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+        default:
+            /* we should never get here, so this is a really bad error */
+            snmp_log(LOG_ERR, "unknown mode (%d) in handle_ipDefaultTTL\n", reqinfo->mode );
+            return SNMP_ERR_GENERR;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+
+
+static int
 handle_ipv6IpForwarding(netsnmp_mib_handler *handler,
                         netsnmp_handler_registration *reginfo,
                         netsnmp_agent_request_info *reqinfo,
@@ -223,6 +323,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * SET REQUEST
          *
@@ -252,7 +353,7 @@
             else {
                 netsnmp_request_add_list_data(requests,
                                               netsnmp_create_data_list
-                                              ("ipfw", value_save,
+                                              ("ip6fw", value_save,
                                                free));
             }
         }
@@ -275,12 +376,13 @@
     case MODE_SET_UNDO:
         value =
             *((u_long *) netsnmp_request_get_list_data(requests,
-                                                       "ipfw"));
+                                                       "ip6fw"));
         rc = netsnmp_arch_ip_scalars_ipv6IpForwarding_set(value);
         if ( 0 != rc ) {
             netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_UNDOFAILED);
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         /*
@@ -294,7 +396,8 @@
     return SNMP_ERR_NOERROR;
 }
 
-int
+
+static int
 handle_ipAddressSpinLock(netsnmp_mib_handler *handler,
                           netsnmp_handler_registration *reginfo,
                           netsnmp_agent_request_info   *reqinfo,
@@ -316,6 +419,7 @@
                                      sizeof(ipAddressSpinLockValue));
             break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * SET REQUEST
          *
@@ -351,6 +455,7 @@
 
         case MODE_SET_UNDO:
              break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
         default:
             /* we should never get here, so this is a really bad error */
@@ -360,3 +465,123 @@
 
     return SNMP_ERR_NOERROR;
 }
+
+
+static int
+handle_ipv6IpDefaultHopLimit(netsnmp_mib_handler *handler,
+                             netsnmp_handler_registration *reginfo,
+                             netsnmp_agent_request_info *reqinfo,
+                             netsnmp_request_info *requests)
+{
+    u_long          value;
+    int             rc;
+    /*
+     * We are never called for a GETNEXT if it's registered as a
+     * "instance", as it's "magically" handled for us.  
+     */
+
+    /*
+     * a instance handler also only hands us one request at a time, so
+     * we don't need to loop over a list of requests; we'll only get one. 
+     */
+
+    switch (reqinfo->mode) {
+
+    case MODE_GET:
+
+        rc = netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_get(&value);
+        if (rc != 0) {
+            netsnmp_set_request_error(reqinfo, requests,
+                                  SNMP_NOSUCHINSTANCE);
+        }
+        else {
+            snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
+                                 (u_char *)&value, sizeof(value));
+        }
+
+        break;
+
+#ifdef NOTYET
+        /*
+         * SET REQUEST
+         *
+         * multiple states in the transaction.  See:
+         * http://www.net-snmp.org/tutorial-5/toolkit/mib_module/set-actions.jpg
+         */
+    case MODE_SET_RESERVE1:
+        /*
+         * or you could use netsnmp_check_vb_type_and_size instead 
+         */
+        rc = netsnmp_check_vb_type(requests->requestvb, ASN_INTEGER);
+        if (rc != SNMP_ERR_NOERROR) {
+            netsnmp_set_request_error(reqinfo, requests, rc);
+        }
+        break;
+
+    case MODE_SET_RESERVE2:
+        /*
+         * XXX malloc "undo" storage buffer 
+         */
+        if ( /* XXX if malloc, or whatever, failed: */ ) {
+            netsnmp_set_request_error(reqinfo, requests,
+                                      SNMP_ERR_RESOURCEUNAVAILABLE);
+        }
+        break;
+
+    case MODE_SET_FREE:
+        /*
+         * XXX: free resources allocated in RESERVE1 and/or
+         * RESERVE2.  Something failed somewhere, and the states
+         * below won't be called. 
+         */
+        break;
+
+    case MODE_SET_ACTION:
+        /*
+         * XXX: perform the value change here 
+         */
+        if ( /* XXX: error? */ ) {
+            netsnmp_set_request_error(reqinfo, requests, /* some error */
+                                      );
+        }
+        break;
+
+    case MODE_SET_COMMIT:
+        /*
+         * XXX: delete temporary storage 
+         */
+        if ( /* XXX: error? */ ) {
+            /*
+             * try _really_really_ hard to never get to this point 
+             */
+            netsnmp_set_request_error(reqinfo, requests,
+                                      SNMP_ERR_COMMITFAILED);
+        }
+        break;
+
+    case MODE_SET_UNDO:
+        /*
+         * XXX: UNDO and return to previous value for the object 
+         */
+        if ( /* XXX: error? */ ) {
+            /*
+             * try _really_really_ hard to never get to this point 
+             */
+            netsnmp_set_request_error(reqinfo, requests,
+                                      SNMP_ERR_UNDOFAILED);
+        }
+        break;
+#endif
+
+    default:
+        /*
+         * we should never get here, so this is a really bad error 
+         */
+        snmp_log(LOG_ERR,
+                 "unknown mode (%d) in handle_ipv6IpDefaultHopLimit\n",
+                 reqinfo->mode);
+        return SNMP_ERR_GENERR;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
diff --git a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c
index f1e7844..a851a30 100644
--- a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -48,6 +49,10 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -347,7 +352,7 @@
      */
     {
         oid             lc_oid[] = { IPV4INTERFACETABLELASTCHANGE_OID };
-        netsnmp_register_watched_scalar(netsnmp_create_handler_registration
+        netsnmp_register_watched_scalar2(netsnmp_create_handler_registration
                                         ("ipv4TableLastChanged", NULL,
                                          lc_oid, OID_LENGTH(lc_oid),
                                          HANDLER_CAN_RONLY),
diff --git a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c
index 3c85a54..35b2e96 100644
--- a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c
+++ b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c
@@ -6,9 +6,14 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_require(agentx_enable_subagent)
+netsnmp_feature_require(agent_check_and_process)
+netsnmp_feature_require(enable_stderrlog)
+
 /*
  * include our parent header 
  */
diff --git a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c
index aa8fc3f..cbd533c 100644
--- a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -48,6 +49,10 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -345,7 +350,7 @@
      */
     {
         oid             lc_oid[] = { IPV6INTERFACETABLELASTCHANGE_OID };
-        netsnmp_register_watched_scalar(netsnmp_create_handler_registration
+        netsnmp_register_watched_scalar2(netsnmp_create_handler_registration
                                         ("ipv6TableLastChanged", NULL,
                                          lc_oid, OID_LENGTH(lc_oid),
                                          HANDLER_CAN_RONLY),
diff --git a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c
index a6e952e..ef2088b 100644
--- a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,19 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ipv6ScopeZoneIndexTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(ipv6ScopeZoneIndexTable_container_size, ipv6ScopeZoneIndexTable_external_access)
+netsnmp_feature_child_of(ipv6ScopeZoneIndexTable_registration_set, ipv6ScopeZoneIndexTable_external_access)
+netsnmp_feature_child_of(ipv6ScopeZoneIndexTable_registration_get, ipv6ScopeZoneIndexTable_external_access)
+netsnmp_feature_child_of(ipv6ScopeZoneIndexTable_container_get, ipv6ScopeZoneIndexTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -84,19 +98,23 @@
 static void
 _cache_free(netsnmp_cache * cache, void *magic);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_CONTAINER_GET
 netsnmp_container *
 ipv6ScopeZoneIndexTable_container_get(void)
 {
     return ipv6ScopeZoneIndexTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_REGISTRATION_GET
 ipv6ScopeZoneIndexTable_registration *
 ipv6ScopeZoneIndexTable_registration_get(void)
 {
     return ipv6ScopeZoneIndexTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_REGISTRATION_SET
 ipv6ScopeZoneIndexTable_registration *
 ipv6ScopeZoneIndexTable_registration_set
     (ipv6ScopeZoneIndexTable_registration * newreg)
@@ -106,12 +124,15 @@
     ipv6ScopeZoneIndexTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_CONTAINER_SIZE
 int
 ipv6ScopeZoneIndexTable_container_size(void)
 {
     return CONTAINER_SIZE(ipv6ScopeZoneIndexTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_CONTAINER_SIZE */
 
 /*
  * mfd multiplexer modes
@@ -224,6 +245,13 @@
      */
     if (access_multiplexer->object_lookup)
         mfd_modes |= BABY_STEP_OBJECT_LOOKUP;
+
+    if (access_multiplexer->pre_request)
+        mfd_modes |= BABY_STEP_PRE_REQUEST;
+    if (access_multiplexer->post_request)
+        mfd_modes |= BABY_STEP_POST_REQUEST;
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -231,11 +259,6 @@
     if (access_multiplexer->object_syntax_checks)
         mfd_modes |= BABY_STEP_CHECK_OBJECT;
 
-    if (access_multiplexer->pre_request)
-        mfd_modes |= BABY_STEP_PRE_REQUEST;
-    if (access_multiplexer->post_request)
-        mfd_modes |= BABY_STEP_POST_REQUEST;
-
     if (access_multiplexer->undo_setup)
         mfd_modes |= BABY_STEP_UNDO_SETUP;
     if (access_multiplexer->undo_cleanup)
@@ -251,6 +274,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -1057,6 +1081,7 @@
 }                               /* _ipv6ScopeZoneIndexTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_EXTERNAL_ACCESS
 ipv6ScopeZoneIndexTable_rowreq_ctx *
 ipv6ScopeZoneIndexTable_row_find_by_mib_index
     (ipv6ScopeZoneIndexTable_mib_index * mib_idx)
@@ -1084,6 +1109,7 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_EXTERNAL_ACCESS */
 
 static int
 _cache_load(netsnmp_cache * cache, void *vmagic)
diff --git a/agent/mibgroup/kernel_sunos5.c b/agent/mibgroup/kernel_sunos5.c
index ca3c809..331ee6d 100644
--- a/agent/mibgroup/kernel_sunos5.c
+++ b/agent/mibgroup/kernel_sunos5.c
@@ -112,6 +112,8 @@
     {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_IP6_ROUTE, 200 * sizeof(mib2_ipv6AddrEntry_t), (void *)-1, 0, 30, 0, 0},
+    {MIB_ICMP6, 20 * sizeof(mib2_ipv6IfIcmpEntry_t), (void *)-1, 0, 30, 0, 0},
     {MIB_TCP6_CONN, 1000 * sizeof(mib2_tcp6ConnEntry_t), (void *) -1, 0, 30,
      0, 0},
     {MIB_UDP6_ENDPOINT, 1000 * sizeof(mib2_udp6Entry_t), (void *) -1, 0, 30,
@@ -152,6 +154,8 @@
 #endif
     {MIB2_IP6, 0},
     {MIB2_IP6, MIB2_IP6_ADDR},
+    {MIB2_IP6, MIB2_IP6_ROUTE},
+    {MIB2_ICMP6, 0},
     {MIB2_TCP6, MIB2_TCP6_CONN},
     {MIB2_UDP6, MIB2_UDP6_ENTRY},
 #endif
diff --git a/agent/mibgroup/kernel_sunos5.h b/agent/mibgroup/kernel_sunos5.h
index 0bffcb9..bf337ae 100644
--- a/agent/mibgroup/kernel_sunos5.h
+++ b/agent/mibgroup/kernel_sunos5.h
@@ -76,6 +76,8 @@
 #endif
     MIB_IP6,
     MIB_IP6_ADDR,
+    MIB_IP6_ROUTE,
+    MIB_ICMP6,
     MIB_TCP6_CONN,
     MIB_UDP6_ENDPOINT,
 #endif
diff --git a/agent/mibgroup/mibII.h b/agent/mibgroup/mibII.h
index 1b94a59..f3157fc 100644
--- a/agent/mibgroup/mibII.h
+++ b/agent/mibgroup/mibII.h
@@ -25,15 +25,16 @@
 
 /*
  * these new module re-rewrites have only been implemented for
- * linux.
+ * Linux and *BSD.
  */
-#if defined( linux )
+#if defined(linux)
+config_require(ip-mib ip-forward-mib tcp-mib udp-mib)
+#elif defined(dragonfly) || defined(freebsd7) || \
+    defined(netbsd5) || defined(openbsd4) || defined( darwin )
 config_require(ip-mib ip-forward-mib tcp-mib udp-mib)
 #elif defined(solaris2)
 config_require(tcp-mib udp-mib)
-#elif defined(freebsd4) || defined(dragonfly)
-config_require(tcp-mib udp-mib)
-#elif defined(openbsd4)
+#elif defined(freebsd4)
 config_require(tcp-mib udp-mib)
 #elif defined(netbsd1)
 config_require(tcp-mib udp-mib)
@@ -44,4 +45,5 @@
  */
 #if defined( solaris2 ) && defined( HAVE_MIB2_IPIFSTATSENTRY_T )
 config_require(ip-mib/ipSystemStatsTable ip-mib/ipAddressTable)
+config_require(ip-forward-mib)
 #endif
diff --git a/agent/mibgroup/mibII/at.c b/agent/mibgroup/mibII/at.c
index e968074..f57ba2a 100644
--- a/agent/mibgroup/mibII/at.c
+++ b/agent/mibgroup/mibII/at.c
@@ -525,7 +525,6 @@
  */
 #define ARP_CACHE_INCR 1024
 static struct arptab *at = NULL;
-static int      arptab_curr_max_size = 0;
 
 #endif
 #endif                          /* NETSNMP_CAN_USE_SYSCTL */
@@ -631,8 +630,10 @@
 
     i = 0;
     while (fgets(line, sizeof(line), in)) {
+        static int      arptab_curr_max_size;
         u_long          tmp_a;
         unsigned int    tmp_flags;
+
         if (i >= arptab_curr_max_size) {
             struct arptab  *newtab = (struct arptab *)
                 realloc(at, (sizeof(struct arptab) *
diff --git a/agent/mibgroup/mibII/icmp.c b/agent/mibgroup/mibII/icmp.c
index 760b1a4..be803ee 100644
--- a/agent/mibgroup/mibII/icmp.c
+++ b/agent/mibgroup/mibII/icmp.c
@@ -71,6 +71,95 @@
 	 *********************/
 
 
+#ifdef hpux11
+#define ICMP_STAT_STRUCTURE	int
+#endif
+
+#ifdef linux
+#define ICMP_STAT_STRUCTURE	struct icmp_mib
+#define USES_SNMP_DESIGNED_ICMPSTAT
+#undef ICMPSTAT_SYMBOL
+#endif
+
+#ifdef solaris2
+#define USES_SNMP_DESIGNED_ICMPSTAT
+#define ICMP_STAT_STRUCTURE	mib2_icmp_t
+#include "kernel_mib.h"
+static int
+solaris_read_icmp_stat(ICMP_STAT_STRUCTURE *);
+static int
+solaris_read_icmp_msg_stat(ICMP_STAT_STRUCTURE *, struct icmp4_msg_mib *, int *);
+#ifdef NETSNMP_ENABLE_IPV6
+static int
+solaris_read_icmp6_stat(struct icmp6_mib *);
+static int
+solaris_read_icmp6_msg_stat(struct icmp6_mib *, struct icmp6_msg_mib *, int *);
+#endif
+#endif
+
+#ifdef NETBSD_STATS_VIA_SYSCTL
+#define ICMP_STAT_STRUCTURE     struct icmp_mib
+#define USES_SNMP_DESIGNED_ICMPSTAT
+#undef ICMP_NSTATS
+#endif
+
+#ifdef HAVE_IPHLPAPI_H
+#include <iphlpapi.h>
+#define ICMP_STAT_STRUCTURE MIB_ICMP
+#endif
+
+#if (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS))
+#define ICMP_STAT_STRUCTURE	struct icmp_mib
+#define USES_SNMP_DESIGNED_ICMPSTAT
+#undef ICMPSTAT_SYMBOL
+#endif
+
+#ifdef HAVE_SYS_ICMPIPSTATS_H
+/* or #ifdef		HAVE_SYS_TCPIPSTATS_H  ??? */
+#define ICMP_STAT_STRUCTURE	struct kna
+#define USES_TRADITIONAL_ICMPSTAT
+#endif
+
+#if !defined(ICMP_STAT_STRUCTURE)
+#define ICMP_STAT_STRUCTURE	struct icmpstat
+#define USES_TRADITIONAL_ICMPSTAT
+#endif
+
+ICMP_STAT_STRUCTURE icmpstat;
+#if defined(solaris2) && defined(NETSNMP_ENABLE_IPV6)
+static struct icmp6_mib icmp6stat;
+#endif
+
+/* If they just all agreed ... */
+
+#ifndef ICMP_DEST_UNREACH
+#define ICMP_DEST_UNREACH ICMP_UNREACH
+#endif
+#ifndef ICMP_SOURCE_QUENCH
+#define ICMP_SOURCE_QUENCH ICMP_SOURCEQUENCH
+#endif
+#ifndef ICMP_TIME_EXCEEDED
+#define ICMP_TIME_EXCEEDED ICMP_TIMXCEED
+#endif
+#ifndef ICMP_PARAMETERPROB
+#define ICMP_PARAMETERPROB ICMP_PARAMPROB
+#endif
+#ifndef ICMP_TIMESTAMP
+#define ICMP_TIMESTAMP ICMP_TSTAMP
+#endif
+#ifndef ICMP_TIMESTAMPREPLY
+#define ICMP_TIMESTAMPREPLY ICMP_TSTAMPREPLY
+#endif
+#ifndef ICMP_ADDRESS
+#define ICMP_ADDRESS ICMP_MASKREQ
+#endif
+#ifndef ICMP_ADDRESSREPLY
+#define ICMP_ADDRESSREPLY ICMP_MASKREPLY
+#endif
+#ifndef MLD_LISTENER_REDUCTION
+#define MLD_LISTENER_REDUCTION MLD_LISTENER_DONE
+#endif
+
 /*
  * Define the OID pointer to the top of the mib tree that we're
  * registering underneath 
@@ -84,7 +173,7 @@
 extern int      ip_module_count;
 #endif
 
-#ifdef linux
+#ifdef USES_SNMP_DESIGNED_ICMPSTAT
 struct icmp_stats_table_entry {
 	uint32_t ipVer;
         uint32_t icmpStatsInMsgs;
@@ -130,54 +219,79 @@
 icmp_stats_load(netsnmp_cache *cache, void *vmagic)
 {
 
-	/*
-         * note don't bother using the passed in cache
-	 * and vmagic pointers.  They are useless as they 
-	 * currently point to the icmp system stats cache	
-	 * since I see little point in registering another
-	 * cache for this table.  Its not really needed
-	 */
+    /*
+     * note don't bother using the passed in cache
+     * and vmagic pointers.  They are useless as they 
+     * currently point to the icmp system stats cache	
+     * since I see little point in registering another
+     * cache for this table.  Its not really needed
+     */
 
-	int i;
-	struct icmp_mib v4icmp;
-	struct icmp6_mib v6icmp;
-	for(i=0;i<2;i++) {
-		switch(i) {
-			case 0:
-				linux_read_icmp_stat(&v4icmp);
-				icmp_stats_table[i].icmpStatsInMsgs = v4icmp.icmpInMsgs;
-				icmp_stats_table[i].icmpStatsInErrors = v4icmp.icmpInErrors;
-				icmp_stats_table[i].icmpStatsOutMsgs = v4icmp.icmpOutMsgs;
-				icmp_stats_table[i].icmpStatsOutErrors = v4icmp.icmpOutErrors;
-				break;
-			default:
-				memset(&icmp_stats_table[i],0,
-					sizeof(struct icmp_stats_table_entry));
-				linux_read_icmp6_stat(&v6icmp);
-				icmp_stats_table[i].icmpStatsInMsgs = v6icmp.icmp6InMsgs;
-				icmp_stats_table[i].icmpStatsInErrors = v6icmp.icmp6InErrors;
-				icmp_stats_table[i].icmpStatsOutMsgs = v6icmp.icmp6OutMsgs;
-				icmp_stats_table[i].icmpStatsOutErrors = v6icmp.icmp6OutDestUnreachs +
-					v6icmp.icmp6OutPktTooBigs +  v6icmp.icmp6OutTimeExcds +
-					v6icmp.icmp6OutParmProblems;
-				break;
-		}
-		icmp_stats_table[i].ipVer=i+1;
-	}
+    int i;
+    ICMP_STAT_STRUCTURE v4icmp;
+#ifdef NETSNMP_ENABLE_IPV6
+    struct icmp6_mib v6icmp;
+#endif
+    for(i = 0; i < 2; i++) {
+        switch(i) {
+        case 0:
+#ifdef linux
+            linux_read_icmp_stat(&v4icmp);
+#elif defined(NETBSD_STATS_VIA_SYSCTL)
+	    netbsd_read_icmp_stat(&v4icmp);
+#elif (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS))
+	    sysctl_read_icmp_stat(&v4icmp);
+#elif defined(solaris2)
+	    solaris_read_icmp_stat(&v4icmp);
+#else
+	    return -1;
+#endif
+            icmp_stats_table[i].icmpStatsInMsgs = v4icmp.icmpInMsgs;
+            icmp_stats_table[i].icmpStatsInErrors = v4icmp.icmpInErrors;
+            icmp_stats_table[i].icmpStatsOutMsgs = v4icmp.icmpOutMsgs;
+            icmp_stats_table[i].icmpStatsOutErrors = v4icmp.icmpOutErrors;
+            break;
+        case 1:
+#ifdef NETSNMP_ENABLE_IPV6
+            memset(&icmp_stats_table[i],0,
+                    sizeof(struct icmp_stats_table_entry));
+#ifdef linux
+            linux_read_icmp6_stat(&v6icmp);
+#elif defined(NETBSD_STATS_VIA_SYSCTL)
+	    netbsd_read_icmp6_stat(&v6icmp);
+#elif (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS))
+	    sysctl_read_icmp6_stat(&v6icmp);
+#elif defined(solaris2)
+	    solaris_read_icmp6_stat(&v6icmp);
+#else
+	    return -1;
+#endif
+            icmp_stats_table[i].icmpStatsInMsgs = v6icmp.icmp6InMsgs;
+            icmp_stats_table[i].icmpStatsInErrors = v6icmp.icmp6InErrors;
+            icmp_stats_table[i].icmpStatsOutMsgs = v6icmp.icmp6OutMsgs;
+            icmp_stats_table[i].icmpStatsOutErrors =
+                        v6icmp.icmp6OutDestUnreachs +
+                        v6icmp.icmp6OutPktTooBigs +  v6icmp.icmp6OutTimeExcds +
+                        v6icmp.icmp6OutParmProblems;
+#endif	/* NETSNMP_ENABLE_IPV6 */
+            break;
+        }
+        icmp_stats_table[i].ipVer = i + 1;
+    }
 
-	return 0;
+    return 0;
 }
 
 int
 icmp_msg_stats_load(netsnmp_cache *cache, void *vmagic)
 {
-    struct icmp_mib v4icmp;
+    ICMP_STAT_STRUCTURE v4icmp;
     struct icmp4_msg_mib v4icmpmsg;
 #ifdef NETSNMP_ENABLE_IPV6
     struct icmp6_mib v6icmp;
     struct icmp6_msg_mib v6icmpmsg;
 #endif
-    int i, j, k, flag, inc;
+    int i, k, flag, inc;
 
     memset(&icmp_msg_stats_table, 0, sizeof(icmp_msg_stats_table));
 
@@ -185,7 +299,17 @@
     flag = 0;
     k = 0;
     inc = 0;
+#ifdef linux
     linux_read_icmp_msg_stat(&v4icmp, &v4icmpmsg, &flag);
+#elif defined(NETBSD_STATS_VIA_SYSCTL)
+    netbsd_read_icmp_msg_stat(&v4icmp, &v4icmpmsg, &flag);
+#elif (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS))
+    sysctl_read_icmp_msg_stat(&v4icmp, &v4icmpmsg, &flag);
+#elif defined(solaris2)
+    solaris_read_icmp_msg_stat(&v4icmp, &v4icmpmsg, &flag);
+#else
+    return -1;
+#endif
     if (flag) {
         while (255 >= k) {
             if (v4icmpmsg.vals[k].InType) {
@@ -212,70 +336,96 @@
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ECHOREPLY;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInEchoReps;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutEchoReps;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_DEST_UNREACH;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInDestUnreachs;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutDestUnreachs;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_SOURCE_QUENCH;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInSrcQuenchs;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutSrcQuenchs;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_REDIRECT;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInRedirects;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutRedirects;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ECHO;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInEchos;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutEchos;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_TIME_EXCEEDED;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInTimeExcds;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutTimeExcds;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_PARAMETERPROB;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInParmProbs;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutParmProbs;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_TIMESTAMP;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInTimestamps;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutTimestamps;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_TIMESTAMPREPLY;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInTimestampReps;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutTimestampReps;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ADDRESS;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInAddrMasks;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutAddrMasks;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ADDRESSREPLY;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInAddrMaskReps;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutAddrMaskReps;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
         i++;
-
-        /* set the IP version and default flags */
-        for (j = 0; j < ICMP_MSG_STATS_IPV4_COUNT; j++) {
-            icmp_msg_stats_table[j].ipVer = 1;
-            icmp_msg_stats_table[j].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
-        }
     }
 
 #ifdef NETSNMP_ENABLE_IPV6
     flag = 0;
     k = 0;
     inc = 0;
+#ifdef linux
     linux_read_icmp6_msg_stat(&v6icmp, &v6icmpmsg, &flag);
+#elif defined(NETBSD_STATS_VIA_SYSCTL)
+    netbsd_read_icmp6_msg_stat(&v6icmp, &v6icmpmsg, &flag);
+#elif (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS))
+    sysctl_read_icmp6_msg_stat(&v6icmp, &v6icmpmsg, &flag);
+#elif defined(solaris2)
+    solaris_read_icmp6_msg_stat(&v6icmp, &v6icmpmsg, &flag);
+#else
+    return -1;
+#endif
     if (flag) {
         while (255 >= k) {
             if (v6icmpmsg.vals[k].InType) {
@@ -302,80 +452,101 @@
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_DST_UNREACH;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InDestUnreachs;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutDestUnreachs;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_PACKET_TOO_BIG;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InPktTooBigs;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutPktTooBigs;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_TIME_EXCEEDED;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InTimeExcds;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutTimeExcds;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_PARAM_PROB;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InParmProblems;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutParmProblems;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_ECHO_REQUEST;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InEchos;
-        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = 0;
-        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutEchos;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_ECHO_REPLY;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InEchoReplies;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutEchoReplies;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
         i++;
 
 #ifdef MLD_LISTENER_QUERY
         icmp_msg_stats_table[i].icmpMsgStatsType = MLD_LISTENER_QUERY;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InGroupMembQueries;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = 0;
+        icmp_msg_stats_table[i].ipVer = 2;
         icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN;
         i++;
+
         icmp_msg_stats_table[i].icmpMsgStatsType = MLD_LISTENER_REPORT;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InGroupMembResponses;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutGroupMembResponses;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = MLD_LISTENER_REDUCTION;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InGroupMembReductions;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutGroupMembReductions;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
         i++;
-#endif
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ND_ROUTER_SOLICIT;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InRouterSolicits;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutRouterSolicits;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ND_ROUTER_ADVERT;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InRouterAdvertisements;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = 0;
+        icmp_msg_stats_table[i].ipVer = 2;
         icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ND_NEIGHBOR_SOLICIT;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InNeighborSolicits;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutNeighborSolicits;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ND_NEIGHBOR_ADVERT;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InNeighborAdvertisements;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutNeighborAdvertisements;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
         i++;
 
         icmp_msg_stats_table[i].icmpMsgStatsType = ND_REDIRECT;
         icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InRedirects;
         icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutRedirects;
-
-        for (j = 0; j < ICMP_MSG_STATS_IPV6_COUNT; j++) {
-            icmp_msg_stats_table[ICMP_MSG_STATS_IPV4_COUNT + j].ipVer = 2;
-            icmp_msg_stats_table[ICMP_MSG_STATS_IPV4_COUNT + j].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
-        }
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+#endif
     }
 #endif /* NETSNMP_ENABLE_IPV6 */
     return 0;
@@ -387,25 +558,25 @@
                      netsnmp_variable_list *index,
                      netsnmp_iterator_info *data)
 {
-	int i = (int)(intptr_t)(*loop_context);
-	netsnmp_variable_list *idx = index;
+    int i = (int)(intptr_t)(*loop_context);
+    netsnmp_variable_list *idx = index;
 
-	if(i > 1)
-		return NULL;
+    if(i > 1)
+        return NULL;
 
 
-	/*
-	 *set IP version
-	 */
-	snmp_set_var_typed_value(idx, ASN_INTEGER, (u_char *)&icmp_stats_table[i].ipVer,
-                                sizeof(uint32_t));
-	idx = idx->next_variable;
+    /*
+     *set IP version
+     */
+    snmp_set_var_typed_value(idx, ASN_INTEGER, (u_char *)&icmp_stats_table[i].ipVer,
+                            sizeof(uint32_t));
+    idx = idx->next_variable;
 
-	*data_context = &icmp_stats_table[i];
+    *data_context = &icmp_stats_table[i];
 
-	*loop_context = (void *)(intptr_t)(++i);
-	
-	return index;
+    *loop_context = (void *)(intptr_t)(++i);
+    
+    return index;
 }
 
 
@@ -415,10 +586,9 @@
                      netsnmp_variable_list *index,
                      netsnmp_iterator_info *data)
 {
-
-        *loop_context = NULL;
-        *data_context = NULL;
-        return icmp_stats_next_entry(loop_context, data_context, index, data);
+    *loop_context = NULL;
+    *data_context = NULL;
+    return icmp_stats_next_entry(loop_context, data_context, index, data);
 }
 
 netsnmp_variable_list *
@@ -466,13 +636,13 @@
 void
 init_icmp(void)
 {
-#ifdef linux
-    netsnmp_handler_registration *table_reginfo = NULL;
+#ifdef USES_SNMP_DESIGNED_ICMPSTAT
     netsnmp_handler_registration *msg_stats_reginfo = NULL;
-    netsnmp_iterator_info *iinfo = NULL;
-    netsnmp_iterator_info *msg_stats_iinfo = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
-    netsnmp_table_registration_info *msg_stats_table_info = NULL;
+    netsnmp_handler_registration *table_reginfo = NULL;
+    netsnmp_iterator_info *iinfo;
+    netsnmp_iterator_info *msg_stats_iinfo;
+    netsnmp_table_registration_info *table_info;
+    netsnmp_table_registration_info *msg_stats_table_info;
 #endif
     netsnmp_handler_registration *scalar_reginfo = NULL;
     int                    rc;
@@ -483,14 +653,9 @@
     DEBUGMSGTL(("mibII/icmp", "Initialising ICMP group\n"));
     scalar_reginfo = netsnmp_create_handler_registration("icmp", icmp_handler,
 		    icmp_oid, OID_LENGTH(icmp_oid), HANDLER_CAN_RONLY);
-    if (!scalar_reginfo)
-        return;
-
     rc = netsnmp_register_scalar_group(scalar_reginfo, ICMPINMSGS, ICMPOUTADDRMASKREPS);
-    if (rc != SNMPERR_SUCCESS) {
+    if (rc != SNMPERR_SUCCESS)
         return;
-    }
-
     /*
      * .... with a local cache
      *    (except for HP-UX 11, which extracts objects individually)
@@ -501,25 +666,22 @@
 			   		icmp_load, icmp_free,
 					icmp_oid, OID_LENGTH(icmp_oid)));
     if (rc != SNMPERR_SUCCESS)
-        goto bail;
+	goto bail;
 #endif
-#ifdef linux
+#ifdef USES_SNMP_DESIGNED_ICMPSTAT
 
     /* register icmpStatsTable */
-
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     if (!table_info)
         goto bail;
-
     netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER, 0);
     table_info->min_column = ICMP_STAT_INMSG;
     table_info->max_column = ICMP_STAT_OUTERR;
 
 
     iinfo      = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info);
-    if (!iinfo) 
+    if (!iinfo)
         goto bail;
-
     iinfo->get_first_data_point = icmp_stats_first_entry;
     iinfo->get_next_data_point  = icmp_stats_next_entry;
     iinfo->table_reginfo        = table_info;
@@ -527,20 +689,21 @@
     table_reginfo = netsnmp_create_handler_registration("icmpStatsTable",
 		icmp_stats_table_handler, icmp_stats_tbl_oid,
 		OID_LENGTH(icmp_stats_tbl_oid), HANDLER_CAN_RONLY);
-    if (!table_reginfo)
-        goto bail;
 
-    rc = netsnmp_register_table_iterator(table_reginfo, iinfo);
+    rc = netsnmp_register_table_iterator2(table_reginfo, iinfo);
     if (rc != SNMPERR_SUCCESS) {
         table_reginfo = NULL;
         goto bail;
     }
+    netsnmp_inject_handler( table_reginfo,
+            netsnmp_get_cache_handler(ICMP_STATS_CACHE_TIMEOUT,
+                        icmp_load, icmp_free,
+                        icmp_stats_tbl_oid, OID_LENGTH(icmp_stats_tbl_oid)));
 
     /* register icmpMsgStatsTable */
     msg_stats_table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     if (!msg_stats_table_info)
         goto bail;
-
     netsnmp_table_helper_add_indexes(msg_stats_table_info, ASN_INTEGER, ASN_INTEGER, 0);
     msg_stats_table_info->min_column = ICMP_MSG_STAT_IN_PKTS;
     msg_stats_table_info->max_column = ICMP_MSG_STAT_OUT_PKTS;
@@ -548,7 +711,6 @@
     msg_stats_iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info);
     if (!msg_stats_iinfo)
         goto bail;
-
     msg_stats_iinfo->get_first_data_point = icmp_msg_stats_first_entry;
     msg_stats_iinfo->get_next_data_point  = icmp_msg_stats_next_entry;
     msg_stats_iinfo->table_reginfo        = msg_stats_table_info;
@@ -556,26 +718,18 @@
     msg_stats_reginfo = netsnmp_create_handler_registration("icmpMsgStatsTable",
             icmp_msg_stats_table_handler, icmp_msg_stats_tbl_oid,
             OID_LENGTH(icmp_msg_stats_tbl_oid), HANDLER_CAN_RONLY);
-    if (!msg_stats_reginfo)
-        goto bail;
 
-    rc = netsnmp_register_table_iterator(msg_stats_reginfo, msg_stats_iinfo);
+    rc = netsnmp_register_table_iterator2(msg_stats_reginfo, msg_stats_iinfo);
     if (rc != SNMPERR_SUCCESS) {
         msg_stats_reginfo = NULL;
         goto bail;
     }
-    
+
     netsnmp_inject_handler( msg_stats_reginfo,
             netsnmp_get_cache_handler(ICMP_STATS_CACHE_TIMEOUT,
                 icmp_load, icmp_free,
                 icmp_msg_stats_tbl_oid, OID_LENGTH(icmp_msg_stats_tbl_oid)));
-#ifndef hpux11
-    netsnmp_inject_handler( table_reginfo,
-		    netsnmp_get_cache_handler(ICMP_STATS_CACHE_TIMEOUT,
-			   		icmp_load, icmp_free,
-					icmp_stats_tbl_oid, OID_LENGTH(icmp_stats_tbl_oid)));
-#endif /* ! hpux11 */
-#endif /* linux */
+#endif /* USES_SNMP_DESIGNED_ICMPSTAT */
 
 #ifdef USING_MIBII_IP_MODULE
     if (++ip_module_count == 2)
@@ -596,7 +750,7 @@
 #ifndef hpux11
 bail:
 #endif
-#ifdef linux
+#ifdef USES_SNMP_DESIGNED_ICMPSTAT
     if (msg_stats_reginfo)
         netsnmp_handler_registration_free(msg_stats_reginfo);
     if (table_reginfo)
@@ -613,48 +767,6 @@
 	 *
 	 *********************/
 
-#ifdef hpux11
-#define ICMP_STAT_STRUCTURE	int
-#endif
-
-#ifdef linux
-#define ICMP_STAT_STRUCTURE	struct icmp_mib
-#define USES_SNMP_DESIGNED_ICMPSTAT
-#undef ICMPSTAT_SYMBOL
-#endif
-
-#ifdef solaris2
-#define ICMP_STAT_STRUCTURE	mib2_icmp_t
-#define USES_SNMP_DESIGNED_ICMPSTAT
-#endif
-
-#ifdef NETBSD_STATS_VIA_SYSCTL
-#define ICMP_STAT_STRUCTURE     struct icmp_mib
-#define USES_SNMP_DESIGNED_ICMPSTAT
-#undef ICMP_NSTATS
-#endif
-
-#ifdef HAVE_IPHLPAPI_H
-#include <iphlpapi.h>
-#define ICMP_STAT_STRUCTURE MIB_ICMP
-#endif
-
-/* ?? #if (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS)) ?? */
-
-#ifdef HAVE_SYS_ICMPIPSTATS_H
-/* or #ifdef		HAVE_SYS_TCPIPSTATS_H  ??? */
-#define ICMP_STAT_STRUCTURE	struct kna
-#define USES_TRADITIONAL_ICMPSTAT
-#endif
-
-#if !defined(ICMP_STAT_STRUCTURE)
-#define ICMP_STAT_STRUCTURE	struct icmpstat
-#define USES_TRADITIONAL_ICMPSTAT
-#endif
-
-ICMP_STAT_STRUCTURE icmpstat;
-
-
         /*********************
 	 *
 	 *  System independent handler
@@ -672,9 +784,6 @@
     netsnmp_variable_list *requestvb;
     long     ret_value;
     oid      subid;
-#ifdef USES_TRADITIONAL_ICMPSTAT
-    int      i;
-#endif
 
     /*
      * The cached data should already have been loaded by the
@@ -782,13 +891,16 @@
         ret_value = icmpstat.icmpOutAddrMaskReps;
         break;
 #elif defined(USES_TRADITIONAL_ICMPSTAT) && !defined(_USE_PERFSTAT_PROTOCOL)
-    case ICMPINMSGS:
+    case ICMPINMSGS: {
+        int i;
+
         ret_value = icmpstat.icps_badcode +
             icmpstat.icps_tooshort +
             icmpstat.icps_checksum + icmpstat.icps_badlen;
         for (i = 0; i <= ICMP_MAXTYPE; i++)
             ret_value += icmpstat.icps_inhist[i];
         break;
+    }
     case ICMPINERRORS:
         ret_value = icmpstat.icps_badcode +
             icmpstat.icps_tooshort +
@@ -827,11 +939,14 @@
     case ICMPINADDRMASKREPS:
         ret_value = icmpstat.icps_inhist[ICMP_MASKREPLY];
         break;
-    case ICMPOUTMSGS:
+    case ICMPOUTMSGS: {
+        int i;
+
         ret_value = icmpstat.icps_oldshort + icmpstat.icps_oldicmp;
         for (i = 0; i <= ICMP_MAXTYPE; i++)
             ret_value += icmpstat.icps_outhist[i];
         break;
+    }
     case ICMPOUTERRORS:
         ret_value = icmpstat.icps_oldshort + icmpstat.icps_oldicmp;
         break;
@@ -1033,6 +1148,7 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -1042,6 +1158,7 @@
         snmp_log(LOG_WARNING, "mibII/icmp: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         snmp_log(LOG_WARNING, "mibII/icmp: Unrecognised mode (%d)\n",
                                reqinfo->mode);
@@ -1052,7 +1169,7 @@
 }
 
 
-#ifdef linux
+#ifdef USES_SNMP_DESIGNED_ICMPSTAT
 int
 icmp_stats_table_handler(netsnmp_mib_handler  *handler,
                  netsnmp_handler_registration *reginfo,
@@ -1105,6 +1222,7 @@
 			break;
 		case MODE_GETNEXT:
 		case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 		case MODE_SET_RESERVE1:
 		case MODE_SET_RESERVE2:
 		case MODE_SET_ACTION:
@@ -1114,6 +1232,7 @@
 			snmp_log(LOG_WARNING, "mibII/icmpStatsTable: Unsupported mode (%d)\n",
 				reqinfo->mode);
 			break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 		default:
 			snmp_log(LOG_WARNING, "mibII/icmpStatsTable: Unrecognised mode (%d)\n",
 				reqinfo->mode);
@@ -1175,6 +1294,7 @@
             break;
         case MODE_GETNEXT:
         case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_RESERVE1:
         case MODE_SET_RESERVE2:
         case MODE_SET_ACTION:
@@ -1184,6 +1304,7 @@
             snmp_log(LOG_WARNING, "mibII/icmpStatsTable: Unsupported mode (%d)\n",
                     reqinfo->mode);
             break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         default:
             snmp_log(LOG_WARNING, "mibII/icmpStatsTable: Unrecognised mode (%d)\n",
                     reqinfo->mode);
@@ -1193,7 +1314,7 @@
 
     return SNMP_ERR_NOERROR;
 }
-#endif		/* linux */
+#endif		/* USES_SNMP_DESIGNED_ICMPSTAT */
 
         /*********************
 	 *
@@ -1332,7 +1453,11 @@
 int
 icmp_load(netsnmp_cache *cache, void *vmagic)
 {
-    long            ret_value = -1;
+    int ret_value = -1;
+#ifdef NETSNMP_ENABLE_IPV6
+    mib2_ipv6IfIcmpEntry_t ifstat;
+    int req = GET_FIRST;
+#endif
 
     ret_value =
         getMibstat(MIB_ICMP, &icmpstat, sizeof(mib2_icmp_t), GET_FIRST,
@@ -1343,8 +1468,85 @@
     } else {
         DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (solaris)\n"));
     }
+
+#ifdef NETSNMP_ENABLE_IPV6
+    memset(&icmp6stat, 0, sizeof(icmp6stat));
+    while ((ret_value = getMibstat(MIB_ICMP6, &ifstat, sizeof(ifstat), req,
+                   &Get_everything, NULL)) == 0) {
+	if ( ret_value < 0 ) {
+	    DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP6 Group (solaris)\n"));
+	} else {
+	    DEBUGMSGTL(("mibII/icmp", "Loaded ICMP6 Group (solaris)\n"));
+	}
+	icmp6stat.icmp6OutMsgs += ifstat.ipv6IfIcmpOutMsgs;
+	icmp6stat.icmp6InMsgs += ifstat.ipv6IfIcmpInMsgs;
+	icmp6stat.icmp6InErrors += ifstat.ipv6IfIcmpInErrors;
+	icmp6stat.icmp6OutDestUnreachs += ifstat.ipv6IfIcmpOutDestUnreachs;
+	icmp6stat.icmp6InDestUnreachs += ifstat.ipv6IfIcmpInDestUnreachs;
+	icmp6stat.icmp6OutPktTooBigs += ifstat.ipv6IfIcmpOutPktTooBigs;
+	icmp6stat.icmp6InPktTooBigs += ifstat.ipv6IfIcmpInPktTooBigs;
+	icmp6stat.icmp6OutTimeExcds += ifstat.ipv6IfIcmpOutTimeExcds;
+	icmp6stat.icmp6InTimeExcds += ifstat.ipv6IfIcmpInTimeExcds;
+	icmp6stat.icmp6OutParmProblems += ifstat.ipv6IfIcmpOutParmProblems;
+	icmp6stat.icmp6InParmProblems += ifstat.ipv6IfIcmpInParmProblems;
+	icmp6stat.icmp6OutEchos += ifstat.ipv6IfIcmpOutEchos;
+	icmp6stat.icmp6InEchos += ifstat.ipv6IfIcmpInEchos;
+	icmp6stat.icmp6OutEchoReplies += ifstat.ipv6IfIcmpOutEchoReplies;
+	icmp6stat.icmp6InEchoReplies += ifstat.ipv6IfIcmpInEchoReplies;
+	icmp6stat.icmp6OutRouterSolicits += ifstat.ipv6IfIcmpOutRouterSolicits;
+	icmp6stat.icmp6InRouterSolicits += ifstat.ipv6IfIcmpInRouterSolicits;
+	icmp6stat.icmp6OutNeighborAdvertisements += ifstat.ipv6IfIcmpOutNeighborAdvertisements;
+	icmp6stat.icmp6InNeighborAdvertisements += ifstat.ipv6IfIcmpInNeighborAdvertisements;
+	icmp6stat.icmp6OutNeighborSolicits += ifstat.ipv6IfIcmpOutNeighborSolicits;
+	icmp6stat.icmp6InNeighborSolicits += ifstat.ipv6IfIcmpInNeighborSolicits;
+	icmp6stat.icmp6OutRedirects += ifstat.ipv6IfIcmpOutRedirects;
+	icmp6stat.icmp6InRedirects += ifstat.ipv6IfIcmpInRedirects;
+	icmp6stat.icmp6InGroupMembQueries += ifstat.ipv6IfIcmpInGroupMembQueries;
+	icmp6stat.icmp6OutGroupMembResponses += ifstat.ipv6IfIcmpOutGroupMembResponses;
+	icmp6stat.icmp6InGroupMembResponses += ifstat.ipv6IfIcmpInGroupMembResponses;
+	icmp6stat.icmp6OutGroupMembReductions += ifstat.ipv6IfIcmpOutGroupMembReductions;
+	icmp6stat.icmp6InGroupMembReductions += ifstat.ipv6IfIcmpInGroupMembReductions;
+	req = GET_NEXT;
+    }
+#endif
+
+    icmp_stats_load(cache, vmagic);
+    icmp_msg_stats_load(cache, vmagic);
     return ret_value;
 }
+
+static int
+solaris_read_icmp_stat(ICMP_STAT_STRUCTURE *mib)
+{
+    *mib = icmpstat;
+    return 0;
+}
+
+static int
+solaris_read_icmp_msg_stat(ICMP_STAT_STRUCTURE *mib, struct icmp4_msg_mib *msg_mib, int *flag)
+{
+    *mib = icmpstat;
+    *flag = 0;
+    return 0;
+}
+
+#ifdef NETSNMP_ENABLE_IPV6
+static int
+solaris_read_icmp6_stat(struct icmp6_mib *mib)
+{
+    *mib = icmp6stat;
+    return 0;
+}
+
+static int
+solaris_read_icmp6_msg_stat(struct icmp6_mib *mib, struct icmp6_msg_mib *msg_mib, int *flag)
+{
+    *mib = icmp6stat;
+    *flag = 0;
+    return 0;
+}
+#endif
+
 #elif defined(NETBSD_STATS_VIA_SYSCTL)
 int
 icmp_load(netsnmp_cache *cache, void *vmagic)
@@ -1358,6 +1560,8 @@
     } else {
 	DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (netbsd)\n"));
     }
+    icmp_stats_load(cache, vmagic);
+    icmp_msg_stats_load(cache, vmagic);
     return ret_value;
 }
 #elif defined (WIN32) || defined (cygwin)
@@ -1397,17 +1601,16 @@
 icmp_load(netsnmp_cache *cache, void *vmagic)
 {
     long            ret_value = -1;
-    static int      sname[4] =
-        { CTL_NET, PF_INET, IPPROTO_ICMP, ICMPCTL_STATS };
-    size_t          len = sizeof(icmpstat);
 
-    ret_value = sysctl(sname, 4, &icmpstat, &len, 0, 0);
+    ret_value = sysctl_read_icmp_stat(&icmpstat);
 
     if ( ret_value < 0 ) {
-        DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (sysctl)\n"));
+	DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (netbsd)\n"));
     } else {
-        DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (sysctl)\n"));
+	DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (netbsd)\n"));
     }
+    icmp_stats_load(cache, vmagic);
+    icmp_msg_stats_load(cache, vmagic);
     return ret_value;
 }
 #elif defined(HAVE_SYS_TCPIPSTATS_H)
diff --git a/agent/mibgroup/mibII/icmp.h b/agent/mibgroup/mibII/icmp.h
index 9307654..d07841a 100644
--- a/agent/mibgroup/mibII/icmp.h
+++ b/agent/mibgroup/mibII/icmp.h
@@ -5,10 +5,25 @@
 #ifndef _MIBGROUP_ICMP_H
 #define _MIBGROUP_ICMP_H
 
-config_arch_require(solaris2,        kernel_sunos5)
+config_arch_require(solaris2,  kernel_sunos5)
 config_arch_require(linux,     mibII/kernel_linux)
+config_arch_require(freebsd4,  mibII/kernel_sysctl)
+config_arch_require(freebsd5,  mibII/kernel_sysctl)
+config_arch_require(freebsd6,  mibII/kernel_sysctl)
+config_arch_require(freebsd7,  mibII/kernel_sysctl)
+config_arch_require(freebsd8,  mibII/kernel_sysctl)
+config_arch_require(freebsd9,  mibII/kernel_sysctl)
+config_arch_require(freebsd10, mibII/kernel_sysctl)
 config_arch_require(netbsd,    mibII/kernel_netbsd)
 config_arch_require(netbsdelf, mibII/kernel_netbsd)
+config_arch_require(openbsd4,  mibII/kernel_sysctl)
+config_arch_require(openbsd5,  mibII/kernel_sysctl)
+config_arch_require(dragonfly2, mibII/kernel_sysctl)
+config_arch_require(dragonfly3, mibII/kernel_sysctl)
+config_arch_require(darwin10,  mibII/kernel_sysctl)
+config_arch_require(darwin11,  mibII/kernel_sysctl)
+config_arch_require(darwin12,  mibII/kernel_sysctl)
+config_arch_require(darwin13,  mibII/kernel_sysctl)
 
 #include <net-snmp/agent/cache_handler.h>
 
diff --git a/agent/mibgroup/mibII/interfaces.c b/agent/mibgroup/mibII/interfaces.c
index 467657a..26ffebb 100644
--- a/agent/mibgroup/mibII/interfaces.c
+++ b/agent/mibgroup/mibII/interfaces.c
@@ -15,6 +15,9 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_provide(interface_legacy)
 
 #if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL) && !defined(NETSNMP_IFNET_NEEDS_KERNEL_LATE)
 #define _KERNEL 1
@@ -195,6 +198,7 @@
 
 #include "interfaces.h"
 #include "struct.h"
+#include "util_funcs.h"
 #include "util_funcs/header_generic.h"
 
 /* if you want caching enabled for speed retrieval purposes, set this to 5?*/
@@ -220,6 +224,7 @@
      var_ifEntry, 3, {2, 1, 5}},
     {NETSNMP_IFPHYSADDRESS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
      var_ifEntry, 3, {2, 1, 6}},
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #if defined (WIN32) || defined (cygwin)
     {NETSNMP_IFADMINSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_ifEntry, 3, {2, 1, 7}},
@@ -227,6 +232,10 @@
     {NETSNMP_IFADMINSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
      var_ifEntry, 3, {2, 1, 7}},
 #endif
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
+    {NETSNMP_IFADMINSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 7}},
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     {NETSNMP_IFOPERSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
      var_ifEntry, 3, {2, 1, 8}},
     {NETSNMP_IFLASTCHANGE, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
@@ -769,9 +778,6 @@
     static char     Name[16];
     char           *cp;
     conf_if_list   *if_ptr;
-#if HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC
-    struct timeval  now;
-#endif
 
     interface =
         header_ifEntry(vp, name, length, exact, var_len, write_method);
@@ -1519,7 +1525,7 @@
 
 #ifdef linux
     /*  disallow reloading of structures too often */
-    gettimeofday ( &et, ( struct timezone * ) 0 );  /*  get time-of-day */
+    netsnmp_get_monotonic_clock(&et);
     if ( et.tv_sec < LastLoad + MINLOADFREQ ) {     /*  only reload so often */
       ifnetaddr = ifnetaddr_list;                   /*  initialize pointer */
       return;
@@ -1896,6 +1902,10 @@
 #ifdef linux
         strlcat(saveName, ifnet.if_unit, sizeof(saveName));
 #else
+#ifdef NETSNMP_FEATURE_CHECKIN
+        /* this exists here just so we don't copy ifdef logic elsewhere */
+        netsnmp_feature_require(string_append_int);
+#endif
         string_append_int(cp, ifnet.if_unit);
 #endif
         if (1 || strcmp(saveName, "lo0") != 0) {        /* XXX */
@@ -2047,6 +2057,10 @@
 
         saveName[sizeof(saveName) - 1] = '\0';
         cp = strchr(saveName, '\0');
+#ifdef NETSNMP_FEATURE_CHECKIN
+        /* this exists here just so we don't copy ifdef logic elsewhere */
+        netsnmp_feature_require(string_append_int);
+#endif
         string_append_int(cp, ifnet.if_unit);
 #endif
         if (1 || strcmp(saveName, "lo0") != 0) {        /* XXX */
@@ -2653,7 +2667,9 @@
 #elif defined(HAVE_IPHLPAPI_H)  /* WIN32 cygwin */
 #include <iphlpapi.h>
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 WriteMethod     writeIfEntry;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 long            admin_status = 0;
 long            oldadmin_status = 0;
 
@@ -2798,7 +2814,9 @@
     case NETSNMP_IFADMINSTATUS:
         long_return = ifRow.dwAdminStatus;
         admin_status = long_return;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = writeIfEntry;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         return (u_char *) & long_return;
     case NETSNMP_IFOPERSTATUS:
         long_return =
@@ -2854,6 +2872,7 @@
 }
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 writeIfEntry(int action,
              u_char * var_val,
@@ -2925,4 +2944,5 @@
     }
     return SNMP_ERR_NOERROR;
 }                               /* end of writeIfEntry */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 #endif                          /* WIN32 cygwin */
diff --git a/agent/mibgroup/mibII/ip.c b/agent/mibgroup/mibII/ip.c
index 2482a91..f39d322 100644
--- a/agent/mibgroup/mibII/ip.c
+++ b/agent/mibgroup/mibII/ip.c
@@ -677,6 +677,7 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 		/* XXX - Windows currently supports setting this */
     case MODE_SET_RESERVE2:
@@ -687,6 +688,7 @@
         snmp_log(LOG_WARNING, "mibII/ip: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         snmp_log(LOG_WARNING, "mibII/ip: Unrecognised mode (%d)\n",
                                reqinfo->mode);
diff --git a/agent/mibgroup/mibII/ipAddr.c b/agent/mibgroup/mibII/ipAddr.c
index 3326626..a4d577e 100644
--- a/agent/mibgroup/mibII/ipAddr.c
+++ b/agent/mibgroup/mibII/ipAddr.c
@@ -15,6 +15,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
 #define _KERNEL 1
@@ -120,6 +121,8 @@
 #include <windows.h>
 #endif
 
+netsnmp_feature_require(interface_legacy)
+
         /*********************
 	 *
 	 *  Kernel & interface information,
diff --git a/agent/mibgroup/mibII/ipCidrRouteTable.c b/agent/mibgroup/mibII/ipCidrRouteTable.c
index 099e39f..8609bb0 100644
--- a/agent/mibgroup/mibII/ipCidrRouteTable.c
+++ b/agent/mibgroup/mibII/ipCidrRouteTable.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include "route_headers.h"
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -13,6 +14,11 @@
 
 #include "var_route.h"
 
+netsnmp_feature_require(oid_stash)
+netsnmp_feature_require(get_routes)
+netsnmp_feature_require(oid_stash_get_data)
+netsnmp_feature_require(oid_stash_add_data)
+
 static netsnmp_oid_stash_node *undoStorage;
 
 struct undoInfo {
@@ -99,7 +105,7 @@
      */
     DEBUGMSGTL(("initialize_table_ipCidrRouteTable",
                 "Registering table ipCidrRouteTable as a table iterator\n"));
-    netsnmp_register_table_iterator(my_handler, iinfo);
+    netsnmp_register_table_iterator2(my_handler, iinfo);
 }
 
 /** Initializes the ipCidrRouteTable module */
diff --git a/agent/mibgroup/mibII/ipv6.c b/agent/mibgroup/mibII/ipv6.c
index 33a3db7..99d50e8 100644
--- a/agent/mibgroup/mibII/ipv6.c
+++ b/agent/mibgroup/mibII/ipv6.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
 #define _KERNEL 1
 #define _I_DEFINED_KERNEL
@@ -143,6 +144,8 @@
 #include "ipv6.h"
 #include "interfaces.h"
 
+netsnmp_feature_require(linux_read_ip6_stat)
+
 #if defined(netbsd1) && !defined(openbsd4)
 #define inp_lport in6p_lport
 #define inp_fport in6p_fport
diff --git a/agent/mibgroup/mibII/kernel_linux.c b/agent/mibgroup/mibII/kernel_linux.c
index 26b899c..99314df 100644
--- a/agent/mibgroup/mibII/kernel_linux.c
+++ b/agent/mibgroup/mibII/kernel_linux.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -45,7 +46,11 @@
 #define ICMP6_STATS_PREFIX_LEN	5
 #define UDP6_STATS_PREFIX_LEN   4
 
-int
+netsnmp_feature_child_of(linux_ip6_stat_all, libnetsnmpmibs)
+
+netsnmp_feature_child_of(linux_read_ip6_stat, linux_ip6_stat_all)
+
+static int
 decode_icmp_msg(char *line, char *data, struct icmp4_msg_mib *msg)
 {
     char *token, *saveptr, *lineptr, *saveptr1, *dataptr, *delim = NULL;
@@ -103,7 +108,7 @@
     return 0;
 }
 
-int
+static int
 linux_read_mibII_stats(void)
 {
     FILE           *in = fopen("/proc/net/snmp", "r");
@@ -238,6 +243,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LINUX_READ_IP6_STAT
 int linux_read_ip6_stat( struct ip6_mib *ip6stat)
 {
 #ifdef NETSNMP_ENABLE_IPV6
@@ -346,6 +352,7 @@
     memcpy((char *) ip6stat, (char *) &cached_ip6_mib, sizeof(*ip6stat));
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LINUX_READ_IP6_STAT */
 
 int
 linux_read_icmp_msg_stat(struct icmp_mib *icmpstat,
@@ -379,7 +386,7 @@
     return 0;
 }
 
-int
+static int
 linux_read_icmp6_parse(struct icmp6_mib *icmp6stat,
                        struct icmp6_msg_mib *icmp6msgstat,
                        int *support)
@@ -479,6 +486,8 @@
         } else if (0 == strncmp(line + 5, "Out", 3)) {  /* Out */
             if (0 == strcmp(line + 8, "DestUnreachs")) {
                 cached_icmp6_mib.icmp6OutDestUnreachs = stats;
+            } else if (0 == strcmp(line + 8, "Echos")) {
+                cached_icmp6_mib.icmp6OutEchos = stats;
             } else if (0 == strcmp(line + 8, "EchoReplies")) {
                 cached_icmp6_mib.icmp6OutEchoReplies = stats;
             } else if (0 == strcmp(line + 8, "GroupMembReductions")) {
diff --git a/agent/mibgroup/mibII/kernel_linux.h b/agent/mibgroup/mibII/kernel_linux.h
index c6dfca9..b3c58d3 100644
--- a/agent/mibgroup/mibII/kernel_linux.h
+++ b/agent/mibgroup/mibII/kernel_linux.h
@@ -6,161 +6,7 @@
 #ifndef _MIBGROUP_KERNEL_LINUX_H
 #define _MIBGROUP_KERNEL_LINUX_H
 
-struct ip_mib {
-    unsigned long   ipForwarding;
-    unsigned long   ipDefaultTTL;
-    unsigned long   ipInReceives;
-    unsigned long   ipInHdrErrors;
-    unsigned long   ipInAddrErrors;
-    unsigned long   ipForwDatagrams;
-    unsigned long   ipInUnknownProtos;
-    unsigned long   ipInDiscards;
-    unsigned long   ipInDelivers;
-    unsigned long   ipOutRequests;
-    unsigned long   ipOutDiscards;
-    unsigned long   ipOutNoRoutes;
-    unsigned long   ipReasmTimeout;
-    unsigned long   ipReasmReqds;
-    unsigned long   ipReasmOKs;
-    unsigned long   ipReasmFails;
-    unsigned long   ipFragOKs;
-    unsigned long   ipFragFails;
-    unsigned long   ipFragCreates;
-    unsigned long   ipRoutingDiscards;
-};
-
-struct ip6_mib {
-    unsigned long ip6InReceives;
-    unsigned long ip6InHdrErrors;
-    unsigned long ip6InTooBigErrors;
-    unsigned long ip6InNoRoutes;
-    unsigned long ip6InAddrErrors;
-    unsigned long ip6InUnknownProtos;
-    unsigned long ip6InTruncatedPkts;
-    unsigned long ip6InDiscards;
-    unsigned long ip6InDelivers;
-    unsigned long ip6OutForwDatagrams;
-    unsigned long ip6OutRequests;
-    unsigned long ip6OutDiscards;
-    unsigned long ip6OutNoRoutes;
-    unsigned long ip6ReasmTimeout;
-    unsigned long ip6ReasmReqds;
-    unsigned long ip6ReasmOKs;
-    unsigned long ip6ReasmFails;
-    unsigned long ip6FragOKs;
-    unsigned long ip6FragFails;
-    unsigned long ip6FragCreates;
-    unsigned long ip6InMcastPkts;
-    unsigned long ip6OutMcastPkts;
-};
-
-struct icmp_mib {
-    unsigned long   icmpInMsgs;
-    unsigned long   icmpInErrors;
-    unsigned long   icmpInDestUnreachs;
-    unsigned long   icmpInTimeExcds;
-    unsigned long   icmpInParmProbs;
-    unsigned long   icmpInSrcQuenchs;
-    unsigned long   icmpInRedirects;
-    unsigned long   icmpInEchos;
-    unsigned long   icmpInEchoReps;
-    unsigned long   icmpInTimestamps;
-    unsigned long   icmpInTimestampReps;
-    unsigned long   icmpInAddrMasks;
-    unsigned long   icmpInAddrMaskReps;
-    unsigned long   icmpOutMsgs;
-    unsigned long   icmpOutErrors;
-    unsigned long   icmpOutDestUnreachs;
-    unsigned long   icmpOutTimeExcds;
-    unsigned long   icmpOutParmProbs;
-    unsigned long   icmpOutSrcQuenchs;
-    unsigned long   icmpOutRedirects;
-    unsigned long   icmpOutEchos;
-    unsigned long   icmpOutEchoReps;
-    unsigned long   icmpOutTimestamps;
-    unsigned long   icmpOutTimestampReps;
-    unsigned long   icmpOutAddrMasks;
-    unsigned long   icmpOutAddrMaskReps;
-};
-
-struct icmp6_mib {
-    unsigned long icmp6InMsgs;
-    unsigned long icmp6InErrors;
-    unsigned long icmp6InDestUnreachs;
-    unsigned long icmp6InPktTooBigs;
-    unsigned long icmp6InTimeExcds;
-    unsigned long icmp6InParmProblems;
-    unsigned long icmp6InEchos;
-    unsigned long icmp6InEchoReplies;
-    unsigned long icmp6InGroupMembQueries;
-    unsigned long icmp6InGroupMembResponses;
-    unsigned long icmp6InGroupMembReductions;
-    unsigned long icmp6InRouterSolicits;
-    unsigned long icmp6InRouterAdvertisements;
-    unsigned long icmp6InNeighborSolicits;
-    unsigned long icmp6InNeighborAdvertisements;
-    unsigned long icmp6InRedirects;
-    unsigned long icmp6OutMsgs;
-    unsigned long icmp6OutDestUnreachs;
-    unsigned long icmp6OutPktTooBigs;
-    unsigned long icmp6OutTimeExcds;
-    unsigned long icmp6OutParmProblems;
-    unsigned long icmp6OutEchoReplies;
-    unsigned long icmp6OutRouterSolicits;
-    unsigned long icmp6OutNeighborSolicits;
-    unsigned long icmp6OutNeighborAdvertisements;
-    unsigned long icmp6OutRedirects;
-    unsigned long icmp6OutGroupMembResponses;
-    unsigned long icmp6OutGroupMembReductions;
-};
-
-struct icmp_msg_mib {
-    unsigned long InType;
-    unsigned long OutType;
-};
-
-/* Lets use wrapper structures for future expansion */
-struct icmp4_msg_mib {
-    struct icmp_msg_mib vals[256];
-};
-
-struct icmp6_msg_mib {
-    struct icmp_msg_mib vals[256];
-};
-
-struct udp_mib {
-    unsigned long   udpInDatagrams;
-    unsigned long   udpNoPorts;
-    unsigned long   udpInErrors;
-    unsigned long   udpOutDatagrams;
-};
-
-struct udp6_mib {
-    unsigned long udp6InDatagrams;
-    unsigned long udp6NoPorts;
-    unsigned long udp6InErrors;
-    unsigned long udp6OutDatagrams;
-};
-
-struct tcp_mib {
-    unsigned long   tcpRtoAlgorithm;
-    unsigned long   tcpRtoMin;
-    unsigned long   tcpRtoMax;
-    unsigned long   tcpMaxConn;
-    unsigned long   tcpActiveOpens;
-    unsigned long   tcpPassiveOpens;
-    unsigned long   tcpAttemptFails;
-    unsigned long   tcpEstabResets;
-    unsigned long   tcpCurrEstab;
-    unsigned long   tcpInSegs;
-    unsigned long   tcpOutSegs;
-    unsigned long   tcpRetransSegs;
-    unsigned long   tcpInErrs;
-    unsigned long   tcpOutRsts;
-    short           tcpInErrsValid;
-    short           tcpOutRstsValid;
-};
-
+#include "kernel_mib.h"
 
 int             linux_read_ip_stat(struct ip_mib *);
 int             linux_read_ip6_stat(struct ip6_mib *);
diff --git a/agent/mibgroup/mibII/kernel_mib.h b/agent/mibgroup/mibII/kernel_mib.h
new file mode 100644
index 0000000..8b8639f
--- /dev/null
+++ b/agent/mibgroup/mibII/kernel_mib.h
@@ -0,0 +1,164 @@
+/*
+ *  MIB statistics gathering structures
+ */
+
+#ifndef _MIBGROUP_KERNEL_MIB_H
+#define _MIBGROUP_KERNEL_MIB_H
+
+struct ip_mib {
+    unsigned long   ipForwarding;
+    unsigned long   ipDefaultTTL;
+    unsigned long   ipInReceives;
+    unsigned long   ipInHdrErrors;
+    unsigned long   ipInAddrErrors;
+    unsigned long   ipForwDatagrams;
+    unsigned long   ipInUnknownProtos;
+    unsigned long   ipInDiscards;
+    unsigned long   ipInDelivers;
+    unsigned long   ipOutRequests;
+    unsigned long   ipOutDiscards;
+    unsigned long   ipOutNoRoutes;
+    unsigned long   ipReasmTimeout;
+    unsigned long   ipReasmReqds;
+    unsigned long   ipReasmOKs;
+    unsigned long   ipReasmFails;
+    unsigned long   ipFragOKs;
+    unsigned long   ipFragFails;
+    unsigned long   ipFragCreates;
+    unsigned long   ipRoutingDiscards;
+};
+
+struct ip6_mib {
+    unsigned long ip6InReceives;
+    unsigned long ip6InHdrErrors;
+    unsigned long ip6InTooBigErrors;
+    unsigned long ip6InNoRoutes;
+    unsigned long ip6InAddrErrors;
+    unsigned long ip6InUnknownProtos;
+    unsigned long ip6InTruncatedPkts;
+    unsigned long ip6InDiscards;
+    unsigned long ip6InDelivers;
+    unsigned long ip6OutForwDatagrams;
+    unsigned long ip6OutRequests;
+    unsigned long ip6OutDiscards;
+    unsigned long ip6OutNoRoutes;
+    unsigned long ip6ReasmTimeout;
+    unsigned long ip6ReasmReqds;
+    unsigned long ip6ReasmOKs;
+    unsigned long ip6ReasmFails;
+    unsigned long ip6FragOKs;
+    unsigned long ip6FragFails;
+    unsigned long ip6FragCreates;
+    unsigned long ip6InMcastPkts;
+    unsigned long ip6OutMcastPkts;
+};
+
+struct icmp_mib {
+    unsigned long   icmpInMsgs;
+    unsigned long   icmpInErrors;
+    unsigned long   icmpInDestUnreachs;
+    unsigned long   icmpInTimeExcds;
+    unsigned long   icmpInParmProbs;
+    unsigned long   icmpInSrcQuenchs;
+    unsigned long   icmpInRedirects;
+    unsigned long   icmpInEchos;
+    unsigned long   icmpInEchoReps;
+    unsigned long   icmpInTimestamps;
+    unsigned long   icmpInTimestampReps;
+    unsigned long   icmpInAddrMasks;
+    unsigned long   icmpInAddrMaskReps;
+    unsigned long   icmpOutMsgs;
+    unsigned long   icmpOutErrors;
+    unsigned long   icmpOutDestUnreachs;
+    unsigned long   icmpOutTimeExcds;
+    unsigned long   icmpOutParmProbs;
+    unsigned long   icmpOutSrcQuenchs;
+    unsigned long   icmpOutRedirects;
+    unsigned long   icmpOutEchos;
+    unsigned long   icmpOutEchoReps;
+    unsigned long   icmpOutTimestamps;
+    unsigned long   icmpOutTimestampReps;
+    unsigned long   icmpOutAddrMasks;
+    unsigned long   icmpOutAddrMaskReps;
+};
+
+struct icmp6_mib {
+    unsigned long icmp6InMsgs;
+    unsigned long icmp6InErrors;
+    unsigned long icmp6InDestUnreachs;
+    unsigned long icmp6InPktTooBigs;
+    unsigned long icmp6InTimeExcds;
+    unsigned long icmp6InParmProblems;
+    unsigned long icmp6InEchos;
+    unsigned long icmp6InEchoReplies;
+    unsigned long icmp6InGroupMembQueries;
+    unsigned long icmp6InGroupMembResponses;
+    unsigned long icmp6InGroupMembReductions;
+    unsigned long icmp6InRouterSolicits;
+    unsigned long icmp6InRouterAdvertisements;
+    unsigned long icmp6InNeighborSolicits;
+    unsigned long icmp6InNeighborAdvertisements;
+    unsigned long icmp6InRedirects;
+    unsigned long icmp6OutMsgs;
+    unsigned long icmp6OutDestUnreachs;
+    unsigned long icmp6OutPktTooBigs;
+    unsigned long icmp6OutTimeExcds;
+    unsigned long icmp6OutParmProblems;
+    unsigned long icmp6OutEchos;
+    unsigned long icmp6OutEchoReplies;
+    unsigned long icmp6OutRouterSolicits;
+    unsigned long icmp6OutNeighborSolicits;
+    unsigned long icmp6OutNeighborAdvertisements;
+    unsigned long icmp6OutRedirects;
+    unsigned long icmp6OutGroupMembResponses;
+    unsigned long icmp6OutGroupMembReductions;
+};
+
+struct icmp_msg_mib {
+    unsigned long InType;
+    unsigned long OutType;
+};
+
+/* Lets use wrapper structures for future expansion */
+struct icmp4_msg_mib {
+    struct icmp_msg_mib vals[256];
+};
+
+struct icmp6_msg_mib {
+    struct icmp_msg_mib vals[256];
+};
+
+struct udp_mib {
+    unsigned long   udpInDatagrams;
+    unsigned long   udpNoPorts;
+    unsigned long   udpInErrors;
+    unsigned long   udpOutDatagrams;
+};
+
+struct udp6_mib {
+    unsigned long udp6InDatagrams;
+    unsigned long udp6NoPorts;
+    unsigned long udp6InErrors;
+    unsigned long udp6OutDatagrams;
+};
+
+struct tcp_mib {
+    unsigned long   tcpRtoAlgorithm;
+    unsigned long   tcpRtoMin;
+    unsigned long   tcpRtoMax;
+    unsigned long   tcpMaxConn;
+    unsigned long   tcpActiveOpens;
+    unsigned long   tcpPassiveOpens;
+    unsigned long   tcpAttemptFails;
+    unsigned long   tcpEstabResets;
+    unsigned long   tcpCurrEstab;
+    unsigned long   tcpInSegs;
+    unsigned long   tcpOutSegs;
+    unsigned long   tcpRetransSegs;
+    unsigned long   tcpInErrs;
+    unsigned long   tcpOutRsts;
+    short           tcpInErrsValid;
+    short           tcpOutRstsValid;
+};
+
+#endif  /* _MIBGROUP_KERNEL_MIB_H */
diff --git a/agent/mibgroup/mibII/kernel_netbsd.c b/agent/mibgroup/mibII/kernel_netbsd.c
index 93f38b7..0806180 100644
--- a/agent/mibgroup/mibII/kernel_netbsd.c
+++ b/agent/mibgroup/mibII/kernel_netbsd.c
@@ -15,6 +15,7 @@
 #include <netinet/ip_icmp.h>
 #include <netinet/ip_var.h>
 #include <netinet/icmp_var.h>
+#include <netinet/icmp6.h>
 #include <netinet/tcp.h>
 #include <netinet/tcp_timer.h>
 #include <netinet/tcp_var.h>
@@ -38,8 +39,10 @@
 
     (void)memset(mib, 0, sizeof(*mib));
 
-    if (-1 == sysctlbyname("net.inet.icmp.stats", icmpstat, &size, NULL, 0))
+    if (-1 == sysctlbyname("net.inet.icmp.stats", icmpstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_icmp_stat: net.inet.icmp.stats");
         return -1;
+    }
 
     mib->icmpInMsgs = icmpstat[ICMP_STAT_BADCODE]
         + icmpstat[ICMP_STAT_TOOSHORT]
@@ -86,6 +89,104 @@
     return 0;
 }
 
+
+int
+netbsd_read_icmp6_stat(struct icmp6_mib *mib)
+{
+    uint64_t icmpstat[ICMP6_NSTATS];
+    size_t   size = sizeof(icmpstat);
+    int      i;
+
+    (void)memset(mib, 0, sizeof(*mib));
+
+    if (-1 == sysctlbyname("net.inet6.icmp6.stats", icmpstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_icmp6_stat: net.inet6.icmp6.stats");
+        return -1;
+    }
+
+    mib->icmp6InMsgs = icmpstat[ICMP6_STAT_BADCODE]
+            + icmpstat[ICMP_STAT_TOOSHORT]
+	    + icmpstat[ICMP_STAT_CHECKSUM]
+            + icmpstat[ICMP_STAT_BADLEN];
+    for (i = 0; i <= ICMP6_MAXTYPE; i++)
+        mib->icmp6InMsgs  += icmpstat[ICMP6_STAT_INHIST + i];
+    mib->icmp6InErrors = icmpstat[ICMP6_STAT_BADCODE]
+        + icmpstat[ICMP6_STAT_TOOSHORT]
+        + icmpstat[ICMP6_STAT_CHECKSUM]
+        + icmpstat[ICMP6_STAT_BADLEN];
+    mib->icmp6InDestUnreachs = icmpstat[ICMP6_STAT_INHIST + ICMP6_DST_UNREACH];
+    mib->icmp6InPktTooBigs = icmpstat[ICMP6_STAT_INHIST + ICMP6_PACKET_TOO_BIG];
+    mib->icmp6InTimeExcds = icmpstat[ICMP6_STAT_INHIST + ICMP6_TIME_EXCEEDED];
+    mib->icmp6InParmProblems = icmpstat[ICMP6_STAT_INHIST + ICMP6_PARAM_PROB];
+    mib->icmp6InEchos = icmpstat[ICMP6_STAT_INHIST + ICMP6_ECHO_REQUEST];
+    mib->icmp6InEchoReplies = icmpstat[ICMP6_STAT_INHIST + ICMP6_ECHO_REPLY];
+    mib->icmp6InGroupMembQueries = icmpstat[ICMP6_STAT_INHIST + MLD_LISTENER_QUERY];
+    mib->icmp6InGroupMembResponses = icmpstat[ICMP6_STAT_INHIST + MLD_LISTENER_REPORT];
+    mib->icmp6InRouterSolicits = icmpstat[ICMP6_STAT_INHIST + ND_ROUTER_SOLICIT];
+    mib->icmp6InRouterAdvertisements = icmpstat[ICMP6_STAT_INHIST + ND_ROUTER_ADVERT];
+    mib->icmp6InNeighborSolicits = icmpstat[ICMP6_STAT_INHIST + ND_NEIGHBOR_SOLICIT];
+    mib->icmp6InNeighborAdvertisements = icmpstat[ICMP6_STAT_INHIST + ND_NEIGHBOR_ADVERT];
+    mib->icmp6InRedirects = icmpstat[ICMP6_STAT_INHIST + ND_REDIRECT];
+
+    mib->icmp6OutMsgs = icmpstat[ICMP6_STAT_BADCODE]
+        + icmpstat[ICMP6_STAT_TOOSHORT]
+        + icmpstat[ICMP6_STAT_CHECKSUM]
+        + icmpstat[ICMP6_STAT_BADLEN];
+    for (i = 0; i <= ICMP6_MAXTYPE; i++)
+        mib->icmp6OutMsgs += icmpstat[ICMP6_STAT_OUTHIST + i];
+    mib->icmp6OutDestUnreachs = icmpstat[ICMP6_STAT_OUTHIST + ICMP6_DST_UNREACH];
+    mib->icmp6OutPktTooBigs =  icmpstat[ICMP6_STAT_OUTHIST + ICMP6_PACKET_TOO_BIG];
+    mib->icmp6OutTimeExcds = icmpstat[ICMP6_STAT_OUTHIST + ICMP6_TIME_EXCEEDED];
+    mib->icmp6OutParmProblems = icmpstat[ICMP6_STAT_OUTHIST + ICMP6_PARAM_PROB];
+    mib->icmp6OutEchos = icmpstat[ICMP6_STAT_OUTHIST + ICMP6_ECHO_REQUEST];
+    mib->icmp6OutEchoReplies = icmpstat[ICMP6_STAT_OUTHIST + ICMP6_ECHO_REPLY];
+    mib->icmp6OutRouterSolicits =  icmpstat[ICMP6_STAT_OUTHIST + ND_ROUTER_SOLICIT];
+    mib->icmp6OutNeighborSolicits =  icmpstat[ICMP6_STAT_OUTHIST + ND_NEIGHBOR_SOLICIT];
+    mib->icmp6OutNeighborAdvertisements =  icmpstat[ICMP6_STAT_OUTHIST + ND_NEIGHBOR_ADVERT];
+    mib->icmp6OutRedirects = icmpstat[ICMP6_STAT_OUTHIST + ND_REDIRECT];
+    mib->icmp6OutGroupMembResponses =  icmpstat[ICMP6_STAT_OUTHIST + MLD_LISTENER_REPORT];
+    mib->icmp6OutGroupMembReductions =  icmpstat[ICMP6_STAT_OUTHIST + MLD_LISTENER_DONE];
+
+    return 0;
+}
+
+
+int
+netbsd_read_icmp_msg_stat(struct icmp_mib *mib,
+                          struct icmp4_msg_mib *msgmib,
+			  int *flag)
+{
+    netbsd_read_icmp_stat(mib);
+    *flag = 0;
+    return 0;
+}
+
+
+int
+netbsd_read_icmp6_msg_stat(struct icmp6_mib *mib,
+                           struct icmp6_msg_mib *msgmib,
+			   int *support)
+{
+    uint64_t icmpstat[ICMP6_NSTATS];
+    size_t   size = sizeof(icmpstat);
+    int      i;
+
+    netbsd_read_icmp6_stat(mib);
+
+    if (-1 == sysctlbyname("net.inet6.icmp6.stats", icmpstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_icmp6_stat: net.inet6.icmp6.stats");
+        return -1;
+    }
+
+    for (i = 0; i < 256; i++) {
+	msgmib->vals[i].InType = icmpstat[ICMP6_STAT_INHIST+i];
+	msgmib->vals[i].OutType = icmpstat[ICMP6_STAT_OUTHIST+i];
+    }
+    *support = 1;
+    return 0;
+}
+
+
 int
 netbsd_read_ip_stat(struct ip_mib *mib)
 {
@@ -97,8 +198,10 @@
 
     (void)memset(mib, 0, sizeof(*mib));
 
-    if (-1 == sysctlbyname("net.inet.ip.stats", ipstat, &size, NULL, 0))
+    if (-1 == sysctlbyname("net.inet.ip.stats", ipstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_ip_stat: net.inet.ip.stats");
         return -1;
+    }
 
     mib->ipForwarding = 0;
     len = sizeof i;
@@ -138,6 +241,7 @@
     return 0;
 }
 
+
 int
 netbsd_read_tcp_stat(struct tcp_mib *mib)
 {
@@ -146,8 +250,10 @@
 
     (void)memset(mib, 0, sizeof(*mib));
 
-    if (-1 == sysctlbyname("net.inet.tcp.stats", tcpstat, &size, NULL, 0))
+    if (-1 == sysctlbyname("net.inet.tcp.stats", tcpstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_tcp_stat: net.inet.tcp.stats");
         return -1;
+    }
 
     mib->tcpRtoAlgorithm = 4; /* Assume Van Jacobsen's algorithm */
     mib->tcpRtoMin = TCPTV_MIN;
@@ -174,6 +280,7 @@
     return 0;
 }
 
+
 int
 netbsd_read_udp_stat(struct udp_mib *mib)
 {
@@ -182,14 +289,16 @@
 
     (void)memset(mib, 0, sizeof(*mib));
 
-    if (-1 == sysctlbyname("net.inet.udp.stats", udpstat, &size, NULL, 0))
+    if (-1 == sysctlbyname("net.inet.udp.stats", udpstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_udp_stat: net.inet.udp.stats");
         return -1;
+    }
 
     mib->udpInDatagrams = udpstat[UDP_STAT_IPACKETS];
     mib->udpNoPorts = udpstat[UDP_STAT_NOPORT];
     mib->udpOutDatagrams = udpstat[UDP_STAT_OPACKETS];
     mib->udpInErrors = udpstat[UDP_STAT_HDROPS]
-        + udpstat[UDP_STAT_BADSUM] /* + udpstat[UDP_STAT_DISCARD] /* FIXME */
+        + udpstat[UDP_STAT_BADSUM] /* + udpstat[UDP_STAT_DISCARD] */ /* FIXME */
         + udpstat[UDP_STAT_FULLSOCK] + udpstat[UDP_STAT_BADLEN];
 
     return 0;
diff --git a/agent/mibgroup/mibII/kernel_netbsd.h b/agent/mibgroup/mibII/kernel_netbsd.h
index 9000682..accb9a7 100644
--- a/agent/mibgroup/mibII/kernel_netbsd.h
+++ b/agent/mibgroup/mibII/kernel_netbsd.h
@@ -3,85 +3,16 @@
 
 #if defined(NETBSD_STATS_VIA_SYSCTL)
 
-struct icmp_mib {
-    unsigned long   icmpInMsgs;
-    unsigned long   icmpInErrors;
-    unsigned long   icmpInDestUnreachs;
-    unsigned long   icmpInTimeExcds;
-    unsigned long   icmpInParmProbs;
-    unsigned long   icmpInSrcQuenchs;
-    unsigned long   icmpInRedirects;
-    unsigned long   icmpInEchos;
-    unsigned long   icmpInEchoReps;
-    unsigned long   icmpInTimestamps;
-    unsigned long   icmpInTimestampReps;
-    unsigned long   icmpInAddrMasks;
-    unsigned long   icmpInAddrMaskReps;
-    unsigned long   icmpOutMsgs;
-    unsigned long   icmpOutErrors;
-    unsigned long   icmpOutDestUnreachs;
-    unsigned long   icmpOutTimeExcds;
-    unsigned long   icmpOutParmProbs;
-    unsigned long   icmpOutSrcQuenchs;
-    unsigned long   icmpOutRedirects;
-    unsigned long   icmpOutEchos;
-    unsigned long   icmpOutEchoReps;
-    unsigned long   icmpOutTimestamps;
-    unsigned long   icmpOutTimestampReps;
-    unsigned long   icmpOutAddrMasks;
-    unsigned long   icmpOutAddrMaskReps;
-};
-
-struct ip_mib {
-    unsigned long   ipForwarding;
-    unsigned long   ipDefaultTTL;
-    unsigned long   ipInReceives;
-    unsigned long   ipInHdrErrors;
-    unsigned long   ipInAddrErrors;
-    unsigned long   ipForwDatagrams;
-    unsigned long   ipInUnknownProtos;
-    unsigned long   ipInDiscards;
-    unsigned long   ipInDelivers;
-    unsigned long   ipOutRequests;
-    unsigned long   ipOutDiscards;
-    unsigned long   ipOutNoRoutes;
-    unsigned long   ipReasmTimeout;
-    unsigned long   ipReasmReqds;
-    unsigned long   ipReasmOKs;
-    unsigned long   ipReasmFails;
-    unsigned long   ipFragOKs;
-    unsigned long   ipFragFails;
-    unsigned long   ipFragCreates;
-    unsigned long   ipRoutingDiscards;
-};
-
-struct tcp_mib {
-    unsigned long   tcpRtoAlgorithm;
-    unsigned long   tcpRtoMin;
-    unsigned long   tcpRtoMax;
-    unsigned long   tcpMaxConn;
-    unsigned long   tcpActiveOpens;
-    unsigned long   tcpPassiveOpens;
-    unsigned long   tcpAttemptFails;
-    unsigned long   tcpEstabResets;
-    unsigned long   tcpCurrEstab;
-    unsigned long   tcpInSegs;
-    unsigned long   tcpOutSegs;
-    unsigned long   tcpRetransSegs;
-    unsigned long   tcpInErrs;
-    unsigned long   tcpOutRsts;
-    short           tcpInErrsValid;
-    short           tcpOutRstsValid;
-};
-
-struct udp_mib {
-    unsigned long   udpInDatagrams;
-    unsigned long   udpNoPorts;
-    unsigned long   udpInErrors;
-    unsigned long   udpOutDatagrams;
-};
+#include "kernel_mib.h"
 
 int      netbsd_read_icmp_stat(struct icmp_mib *);
+int      netbsd_read_icmp6_stat(struct icmp6_mib *);
+int      netbsd_read_icmp_msg_stat(struct icmp_mib *,
+                                   struct icmp4_msg_mib *,
+		 		  int *flag);
+int      netbsd_read_icmp6_msg_stat(struct icmp6_mib *,
+                                    struct icmp6_msg_mib *,
+				    int *support);
 int      netbsd_read_ip_stat(struct ip_mib *);
 int      netbsd_read_tcp_stat(struct tcp_mib *);
 int      netbsd_read_udp_stat(struct udp_mib *);
diff --git a/agent/mibgroup/mibII/kernel_sysctl.c b/agent/mibgroup/mibII/kernel_sysctl.c
new file mode 100644
index 0000000..166f664
--- /dev/null
+++ b/agent/mibgroup/mibII/kernel_sysctl.c
@@ -0,0 +1,175 @@
+/*
+ * sysctl interface for icmp stats for others than NetBSD
+ */
+
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <sys/protosw.h>
+
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/ip_var.h>
+#include <netinet/icmp_var.h>
+#include <netinet/icmp6.h>
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include "kernel_sysctl.h"
+
+#if defined(NETSNMP_CAN_USE_SYSCTL)
+
+int
+sysctl_read_icmp_stat(struct icmp_mib *mib)
+{
+    struct icmpstat icmpstat;
+    size_t   size = sizeof(icmpstat);
+    int      i;
+    static int      sname[4] =
+        { CTL_NET, PF_INET, IPPROTO_ICMP, ICMPCTL_STATS };
+
+    (void)memset(mib, 0, sizeof(*mib));
+
+    if (-1 == sysctl(sname, 4, &icmpstat, &size, NULL, 0)) {
+	snmp_perror("sysctl_read_icmp_stat: net.inet.icmp.stats");
+        return -1;
+    }
+
+    mib->icmpInMsgs = icmpstat.icps_badcode
+        + icmpstat.icps_tooshort
+        + icmpstat.icps_checksum
+        + icmpstat.icps_badlen;
+    mib->icmpInErrors = mib->icmpInMsgs;
+    for (i = 0; i <= ICMP_MAXTYPE; i++)
+        mib->icmpInMsgs  += icmpstat.icps_inhist[i];
+    mib->icmpInDestUnreachs = icmpstat.icps_inhist[ICMP_UNREACH];
+    mib->icmpInTimeExcds = icmpstat.icps_inhist[ICMP_TIMXCEED];
+    mib->icmpInParmProbs = icmpstat.icps_inhist[ICMP_PARAMPROB];
+    mib->icmpInSrcQuenchs = icmpstat.icps_inhist[ICMP_SOURCEQUENCH];
+    mib->icmpInRedirects = icmpstat.icps_inhist[ICMP_REDIRECT];
+    mib->icmpInEchos = icmpstat.icps_inhist[ICMP_ECHO];
+    mib->icmpInEchoReps = icmpstat.icps_inhist[ICMP_ECHOREPLY];
+    mib->icmpInTimestamps = icmpstat.icps_inhist[ICMP_TSTAMP];
+    mib->icmpInTimestampReps = icmpstat.icps_inhist[ICMP_TSTAMPREPLY];
+    mib->icmpInAddrMasks = icmpstat.icps_inhist[ICMP_MASKREQ];
+    mib->icmpInAddrMaskReps = icmpstat.icps_inhist[ICMP_MASKREPLY];
+    mib->icmpOutMsgs = icmpstat.icps_oldshort + icmpstat.icps_oldicmp;
+    for (i = 0; i <= ICMP_MAXTYPE; i++)
+        mib->icmpOutMsgs += icmpstat.icps_outhist[i];
+    mib->icmpOutErrors = icmpstat.icps_oldshort + icmpstat.icps_oldicmp;
+    mib->icmpOutDestUnreachs = icmpstat.icps_outhist[ICMP_UNREACH];
+    mib->icmpOutTimeExcds = icmpstat.icps_outhist[ICMP_TIMXCEED];
+    mib->icmpOutParmProbs = icmpstat.icps_outhist[ICMP_PARAMPROB];
+    mib->icmpOutSrcQuenchs = icmpstat.icps_outhist[ICMP_SOURCEQUENCH];
+    mib->icmpOutRedirects = icmpstat.icps_outhist[ICMP_REDIRECT];
+    mib->icmpOutEchos = icmpstat.icps_outhist[ICMP_ECHO];
+    mib->icmpOutEchoReps = icmpstat.icps_outhist[ICMP_ECHOREPLY];
+    mib->icmpOutTimestamps = icmpstat.icps_outhist[ICMP_TSTAMP];
+    mib->icmpOutTimestampReps = icmpstat.icps_outhist[ICMP_TSTAMPREPLY];
+    mib->icmpOutAddrMasks = icmpstat.icps_outhist[ICMP_MASKREQ];
+    mib->icmpOutAddrMaskReps = icmpstat.icps_outhist[ICMP_MASKREPLY];
+
+    return 0;
+}
+
+
+int
+sysctl_read_icmp6_stat(struct icmp6_mib *mib)
+{
+    struct icmp6stat icmpstat;
+    size_t   size = sizeof(icmpstat);
+    int      i;
+    static int      sname[4] =
+        { CTL_NET, PF_INET6, IPPROTO_ICMPV6, ICMPV6CTL_STATS };
+
+    (void)memset(mib, 0, sizeof(*mib));
+
+    if (-1 == sysctl(sname, 4, &icmpstat, &size, NULL, 0)) {
+	snmp_perror("sysctl_read_icmp6_stat: net.inet6.icmp6.stats");
+        return -1;
+    }
+
+    mib->icmp6InMsgs = icmpstat.icp6s_badcode
+            + icmpstat.icp6s_tooshort
+	    + icmpstat.icp6s_checksum
+            + icmpstat.icp6s_badlen;
+    mib->icmp6InErrors = mib->icmp6InMsgs;
+    for (i = 0; i <= ICMP6_MAXTYPE; i++)
+        mib->icmp6InMsgs  += icmpstat.icp6s_inhist[i];
+    mib->icmp6InDestUnreachs = icmpstat.icp6s_inhist[ICMP6_DST_UNREACH];
+    mib->icmp6InPktTooBigs = icmpstat.icp6s_inhist[ICMP6_PACKET_TOO_BIG];
+    mib->icmp6InTimeExcds = icmpstat.icp6s_inhist[ICMP6_TIME_EXCEEDED];
+    mib->icmp6InParmProblems = icmpstat.icp6s_inhist[ICMP6_PARAM_PROB];
+    mib->icmp6InEchos = icmpstat.icp6s_inhist[ICMP6_ECHO_REQUEST];
+    mib->icmp6InEchoReplies = icmpstat.icp6s_inhist[ICMP6_ECHO_REPLY];
+    mib->icmp6InGroupMembQueries = icmpstat.icp6s_inhist[MLD_LISTENER_QUERY];
+    mib->icmp6InGroupMembResponses = icmpstat.icp6s_inhist[MLD_LISTENER_REPORT];
+    mib->icmp6InRouterSolicits = icmpstat.icp6s_inhist[ND_ROUTER_SOLICIT];
+    mib->icmp6InRouterAdvertisements = icmpstat.icp6s_inhist[ND_ROUTER_ADVERT];
+    mib->icmp6InNeighborSolicits = icmpstat.icp6s_inhist[ND_NEIGHBOR_SOLICIT];
+    mib->icmp6InNeighborAdvertisements = icmpstat.icp6s_inhist[ND_NEIGHBOR_ADVERT];
+    mib->icmp6InRedirects = icmpstat.icp6s_inhist[ND_REDIRECT];
+
+    mib->icmp6OutMsgs = icmpstat.icp6s_canterror
+        + icmpstat.icp6s_toofreq;
+    for (i = 0; i <= ICMP6_MAXTYPE; i++)
+        mib->icmp6OutMsgs += icmpstat.icp6s_outhist[i];
+    mib->icmp6OutDestUnreachs = icmpstat.icp6s_outhist[ICMP6_DST_UNREACH];
+    mib->icmp6OutPktTooBigs =  icmpstat.icp6s_outhist[ICMP6_PACKET_TOO_BIG];
+    mib->icmp6OutTimeExcds = icmpstat.icp6s_outhist[ICMP6_TIME_EXCEEDED];
+    mib->icmp6OutParmProblems = icmpstat.icp6s_outhist[ICMP6_PARAM_PROB];
+    mib->icmp6OutEchos = icmpstat.icp6s_outhist[ICMP6_ECHO_REQUEST];
+    mib->icmp6OutEchoReplies = icmpstat.icp6s_outhist[ICMP6_ECHO_REPLY];
+    mib->icmp6OutRouterSolicits =  icmpstat.icp6s_outhist[ND_ROUTER_SOLICIT];
+    mib->icmp6OutNeighborSolicits =  icmpstat.icp6s_outhist[ND_NEIGHBOR_SOLICIT];
+    mib->icmp6OutNeighborAdvertisements =  icmpstat.icp6s_outhist[ND_NEIGHBOR_ADVERT];
+    mib->icmp6OutRedirects = icmpstat.icp6s_outhist[ND_REDIRECT];
+    mib->icmp6OutGroupMembResponses =  icmpstat.icp6s_outhist[MLD_LISTENER_REPORT];
+    mib->icmp6OutGroupMembReductions =  icmpstat.icp6s_outhist[MLD_LISTENER_DONE];
+
+    return 0;
+}
+
+
+int
+sysctl_read_icmp_msg_stat(struct icmp_mib *mib,
+                          struct icmp4_msg_mib *msgmib,
+			  int *flag)
+{
+    sysctl_read_icmp_stat(mib);
+    *flag = 0;
+    return 0;
+}
+
+
+int
+sysctl_read_icmp6_msg_stat(struct icmp6_mib *mib,
+                           struct icmp6_msg_mib *msgmib,
+			   int *support)
+{
+    struct icmp6stat icmpstat;
+    size_t   size = sizeof(icmpstat);
+    int      i;
+    static int      sname[4] =
+        { CTL_NET, PF_INET6, IPPROTO_ICMPV6, ICMPV6CTL_STATS };
+
+    sysctl_read_icmp6_stat(mib);
+
+    if (-1 == sysctl(sname, 4, &icmpstat, &size, NULL, 0)) {
+	snmp_perror("sysctl_read_icmp6_stat: net.inet6.icmp6.stats");
+        return -1;
+    }
+
+    for (i = 0; i < 256; i++) {
+	msgmib->vals[i].InType = icmpstat.icp6s_inhist[i];
+	msgmib->vals[i].OutType = icmpstat.icp6s_outhist[i];
+    }
+    *support = 1;
+    return 0;
+}
+
+
+#endif
diff --git a/agent/mibgroup/mibII/kernel_sysctl.h b/agent/mibgroup/mibII/kernel_sysctl.h
new file mode 100644
index 0000000..7484973
--- /dev/null
+++ b/agent/mibgroup/mibII/kernel_sysctl.h
@@ -0,0 +1,19 @@
+#ifndef _MIBGROUP_KERNEL_SYSCTL_H
+#define _MIBGROUP_KERNEL_SYSCTL_H
+
+#if defined(NETSNMP_CAN_USE_SYSCTL)
+
+#include "kernel_mib.h"
+
+int      sysctl_read_icmp_stat(struct icmp_mib *);
+int      sysctl_read_icmp6_stat(struct icmp6_mib *);
+int      sysctl_read_icmp_msg_stat(struct icmp_mib *,
+                                   struct icmp4_msg_mib *,
+		 		  int *flag);
+int      sysctl_read_icmp6_msg_stat(struct icmp6_mib *,
+                                    struct icmp6_msg_mib *,
+				    int *support);
+
+#endif /* NETSNMP_CAN_USE_SYSCTL */
+
+#endif /* _MIBGROUP_KERNEL_SYSCTL_H */
diff --git a/agent/mibgroup/mibII/mibII_common.h b/agent/mibgroup/mibII/mibII_common.h
index 160ab82..87ef9d1 100644
--- a/agent/mibgroup/mibII/mibII_common.h
+++ b/agent/mibgroup/mibII/mibII_common.h
@@ -88,7 +88,6 @@
 #include <dmalloc.h>
 #endif
 
-
 #ifdef solaris2
 #include "kernel_sunos5.h"
 #else
@@ -100,6 +99,10 @@
 #ifdef NETBSD_STATS_VIA_SYSCTL
 #include "kernel_netbsd.h"
 #endif
+#if defined(NETSNMP_CAN_USE_SYSCTL) /* && defined(ICMPCTL_STATS) */
+#include "kernel_sysctl.h"
+#endif
+
 	/* or MIB_xxxCOUNTER_SYMBOL || hpux11 */
 #ifdef hpux
 #include <sys/mib.h>
diff --git a/agent/mibgroup/mibII/setSerialNo.c b/agent/mibgroup/mibII/setSerialNo.c
index 90a0aba..85a4098 100644
--- a/agent/mibgroup/mibII/setSerialNo.c
+++ b/agent/mibgroup/mibII/setSerialNo.c
@@ -2,9 +2,13 @@
  *  This file implements the snmpSetSerialNo TestAndIncr counter
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_require(watcher_spinlock)
+
+
 #include "setSerialNo.h"
 
 /*
@@ -60,13 +64,21 @@
     /*
      * Register 'setserialno' as a watched spinlock object
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     netsnmp_register_watched_spinlock(
         netsnmp_create_handler_registration("snmpSetSerialNo", NULL,
                                    set_serial_oid,
                                    OID_LENGTH(set_serial_oid),
                                    HANDLER_CAN_RWRITE),
                                        &setserialno );
-
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
+    netsnmp_register_watched_spinlock(
+        netsnmp_create_handler_registration("snmpSetSerialNo", NULL,
+                                   set_serial_oid,
+                                   OID_LENGTH(set_serial_oid),
+                                   HANDLER_CAN_RONLY),
+                                       &setserialno );
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     DEBUGMSGTL(("scalar_int", "Done initalizing example scalar int\n"));
 }
 
diff --git a/agent/mibgroup/mibII/snmp_mib.c b/agent/mibgroup/mibII/snmp_mib.c
index 0a23c9e..1ebe64c 100644
--- a/agent/mibgroup/mibII/snmp_mib.c
+++ b/agent/mibgroup/mibII/snmp_mib.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/sysORTable.h>
@@ -6,6 +7,10 @@
 #include "snmp_mib.h"
 #include "updates.h"
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_truthvalue)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 static const oid snmp_oid[] = { 1, 3, 6, 1, 2, 1, 11 };
 
 extern long snmp_enableauthentraps;
@@ -30,11 +35,13 @@
                   netsnmp_agent_request_info *reqinfo,
                   netsnmp_request_info *requests)
 {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (reqinfo->mode == MODE_SET_RESERVE1) {
         int res = netsnmp_check_vb_truthvalue(requests->requestvb);
         if (res != SNMP_ERR_NOERROR)
             netsnmp_request_set_error(requests, res);
     }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     return SNMP_ERR_NOERROR;
 }
 
diff --git a/agent/mibgroup/mibII/snmp_mib_5_5.c b/agent/mibgroup/mibII/snmp_mib_5_5.c
index 2efffeb..c63efb6 100644
--- a/agent/mibgroup/mibII/snmp_mib_5_5.c
+++ b/agent/mibgroup/mibII/snmp_mib_5_5.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/sysORTable.h>
@@ -8,6 +9,11 @@
 #include "snmp_mib_5_5.h"
 #include "updates.h"
 
+netsnmp_feature_require(helper_statistics)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_truthvalue)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 #define SNMP_OID 1, 3, 6, 1, 2, 1, 11
 
 static oid snmp_oid[] = { SNMP_OID };
@@ -34,11 +40,13 @@
                   netsnmp_agent_request_info *reqinfo,
                   netsnmp_request_info *requests)
 {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (reqinfo->mode == MODE_SET_RESERVE1) {
         int res = netsnmp_check_vb_truthvalue(requests->requestvb);
         if (res != SNMP_ERR_NOERROR)
             netsnmp_request_set_error(requests, res);
     }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     return SNMP_ERR_NOERROR;
 }
 
@@ -91,11 +99,20 @@
         oid snmpEnableAuthenTraps_oid[] = { SNMP_OID, 30, 0 };
 	static netsnmp_watcher_info enableauthen_info;
         netsnmp_handler_registration *reg =
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             netsnmp_create_update_handler_registration(
                 "mibII/snmpEnableAuthenTraps",
                 snmpEnableAuthenTraps_oid,
                 OID_LENGTH(snmpEnableAuthenTraps_oid),
                 HANDLER_CAN_RWRITE, &snmp_enableauthentrapsset);
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
+            netsnmp_create_update_handler_registration(
+                "mibII/snmpEnableAuthenTraps",
+                snmpEnableAuthenTraps_oid,
+                OID_LENGTH(snmpEnableAuthenTraps_oid),
+                HANDLER_CAN_RONLY, &snmp_enableauthentrapsset);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
         netsnmp_inject_handler(reg, netsnmp_get_truthvalue());
         netsnmp_register_watched_instance(
             reg,
diff --git a/agent/mibgroup/mibII/sysORTable.c b/agent/mibgroup/mibII/sysORTable.c
index 567478a..ed26919 100644
--- a/agent/mibgroup/mibII/sysORTable.c
+++ b/agent/mibgroup/mibII/sysORTable.c
@@ -8,6 +8,11 @@
 
 #include "sysORTable.h"
 
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(table_container)
+
+
 /** Typical data structure for a row entry */
 typedef struct sysORTable_entry_s {
     netsnmp_index            oid_index;
diff --git a/agent/mibgroup/mibII/system_mib.c b/agent/mibgroup/mibII/system_mib.c
index 9b5bf56..65b0b7c 100644
--- a/agent/mibgroup/mibII/system_mib.c
+++ b/agent/mibgroup/mibII/system_mib.c
@@ -14,6 +14,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -44,6 +45,8 @@
 #include "system_mib.h"
 #include "updates.h"
 
+netsnmp_feature_require(watcher_read_only_int_scalar)
+
         /*********************
 	 *
 	 *  Kernel & interface information,
@@ -81,29 +84,23 @@
 	 *********************/
 
 static void
-system_parse_config_sysdescr(const char *token, char *cptr)
+system_parse_config_string2(const char *token, char *cptr,
+                            char* value, size_t size)
 {
-    if (strlen(cptr) >= sizeof(version_descr)) {
-	netsnmp_config_error("sysdescr token too long (must be < %lu):\n\t%s",
-			     (unsigned long)sizeof(version_descr), cptr);
-    } else if (strcmp(cptr, "\"\"") == 0) {
-        version_descr[0] = '\0';
+    if (strlen(cptr) < size) {
+        strcpy(value, cptr);
     } else {
-        strcpy(version_descr, cptr);
+        netsnmp_config_error("%s token too long (must be < %lu):\n\t%s",
+                             token, (unsigned long)size, cptr);
     }
 }
 
-NETSNMP_STATIC_INLINE void
+static void
 system_parse_config_string(const char *token, char *cptr,
                            const char *name, char* value, size_t size,
                            int* guard)
 {
-    if (strlen(cptr) >= size) {
-	netsnmp_config_error("%s token too long (must be < %lu):\n\t%s",
-			     token, (unsigned long)size, cptr);
-    }
-
-    if (*token == 'p' && strcasecmp(token + 1, name) == 0) {
+    if (*token == 'p') {
         if (*guard < 0) {
             /*
              * This is bogus (and shouldn't happen anyway) -- the value is
@@ -113,7 +110,7 @@
                      "ignoring attempted override of read-only %s.0\n", name);
             return;
         } else {
-            ++(*guard);
+            *guard = 1;
         }
     } else {
         if (*guard > 0) {
@@ -130,11 +127,14 @@
         *guard = -1;
     }
 
-    if (strcmp(cptr, "\"\"") == 0) {
-        *value = '\0';
-    } else if (strlen(cptr) < size) {
-        strcpy(value, cptr);
-    }
+    system_parse_config_string2(token, cptr, value, size);
+}
+
+static void
+system_parse_config_sysdescr(const char *token, char *cptr)
+{
+    system_parse_config_string2(token, cptr, version_descr,
+                                sizeof(version_descr));
 }
 
 static void
@@ -175,7 +175,8 @@
         sysObjectIDByteLength = version_sysoid_len  * sizeof(oid);
         memcpy(sysObjectID, version_sysoid, sysObjectIDByteLength);
     } else
-        sysObjectIDByteLength = sysObjectIDLength * sizeof(oid);
+
+		sysObjectIDByteLength = sysObjectIDLength * sizeof(oid);
 }
 
 
@@ -353,17 +354,28 @@
     {
         const oid sysContact_oid[] = { 1, 3, 6, 1, 2, 1, 1, 4 };
         static netsnmp_watcher_info sysContact_winfo;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        netsnmp_register_watched_scalar(
+            netsnmp_create_update_handler_registration(
+                "mibII/sysContact", sysContact_oid, OID_LENGTH(sysContact_oid), 
+                HANDLER_CAN_RWRITE, &sysContactSet),
+            netsnmp_init_watcher_info(
+                &sysContact_winfo, sysContact, SYS_STRING_LEN - 1,
+                ASN_OCTET_STR, WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
         netsnmp_register_watched_scalar(
             netsnmp_create_update_handler_registration(
                 "mibII/sysContact", sysContact_oid, OID_LENGTH(sysContact_oid),
-                HANDLER_CAN_RWRITE, &sysContactSet),
+                HANDLER_CAN_RONLY, &sysContactSet),
             netsnmp_init_watcher_info(
-		&sysContact_winfo, sysContact, SYS_STRING_LEN - 1,
-		ASN_OCTET_STR, WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+                &sysContact_winfo, sysContact, SYS_STRING_LEN - 1,
+                ASN_OCTET_STR, WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     {
         const oid sysName_oid[] = { 1, 3, 6, 1, 2, 1, 1, 5 };
         static netsnmp_watcher_info sysName_winfo;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         netsnmp_register_watched_scalar(
             netsnmp_create_update_handler_registration(
                 "mibII/sysName", sysName_oid, OID_LENGTH(sysName_oid),
@@ -371,10 +383,20 @@
             netsnmp_init_watcher_info(
                 &sysName_winfo, sysName, SYS_STRING_LEN - 1, ASN_OCTET_STR,
                 WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
+        netsnmp_register_watched_scalar(
+            netsnmp_create_update_handler_registration(
+                "mibII/sysName", sysName_oid, OID_LENGTH(sysName_oid),
+                HANDLER_CAN_RONLY, &sysNameSet),
+            netsnmp_init_watcher_info(
+                &sysName_winfo, sysName, SYS_STRING_LEN - 1, ASN_OCTET_STR,
+                WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     {
         const oid sysLocation_oid[] = { 1, 3, 6, 1, 2, 1, 1, 6 };
         static netsnmp_watcher_info sysLocation_winfo;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         netsnmp_register_watched_scalar(
             netsnmp_create_update_handler_registration(
                 "mibII/sysLocation", sysLocation_oid,
@@ -383,6 +405,16 @@
             netsnmp_init_watcher_info(
 		&sysLocation_winfo, sysLocation, SYS_STRING_LEN - 1,
 		ASN_OCTET_STR, WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
+        netsnmp_register_watched_scalar(
+            netsnmp_create_update_handler_registration(
+                "mibII/sysLocation", sysLocation_oid,
+                OID_LENGTH(sysLocation_oid),
+                HANDLER_CAN_RONLY, &sysLocationSet),
+            netsnmp_init_watcher_info(
+		&sysLocation_winfo, sysLocation, SYS_STRING_LEN - 1,
+		ASN_OCTET_STR, WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     {
         const oid sysServices_oid[] = { 1, 3, 6, 1, 2, 1, 1, 7 };
diff --git a/agent/mibgroup/mibII/tcp.c b/agent/mibgroup/mibII/tcp.c
index 2be9481..3c79fad 100644
--- a/agent/mibgroup/mibII/tcp.c
+++ b/agent/mibgroup/mibII/tcp.c
@@ -5,6 +5,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include "mibII_common.h"
 
 #if HAVE_STDLIB_H
@@ -91,7 +92,9 @@
 int  hz = 1000;
 #endif
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS
 extern int TCP_Count_Connections( void );
+#endif /* NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS */
         /*********************
 	 *
 	 *  Initialisation & common implementation functions
@@ -370,11 +373,14 @@
         ret_value = tcpstat.tcps_drops;
         break;
     case TCPCURRESTAB:
-#ifdef USING_MIBII_TCPTABLE_MODULE
+#ifdef NETSNMP_FEATURE_CHECKING
+        netsnmp_feature_want(tcp_count_connections)
+#endif
+#ifndef NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS
         ret_value = TCP_Count_Connections();
 #else
         ret_value = 0;
-#endif
+#endif /* NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS */
         type = ASN_GAUGE;
         break;
     case TCPINSEGS:
@@ -549,6 +555,7 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -558,6 +565,7 @@
         snmp_log(LOG_WARNING, "mibII/tcp: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         snmp_log(LOG_WARNING, "mibII/tcp: Unrecognised mode (%d)\n",
                                reqinfo->mode);
diff --git a/agent/mibgroup/mibII/tcpTable.c b/agent/mibgroup/mibII/tcpTable.c
index c9c9dd8..03c85e5 100644
--- a/agent/mibgroup/mibII/tcpTable.c
+++ b/agent/mibgroup/mibII/tcpTable.c
@@ -15,6 +15,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include "mibII_common.h"
 
 #if HAVE_NETINET_TCP_H
@@ -42,6 +43,10 @@
 #include "tcp.h"
 #include "tcpTable.h"
 
+netsnmp_feature_child_of(tcptable_all, libnetsnmpmibs)
+
+netsnmp_feature_child_of(tcp_count_connections, tcptable_all)
+
 #ifdef hpux11
 #define	TCPTABLE_ENTRY_TYPE	mib_tcpConnEnt 
 #define	TCPTABLE_STATE		State 
@@ -142,7 +147,7 @@
     netsnmp_table_registration_info *table_info;
     netsnmp_iterator_info           *iinfo;
     netsnmp_handler_registration    *reginfo;
-    int rc;
+    int                              rc;
 
     DEBUGMSGTL(("mibII/tcpTable", "Initialising TCP Table\n"));
     /*
@@ -182,7 +187,7 @@
             tcpTable_handler,
             tcpTable_oid, OID_LENGTH(tcpTable_oid),
             HANDLER_CAN_RONLY),
-    rc = netsnmp_register_table_iterator(reginfo, iinfo);
+    rc = netsnmp_register_table_iterator2(reginfo, iinfo);
     if (rc != SNMPERR_SUCCESS)
         return;
 
@@ -273,12 +278,14 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
     case MODE_SET_COMMIT:
     case MODE_SET_FREE:
     case MODE_SET_UNDO:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         snmp_log(LOG_WARNING, "mibII/tcpTable: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
@@ -291,11 +298,13 @@
     return SNMP_ERR_NOERROR;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS
 int
 TCP_Count_Connections( void ) {
     tcpTable_load(NULL, NULL);
     return tcp_estab;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS */
 
 	/*
 	 * Two forms of iteration hook routines:
diff --git a/agent/mibgroup/mibII/udp.c b/agent/mibgroup/mibII/udp.c
index c9f8a4f..1ddcbc5 100644
--- a/agent/mibgroup/mibII/udp.c
+++ b/agent/mibgroup/mibII/udp.c
@@ -329,6 +329,7 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -338,6 +339,7 @@
         snmp_log(LOG_WARNING, "mibII/udp: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         snmp_log(LOG_WARNING, "mibII/udp: Unrecognised mode (%d)\n",
                                reqinfo->mode);
diff --git a/agent/mibgroup/mibII/udpTable.c b/agent/mibgroup/mibII/udpTable.c
index f461f02..2c88749 100644
--- a/agent/mibgroup/mibII/udpTable.c
+++ b/agent/mibgroup/mibII/udpTable.c
@@ -129,7 +129,7 @@
     netsnmp_table_registration_info *table_info;
     netsnmp_iterator_info           *iinfo;
     netsnmp_handler_registration    *reginfo;
-    int rc;
+    int                              rc;
 
     DEBUGMSGTL(("mibII/udpTable", "Initialising UDP Table\n"));
     /*
@@ -168,7 +168,7 @@
             udpTable_handler,
             udpTable_oid, OID_LENGTH(udpTable_oid),
             HANDLER_CAN_RONLY),
-    rc = netsnmp_register_table_iterator(reginfo, iinfo);
+    rc = netsnmp_register_table_iterator2(reginfo, iinfo);
     if (rc != SNMPERR_SUCCESS)
         return;
 
@@ -239,12 +239,14 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
     case MODE_SET_COMMIT:
     case MODE_SET_FREE:
     case MODE_SET_UNDO:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         snmp_log(LOG_WARNING, "mibII/udpTable: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
diff --git a/agent/mibgroup/mibII/updates.c b/agent/mibgroup/mibII/updates.c
index 87bed89..938ea29 100644
--- a/agent/mibgroup/mibII/updates.c
+++ b/agent/mibgroup/mibII/updates.c
@@ -8,6 +8,7 @@
                netsnmp_agent_request_info *reqinfo,
                netsnmp_request_info *requests)
 {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     int *set = (int*)handler->myvoid;
 
     if (reqinfo->mode == MODE_SET_RESERVE1 && *set < 0)
@@ -16,6 +17,7 @@
         *set = 1;
         snmp_store_needed(reginfo->handlerName);
     }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     return SNMP_ERR_NOERROR;
 }
 
diff --git a/agent/mibgroup/mibII/vacm_conf.c b/agent/mibgroup/mibII/vacm_conf.c
index 337a5fc..f2faf86 100644
--- a/agent/mibgroup/mibII/vacm_conf.c
+++ b/agent/mibgroup/mibII/vacm_conf.c
@@ -251,7 +251,7 @@
         return PARSE_FAIL;
     }
 
-    if (strcmp(*context, "\"\"") == 0)
+    if (strcmp(*context, "\"\"") == 0 || strcmp(*context, "\'\'") == 0)
         **context = 0;
     if (strcasecmp(model, "any") == 0)
         *imodel = SNMP_SEC_MODEL_ANY;
@@ -1201,9 +1201,11 @@
     case SNMP_MSG_GETBULK:
         viewtype = VACM_VIEW_READ;
         break;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_SET:
         viewtype = VACM_VIEW_WRITE;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     case SNMP_MSG_TRAP:
     case SNMP_MSG_TRAP2:
     case SNMP_MSG_INFORM:
diff --git a/agent/mibgroup/mibII/vacm_context.c b/agent/mibgroup/mibII/vacm_context.c
index c474180..8f43cd3 100644
--- a/agent/mibgroup/mibII/vacm_context.c
+++ b/agent/mibgroup/mibII/vacm_context.c
@@ -105,7 +105,7 @@
     iinfo->get_first_data_point = get_first_context;
     iinfo->get_next_data_point = get_next_context;
     iinfo->table_reginfo = table_info;
-    netsnmp_register_table_iterator(my_handler, iinfo);
+    netsnmp_register_table_iterator2(my_handler, iinfo);
 }
 
 /*
@@ -149,7 +149,6 @@
                                      strlen(context_ptr->context_name));
 
             break;
-
         default:
             /*
              * We should never get here, getnext already have been
@@ -159,8 +158,6 @@
                      "vacm_context table accessed as mode=%d.  We're improperly registered!",
                      reqinfo->mode);
             break;
-
-
         }
     }
 
diff --git a/agent/mibgroup/mibII/vacm_vars.c b/agent/mibgroup/mibII/vacm_vars.c
index 3ad51d4..85cef94 100644
--- a/agent/mibgroup/mibII/vacm_vars.c
+++ b/agent/mibgroup/mibII/vacm_vars.c
@@ -156,6 +156,7 @@
      */
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
     case SECURITYGROUP:
         *write_method = write_vacmGroupName;
         break;
@@ -165,10 +166,13 @@
     case SECURITYSTATUS:
         *write_method = write_vacmSecurityToGroupStatus;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     default:
         *write_method = NULL;
     }
 
+	*var_len = 0; /* assume 0 length until found */
+
     if (memcmp(name, vp->name, sizeof(oid) * vp->namelen) != 0) {
         memcpy(name, vp->name, sizeof(oid) * vp->namelen);
         *length = vp->namelen;
@@ -252,6 +256,7 @@
     default:
         break;
     }
+
     return NULL;
 }
 
@@ -278,6 +283,7 @@
      */
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
     case ACCESSMATCH:
         *write_method = write_vacmAccessContextMatch;
         break;
@@ -296,10 +302,13 @@
     case ACCESSSTATUS:
         *write_method = write_vacmAccessStatus;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     default:
         *write_method = NULL;
     }
 
+	*var_len = 0; /* assume 0 length until found */
+
     if (memcmp(name, vp->name, sizeof(oid) * vp->namelen) != 0) {
         memcpy(name, vp->name, sizeof(oid) * vp->namelen);
         *length = vp->namelen;
@@ -469,6 +478,7 @@
         long_return = gp->status;
         return (u_char *) & long_return;
     }
+
     return NULL;
 }
 
@@ -495,6 +505,7 @@
      */
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
     case VIEWMASK:
         *write_method = write_vacmViewMask;
         break;
@@ -507,11 +518,13 @@
     case VIEWSTATUS:
         *write_method = write_vacmViewStatus;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     default:
         *write_method = NULL;
     }
 
     *var_len = sizeof(long_return);
+
     if (vp->magic != VACMVIEWSPINLOCK) {
         if (memcmp(name, vp->name, sizeof(oid) * vp->namelen) != 0) {
             memcpy(name, vp->name, sizeof(oid) * vp->namelen);
@@ -623,7 +636,9 @@
 
     switch (vp->magic) {
     case VACMVIEWSPINLOCK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_vacmViewSpinLock;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         long_return = vacmViewSpinLock;
         return (u_char *) & long_return;
 
@@ -651,34 +666,11 @@
         long_return = gp->viewStatus;
         return (u_char *) & long_return;
     }
+
     return NULL;
 }
 
-oid            *
-sec2group_generate_OID(oid * prefix, size_t prefixLen,
-                       struct vacm_groupEntry * geptr, size_t * length)
-{
-    oid            *indexOid;
-    int             i, securityNameLen;
-
-    securityNameLen = strlen(geptr->securityName);
-
-    *length = 2 + securityNameLen + prefixLen;
-    indexOid = (oid *) malloc(*length * sizeof(oid));
-    if (indexOid) {
-        memmove(indexOid, prefix, prefixLen * sizeof(oid));
-
-        indexOid[prefixLen] = geptr->securityModel;
-
-        indexOid[prefixLen + 1] = securityNameLen;
-        for (i = 0; i < securityNameLen; i++)
-            indexOid[prefixLen + 2 + i] = (oid) geptr->securityName[i];
-
-    }
-    return indexOid;
-
-}
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
 int
 sec2group_parse_oid(oid * oidIndex, size_t oidLen,
                     int *model, unsigned char **name, size_t * nameLen)
@@ -981,40 +973,6 @@
     return SNMP_ERR_NOERROR;
 }
 
-oid            *
-access_generate_OID(oid * prefix, size_t prefixLen,
-                    struct vacm_accessEntry * aptr, size_t * length)
-{
-    oid            *indexOid;
-    int             i, groupNameLen, contextPrefixLen;
-
-    groupNameLen = strlen(aptr->groupName);
-    contextPrefixLen = strlen(aptr->contextPrefix);
-
-    *length = 4 + groupNameLen + contextPrefixLen + prefixLen;
-    indexOid = (oid *) malloc(*length * sizeof(oid));
-    if (indexOid) {
-        memmove(indexOid, prefix, prefixLen * sizeof(oid));
-
-        indexOid[prefixLen] = groupNameLen;
-        for (i = 0; i < groupNameLen; i++)
-            indexOid[groupNameLen + 1 + i] = (oid) aptr->groupName[i];
-
-        indexOid[prefixLen + groupNameLen + 1] = contextPrefixLen;
-        for (i = 0; i < contextPrefixLen; i++)
-            indexOid[prefixLen + groupNameLen + 2 + i] =
-                (oid) aptr->contextPrefix[i];
-
-        indexOid[prefixLen + groupNameLen + contextPrefixLen + 3] =
-            aptr->securityModel;
-        indexOid[prefixLen + groupNameLen + contextPrefixLen + 4] =
-            aptr->securityLevel;
-
-    }
-    return indexOid;
-
-}
-
 int
 access_parse_oid(oid * oidIndex, size_t oidLen,
                  unsigned char **groupName, size_t * groupNameLen,
@@ -1550,35 +1508,6 @@
     return 0;
 }
 
-oid            *
-view_generate_OID(oid * prefix, size_t prefixLen,
-                  struct vacm_viewEntry * vptr, size_t * length)
-{
-    oid            *indexOid;
-    int             i, viewNameLen, viewSubtreeLen;
-
-    viewNameLen = strlen(vptr->viewName);
-    viewSubtreeLen = vptr->viewSubtreeLen;
-
-    *length = 2 + viewNameLen + viewSubtreeLen + prefixLen;
-    indexOid = (oid *) malloc(*length * sizeof(oid));
-    if (indexOid) {
-        memmove(indexOid, prefix, prefixLen * sizeof(oid));
-
-        indexOid[prefixLen] = viewNameLen;
-        for (i = 0; i < viewNameLen; i++)
-            indexOid[viewNameLen + 1 + i] = (oid) vptr->viewName[i];
-
-        indexOid[prefixLen + viewNameLen + 1] = viewSubtreeLen;
-        for (i = 0; i < viewSubtreeLen; i++)
-            indexOid[prefixLen + viewNameLen + 2 + i] =
-                (oid) vptr->viewSubtree[i];
-
-    }
-    return indexOid;
-
-}
-
 struct vacm_viewEntry *
 view_parse_viewEntry(oid * name, size_t name_len)
 {
@@ -1911,3 +1840,4 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
diff --git a/agent/mibgroup/mibII/vacm_vars.h b/agent/mibgroup/mibII/vacm_vars.h
index 888c1b8..471f759 100644
--- a/agent/mibgroup/mibII/vacm_vars.h
+++ b/agent/mibgroup/mibII/vacm_vars.h
@@ -19,6 +19,7 @@
      extern FindVarMethod var_vacm_access;
      extern FindVarMethod var_vacm_view;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
      WriteMethod     write_vacmGroupName;
      WriteMethod     write_vacmSecurityToGroupStatus;
      WriteMethod     write_vacmSecurityToGroupStorageType;
@@ -36,7 +37,6 @@
      WriteMethod     write_vacmViewStorageType;
      WriteMethod     write_vacmViewType;
 
-
      oid            *access_generate_OID(oid * prefix, size_t prefixLen,
                                          struct vacm_accessEntry *aptr,
                                          size_t * length);
@@ -67,7 +67,7 @@
                                     size_t * subtreeLen);
      struct vacm_viewEntry *view_parse_viewEntry(oid * name,
                                                  size_t name_len);
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 
 
 #define OID_SNMPVACMMIB		SNMP_OID_SNMPMODULES, 16
diff --git a/agent/mibgroup/mibII/var_route.c b/agent/mibgroup/mibII/var_route.c
index e6286dc..72a503f 100644
--- a/agent/mibgroup/mibII/var_route.c
+++ b/agent/mibgroup/mibII/var_route.c
@@ -46,6 +46,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include "route_headers.h"
 #define CACHE_TIME (120)        /* Seconds */
@@ -61,6 +62,9 @@
 #include "kernel.h"
 #include "interfaces.h"
 #include "struct.h"
+#include "util_funcs.h"
+
+netsnmp_feature_child_of(get_routes, libnetsnmpmibs)
 
 #ifndef  MIN
 #define  MIN(a,b)                     (((a) < (b)) ? (a) : (b))
@@ -317,12 +321,14 @@
 
 static void     Route_Scan_Reload(void);
 
+#ifndef NETSNMP_FEATURE_REMOVE_GET_ROUTES
 RTENTRY **netsnmp_get_routes(size_t *size) {
     Route_Scan_Reload();
     if (size)
         *size = rtsize;
     return rthead;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_GET_ROUTES */
 #endif                          /* hpux11 */
 
 #if !(defined(linux) || defined(solaris2) || defined(hpux11)) && defined(RTHOST_SYMBOL) && defined(RTNET_SYMBOL)
@@ -923,6 +929,10 @@
 #endif
             name[sizeof(name) - 1] = '\0';
 #else
+#ifdef NETSNMP_FEATURE_CHECKIN
+            /* this exists here just so we don't copy ifdef logic elsewhere */
+            netsnmp_feature_require(string_append_int);
+#endif
             if (!NETSNMP_KLOOKUP(ifnet.if_name, name, sizeof name)) {
                 DEBUGMSGTL(("mibII/var_route", "klookup failed\n"));
                 return;
@@ -931,6 +941,9 @@
             cp = (char *) strchr(name, '\0');
             string_append_int(cp, ifnet.if_unit);
 #endif
+#ifdef NETSNMP_FEATURE_CHECKIN
+            netsnmp_feature_require(interface_legacy)
+#endif /* NETSNMP_FEATURE_CHECKIN */
             Interface_Scan_Init();
             rt.rt_unit = 0;
             while (Interface_Scan_Next
@@ -1035,10 +1048,10 @@
     char            name[16], temp[16];
     int             hashsize;
 #endif
-    static int      Time_Of_Last_Reload = 0;
+    static time_t   Time_Of_Last_Reload;
     struct timeval  now;
 
-    gettimeofday(&now, (struct timezone *) 0);
+    netsnmp_get_monotonic_clock(&now);
     if (Time_Of_Last_Reload + CACHE_TIME > now.tv_sec)
         return;
     Time_Of_Last_Reload = now.tv_sec;
@@ -1080,6 +1093,11 @@
     }
 
 #else                           /* rtentry is a BSD 4.3 compat */
+#ifdef NETSNMP_FEATURE_CHECKIN
+    /* this exists here just so we don't copy ifdef logic elsewhere */
+    netsnmp_feature_require(string_append_int);
+    netsnmp_feature_require(interface_legacy)
+#endif
     for (table = 0; table < NUM_ROUTE_SYMBOLS; table++) {
         auto_nlist(RTHASHSIZE_SYMBOL, (char *) &hashsize,
                    sizeof(hashsize));
@@ -1164,6 +1182,8 @@
 #else
 
 #if HAVE_SYS_MBUF_H
+netsnmp_feature_require(string_append_int)
+netsnmp_feature_require(interface_legacy)
 static void
 Route_Scan_Reload(void)
 {
@@ -1174,11 +1194,11 @@
     int             i, table;
     register char  *cp;
     char            name[16], temp[16];
-    static int      Time_Of_Last_Reload = 0;
+    static time_t   Time_Of_Last_Reload;
     struct timeval  now;
     int             hashsize;
 
-    gettimeofday(&now, (struct timezone *) 0);
+    netsnmp_get_monotonic_clock(&now);
     if (Time_Of_Last_Reload + CACHE_TIME > now.tv_sec)
         return;
     Time_Of_Last_Reload = now.tv_sec;
@@ -1290,10 +1310,10 @@
     char            line[256];
     struct rtentry *rt;
     char            name[16];
-    static int      Time_Of_Last_Reload = 0;
+    static time_t   Time_Of_Last_Reload;
     struct timeval  now;
 
-    gettimeofday(&now, (struct timezone *) 0);
+    netsnmp_get_monotonic_clock(&now);
     if (Time_Of_Last_Reload + CACHE_TIME > now.tv_sec)
         return;
     Time_Of_Last_Reload = now.tv_sec;
@@ -1477,7 +1497,7 @@
     DWORD           dwActualSize = 0;
     static PMIB_IPFORWARDTABLE pIpRtrTable = NULL;
     struct timeval  now;
-    static long     Time_Of_Last_Reload = 0;
+    static time_t    Time_Of_Last_Reload;
     static in_addr_t addr_ret;
 
 
@@ -1494,7 +1514,7 @@
          */
         route_row = (PMIB_IPFORWARDROW) malloc(sizeof(MIB_IPFORWARDROW));
     }
-    gettimeofday(&now, (struct timezone *) 0);
+    netsnmp_get_monotonic_clock(&now);
     if ((rtsize <= 1) || (Time_Of_Last_Reload + 5 <= now.tv_sec))
         Save_Valid = 0;
     else
diff --git a/agent/mibgroup/notification-log-mib/notification_log.c b/agent/mibgroup/notification-log-mib/notification_log.c
index bd6a821..a12a338 100644
--- a/agent/mibgroup/notification-log-mib/notification_log.c
+++ b/agent/mibgroup/notification-log-mib/notification_log.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #if HAVE_NETINET_IN_H
@@ -19,6 +20,12 @@
 #include "net-snmp/agent/sysORTable.h"
 #include "notification_log.h"
 
+netsnmp_feature_require(register_ulong_instance_context)
+netsnmp_feature_require(register_read_only_counter32_instance_context)
+netsnmp_feature_require(delete_table_data_set)
+netsnmp_feature_require(table_dataset)
+netsnmp_feature_require(date_n_time)
+
 /*
  * column number definitions for table nlmLogTable
  */
@@ -467,8 +474,10 @@
      * configuration variables get set to a value and thus
      * notifications must be possibly deleted from our archives.
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (reqinfo->mode == MODE_SET_COMMIT)
         check_log_size(0, NULL);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     return SNMP_ERR_NOERROR;
 }
 
diff --git a/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c b/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c
index c3fc363..e9b11d3 100644
--- a/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c
+++ b/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c
@@ -23,12 +23,16 @@
 /*
  * minimal include directives 
  */
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include "header_complex.h"
 #include "snmpNotifyFilterProfileTable.h"
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * snmpNotifyFilterProfileTable_variables_oid:
@@ -131,7 +135,7 @@
                                  *thedata)
 {
     netsnmp_variable_list *vars = NULL;
-
+    int retVal;
 
     DEBUGMSGTL(("snmpNotifyFilterProfileTable", "adding data...  "));
     /*
@@ -143,13 +147,17 @@
                               (u_char *) thedata->snmpTargetParamsName,
                               thedata->snmpTargetParamsNameLen);
 
-    header_complex_add_data(&snmpNotifyFilterProfileTableStorage, vars,
-                            thedata);
-    DEBUGMSGTL(("snmpNotifyFilterProfileTable", "registered an entry\n"));
+    if (header_complex_maybe_add_data(&snmpNotifyFilterProfileTableStorage, vars,
+                                      thedata, 1) != NULL){
+       DEBUGMSGTL(("snmpNotifyFilterProfileTable", "registered an entry\n"));
+       retVal = SNMPERR_SUCCESS;
+    }else{
+       retVal = SNMPERR_GENERR;  	
+    }
 
 
     DEBUGMSGTL(("snmpNotifyFilterProfileTable", "done.\n"));
-    return SNMPERR_SUCCESS;
+    return retVal;
 }
 
 
@@ -200,7 +208,11 @@
                               &StorageTmp->
                               snmpNotifyFilterProfileRowStatus, &tmpint);
 
-    snmpNotifyFilterProfileTable_add(StorageTmp);
+    if (snmpNotifyFilterProfileTable_add(StorageTmp) != SNMPERR_SUCCESS){
+        SNMP_FREE(StorageTmp->snmpTargetParamsName);
+        SNMP_FREE(StorageTmp->snmpNotifyFilterProfileName);
+        SNMP_FREE(StorageTmp);
+    }
 
     DEBUGMSGTL(("snmpNotifyFilterProfileTable", "done.\n"));
 }
@@ -218,7 +230,6 @@
 {
     char            line[SNMP_MAXBUF];
     char           *cptr;
-    size_t          tmpint;
     struct snmpNotifyFilterProfileTable_data *StorageTmp;
     struct header_complex_index *hcindex;
 
@@ -252,12 +263,12 @@
                 read_config_store_data(ASN_INTEGER, cptr,
                                        &StorageTmp->
                                        snmpNotifyFilterProfileStorType,
-                                       &tmpint);
+                                       NULL);
             cptr =
                 read_config_store_data(ASN_INTEGER, cptr,
                                        &StorageTmp->
                                        snmpNotifyFilterProfileRowStatus,
-                                       &tmpint);
+                                       NULL);
 
             snmpd_store_config(line);
         }
@@ -301,6 +312,7 @@
     }
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMPNOTIFYFILTERPROFILENAME:
         *write_method = write_snmpNotifyFilterProfileName;
         break;
@@ -312,7 +324,7 @@
     case SNMPNOTIFYFILTERPROFILEROWSTATUS:
         *write_method = write_snmpNotifyFilterProfileRowStatus;
         break;
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         *write_method = NULL;
     }
@@ -342,6 +354,7 @@
     default:
         ERROR_MSG("");
     }
+
     return NULL;
 }
 
@@ -349,6 +362,8 @@
 
 static struct snmpNotifyFilterProfileTable_data *StorageNew;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
+
 int
 write_snmpNotifyFilterProfileName(int action,
                                   u_char * var_val,
@@ -792,6 +807,8 @@
 }
 
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
+
 
 char           *
 get_FilterProfileName(const char *paramName, size_t paramName_len,
diff --git a/agent/mibgroup/notification/snmpNotifyFilterProfileTable.h b/agent/mibgroup/notification/snmpNotifyFilterProfileTable.h
index 9734cbe..616bcdc 100644
--- a/agent/mibgroup/notification/snmpNotifyFilterProfileTable.h
+++ b/agent/mibgroup/notification/snmpNotifyFilterProfileTable.h
@@ -55,9 +55,11 @@
                                                         char *);
      SNMPCallback    store_snmpNotifyFilterProfileTable;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
      WriteMethod     write_snmpNotifyFilterProfileName;
      WriteMethod     write_snmpNotifyFilterProfileStorType;
      WriteMethod     write_snmpNotifyFilterProfileRowStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
      char           *get_FilterProfileName(const char *paramName,
                                            size_t paramName_len,
diff --git a/agent/mibgroup/notification/snmpNotifyTable.c b/agent/mibgroup/notification/snmpNotifyTable.c
index f627ed6..91adb2f 100644
--- a/agent/mibgroup/notification/snmpNotifyTable.c
+++ b/agent/mibgroup/notification/snmpNotifyTable.c
@@ -8,6 +8,7 @@
  * This should always be included first before anything else 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #if HAVE_STDLIB_H
@@ -41,6 +42,10 @@
 #   include "notification-log-mib/notification_log.h"
 #endif
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 SNMPCallback    store_snmpNotifyTable;
 
 /*
@@ -57,11 +62,6 @@
 static oid snmpNotifyFullCompliance[] =
     { SNMP_OID_SNMPMODULES, 13, 3, 1, 3 }; /* SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance */
 
-void shutdown_snmpNotifyTable(void)
-{
-    UNREGISTER_SYSOR_ENTRY(snmpNotifyFullCompliance);
-}
-
 
 /*
  * variable2 snmpNotifyTable_variables:
@@ -285,7 +285,7 @@
     struct targetAddrTable_struct *ptr;
     struct targetParamTable_struct *pptr;
     struct snmpNotifyTable_data *nptr;
-    int             confirm, i;
+    int             confirm, i, bufLen;
     char            buf[SNMP_MAXBUF_SMALL];
     netsnmp_transport *t = NULL;
     struct agent_add_trap_args *args =
@@ -302,8 +302,9 @@
      * XXX: START move target creation to target code 
      */
     for (i = 0; i < MAX_ENTRIES; i++) {
-        sprintf(buf, "internal%d", i);
-        if (get_addrForName(buf) == NULL && get_paramEntry(buf) == NULL)
+        bufLen = sprintf(buf, "internal%d", i);
+        if (get_addrForName2(buf, bufLen) == NULL &&
+            get_paramEntry(buf) == NULL)
             break;
     }
     if (i == MAX_ENTRIES) {
@@ -325,7 +326,8 @@
         return 0;
     }
     ptr = snmpTargetAddrTable_create();
-    ptr->name = strdup(buf);
+    ptr->nameData = netsnmp_memdup(buf, bufLen);
+    ptr->nameLen = bufLen;
     memcpy(ptr->tDomain, t->domain, t->domain_length * sizeof(oid));
     ptr->tDomainLen = t->domain_length;
     ptr->tAddressLen = t->remote_length;
@@ -334,8 +336,8 @@
     ptr->timeout = ss->timeout / 10000;
     ptr->retryCount = ss->retries;
     SNMP_FREE(ptr->tagList);
-    ptr->tagList = strdup(ptr->name);
-    ptr->params = strdup(ptr->name);
+    ptr->tagList = strdup(buf); /* strdup ok since buf contains 'internal%d' */
+    ptr->params = strdup(buf);
     ptr->storageType = ST_READONLY;
     ptr->rowStatus = RS_ACTIVE;
     ptr->sess = ss;
@@ -420,18 +422,18 @@
                                      void *serverarg, void *clientarg)
 {
     struct header_complex_index *hptr, *nhptr;
-    struct snmpNotifyTable_data *nptr;
 
     for (hptr = snmpNotifyTableStorage; hptr; hptr = nhptr) {
-        nptr = (struct snmpNotifyTable_data *) hptr->data;
+        struct snmpNotifyTable_data *nptr = hptr->data;
         nhptr = hptr->next;
         if (nptr->snmpNotifyStorageType == ST_READONLY) {
             header_complex_extract_entry(&snmpNotifyTableStorage, hptr);
-            SNMP_FREE(nptr->snmpNotifyName);
-            SNMP_FREE(nptr->snmpNotifyTag);
-            SNMP_FREE(nptr);
+            free(nptr->snmpNotifyName);
+            free(nptr->snmpNotifyTag);
+            free(nptr);
         }
     }
+    snmpNotifyTableStorage = NULL;
     return (0);
 }
 
@@ -491,6 +493,37 @@
     DEBUGMSGTL(("snmpNotifyTable", "done.\n"));
 }
 
+void
+shutdown_snmpNotifyTable(void)
+{
+    DEBUGMSGTL(("snmpNotifyTable", "shutting down ... "));
+
+    notifyTable_unregister_notifications(SNMP_CALLBACK_APPLICATION,
+                                         SNMPD_CALLBACK_PRE_UPDATE_CONFIG,
+                                         NULL,
+                                         NULL);
+
+    snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
+                             SNMPD_CALLBACK_PRE_UPDATE_CONFIG,
+                             notifyTable_unregister_notifications, NULL, FALSE);
+    snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
+                             SNMPD_CALLBACK_REGISTER_NOTIFICATIONS,
+                             notifyTable_register_notifications, NULL, FALSE);
+    snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
+                             SNMPD_CALLBACK_SEND_TRAP2, send_notifications,
+                             NULL, FALSE);
+#ifndef DISABLE_SNMPV1
+    snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
+                             SNMPD_CALLBACK_SEND_TRAP1, send_notifications,
+                             NULL, FALSE);
+#endif
+    snmp_unregister_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
+                             store_snmpNotifyTable, NULL, FALSE);
+
+    UNREGISTER_SYSOR_ENTRY(snmpNotifyFullCompliance);
+
+    DEBUGMSGTL(("snmpNotifyTable", "done.\n"));
+}
 
 /*
  * snmpNotifyTable_add(): adds a structure node to our data set 
@@ -499,7 +532,7 @@
 snmpNotifyTable_add(struct snmpNotifyTable_data *thedata)
 {
     netsnmp_variable_list *vars = NULL;
-
+    int retVal;	
 
     DEBUGMSGTL(("snmpNotifyTable", "adding data...  "));
     /*
@@ -512,12 +545,17 @@
 
 
 
-    header_complex_add_data(&snmpNotifyTableStorage, vars, thedata);
-    DEBUGMSGTL(("snmpNotifyTable", "registered an entry\n"));
+    if (header_complex_maybe_add_data(&snmpNotifyTableStorage, vars, thedata, 1)
+        != NULL){
+    	DEBUGMSGTL(("snmpNotifyTable", "registered an entry\n"));
+	retVal = SNMPERR_SUCCESS;
+    }else{
+        retVal = SNMPERR_GENERR; 
+    }	
 
 
     DEBUGMSGTL(("snmpNotifyTable", "done.\n"));
-    return SNMPERR_SUCCESS;
+    return retVal;
 }
 
 
@@ -578,7 +616,11 @@
         StorageTmp->snmpNotifyRowStatus = RS_ACTIVE;
 
 
-    snmpNotifyTable_add(StorageTmp);
+    if (snmpNotifyTable_add(StorageTmp) != SNMPERR_SUCCESS){
+        SNMP_FREE(StorageTmp->snmpNotifyName);
+        SNMP_FREE(StorageTmp->snmpNotifyTag);
+        SNMP_FREE(StorageTmp);
+    }
 
 
     DEBUGMSGTL(("snmpNotifyTable", "done.\n"));
@@ -679,6 +721,7 @@
     }
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMPNOTIFYTAG:
         *write_method = write_snmpNotifyTag;
         break;
@@ -691,6 +734,7 @@
     case SNMPNOTIFYROWSTATUS:
         *write_method = write_snmpNotifyRowStatus;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         *write_method = NULL;
     }
@@ -699,6 +743,7 @@
         return NULL;
     }
 
+#ifndef NETSNMP_NO_READ_SUPPORT
     switch (vp->magic) {
     case SNMPNOTIFYTAG:
         *var_len = StorageTmp->snmpNotifyTagLen;
@@ -719,6 +764,7 @@
     default:
         ERROR_MSG("");
     }
+#endif /* !NETSNMP_NO_READ_SUPPORT */ 
     return NULL;
 }
 
@@ -747,6 +793,8 @@
 
 static struct snmpNotifyTable_data *StorageNew;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
+
 int
 write_snmpNotifyTag(int action,
                     u_char * var_val,
@@ -1173,3 +1221,4 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/notification/snmpNotifyTable.h b/agent/mibgroup/notification/snmpNotifyTable.h
index 9a93645..18bf1bd 100644
--- a/agent/mibgroup/notification/snmpNotifyTable.h
+++ b/agent/mibgroup/notification/snmpNotifyTable.h
@@ -64,10 +64,12 @@
      int             snmpNotifyTable_add(struct snmpNotifyTable_data
                                          *thedata);
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_snmpNotifyTag;
      WriteMethod     write_snmpNotifyType;
      WriteMethod     write_snmpNotifyStorageType;
      WriteMethod     write_snmpNotifyRowStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 
diff --git a/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c b/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
index d4b6e69..a6a42c3 100644
--- a/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
+++ b/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
@@ -38,7 +38,8 @@
     for (p = addrs; p; p = p->ifa_next) {
 
         if (!list_head) {
-            if ( (list_head = (struct ifname *) malloc (sizeof(struct ifname))) < 0) {
+            list_head = malloc(sizeof(struct ifname));
+            if (!list_head) {
                 DEBUGMSGTL(("access:etherStatsTable:interface_name_list_get",
                             "memory allocation failed\n"));
                 snmp_log (LOG_ERR, "access:etherStatsTable,interface_name_list_get, memory allocation failed\n");
@@ -57,7 +58,8 @@
         if (nameptr1)
             continue;
 
-        if ( (nameptr2->ifn_next = (struct ifname *) malloc (sizeof(struct ifname))) < 0) {
+        nameptr2->ifn_next = malloc(sizeof(struct ifname));
+        if (!nameptr2->ifn_next) {
             DEBUGMSGTL(("access:etherStatsTable:interface_name_list_get",
                         "memory allocation failed\n"));
             snmp_log (LOG_ERR, "access:etherStatsTable,interface_name_list_get, memory allocation failed\n");
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
index 974636a..48d4aca 100644
--- a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
@@ -200,7 +200,6 @@
 int
 etherStatsTable_container_load(netsnmp_container * container)
 {
-    etherStatsTable_rowreq_ctx *rowreq_ctx;
     size_t          count = 0;
 
     DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_container_load",
@@ -220,9 +219,7 @@
      * etherStatsIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h
      */
 
-    long            etherStatsIndex;
     int             fd;
-    int             rc = 0, retval = 0;
 
 #if defined(linux)
     struct ifname *list_head = NULL, *p = NULL;
@@ -244,7 +241,11 @@
      */
 
 #if defined(linux)
-    list_head = etherstats_interface_name_list_get (list_head, &retval);
+    {
+        int retval;
+
+        list_head = etherstats_interface_name_list_get(list_head, &retval);
+    }
 
     if (!list_head) {
         snmp_log (LOG_ERR, "access:etherStatsTable, error getting the interface names present in the system\n");
@@ -258,6 +259,9 @@
      */
 
     for (p = list_head; p; p = p->ifn_next) {
+        long            etherStatsIndex;
+        etherStatsTable_rowreq_ctx *rowreq_ctx;
+
         DEBUGMSGTL(("access:etherStatsTable", "processing '%s'\n", p->name));
 
         /*
@@ -296,23 +300,27 @@
          */
 
         memset (&rowreq_ctx->data, 0, sizeof (rowreq_ctx->data));
-        rc = interface_ioctl_etherstats_get (rowreq_ctx, fd, p->name);
+        {
+            int rc;
 
-        if (rc < 0) {
-            DEBUGMSGTL(("access:etherStatsTable", "error getting the statistics for interface |%s| "
-                        "etherStatsTable data, operation might not be supported\n", p->name));
-            etherStatsTable_release_rowreq_ctx(rowreq_ctx);
-            continue;
-        }
+            rc = interface_ioctl_etherstats_get (rowreq_ctx, fd, p->name);
 
-        /*
-         * insert into table container
-         */
-        rc = CONTAINER_INSERT(container, rowreq_ctx);
-        if (rc < 0) {
-            DEBUGMSGTL(("access:etherStatsTable", "error inserting |%s| ", p->name));
-            etherStatsTable_release_rowreq_ctx(rowreq_ctx);
-            continue;
+            if (rc < 0) {
+                DEBUGMSGTL(("access:etherStatsTable", "error getting the statistics for interface |%s| "
+                            "etherStatsTable data, operation might not be supported\n", p->name));
+                etherStatsTable_release_rowreq_ctx(rowreq_ctx);
+                continue;
+            }
+
+            /*
+             * insert into table container
+             */
+            rc = CONTAINER_INSERT(container, rowreq_ctx);
+            if (rc < 0) {
+                DEBUGMSGTL(("access:etherStatsTable", "error inserting |%s| ", p->name));
+                etherStatsTable_release_rowreq_ctx(rowreq_ctx);
+                continue;
+            }
         }
 
         ++count;
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
index 38e92af..221c608 100644
--- a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,14 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /**********************************************************************
  **********************************************************************
  ***
diff --git a/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c b/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c
index c03aef4..d6023e5 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c
@@ -13,6 +13,7 @@
  * content of the sctpAssocLocalAddrTable 
  */
 static netsnmp_container *sctpAssocLocalAddrTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpAssocLocalAddrTable module */
 void
@@ -27,8 +28,7 @@
 void
 shutdown_sctpAssocLocalAddrTable(void)
 {
-    sctpAssocLocalAddrTable_container_clear
-        (sctpAssocLocalAddrTable_container);
+    shutdown_table_sctpAssocLocalAddrTable();
 }
 
 /** Initialize the sctpAssocLocalAddrTable table by defining its contents and how it's structured */
@@ -42,7 +42,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpAssocLocalAddrTable",
@@ -132,6 +131,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpAssocLocalAddrTable(void)
+{
+    if (table_info) {
+        netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpAssocLocalAddrTable_container_clear
+        (sctpAssocLocalAddrTable_container);
+}
+
 /** handles requests for the sctpAssocLocalAddrTable table */
 int
 sctpAssocLocalAddrTable_handler(netsnmp_mib_handler *handler,
@@ -264,8 +274,7 @@
 void
 sctpAssocLocalAddrTable_entry_free(sctpAssocLocalAddrTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h b/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h
index c2cc055..eff080f 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h
+++ b/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h
@@ -13,6 +13,7 @@
 void            init_sctpAssocLocalAddrTable(void);
 void            shutdown_sctpAssocLocalAddrTable(void);
 void            initialize_table_sctpAssocLocalAddrTable(void);
+void            shutdown_table_sctpAssocLocalAddrTable(void);
 Netsnmp_Node_Handler sctpAssocLocalAddrTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c b/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c
index ad14a46..38ca8a3 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c
@@ -13,6 +13,7 @@
  * content of the sctpAssocRemAddrTable 
  */
 static netsnmp_container *sctpAssocRemAddrTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpAssocRemAddrTable module */
 void
@@ -27,7 +28,7 @@
 void
 shutdown_sctpAssocRemAddrTable(void)
 {
-    sctpAssocRemAddrTable_container_clear(sctpAssocRemAddrTable_container);
+    shutdown_table_sctpAssocRemAddrTable();
 }
 
 /** Initialize the sctpAssocRemAddrTable table by defining its contents and how it's structured */
@@ -41,7 +42,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpAssocRemAddrTable",
@@ -130,6 +130,16 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpAssocRemAddrTable(void)
+{
+    if (table_info) {
+        netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpAssocRemAddrTable_container_clear(sctpAssocRemAddrTable_container);
+}
+
 
 /** handles requests for the sctpAssocRemAddrTable table */
 int
@@ -309,8 +319,7 @@
 void
 sctpAssocRemAddrTable_entry_free(sctpAssocRemAddrTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h b/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h
index cc65c7e..5068561 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h
+++ b/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h
@@ -13,6 +13,7 @@
 void            init_sctpAssocRemAddrTable(void);
 void            shutdown_sctpAssocRemAddrTable(void);
 void            initialize_table_sctpAssocRemAddrTable(void);
+void            shutdown_table_sctpAssocRemAddrTable(void);
 Netsnmp_Node_Handler sctpAssocRemAddrTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpAssocTable.c b/agent/mibgroup/sctp-mib/sctpAssocTable.c
index f3a68a3..9919075 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocTable.c
+++ b/agent/mibgroup/sctp-mib/sctpAssocTable.c
@@ -16,6 +16,7 @@
  * content of the sctpAssocTable 
  */
 static netsnmp_container *sctpAssocTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpAssocTable module */
 void
@@ -30,7 +31,7 @@
 void
 shutdown_sctpAssocTable(void)
 {
-    sctpAssocTable_container_clear(sctpAssocTable_container);
+    shutdown_table_sctpAssocTable();
 }
 
 /** Initialize the sctpAssocTable table by defining its contents and how it's structured */
@@ -43,7 +44,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
     netsnmp_cache  *cache = NULL;
 
     reg =
@@ -120,6 +120,8 @@
         goto bail;
     }
 
+    netsnmp_cache_handler_owns_cache(handler);
+
     if (SNMPERR_SUCCESS != netsnmp_inject_handler(reg, handler)) {
         snmp_log(LOG_ERR,
                  "error injecting cache handler for sctpAssocTable\n");
@@ -165,6 +167,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpAssocTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    if (sctpAssocTable_container)
+	sctpAssocTable_container_clear(sctpAssocTable_container);
+}
+
 
 /** handles requests for the sctpAssocTable table */
 int
@@ -494,8 +507,7 @@
 void
 sctpAssocTable_entry_free(sctpAssocTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpAssocTable.h b/agent/mibgroup/sctp-mib/sctpAssocTable.h
index a6a9f3c..c6257b0 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocTable.h
+++ b/agent/mibgroup/sctp-mib/sctpAssocTable.h
@@ -13,6 +13,7 @@
 void            init_sctpAssocTable(void);
 void            shutdown_sctpAssocTable(void);
 void            initialize_table_sctpAssocTable(void);
+void            shutdown_table_sctpAssocTable(void);
 Netsnmp_Node_Handler sctpAssocTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c b/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c
index 7a2b0b2..1a6fd35 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c
@@ -10,6 +10,7 @@
 #include "sctpLookupLocalPortTable.h"
 
 static netsnmp_container *sctpLookupLocalPortTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpLookupLocalPortTable module */
 void
@@ -24,8 +25,7 @@
 void
 shutdown_sctpLookupLocalPortTable(void)
 {
-    sctpLookupLocalPortTable_container_clear
-        (sctpLookupLocalPortTable_container);
+    shutdown_table_sctpLookupLocalPortTable();
 }
 
 /** Initialize the sctpLookupLocalPortTable table by defining its contents and how it's structured */
@@ -39,7 +39,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpLookupLocalPortTable",
@@ -127,6 +126,16 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpLookupLocalPortTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpLookupLocalPortTable_container_clear
+        (sctpLookupLocalPortTable_container);
+}
 
 /** handles requests for the sctpLookupLocalPortTable table */
 int
@@ -249,8 +258,7 @@
 void
 sctpLookupLocalPortTable_entry_free(sctpLookupLocalPortTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h b/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h
index 9da6cd9..226c168 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h
+++ b/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h
@@ -13,6 +13,7 @@
 void            init_sctpLookupLocalPortTable(void);
 void            shutdown_sctpLookupLocalPortTable(void);
 void            initialize_table_sctpLookupLocalPortTable(void);
+void            shutdown_table_sctpLookupLocalPortTable(void);
 Netsnmp_Node_Handler sctpLookupLocalPortTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c
index 3370f52..ae2ec91 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c
@@ -10,6 +10,7 @@
 #include "sctpLookupRemHostNameTable.h"
 
 static netsnmp_container *sctpLookupRemHostNameTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpLookupRemHostNameTable module */
 void
@@ -24,8 +25,7 @@
 void
 shutdown_sctpLookupRemHostNameTable(void)
 {
-    sctpLookupRemHostNameTable_container_clear
-        (sctpLookupRemHostNameTable_container);
+    shutdown_table_sctpLookupRemHostNameTable();
 }
 
 /** Initialize the sctpLookupRemHostNameTable table by defining its contents and how it's structured */
@@ -39,7 +39,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpLookupRemHostNameTable",
@@ -129,6 +128,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpLookupRemHostNameTable(void)
+{
+    if (table_info) {
+        netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpLookupRemHostNameTable_container_clear
+        (sctpLookupRemHostNameTable_container);
+}
+
 /** handles requests for the sctpLookupRemHostNameTable table */
 int
 sctpLookupRemHostNameTable_handler(netsnmp_mib_handler *handler,
@@ -253,8 +263,7 @@
 sctpLookupRemHostNameTable_entry_free(sctpLookupRemHostNameTable_entry *
                                       entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h b/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h
index 484cb58..5bd3c48 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h
@@ -13,6 +13,7 @@
 void            init_sctpLookupRemHostNameTable(void);
 void            shutdown_sctpLookupRemHostNameTable(void);
 void            initialize_table_sctpLookupRemHostNameTable(void);
+void            shutdown_table_sctpLookupRemHostNameTable(void);
 Netsnmp_Node_Handler sctpLookupRemHostNameTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c
index 2542ea6..368dd51 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c
@@ -10,6 +10,7 @@
 #include "sctpLookupRemIPAddrTable.h"
 
 static netsnmp_container *sctpLookupRemIPAddrTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpLookupRemIPAddrTable module */
 void
@@ -24,8 +25,7 @@
 void
 shutdown_sctpLookupRemIPAddrTable(void)
 {
-    sctpLookupRemIPAddrTable_container_clear
-        (sctpLookupRemIPAddrTable_container);
+    shutdown_table_sctpLookupRemIPAddrTable();
 }
 
 /** Initialize the sctpLookupRemIPAddrTable table by defining its contents and how it's structured */
@@ -39,7 +39,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpLookupRemIPAddrTable",
@@ -123,6 +122,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpLookupRemIPAddrTable(void)
+{
+    if (table_info) {
+        netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpLookupRemIPAddrTable_container_clear
+        (sctpLookupRemIPAddrTable_container);
+}
+
 /** handles requests for the sctpLookupRemIPAddrTable table */
 int
 sctpLookupRemIPAddrTable_handler(netsnmp_mib_handler *handler,
@@ -253,8 +263,7 @@
 void
 sctpLookupRemIPAddrTable_entry_free(sctpLookupRemIPAddrTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h b/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h
index e315d6d..b74514c 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h
@@ -13,6 +13,7 @@
 void            init_sctpLookupRemIPAddrTable(void);
 void            shutdown_sctpLookupRemIPAddrTable(void);
 void            initialize_table_sctpLookupRemIPAddrTable(void);
+void            shutdown_table_sctpLookupRemIPAddrTable(void);
 Netsnmp_Node_Handler sctpLookupRemIPAddrTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c
index a7674e4..c8a8874 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c
@@ -10,6 +10,7 @@
 #include "sctpLookupRemPortTable.h"
 
 static netsnmp_container *sctpLookupRemPortTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpLookupRemPortTable module */
 void
@@ -24,8 +25,7 @@
 void
 shutdown_sctpLookupRemPortTable(void)
 {
-    sctpLookupRemPortTable_container_clear
-        (sctpLookupRemPortTable_container);
+    shutdown_table_sctpLookupRemPortTable();
 }
 
 /** Initialize the sctpLookupRemPortTable table by defining its contents and how it's structured */
@@ -39,7 +39,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpLookupRemPortTable",
@@ -122,6 +121,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpLookupRemPortTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpLookupRemPortTable_container_clear
+        (sctpLookupRemPortTable_container);
+}
+
 /** handles requests for the sctpLookupRemPortTable table */
 int
 sctpLookupRemPortTable_handler(netsnmp_mib_handler *handler,
@@ -243,8 +253,7 @@
 void
 sctpLookupRemPortTable_entry_free(sctpLookupRemPortTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h b/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h
index 96d49ce..b2ac811 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h
@@ -13,6 +13,7 @@
 void            init_sctpLookupRemPortTable(void);
 void            shutdown_sctpLookupRemPortTable(void);
 void            initialize_table_sctpLookupRemPortTable(void);
+void            shutdown_table_sctpLookupRemPortTable(void);
 Netsnmp_Node_Handler sctpLookupRemPortTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c
index 6bc0de6..d9966fc 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c
@@ -10,6 +10,7 @@
 #include "sctpLookupRemPrimIPAddrTable.h"
 
 static netsnmp_container *sctpLookupRemPrimIPAddrTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpLookupRemPrimIPAddrTable module */
 void
@@ -24,8 +25,7 @@
 void
 shutdown_sctpLookupRemPrimIPAddrTable(void)
 {
-    sctpLookupRemPrimIPAddrTable_container_clear
-        (sctpLookupRemPrimIPAddrTable_container);
+    shutdown_table_sctpLookupRemPrimIPAddrTable();
 }
 
 /** Initialize the sctpLookupRemPrimIPAddrTable table by defining its contents and how it's structured */
@@ -39,7 +39,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpLookupRemPrimIPAddrTable",
@@ -124,6 +123,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpLookupRemPrimIPAddrTable(void)
+{
+    if (table_info) {
+        netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpLookupRemPrimIPAddrTable_container_clear
+        (sctpLookupRemPrimIPAddrTable_container);
+}
+
 /** handles requests for the sctpLookupRemPrimIPAddrTable table */
 int
 sctpLookupRemPrimIPAddrTable_handler(netsnmp_mib_handler *handler,
@@ -258,8 +268,7 @@
 sctpLookupRemPrimIPAddrTable_entry_free(sctpLookupRemPrimIPAddrTable_entry
                                         * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h b/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h
index aaa5a0b..f3becdc 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h
@@ -13,6 +13,7 @@
 void            init_sctpLookupRemPrimIPAddrTable(void);
 void            shutdown_sctpLookupRemPrimIPAddrTable(void);
 void            initialize_table_sctpLookupRemPrimIPAddrTable(void);
+void            shutdown_table_sctpLookupRemPrimIPAddrTable(void);
 Netsnmp_Node_Handler sctpLookupRemPrimIPAddrTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpScalars_linux.c b/agent/mibgroup/sctp-mib/sctpScalars_linux.c
index 11573c3..6da5a6b 100644
--- a/agent/mibgroup/sctp-mib/sctpScalars_linux.c
+++ b/agent/mibgroup/sctp-mib/sctpScalars_linux.c
@@ -143,8 +143,8 @@
         if (ret < 0) {
             DEBUGMSGTL(("sctp:scalars:stats:arch_load",
                         "Unknown entry: %s\n", line));
-            // fclose(f);
-            // return ret;
+            /* fclose(f); */
+            /* return ret; */
 	    ret = 0;
         }
     }
diff --git a/agent/mibgroup/sctp-mib/sctpTables_common.c b/agent/mibgroup/sctp-mib/sctpTables_common.c
index 2376795..b28ea03 100644
--- a/agent/mibgroup/sctp-mib/sctpTables_common.c
+++ b/agent/mibgroup/sctp-mib/sctpTables_common.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -12,6 +13,8 @@
 #include "sctpLookupRemPrimIPAddrTable.h"
 #include "sctpLookupRemIPAddrTable.h"
 
+netsnmp_feature_require(container_lifo)
+
 static void
 sctpAssocTable_collect_invalid(void *what, void *magic)
 {
diff --git a/agent/mibgroup/sctp-mib/sctpTables_linux.c b/agent/mibgroup/sctp-mib/sctpTables_linux.c
index 1586554..8e62860 100644
--- a/agent/mibgroup/sctp-mib/sctpTables_linux.c
+++ b/agent/mibgroup/sctp-mib/sctpTables_linux.c
@@ -281,6 +281,8 @@
         return SNMP_ERR_GENERR;
     }
 
+    netsnmp_get_pid_from_inode_init();
+
     /*
      * ignore the header. 
      */
diff --git a/agent/mibgroup/smux/smux.c b/agent/mibgroup/smux/smux.c
index 698717c..4598c2b 100644
--- a/agent/mibgroup/smux/smux.c
+++ b/agent/mibgroup/smux/smux.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <sys/types.h>
 #include <ctype.h>
 
@@ -68,6 +69,8 @@
 #include "mibdefs.h"
 #include "snmpd.h"
 
+netsnmp_feature_require(snprint_objid)
+
 long            smux_long;
 u_long          smux_ulong;
 struct sockaddr_in smux_sa;
@@ -414,7 +417,7 @@
             return SNMP_ERR_GENERR;
         }
 
-        if (sendto(rptr->sr_fd, buf, len, 0, NULL, 0) < 0) {
+        if (sendto(rptr->sr_fd, (void *) buf, len, 0, NULL, 0) < 0) {
             DEBUGMSGTL(("smux", "[var_smux_write] send failed\n"));
             return SNMP_ERR_GENERR;
         }
@@ -423,7 +426,7 @@
             /*
              * peek at what's received 
              */
-            if ((len = recvfrom(rptr->sr_fd, buf,
+            if ((len = recvfrom(rptr->sr_fd, (void *) buf,
                             SMUXMAXPKTSIZE, MSG_PEEK, NULL, NULL)) <= 0) {
                 if ((len == -1) && ((errno == EINTR) || (errno == EAGAIN)))
                 {
@@ -463,7 +466,7 @@
             do
             {
                len = tmp_len;
-               len = recvfrom(rptr->sr_fd, buf, len, 0, NULL, NULL);
+               len = recvfrom(rptr->sr_fd, (void *) buf, len, 0, NULL, NULL);
             }
             while((len == -1) && ((errno == EINTR) || (errno == EAGAIN)));
 
@@ -547,7 +550,7 @@
                         "[var_smux_write] entering FREE - sending Commit \n"));
         }
 
-        if ((sendto(rptr->sr_fd, sout, 3, 0, NULL, 0)) < 0) {
+        if ((sendto(rptr->sr_fd, (void *) sout, 3, 0, NULL, 0)) < 0) {
             DEBUGMSGTL(("smux",
                         "[var_smux_write] send rollback/commit failed\n"));
             return SNMP_ERR_GENERR;
diff --git a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c
index 5b56f1f..d1c575f 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c
@@ -14,6 +14,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -26,6 +27,8 @@
 
 #include "snmpNotifyFilterTable_interface.h"
 
+netsnmp_feature_require(check_storage_transition)
+
 const oid       snmpNotifyFilterTable_oid[] =
     { SNMPNOTIFYFILTERTABLE_OID };
 const int       snmpNotifyFilterTable_oid_size =
diff --git a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
index 94d8687..942a865 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
@@ -8,6 +8,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/library/vacm.h>
@@ -20,6 +21,8 @@
 
 #include "snmpNotifyFilterTable_data_access.h"
 
+netsnmp_feature_require(snmpNotifyFilterTable_container_get)
+
 /** @ingroup interface 
  * @addtogroup data_access data_access: Routines to access data
  *
diff --git a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
index af4ad37..4040e3f 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,22 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(snmpNotifyFilterTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+
+netsnmp_feature_child_of(snmpNotifyFilterTable_container_size, snmpNotifyFilterTable_external_access)
+netsnmp_feature_child_of(snmpNotifyFilterTable_registration_set, snmpNotifyFilterTable_external_access)
+netsnmp_feature_child_of(snmpNotifyFilterTable_registration_get, snmpNotifyFilterTable_external_access)
+netsnmp_feature_child_of(snmpNotifyFilterTable_container_get, snmpNotifyFilterTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -96,19 +113,23 @@
     _snmpNotifyFilterTable_container_shutdown
     (snmpNotifyFilterTable_interface_ctx * if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_CONTAINER_GET
 netsnmp_container *
 snmpNotifyFilterTable_container_get(void)
 {
     return snmpNotifyFilterTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_REGISTRATION_GET
 snmpNotifyFilterTable_registration *
 snmpNotifyFilterTable_registration_get(void)
 {
     return snmpNotifyFilterTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_REGISTRATION_SET
 snmpNotifyFilterTable_registration *
 snmpNotifyFilterTable_registration_set(snmpNotifyFilterTable_registration *
                                        newreg)
@@ -118,12 +139,15 @@
     snmpNotifyFilterTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_CONTAINER_SIZE
 int
 snmpNotifyFilterTable_container_size(void)
 {
     return CONTAINER_SIZE(snmpNotifyFilterTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_CONTAINER_SIZE */
 
 u_int
 snmpNotifyFilterTable_dirty_get(void)
@@ -261,7 +285,7 @@
         _mfd_snmpNotifyFilterTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -287,7 +311,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_snmpNotifyFilterTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -303,8 +327,8 @@
                                             snmpNotifyFilterTable_oid,
                                             snmpNotifyFilterTable_oid_size,
                                             HANDLER_CAN_BABY_STEP
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
-                                          | HANDLER_CAN_RWRITE
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+                                            | HANDLER_CAN_RWRITE
 #endif
                                           );
     if (NULL == reginfo) {
@@ -325,7 +349,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -348,7 +372,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -1083,7 +1107,7 @@
                                              user_ctx, rowreq_ctx);
 }                               /* _snmpNotifyFilterTable_check_indexes */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1839,7 +1863,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_snmpNotifyFilterTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -2014,15 +2038,18 @@
 snmpNotifyFilterTable_container_init_persistence(netsnmp_container
                                                  *container)
 {
+    netsnmp_container **container_p;
     int             rc;
 
     register_config_handler(NULL, row_token,
                             _snmpNotifyFilterTable_container_row_restore,
                             NULL, NULL);
+    container_p = netsnmp_memdup(&container, sizeof(container));
+    netsnmp_assert(container_p);
     rc = snmp_register_callback(SNMP_CALLBACK_LIBRARY,
                                 SNMP_CALLBACK_STORE_DATA,
                                 _snmpNotifyFilterTable_container_save_rows,
-                                container);
+                                container_p);
 
     if (rc != SNMP_ERR_NOERROR)
         snmp_log(LOG_ERR, "error registering for STORE_DATA callback "
@@ -2040,7 +2067,7 @@
         "#\n" "# snmpNotifyFilterTable persistent data\n" "#";
     char           *type = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
                                                  NETSNMP_DS_LIB_APPTYPE);
-    netsnmp_container *c = (netsnmp_container *) clientarg;
+    netsnmp_container *c = *(netsnmp_container **)clientarg;
 
     DEBUGMSGTL(("internal:snmpNotifyFilterTable:"
                 "_snmpNotifyFilterTable_container_save_rows",
@@ -2406,6 +2433,7 @@
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_EXTERNAL_ACCESS
 snmpNotifyFilterTable_rowreq_ctx *
 snmpNotifyFilterTable_row_find_by_mib_index(snmpNotifyFilterTable_mib_index
                                             * mib_idx)
@@ -2433,3 +2461,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c
index bea67ed..04231f9 100644
--- a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c
+++ b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,10 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
 /**********************************************************************
  **********************************************************************
  ***
diff --git a/agent/mibgroup/snmpv3/snmpEngine.c b/agent/mibgroup/snmpv3/snmpEngine.c
index 87f4d91..e756788 100644
--- a/agent/mibgroup/snmpv3/snmpEngine.c
+++ b/agent/mibgroup/snmpv3/snmpEngine.c
@@ -3,6 +3,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/sysORTable.h>
@@ -10,9 +11,14 @@
 #include "util_funcs/header_generic.h"
 #include "snmpEngine.h"
 
+netsnmp_feature_child_of(snmpengine_all, libnetsnmpmibs)
+
+netsnmp_feature_child_of(register_snmpEngine_scalars_context, snmpengine_all)
+
 struct variable2 snmpEngine_variables[] = {
     {SNMPENGINEID, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
      var_snmpEngine, 1, {1}},
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
 #ifdef NETSNMP_ENABLE_TESTING_CODE
     {SNMPENGINEBOOTS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpEngine, 1, {2}},
@@ -24,6 +30,12 @@
     {SNMPENGINETIME, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
      var_snmpEngine, 1, {3}},
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */ 
+    {SNMPENGINEBOOTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_snmpEngine, 1, {2}},
+    {SNMPENGINETIME, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_snmpEngine, 1, {3}},
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     {SNMPENGINEMAXMESSAGESIZE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
      var_snmpEngine, 1, {4}},
 };
@@ -41,6 +53,7 @@
                  snmpEngine_variables_oid);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_SNMPENGINE_SCALARS_CONTEXT
 void
 register_snmpEngine_scalars_context(const char *contextName)
 {
@@ -53,6 +66,7 @@
                          DEFAULT_MIB_PRIORITY, 0, 0, NULL,
                          contextName, -1, 0);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_SNMPENGINE_SCALARS_CONTEXT */
 
 void
 init_snmpEngine(void)
@@ -62,12 +76,14 @@
     register_snmpEngine_scalars();
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #ifdef NETSNMP_ENABLE_TESTING_CODE
 int             write_engineBoots(int, u_char *, u_char, size_t, u_char *,
                                   oid *, size_t);
 int             write_engineTime(int, u_char *, u_char, size_t, u_char *,
                                  oid *, size_t);
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 u_char         *
 var_snmpEngine(struct variable *vp,
@@ -101,16 +117,20 @@
         return (unsigned char *) engineID;
 
     case SNMPENGINEBOOTS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #ifdef NETSNMP_ENABLE_TESTING_CODE
         *write_method = write_engineBoots;
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         long_ret = snmpv3_local_snmpEngineBoots();
         return (unsigned char *) &long_ret;
 
     case SNMPENGINETIME:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #ifdef NETSNMP_ENABLE_TESTING_CODE
         *write_method = write_engineTime;
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         long_ret = snmpv3_local_snmpEngineTime();
         return (unsigned char *) &long_ret;
 
@@ -125,6 +145,8 @@
     return NULL;
 }
 
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #ifdef NETSNMP_ENABLE_TESTING_CODE
 /*
  * write_engineBoots():
@@ -221,3 +243,4 @@
 }
 
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c
index fa23dd5..a7fc2ce 100644
--- a/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c
+++ b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c
@@ -4,6 +4,8 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
+
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/sysORTable.h>
@@ -16,6 +18,8 @@
 #define snmpMPDMIBObjects snmpMPDMIB, 2
 #define snmpMPDMIBCompliances snmpMPDMIB, 3, 1
 
+netsnmp_feature_require(helper_statistics)
+
 static oid snmpMPDStats[] = { snmpMPDMIBObjects, 1 };
 
 static netsnmp_handler_registration* snmpMPDStats_reg = NULL;
diff --git a/agent/mibgroup/snmpv3/usmStats.c b/agent/mibgroup/snmpv3/usmStats.c
index 1aa4105..718e071 100644
--- a/agent/mibgroup/snmpv3/usmStats.c
+++ b/agent/mibgroup/snmpv3/usmStats.c
@@ -71,5 +71,6 @@
         long_ret = snmp_get_statistic(tmagic + STAT_USM_STATS_START);
         return (unsigned char *) &long_ret;
     }
+
     return 0;
 }
diff --git a/agent/mibgroup/snmpv3/usmStats_5_5.c b/agent/mibgroup/snmpv3/usmStats_5_5.c
index b56f19b..bcd04e1 100644
--- a/agent/mibgroup/snmpv3/usmStats_5_5.c
+++ b/agent/mibgroup/snmpv3/usmStats_5_5.c
@@ -4,6 +4,8 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
+
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/sysORTable.h>
@@ -20,6 +22,8 @@
 static netsnmp_handler_registration* usmStats_reg = NULL;
 static oid usmMIBCompliance[] = { usmMIBCompliances, 1 };
 
+netsnmp_feature_require(helper_statistics)
+
 void
 init_usmStats_5_5(void)
 {
diff --git a/agent/mibgroup/snmpv3/usmUser.c b/agent/mibgroup/snmpv3/usmUser.c
index 891f9fc..9f0503d 100644
--- a/agent/mibgroup/snmpv3/usmUser.c
+++ b/agent/mibgroup/snmpv3/usmUser.c
@@ -3,6 +3,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <stdlib.h>
 
 #if HAVE_STRING_H
@@ -17,7 +18,12 @@
 #include "util_funcs/header_generic.h"
 #include "usmUser.h"
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
 int usmStatusCheck(struct usmUser *uptr);
+#endif  /* !NETSNMP_NO_WRITE_SUPPORT */
+
+netsnmp_feature_child_of(usmuser_all, libnetsnmpmibs)
+netsnmp_feature_child_of(init_register_usmuser_context, usmuser_all)
 
 struct variable4 usmUser_variables[] = {
     {USMUSERSPINLOCK, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
@@ -64,6 +70,7 @@
                  usmUser_variables_oid);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_INIT_REGISTER_USMUSER_CONTEXT
 void
 init_register_usmUser_context(const char *contextName) {
     register_mib_context("snmpv3/usmUser",
@@ -75,6 +82,7 @@
                          DEFAULT_MIB_PRIORITY, 0, 0, NULL,
                          contextName, -1, 0);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INIT_REGISTER_USMUSER_CONTEXT */
 
 /*******************************************************************-o-******
  * usm_generate_OID
@@ -303,8 +311,11 @@
     if (!vp || !name || !length || !var_len)
         return NULL;
 
-    *write_method = (WriteMethod*)0;    /* assume it isnt writable for the time being */
-    *var_len = sizeof(long_ret);        /* assume an integer and change later if not */
+    /* assume it isnt writable for the time being */
+    *write_method = (WriteMethod*)0;    
+
+    /* assume an integer and change later if not */
+    *var_len = sizeof(long_ret);
 
     if (vp->magic != USMUSERSPINLOCK) {
         oid             newname[MAX_OID_LEN];
@@ -374,6 +385,7 @@
             indexOid = usm_generate_OID(vp->name, vp->namelen, uptr, &len);
             *length = len;
             memmove(name, indexOid, len * sizeof(oid));
+
             DEBUGMSGTL(("usmUser", "Found user: %s - ", uptr->name));
             for (i = 0; i < (int) uptr->engineIDLen; i++) {
                 DEBUGMSG(("usmUser", " %x", uptr->engineID[i]));
@@ -390,6 +402,7 @@
     }                           /* endif -- vp->magic != USMUSERSPINLOCK */
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
     case USMUSERSPINLOCK:
         *write_method = write_usmUserSpinLock;
         long_ret = usmUserSpinLock;
@@ -485,15 +498,21 @@
             return (unsigned char *) &long_ret;
         }
         return NULL;
-
     default:
         DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_usmUser\n",
                     vp->magic));
+#else /* !NETSNMP_NO_WRITE_SUPPORT */ 
+    default:
+        DEBUGMSGTL(("snmpd", "no write support for var_usmUser\n"));
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     }
     return NULL;
 
 }                               /* end var_usmUser() */
 
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
+
 /*
  * write_usmUserSpinLock(): called when a set is performed on the
  * usmUserSpinLock object 
@@ -747,7 +766,6 @@
         }
     } else if (action == COMMIT) {
         SNMP_FREE(optr);
-        optr = NULL;
     } else if (action == FREE || action == UNDO) {
         if ((uptr = usm_parse_user(name, name_len)) != NULL) {
             if (resetOnFail) {
@@ -890,7 +908,6 @@
         uptr->authKeyLen = buflen;
     } else if (action == COMMIT) {
         SNMP_FREE(oldkey);
-        oldkey = NULL;
     } else if (action == UNDO) {
         if ((uptr = usm_parse_user(name, name_len)) != NULL && resetOnFail) {
             SNMP_FREE(uptr->authKey);
@@ -1015,7 +1032,6 @@
         }
     } else if (action == COMMIT) {
         SNMP_FREE(optr);
-        optr = NULL;
     } else if (action == FREE || action == UNDO) {
         if ((uptr = usm_parse_user(name, name_len)) != NULL) {
             if (resetOnFail) {
@@ -1140,7 +1156,6 @@
         uptr->privKeyLen = buflen;
     } else if (action == COMMIT) {
         SNMP_FREE(oldkey);
-        oldkey = NULL;
     } else if (action == UNDO) {
         if ((uptr = usm_parse_user(name, name_len)) != NULL && resetOnFail) {
             SNMP_FREE(uptr->privKey);
@@ -1276,6 +1291,7 @@
     return SNMP_ERR_NOERROR;
 }                               /* end write_usmUserStorageType() */
 
+
 /*
  * Return 1 if enough objects have been set up to transition rowStatus to
  * notInService(2) or active(1).  
@@ -1482,7 +1498,9 @@
     }
 
     return SNMP_ERR_NOERROR;
-}
+}  /* write_usmUserStatus */
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 
 #if 0
 
diff --git a/agent/mibgroup/snmpv3/usmUser.h b/agent/mibgroup/snmpv3/usmUser.h
index 2afecb4..53d1412 100644
--- a/agent/mibgroup/snmpv3/usmUser.h
+++ b/agent/mibgroup/snmpv3/usmUser.h
@@ -54,6 +54,7 @@
                                    size_t * engineIDLen,
                                    unsigned char **name, size_t * nameLen);
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
      WriteMethod     write_usmUserSpinLock;
      WriteMethod     write_usmUserCloneFrom;
      WriteMethod     write_usmUserAuthProtocol;
@@ -63,5 +64,6 @@
      WriteMethod     write_usmUserPublic;
      WriteMethod     write_usmUserStorageType;
      WriteMethod     write_usmUserStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 
 #endif                          /* _MIBGROUP_USMUSER_H */
diff --git a/agent/mibgroup/snmpv3mibs.h b/agent/mibgroup/snmpv3mibs.h
index a5621e5..0cca9a3 100644
--- a/agent/mibgroup/snmpv3mibs.h
+++ b/agent/mibgroup/snmpv3mibs.h
@@ -8,7 +8,9 @@
 
 config_require(snmpv3/snmpEngine)
 config_version_require((snmpv3/snmpMPDStats, 5.5, snmpv3/snmpMPDStats_5_5))
+#ifdef NETSNMP_SECMOD_USM
 config_version_require((snmpv3/usmStats, 5.5, snmpv3/usmStats_5_5))
 config_require(snmpv3/usmConf)
 config_require(snmpv3/usmUser)
+#endif /* NETSNMP_SECMOD_USM */
 #endif                          /* SNMPV3MIBS_H */
diff --git a/agent/mibgroup/struct.h b/agent/mibgroup/struct.h
index 08780cc..d025ed0 100644
--- a/agent/mibgroup/struct.h
+++ b/agent/mibgroup/struct.h
@@ -18,7 +18,8 @@
     struct extensible *next;
     oid             miboid[MIBMAX];
     size_t          miblen;
-    int             pid;
+    int             mibpriority;
+    netsnmp_pid_t   pid;
 #if defined(WIN32)
     HANDLE          tid;                /* WIN32 thread */
 #endif
diff --git a/agent/mibgroup/target/snmpTargetAddrEntry.c b/agent/mibgroup/target/snmpTargetAddrEntry.c
index 7dc1b2a..b1eb00a 100644
--- a/agent/mibgroup/target/snmpTargetAddrEntry.c
+++ b/agent/mibgroup/target/snmpTargetAddrEntry.c
@@ -25,13 +25,17 @@
 #define snmpTargetAddrOIDLen 11 /*This is base+column, 
                                  * i.e. everything but index */
 
-oid             snmpTargetAddrOID[snmpTargetAddrOIDLen] =
+static oid      snmpTargetAddrOID[snmpTargetAddrOIDLen] =
     { 1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 0 };
 
 static unsigned long snmpTargetSpinLock = 0;
 static struct targetAddrTable_struct *aAddrTable = NULL;
 
 
+static int
+store_snmpTargetAddrEntry(int majorID, int minorID, void *serverarg,
+                          void *clientarg);
+
 /*
  * Utility routines 
  */
@@ -42,11 +46,12 @@
 }
 
 struct targetAddrTable_struct *
-get_addrForName(char *name)
+get_addrForName2(const char *name, unsigned char nameLen)
 {
     struct targetAddrTable_struct *ptr;
     for (ptr = aAddrTable; ptr != NULL; ptr = ptr->next) {
-        if (ptr->name && strcmp(ptr->name, name) == 0)
+        if (ptr->nameLen == nameLen &&
+            memcmp(ptr->nameData, name, nameLen) == 0)
             return ptr;
     }
     return NULL;
@@ -64,7 +69,8 @@
     newEntry = malloc(sizeof(*newEntry));
 
     if (newEntry) {
-        newEntry->name = NULL;
+        newEntry->nameData = NULL;
+        newEntry->nameLen = 0;
 
         newEntry->tDomainLen = 0;
         newEntry->tAddress = NULL;
@@ -92,11 +98,11 @@
 void
 snmpTargetAddrTable_dispose(struct targetAddrTable_struct *reaped)
 {
-    if (reaped->sess != NULL) {
+    if (reaped->sess)
         snmp_close(reaped->sess);
-    }
-    SNMP_FREE(reaped->name);
-    SNMP_FREE(reaped->tAddress);
+    else
+        SNMP_FREE(reaped->tAddress);
+    SNMP_FREE(reaped->nameData);
     SNMP_FREE(reaped->tagList);
     SNMP_FREE(reaped->params);
 
@@ -116,8 +122,6 @@
 {
     static struct targetAddrTable_struct *curr_struct, *prev_struct;
     int             i;
-    size_t          newOIDLen = 0, currOIDLen = 0;
-    oid             newOID[128], currOID[128];
 
     /*
      * if the list is empty, add the new entry to the top 
@@ -127,23 +131,19 @@
         return;
     } else {
         /*
-         * get the 'OID' value of the new entry 
-         */
-        newOIDLen = strlen(newEntry->name);
-        for (i = 0; i < (int) newOIDLen; i++) {
-            newOID[i] = newEntry->name[i];
-        }
-
-        /*
          * search through the list for an equal or greater OID value 
          */
         while (curr_struct != NULL) {
-            currOIDLen = strlen(curr_struct->name);
-            for (i = 0; i < (int) currOIDLen; i++) {
-                currOID[i] = curr_struct->name[i];
+            i = memcmp(newEntry->nameData, curr_struct->nameData,
+                       newEntry->nameLen < curr_struct->nameLen ?
+                       newEntry->nameLen : curr_struct->nameLen);
+            if (i == 0) {
+                if (newEntry->nameLen < curr_struct->nameLen)
+                    i = -1;
+                else if (newEntry->nameLen > curr_struct->nameLen)
+                    i = 1;
             }
 
-            i = snmp_oid_compare(newOID, newOIDLen, currOID, currOIDLen);
             if (i == 0) {       /* Exact match, overwrite with new struct */
                 newEntry->next = curr_struct->next;
                 /*
@@ -233,10 +233,10 @@
 
     for (temp_struct = aAddrTable; temp_struct != NULL;
          temp_struct = temp_struct->next) {
-        for (i = 0; i < (int) strlen(temp_struct->name); i++) {
-            newNum[baseNameLen + i] = temp_struct->name[i];
+        for (i = 0; i < temp_struct->nameLen; i++) {
+            newNum[baseNameLen + i] = (unsigned char)temp_struct->nameData[i];
         }
-        myOIDLen = baseNameLen + strlen(temp_struct->name);
+        myOIDLen = baseNameLen + temp_struct->nameLen;
         i = snmp_oid_compare(name, *length, newNum, myOIDLen);
         /*
          * Assumes that the linked list sorted by OID, low to high 
@@ -274,7 +274,7 @@
  * for the snmpTargetAddrEntry mib 
  */
 
-struct variable2 snmpTargetAddrEntry_variables[] = {
+static const struct variable2 snmpTargetAddrEntry_variables[] = {
     {SNMPTARGETADDRTDOMAIN, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetAddrEntry, 1, {SNMPTARGETADDRTDOMAINCOLUMN}},
     {SNMPTARGETADDRTADDRESS, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
@@ -294,17 +294,17 @@
 
 };
 
-struct variable2 snmpTargetSpinLock_var[] = {
+static const struct variable2 snmpTargetSpinLock_var[] = {
     {SNMPTARGETSPINLOCK, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_targetSpinLock, 1, {1}}
 };
 
-static oid      snmpTargetSpinLock_oid[] = { 1, 3, 6, 1, 6, 3, 12, 1 };
+static const oid snmpTargetSpinLock_oid[] = { 1, 3, 6, 1, 6, 3, 12, 1 };
 
 /*
  * now load this mib into the agents mib table 
  */
-oid             snmpTargetAddrEntry_variables_oid[] =
+static const oid snmpTargetAddrEntry_variables_oid[] =
     { 1, 3, 6, 1, 6, 3, 12, 1, 2, 1 };
 
 
@@ -321,7 +321,7 @@
 
     snmpd_register_config_handler("targetAddr",
                                   snmpd_parse_config_targetAddr,
-				  (void (*)(void))0, NULL);
+                                  (void (*)(void))0, NULL);
 
     /*
      * we need to be called back later 
@@ -331,30 +331,21 @@
 
 }                               /* init_snmpTargetAddrEntry */
 
-
-int
-snmpTargetAddr_addName(struct targetAddrTable_struct *entry, char *cptr)
+void
+shutdown_snmpTargetAddrEntry(void)
 {
-    size_t          len;
-    if (cptr == NULL) {
-        DEBUGMSGTL(("snmpTargetAddrEntry",
-                    "ERROR snmpTargetAddrEntry: no name in config string\n"));
-        return (0);
-    } else {
-        len = strlen(cptr);
-        /*
-         * spec check for string 1-32 
-         */
-        if (len < 1 || len > 32) {
-            DEBUGMSGTL(("snmpTargetAddrEntry",
-                        "ERROR snmpTargetAddrEntry: name out of range in config string\n"));
-            return (0);
-        }
-        entry->name = strdup(cptr);
-    }
-    return (1);
-}                               /* addName */
+    struct targetAddrTable_struct *ptr;
+    struct targetAddrTable_struct *next;
 
+    for (ptr = aAddrTable; ptr; ptr = next) {
+        next = ptr->next;
+        snmpTargetAddrTable_dispose(ptr);
+    }
+    aAddrTable = NULL;
+
+    snmp_unregister_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
+                             store_snmpTargetAddrEntry, NULL, FALSE);
+}
 
 int
 snmpTargetAddr_addTDomain(struct targetAddrTable_struct *entry, char *cptr)
@@ -538,7 +529,7 @@
              (entry->storageType != SNMP_STORAGE_NONVOLATILE) &&
              (entry->storageType != SNMP_STORAGE_PERMANENT) &&
              (entry->storageType != SNMP_STORAGE_READONLY)) {
-	DEBUGMSGTL(("snmpTargetAddrEntry",
+        DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargetAddrEntry: storage type not a valid "
                     "value of other(%d), volatile(%d), nonvolatile(%d), "
                     "permanent(%d), or readonly(%d) in config string.\n",
@@ -587,24 +578,42 @@
 void
 snmpd_parse_config_targetAddr(const char *token, char *char_ptr)
 {
-    char           *cptr = char_ptr, buff[1024];
+    const char     *cptr = char_ptr;
+    char            buff[1024], *bptr;
     struct targetAddrTable_struct *newEntry;
     int             i;
+    size_t          bufl;
 
     newEntry = snmpTargetAddrTable_create();
 
-    cptr = copy_nword(cptr, buff, sizeof(buff));
-    if (snmpTargetAddr_addName(newEntry, buff) == 0) {
+    cptr = skip_white_const(cptr);
+    if (cptr == NULL) {
+        DEBUGMSGTL(("snmpTargetAddrEntry",
+                    "ERROR snmpTargetAddrEntry: no name in config string\n"));
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+
+    bufl = 0;
+    cptr = read_config_read_octet_string_const(cptr,
+                                               (u_char**)&newEntry->nameData,
+                                               &bufl);
+    if (bufl < 1 || bufl > 32) {
+        DEBUGMSGTL(("snmpTargetAddrEntry",
+                    "ERROR snmpTargetAddrEntry: name out of range in config "
+                    "string\n"));
+        snmpTargetAddrTable_dispose(newEntry);
+        return;
+    }
+    newEntry->nameLen = bufl;
+
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addTDomain(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
     cptr =
-        read_config_read_octet_string(cptr,
+        read_config_read_octet_string_const(cptr,
                                       (u_char **) & newEntry->tAddress,
                                       &newEntry->tAddressLen);
     if (!cptr || !(newEntry->tAddress)) {
@@ -613,50 +622,52 @@
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addTimeout(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addRetryCount(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addTagList(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addParams(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addStorageType(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addRowStatus(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    snprintf(buff, sizeof(buff), "snmp_parse_config_targetAddr, read: %s\n",
-            newEntry->name);
-    buff[ sizeof(buff)-1 ] = 0;
+    bptr = buff;
+    bptr += sprintf(bptr, "snmp_parse_config_targetAddr, read: ");
+    bptr = read_config_save_octet_string(bptr, (u_char*)newEntry->nameData,
+                                         newEntry->nameLen);
+    *bptr++ = '\n';
     for (i = 0; i < newEntry->tDomainLen; i++) {
-        snprintf(&buff[strlen(buff)], sizeof(buff)-strlen(buff)-1,
-                 ".%d", (int) newEntry->tDomain[i]);
-        buff[ sizeof(buff)-1 ] = 0;
+        bptr += snprintf(bptr, buff + sizeof(buff) - bptr,
+                         ".%d", (int) newEntry->tDomain[i]);
     }
-    snprintf(&buff[strlen(buff)], sizeof(buff)-strlen(buff)-1,
-            " %s %d %d %s %s %d %d\n",
-            newEntry->tAddress, newEntry->timeout, newEntry->retryCount,
-            newEntry->tagList, newEntry->params, newEntry->storageType,
-            newEntry->rowStatus);
-    buff[ sizeof(buff)-1 ] = 0;
+    bptr += snprintf(bptr, buff + sizeof(buff) - bptr,
+                     " %s %d %d %s %s %d %d\n",
+                     newEntry->tAddress, newEntry->timeout,
+                     newEntry->retryCount, newEntry->tagList,
+                     newEntry->params, newEntry->storageType,
+                     newEntry->rowStatus);
+    buff[ sizeof(buff) - 1 ] = 0;
     DEBUGMSGTL(("snmpTargetAddrEntry", "%s", buff));
 
     snmpTargetAddrTable_addToList(newEntry, &aAddrTable);
@@ -673,53 +684,48 @@
  * for this MIB table. It writes out all the non-volatile rows 
  * to permanent storage on a shutdown  
  */
-int
+static int
 store_snmpTargetAddrEntry(int majorID, int minorID, void *serverarg,
                           void *clientarg)
 {
-    struct targetAddrTable_struct *curr_struct;
-    char            line[1024];
+    const struct targetAddrTable_struct *curr_struct;
+    char            line[1024], *cur, *ep = line + sizeof(line);
     int             i;
 
-    if ((curr_struct = aAddrTable) != NULL) {
-        while (curr_struct != NULL) {
-            if ((curr_struct->storageType == SNMP_STORAGE_NONVOLATILE ||
-                 curr_struct->storageType == SNMP_STORAGE_PERMANENT)
-                &&
-                (curr_struct->rowStatus == SNMP_ROW_ACTIVE ||
-                 curr_struct->rowStatus == SNMP_ROW_NOTINSERVICE)) {
-                snprintf(line, sizeof(line),
-                        "targetAddr %s ", curr_struct->name);
-                line[ sizeof(line)-1 ] = 0;
-                for (i = 0; i < curr_struct->tDomainLen; i++) {
-                    snprintf(&line[strlen(line)],
-                            sizeof(line)-strlen(line)-1, ".%i",
-                            (int) curr_struct->tDomain[i]);
-                    line[ sizeof(line)-1 ] = 0;
-                }
-                strlcat(line, " ", sizeof(line));
-                read_config_save_octet_string(&line[strlen(line)],
-                                              curr_struct->tAddress,
-                                              curr_struct->tAddressLen);
-
-                snprintf(&line[strlen(line)], sizeof(line)-strlen(line)-1,
-                        " %i %i \"%s\" %s %i %i",
-                        curr_struct->timeout,
-                        curr_struct->retryCount, curr_struct->tagList,
-                        curr_struct->params, curr_struct->storageType,
-                        curr_struct->rowStatus);
-                line[ sizeof(line)-1 ] = 0;
-
-                /*
-                 * store to file 
-                 */
-                snmpd_store_config(line);
+    curr_struct = aAddrTable;
+    while (curr_struct != NULL) {
+        if ((curr_struct->storageType == SNMP_STORAGE_NONVOLATILE ||
+             curr_struct->storageType == SNMP_STORAGE_PERMANENT) &&
+            (curr_struct->rowStatus == SNMP_ROW_ACTIVE ||
+             curr_struct->rowStatus == SNMP_ROW_NOTINSERVICE)) {
+            cur = line + snprintf(line, sizeof(line), "targetAddr ");
+            cur = read_config_save_octet_string(
+                cur, (u_char*)curr_struct->nameData, curr_struct->nameLen);
+            *cur++ = ' ';
+            for (i = 0; i < curr_struct->tDomainLen; i++) {
+                cur += snprintf(cur, ep - cur, ".%i",
+                                (int) curr_struct->tDomain[i]);
             }
-            curr_struct = curr_struct->next;
-        }
-    }
-    return SNMPERR_SUCCESS;
+            *cur++ = ' ';
+            cur = read_config_save_octet_string(
+                cur, curr_struct->tAddress, curr_struct->tAddressLen);
+            cur += snprintf(cur, ep - cur, " %i %i \"%s\" %s %i %i",
+                            curr_struct->timeout,
+                            curr_struct->retryCount, curr_struct->tagList,
+                            curr_struct->params, curr_struct->storageType,
+                            curr_struct->rowStatus);
+            line[ sizeof(line)-1 ] = 0;
 
+            /*
+             * store to file
+             */
+            snmpd_store_config(line);
+        }
+
+        curr_struct = curr_struct->next;
+    }
+
+    return SNMPERR_SUCCESS;
 }                               /*  store_snmpTargetAddrEntry  */
 
 
@@ -753,6 +759,7 @@
      */
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMPTARGETADDRTDOMAIN:
         *write_method = write_snmpTargetAddrTDomain;
         break;
@@ -777,11 +784,13 @@
     case SNMPTARGETADDRROWSTATUS:
         *write_method = write_snmpTargetAddrRowStatus;
         break;
+#endif /*  !NETSNMP_NO_WRITE_SUPPORT */
     default:
         *write_method = NULL;
     }
 
-    *var_len = sizeof(long_ret);        /* assume an integer and change later if not */
+    /* assume an integer and change later if not */
+    *var_len = sizeof(long_ret);
 
     /*
      * look for OID in current table 
@@ -853,10 +862,12 @@
                     "unknown sub-id %d in var_snmpTargetAddrEntry\n",
                     vp->magic));
     }
+
     return NULL;
 }                               /* var_snmpTargetAddrEntry */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 write_snmpTargetAddrTDomain(int action,
                             u_char * var_val,
@@ -921,6 +932,8 @@
                 target->rowStatus = SNMP_ROW_NOTINSERVICE;
             }
         }
+    } else if (action == COMMIT) {
+        snmp_store_needed(NULL);
     } else if (action == FREE || action == UNDO) {
         /*
          * Try to undo the SET here (abnormal usage of FREE clause)  
@@ -1008,6 +1021,7 @@
     } else if (action == COMMIT) {
         SNMP_FREE(old_addr);
         old_addr = NULL;
+        snmp_store_needed(NULL);
     } else if (action == FREE || action == UNDO) {
         /*
          * Try to undo the SET here (abnormal usage of FREE clause)  
@@ -1103,6 +1117,7 @@
                                         1)) != NULL) {
             temp_struct->timeout = long_ret;
         }
+        snmp_store_needed(NULL);
     }
 
     return SNMP_ERR_NOERROR;
@@ -1160,6 +1175,7 @@
                                                  1)) != NULL) {
             target->retryCount = long_ret;
         }
+        snmp_store_needed(NULL);
     }
 
     return SNMP_ERR_NOERROR;
@@ -1250,6 +1266,7 @@
     } else if (action == COMMIT) {
         SNMP_FREE(old_tlist);
         old_tlist = NULL;
+        snmp_store_needed(NULL);
     } else if (action == FREE || action == UNDO) {
         snmpTargetAddrOID[snmpTargetAddrOIDLen - 1] =
             SNMPTARGETADDRTAGLISTCOLUMN;
@@ -1327,6 +1344,7 @@
     } else if (action == COMMIT) {
         SNMP_FREE(old_params);
         old_params = NULL;
+        snmp_store_needed(NULL);
     } else if (action == FREE || action == UNDO) {
         /*
          * Try to undo the SET here (abnormal usage of FREE clause)  
@@ -1413,6 +1431,7 @@
                                                  1)) != NULL) {
             target->storageType = long_ret;
         }
+        snmp_store_needed(NULL);
     }
 
     return SNMP_ERR_NOERROR;
@@ -1441,18 +1460,18 @@
         temp_struct = snmpTargetAddrTable_create();
         if (!temp_struct)
             return SNMP_ERR_GENERR;
-        temp_struct->name = (char *) malloc(newNameLen + 1);
-        if (temp_struct->name == NULL) {
+        temp_struct->nameData = (char *) malloc(newNameLen);
+        if (temp_struct->nameData == NULL) {
             SNMP_FREE(temp_struct->tagList);
             SNMP_FREE(temp_struct);
             return 0;
         }
 
+        temp_struct->nameLen = newNameLen;
         for (i = 0; i < (int) newNameLen; i++) {
-            temp_struct->name[i] = (char) name[i + snmpTargetAddrOIDLen];
+            temp_struct->nameData[i] = (char) name[i + snmpTargetAddrOIDLen];
         }
 
-        temp_struct->name[newNameLen] = '\0';
         temp_struct->rowStatus = SNMP_ROW_NOTREADY;
 
         snmpTargetAddrTable_addToList(temp_struct, &aAddrTable);
@@ -1648,6 +1667,7 @@
     return SNMP_ERR_NOERROR;
 }
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 u_char         *
@@ -1659,12 +1679,20 @@
 {
     if (header_generic(vp, name, length, exact, var_len, write_method) ==
         MATCH_FAILED) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_targetSpinLock;
+#else
+		*write_method = NULL;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         return NULL;
     }
     if (vp->magic == SNMPTARGETSPINLOCK) {
-        *write_method = write_targetSpinLock;
         *var_len = sizeof(unsigned long);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        *write_method = write_targetSpinLock;
+#else
+		*write_method = NULL;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         return (u_char *) & (snmpTargetSpinLock);
     }
     return NULL;
diff --git a/agent/mibgroup/target/snmpTargetAddrEntry.h b/agent/mibgroup/target/snmpTargetAddrEntry.h
index 7ed838f..0b70af5 100644
--- a/agent/mibgroup/target/snmpTargetAddrEntry.h
+++ b/agent/mibgroup/target/snmpTargetAddrEntry.h
@@ -46,7 +46,8 @@
      * structure definitions 
      */
      struct targetAddrTable_struct {
-         char           *name;
+         char           *nameData;
+         unsigned char   nameLen;
          oid             tDomain[MAX_OID_LEN];
          int             tDomainLen;
          unsigned char  *tAddress;
@@ -67,19 +68,19 @@
  */
 
      void            init_snmpTargetAddrEntry(void);
-     int             store_snmpTargetAddrEntry(int majorID, int minorID,
-                                               void *serverarg,
-                                               void *clientarg);
+     void            shutdown_snmpTargetAddrEntry(void);
      FindVarMethod   var_snmpTargetAddrEntry;
 
      struct targetAddrTable_struct *get_addrTable(void);
-     struct targetAddrTable_struct *get_addrForName(char *name);
+     struct targetAddrTable_struct *get_addrForName2(const char *name,
+                                                     unsigned char nameLen);
      struct targetAddrTable_struct *snmpTargetAddrTable_create(void);
      void            snmpTargetAddrTable_add(struct targetAddrTable_struct
                                              *newEntry);
 
      void            snmpd_parse_config_targetAddr(const char *, char *);
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_snmpTargetAddrTDomain;
      WriteMethod     write_snmpTargetAddrTAddress;
      WriteMethod     write_snmpTargetAddrTimeout;
@@ -89,7 +90,8 @@
      WriteMethod     write_snmpTargetAddrStorageType;
      WriteMethod     write_snmpTargetAddrRowStatus;
 
-     FindVarMethod   var_targetSpinLock;
      WriteMethod     write_targetSpinLock;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+     FindVarMethod   var_targetSpinLock;
 
 #endif                          /* _MIBGROUP_SNMPTARGETADDRENTRY_H */
diff --git a/agent/mibgroup/target/snmpTargetParamsEntry.c b/agent/mibgroup/target/snmpTargetParamsEntry.c
index e515379..4e1f4e2 100644
--- a/agent/mibgroup/target/snmpTargetParamsEntry.c
+++ b/agent/mibgroup/target/snmpTargetParamsEntry.c
@@ -292,6 +292,13 @@
                            store_snmpTargetParamsEntry, NULL);
 }                               /*  init_snmpTargetParmsEntry  */
 
+void
+shutdown_snmpTargetParamsEntry(void)
+{
+    while (aPTable)
+	snmpTargetParamTable_remFromList(aPTable, &aPTable);
+}
+
 
 int
 snmpTargetParams_addParamName(struct targetParamTable_struct *entry,
@@ -608,6 +615,7 @@
     struct targetParamTable_struct *temp_struct;
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMPTARGETPARAMSMPMODEL:
         *write_method = write_snmpTargetParamsMPModel;
         break;
@@ -626,11 +634,13 @@
     case SNMPTARGETPARAMSROWSTATUS:
         *write_method = write_snmpTargetParamsRowStatus;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         *write_method = NULL;
     }
 
-    *var_len = sizeof(long_ret);        /* assume an integer and change later if not */
+    /* assume an integer and change later if not */
+    *var_len = sizeof(long_ret);
 
     /*
      * look for OID in current table 
@@ -703,9 +713,12 @@
                     "unknown sub-id %d in var_snmpTargetParamsEntry\n",
                     vp->magic));
     }
+
     return NULL;
 }                               /* var_snmpTargetParamsEntry */
 
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 /*
  * Assign a value to the mpModel variable.  
  */
@@ -1378,6 +1391,9 @@
     return SNMP_ERR_NOERROR;
 }
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+
 struct targetParamTable_struct *
 get_paramEntry(char *name)
 {
diff --git a/agent/mibgroup/target/snmpTargetParamsEntry.h b/agent/mibgroup/target/snmpTargetParamsEntry.h
index 8286a64..bd30582 100644
--- a/agent/mibgroup/target/snmpTargetParamsEntry.h
+++ b/agent/mibgroup/target/snmpTargetParamsEntry.h
@@ -1,72 +1,75 @@
 
-/*
- * This file was generated by mib2c and is intended for use as a mib module
- * for the ucd-snmp snmpd agent. Edited by Michael Baer
- * 
- * last changed 2/2/99.
- */
-
-#ifndef _MIBGROUP_SNMPTARGETPARAMSENTRY_H
-#define _MIBGROUP_SNMPTARGETPARAMSENTRY_H
-
-    /*
-     * Magic number definitions: 
-     */
-#define   SNMPTARGETPARAMSMPMODEL        1
-#define   SNMPTARGETPARAMSSECURITYMODEL  2
-#define   SNMPTARGETPARAMSSECURITYNAME   3
-#define   SNMPTARGETPARAMSSECURITYLEVEL  4
-#define   SNMPTARGETPARAMSSTORAGETYPE    5
-#define   SNMPTARGETPARAMSROWSTATUS      6
-#define   SNMPTARGETPARAMSMPMODELCOLUMN        2
-#define   SNMPTARGETPARAMSSECURITYMODELCOLUMN  3
-#define   SNMPTARGETPARAMSSECURITYNAMECOLUMN   4
-#define   SNMPTARGETPARAMSSECURITYLEVELCOLUMN  5
-#define   SNMPTARGETPARAMSSTORAGETYPECOLUMN    6
-#define   SNMPTARGETPARAMSROWSTATUSCOLUMN      7
-    /*
-     * structure definitions 
-     */
-     struct targetParamTable_struct {
-         char           *paramName;
-         int             mpModel;
-         int             secModel;
-         char           *secName;
-         int             secLevel;
-         int             storageType;
-         int             rowStatus;
-         struct targetParamTable_struct *next;
-         time_t          updateTime;
-     };
-
-/*
- * utility functions 
- */
-     struct targetParamTable_struct *get_paramEntry(char *name);
-     void            snmpTargetParamTable_add(struct
-                                              targetParamTable_struct
-                                              *newEntry);
-     struct targetParamTable_struct *snmpTargetParamTable_create(void);
-     void snmpTargetParamTable_dispose(struct targetParamTable_struct *);
-
-/*
- * function definitions 
- */
-
-     void            init_snmpTargetParamsEntry(void);
-     int             store_snmpTargetParamsEntry(int majorID, int minorID,
-                                                 void *serverarg,
-                                                 void *clientarg);
-     extern FindVarMethod var_snmpTargetParamsEntry;
-
-     void            snmpd_parse_config_targetParams(const char *, char *);
-
+  /*
+   * This file was generated by mib2c and is intended for use as a mib module
+   * for the ucd-snmp snmpd agent. Edited by Michael Baer
+   * 
+   * last changed 2/2/99.
+   */
+ 
+  #ifndef _MIBGROUP_SNMPTARGETPARAMSENTRY_H
+  #define _MIBGROUP_SNMPTARGETPARAMSENTRY_H
+ 
+      /*
+       * Magic number definitions: 
+       */
+  #define   SNMPTARGETPARAMSMPMODEL        1
+  #define   SNMPTARGETPARAMSSECURITYMODEL  2
+  #define   SNMPTARGETPARAMSSECURITYNAME   3
+  #define   SNMPTARGETPARAMSSECURITYLEVEL  4
+  #define   SNMPTARGETPARAMSSTORAGETYPE    5
+  #define   SNMPTARGETPARAMSROWSTATUS      6
+  #define   SNMPTARGETPARAMSMPMODELCOLUMN        2
+  #define   SNMPTARGETPARAMSSECURITYMODELCOLUMN  3
+  #define   SNMPTARGETPARAMSSECURITYNAMECOLUMN   4
+  #define   SNMPTARGETPARAMSSECURITYLEVELCOLUMN  5
+  #define   SNMPTARGETPARAMSSTORAGETYPECOLUMN    6
+  #define   SNMPTARGETPARAMSROWSTATUSCOLUMN      7
+      /*
+       * structure definitions 
+       */
+       struct targetParamTable_struct {
+           char           *paramName;
+           int             mpModel;
+           int             secModel;
+           char           *secName;
+           int             secLevel;
+           int             storageType;
+           int             rowStatus;
+           struct targetParamTable_struct *next;
+           time_t          updateTime;
+       };
+ 
+  /*
+   * utility functions 
+   */
+       struct targetParamTable_struct *get_paramEntry(char *name);
+       void            snmpTargetParamTable_add(struct
+                                                targetParamTable_struct
+                                                *newEntry);
+       struct targetParamTable_struct *snmpTargetParamTable_create(void);
+       void snmpTargetParamTable_dispose(struct targetParamTable_struct *);
+ 
+  /*
+   * function definitions 
+   */
+ 
+       void            init_snmpTargetParamsEntry(void);
+       void            shutdown_snmpTargetParamsEntry(void);
+       int             store_snmpTargetParamsEntry(int majorID, int minorID,
+                                                   void *serverarg,
+                                                   void *clientarg);
+       extern FindVarMethod var_snmpTargetParamsEntry;
+ 
+       void            snmpd_parse_config_targetParams(const char *, char *);
+ 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_snmpTargetParamsMPModel;
      WriteMethod     write_snmpTargetParamsSecModel;
      WriteMethod     write_snmpTargetParamsSecName;
      WriteMethod     write_snmpTargetParamsSecLevel;
      WriteMethod     write_snmpTargetParamsStorageType;
      WriteMethod     write_snmpTargetParamsRowStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 #endif                          /* _MIBGROUP_SNMPTARGETPARAMSENTRY_H */
diff --git a/agent/mibgroup/target/target.c b/agent/mibgroup/target/target.c
index 58783ad..5619e35 100644
--- a/agent/mibgroup/target/target.c
+++ b/agent/mibgroup/target/target.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -25,6 +26,10 @@
 #include "snmpTargetParamsEntry.h"
 #include "target.h"
 
+netsnmp_feature_require(tdomain_support)
+netsnmp_feature_require(tdomain_transport_oid)
+netsnmp_feature_want(netsnmp_tlstmAddr_get_serverId)
+
 #define MAX_TAGS 128
 
 netsnmp_session *
@@ -66,7 +71,7 @@
             (targaddrs->tDomain, targaddrs->tDomainLen, NULL, NULL) == 0) {
             snmp_log(LOG_ERR,
                      "unsupported domain for target address table entry %s\n",
-                     targaddrs->name);
+                     targaddrs->nameData);
         }
 
         /*
@@ -191,7 +196,8 @@
 #if defined(NETSNMP_TRANSPORT_DTLSUDP_DOMAIN) || defined(NETSNMP_TRANSPORT_TLSTCP_DOMAIN)
                             if (!tls) {
                                 netsnmp_cert *cert;
-                                char         *server_id;
+                                char         *server_id = NULL;
+                                char	      buf[33];
 
                                 DEBUGMSGTL(("target_sessions",
                                             "  looking up our id: %s\n",
@@ -205,25 +211,29 @@
                                     DEBUGMSGTL(("target_sessions",
                                             "  found fingerprint: %s\n", 
                                                 cert->fingerprint));
-                                    t->f_config(t, "our_identity",
+                                    t->f_config(t, "localCert",
                                                 cert->fingerprint);
                                 }
+                                memcpy(buf, targaddrs->nameData,
+                                       targaddrs->nameLen);
+                                buf[targaddrs->nameLen] = '\0';
                                 DEBUGMSGTL(("target_sessions",
                                             "  looking up their id: %s\n",
-                                            targaddrs->name));
+                                            buf));
                                 cert =
                                     netsnmp_cert_find(NS_CERT_REMOTE_PEER,
                                                       NS_CERTKEY_TARGET_ADDR,
-                                                      targaddrs->name);
+                                                      buf);
                                 if (cert) {
                                     DEBUGMSGTL(("target_sessions",
                                             "  found fingerprint: %s\n", 
                                                 cert->fingerprint));
-                                    t->f_config(t, "their_identity",
+                                    t->f_config(t, "peerCert",
                                                 cert->fingerprint);
                                 }
-                                server_id = netsnmp_tlstmAddr_get_serverId(
-                                    targaddrs->name);
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMADDR_GET_SERVERID
+                                server_id = netsnmp_tlstmAddr_get_serverId(buf);
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMADDR_GET_SERVERID */
                                 if (server_id) {
                                     DEBUGMSGTL(("target_sessions",
                                             "  found serverId: %s\n", 
@@ -246,7 +256,7 @@
                                 snmp_log(LOG_ERR,
                                          "unsupported mpModel/secModel combo %d/%d for target %s\n",
                                          param->mpModel, param->secModel,
-                                         targaddrs->name);
+                                         targaddrs->nameData);
                                 /*
                                  * XXX: memleak 
                                  */
diff --git a/agent/mibgroup/target/target_counters.c b/agent/mibgroup/target/target_counters.c
index 8a2f0d1..0109974 100644
--- a/agent/mibgroup/target/target_counters.c
+++ b/agent/mibgroup/target/target_counters.c
@@ -44,6 +44,7 @@
 
 }
 
+
 int
 get_unknown_context_count(netsnmp_mib_handler *handler,
                           netsnmp_handler_registration *reginfo,
diff --git a/agent/mibgroup/target/target_counters.h b/agent/mibgroup/target/target_counters.h
index c485c4c..355f391 100644
--- a/agent/mibgroup/target/target_counters.h
+++ b/agent/mibgroup/target/target_counters.h
@@ -5,5 +5,6 @@
 config_exclude(target/target_counters)
 
 void            init_target_counters(void);
+
 Netsnmp_Node_Handler get_unavailable_context_count;
 Netsnmp_Node_Handler get_unknown_context_count;
diff --git a/agent/mibgroup/target/target_counters_5_5.c b/agent/mibgroup/target/target_counters_5_5.c
index 7be7de3..a32207b 100644
--- a/agent/mibgroup/target/target_counters_5_5.c
+++ b/agent/mibgroup/target/target_counters_5_5.c
@@ -1,5 +1,7 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
+
 #if HAVE_STRING_H
 #include <string.h>
 #else
@@ -13,6 +15,8 @@
 
 #include <net-snmp/agent/snmp_get_statistic.h>
 
+netsnmp_feature_require(helper_statistics)
+
 void
 init_target_counters_5_5(void)
 {
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn.h b/agent/mibgroup/tcp-mib/data_access/tcpConn.h
index 0f39a7f..0c13a0f 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn.h
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn.h
@@ -23,7 +23,7 @@
 config_require(util_funcs/get_pid_from_inode)
 #elif defined( solaris2 )
 config_require(tcp-mib/data_access/tcpConn_solaris2)
-#elif defined(freebsd4) || defined(dragonfly)
+#elif defined(freebsd4) || defined(dragonfly) || defined(darwin)
 config_require(tcp-mib/data_access/tcpConn_freebsd4)
 #elif defined(openbsd4)
 config_require(tcp-mib/data_access/tcpConn_openbsd)
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn_common.c b/agent/mibgroup/tcp-mib/data_access/tcpConn_common.c
index e9f2b8f..bba01fe 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn_common.c
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_common.c
@@ -164,6 +164,13 @@
     free(entry);
 }
 
+#ifdef TCPCONN_DELETE_SUPPORTED
+
+/* XXX TODO: these are currently unsupported everywhere; to enable the
+   functions first implement netsnmp_arch_tcpconn_entry_delete in the
+   tcpConn_{OS}.c file and then define TCPCONN_DELETE_SUPPORTED in the
+   tcpConn_{OS}.h file (which may need to be created first). */
+
 /**
  * update underlying data store (kernel) for entry
  *
@@ -193,6 +200,7 @@
     
     return rc;
 }
+#endif /* TCPCONN_DELETE_SUPPORTED */
 
 /**
  * update an old tcpconn_entry from a new one
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c b/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c
index 2bf588a..5f93be0 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c
@@ -56,6 +56,7 @@
     return 0;
 }
 
+#ifdef TCPCONN_DELETE_SUPPORTED
 /*
  * delete an entry
  */
@@ -67,7 +68,7 @@
     /** xxx-rks:9 tcpConn delete not implemented */
     return -1;
 }
-
+#endif /* TCPCONN_DELETE_SUPPORTED */
 
 /**
  *
@@ -83,6 +84,9 @@
     DEBUGMSGTL(("access:tcpconn:container",
                 "tcpconn_container_arch_load (flags %x)\n", load_flags));
 
+    /* Setup the pid_from_inode table, and fill it.*/
+    netsnmp_get_pid_from_inode_init();
+
     if (NULL == container) {
         snmp_log(LOG_ERR, "no container specified/found for access_tcpconn\n");
         return -1;
@@ -184,7 +188,7 @@
         entry->rmt_port = (unsigned short) remote_port;
         entry->tcpConnState = state;
         entry->pid = netsnmp_get_pid_from_inode(inode);
-        
+
         /** the addr string may need work */
         buf_len = strlen(local_addr);
         if ((8 != buf_len) ||
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c b/agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c
index 959d708..889299a 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c
@@ -39,6 +39,7 @@
     return 0;
 }
 
+#ifdef TCPCONN_DELETE_SUPPORTED
 int 
 netsnmp_arch_tcpconn_entry_delete(netsnmp_tcpconn_entry *ep)
 {
@@ -47,6 +48,7 @@
      */
     return (-1);
 }
+#endif /* TCPCONN_DELETE_SUPPORTED */
 
 int 
 netsnmp_arch_tcpconn_container_load(netsnmp_container * container, 
diff --git a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c
index d1c2fb3..d0b27e5 100644
--- a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c
+++ b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,18 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(tcpConnectionTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(tcpConnectionTable_container_size, tcpConnectionTable_external_access)
+netsnmp_feature_child_of(tcpConnectionTable_registration_set, tcpConnectionTable_external_access)
+netsnmp_feature_child_of(tcpConnectionTable_registration_get, tcpConnectionTable_external_access)
+netsnmp_feature_child_of(tcpConnectionTable_container_get, tcpConnectionTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -82,19 +95,23 @@
                 _tcpConnectionTable_container_shutdown(tcpConnectionTable_interface_ctx *
                                                        if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_CONTAINER_GET
 netsnmp_container *
 tcpConnectionTable_container_get(void)
 {
     return tcpConnectionTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_REGISTRATION_GET
 tcpConnectionTable_registration *
 tcpConnectionTable_registration_get(void)
 {
     return tcpConnectionTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_REGISTRATION_SET
 tcpConnectionTable_registration *
 tcpConnectionTable_registration_set(tcpConnectionTable_registration *
                                     newreg)
@@ -104,12 +121,15 @@
     tcpConnectionTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_CONTAINER_SIZE
 int
 tcpConnectionTable_container_size(void)
 {
     return CONTAINER_SIZE(tcpConnectionTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_CONTAINER_SIZE */
 
 u_int
 tcpConnectionTable_dirty_get(void)
@@ -133,7 +153,7 @@
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_post_request;
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_check_objects;
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_set_values;
@@ -148,7 +168,7 @@
                 _tcpConnectionTable_undo_column(tcpConnectionTable_rowreq_ctx * rowreq_ctx,
                                                 netsnmp_variable_list *
                                                 var, int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /**
  * @internal
@@ -232,8 +252,7 @@
     access_multiplexer->post_request =
         _mfd_tcpConnectionTable_post_request;
 
-
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -258,7 +277,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_tcpConnectionTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -273,7 +292,7 @@
                                             tcpConnectionTable_oid,
                                             tcpConnectionTable_oid_size,
                                             HANDLER_CAN_BABY_STEP
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
                                           | HANDLER_CAN_RWRITE
 #endif
                                           );
@@ -294,7 +313,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -317,7 +336,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -990,7 +1009,7 @@
 }                               /* _mfd_tcpConnectionTable_get_values */
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1618,7 +1637,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_tcpConnectionTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -1775,6 +1794,7 @@
 }                               /* _tcpConnectionTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_EXTERNAL_ACCESS
 tcpConnectionTable_rowreq_ctx *
 tcpConnectionTable_row_find_by_mib_index(tcpConnectionTable_mib_index *
                                          mib_idx)
@@ -1802,3 +1822,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c
index a5c9510..2e41380 100644
--- a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c
+++ b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,18 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(tcpListenerTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(tcpListenerTable_container_size, tcpListenerTable_external_access)
+netsnmp_feature_child_of(tcpListenerTable_registration_set, tcpListenerTable_external_access)
+netsnmp_feature_child_of(tcpListenerTable_registration_get, tcpListenerTable_external_access)
+netsnmp_feature_child_of(tcpListenerTable_container_get, tcpListenerTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -79,19 +92,23 @@
                 _tcpListenerTable_container_shutdown(tcpListenerTable_interface_ctx *
                                                      if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_CONTAINER_GET
 netsnmp_container *
 tcpListenerTable_container_get(void)
 {
     return tcpListenerTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_REGISTRATION_GET
 tcpListenerTable_registration *
 tcpListenerTable_registration_get(void)
 {
     return tcpListenerTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_REGISTRATION_SET
 tcpListenerTable_registration *
 tcpListenerTable_registration_set(tcpListenerTable_registration * newreg)
 {
@@ -99,12 +116,15 @@
     tcpListenerTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_CONTAINER_SIZE
 int
 tcpListenerTable_container_size(void)
 {
     return CONTAINER_SIZE(tcpListenerTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_CONTAINER_SIZE */
 
 /*
  * mfd multiplexer modes
@@ -220,7 +240,8 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+    /* XXX - are these actually necessary? */
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -243,7 +264,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -957,6 +978,7 @@
 }                               /* _tcpListenerTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_EXTERNAL_ACCESS
 tcpListenerTable_rowreq_ctx *
 tcpListenerTable_row_find_by_mib_index(tcpListenerTable_mib_index *
                                        mib_idx)
@@ -984,3 +1006,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/testhandler.c b/agent/mibgroup/testhandler.c
index c0866dd..f7468f0 100644
--- a/agent/mibgroup/testhandler.c
+++ b/agent/mibgroup/testhandler.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
@@ -9,6 +10,11 @@
 #include <strings.h>
 #endif
 
+netsnmp_feature_require(ulong_instance)
+netsnmp_feature_require(register_read_only_table_data)
+netsnmp_feature_require(table_build_result)
+netsnmp_feature_require(table_dataset)
+
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -329,6 +335,7 @@
                                  (u_char *) & accesses, sizeof(accesses));
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         if (requests->requestvb->type != ASN_UNSIGNED)
             netsnmp_set_request_error(reqinfo, requests,
@@ -371,6 +378,7 @@
          * nothing to do 
          */
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c b/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c
index eda64f3..5493ff9 100644
--- a/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <openssl/ssl.h>
@@ -12,6 +13,17 @@
 #include "tlstm-mib.h"
 #include "snmpTlstmAddrTable.h"
 
+netsnmp_feature_require(table_tdata)
+netsnmp_feature_require(tlstmaddr_container)
+netsnmp_feature_require(table_tdata_delete_table)
+netsnmp_feature_require(table_tdata_extract_table)
+netsnmp_feature_require(table_tdata_remove_row)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_storagetype)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /** XXX - move these to table_data header? */
 #define FATE_NEWLY_CREATED    1
 #define FATE_NO_CHANGE        0
@@ -198,7 +210,7 @@
         snmp_log(LOG_ERR,
                  "could not create handler for snmpTlstmAddrTableLastChanged\n");
     else
-        netsnmp_register_watched_scalar(reg, watcher);
+        netsnmp_register_watched_scalar2(reg, watcher);
 
     /*
      * Initialise the contents of the table here 
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c b/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c
index 3f79197..84d1afb 100644
--- a/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <openssl/ssl.h>
@@ -12,6 +13,19 @@
 #include "tlstm-mib.h"
 #include "snmpTlstmCertToTSNTable.h"
 
+netsnmp_feature_require(table_tdata)
+netsnmp_feature_require(cert_fingerprints)
+netsnmp_feature_require(table_tdata_delete_table)
+netsnmp_feature_require(table_tdata_extract_table)
+netsnmp_feature_require(table_tdata_remove_row)
+netsnmp_feature_require(tls_fingerprint_build)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_storagetype)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_rowstatus_with_storagetype)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /** XXX - move these to table_data header? */
 #define FATE_NEWLY_CREATED    1
 #define FATE_NO_CHANGE        0
@@ -205,7 +219,7 @@
     else {
         if (NULL != contextName)
             reg->contextName = strdup(contextName);
-        netsnmp_register_watched_scalar(reg, watcher);
+        netsnmp_register_watched_scalar2(reg, watcher);
     }
 
     /*
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c b/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c
index a835533..cd54452 100644
--- a/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -14,6 +15,20 @@
 
 #include "snmpTlstmParamsTable.h"
 
+netsnmp_feature_require(table_tdata)
+netsnmp_feature_require(tlstmparams_find)
+netsnmp_feature_require(tlstmparams_external)
+netsnmp_feature_require(cert_fingerprints)
+netsnmp_feature_require(table_tdata_delete_table)
+netsnmp_feature_require(table_tdata_extract_table)
+netsnmp_feature_require(table_tdata_remove_row)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_storagetype)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_rowstatus_with_storagetype)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /** XXX - move these to table_data header? */
 #define FATE_NEWLY_CREATED    1
 #define FATE_NO_CHANGE        0
@@ -167,7 +182,7 @@
         snmp_log(LOG_ERR,
                  "could not create handler for snmpTlstmParamsTableLastChanged\n");
     else
-        netsnmp_register_watched_scalar(reg, watcher);
+        netsnmp_register_watched_scalar2(reg, watcher);
 
     /*
      * Initialise the contents of the table here
diff --git a/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c b/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c
index 6e1b796..a567d2e 100644
--- a/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c
+++ b/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c
@@ -3,6 +3,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/library/snmp_api.h>
@@ -10,6 +11,10 @@
 
 static netsnmp_handler_registration* _myreg = NULL;
 
+netsnmp_feature_require(helper_statistics)
+
+netsnmp_feature_child_of(shutdown_snmptsmsession, netsnmp_unused)
+
 /** Initializes the snmpTsmStats module */
 void
 init_snmpTsmStats(void)
@@ -36,6 +41,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SHUTDOWN_SNMPTSMSESSION
 void
 shutdown_snmpTsmSession(void)
 {
@@ -44,3 +50,4 @@
         _myreg = NULL;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SHUTDOWN_SNMPTSMSESSION */
diff --git a/agent/mibgroup/ucd-snmp/disk.c b/agent/mibgroup/ucd-snmp/disk.c
index 324fbc4..1147eef 100644
--- a/agent/mibgroup/ucd-snmp/disk.c
+++ b/agent/mibgroup/ucd-snmp/disk.c
@@ -568,7 +568,6 @@
   FILE           *mntfp;
 #elif HAVE_FSTAB_H
   struct fstab   *fstab;
-  struct stat     stat1;
 #elif HAVE_STATFS
   struct statfs   statf;
 #endif
@@ -622,7 +621,6 @@
     strlcpy(device, mnttab.mnt_special, sizeof(device));
 #endif /* HAVE_SETMNTENT */
 #elif HAVE_FSTAB_H
-  stat(path, &stat1);
   setfsent();
   if ((fstab = getfsfile(path)))
     strlcpy(device, fstab->fs_spec, sizeof(device));
diff --git a/agent/mibgroup/ucd-snmp/disk_hw.c b/agent/mibgroup/ucd-snmp/disk_hw.c
index 93ecde3..ea37610 100644
--- a/agent/mibgroup/ucd-snmp/disk_hw.c
+++ b/agent/mibgroup/ucd-snmp/disk_hw.c
@@ -305,8 +305,11 @@
     unsigned long long val;
     static long     long_ret;
     static char     errmsg[300];
+    netsnmp_cache  *cache;
 
-    netsnmp_fsys_load( NULL, NULL );  /* Update the fsys H/W module */
+    /* Update the fsys H/W module */
+    cache = netsnmp_fsys_get_cache();
+    netsnmp_cache_check_and_reload(cache);
 
 tryAgain:
     if (header_simple_table
diff --git a/agent/mibgroup/ucd-snmp/disk_hw.h b/agent/mibgroup/ucd-snmp/disk_hw.h
index 147b98f..ff42ed9 100644
--- a/agent/mibgroup/ucd-snmp/disk_hw.h
+++ b/agent/mibgroup/ucd-snmp/disk_hw.h
@@ -8,6 +8,7 @@
 void            init_disk_hw(void);
 
 config_require(util_funcs/header_simple_table)
+config_require(hardware/fsys)
 
      extern FindVarMethod var_extensible_disk;
 
diff --git a/agent/mibgroup/ucd-snmp/diskio.c b/agent/mibgroup/ucd-snmp/diskio.c
index a819aa6..4ea8987 100644
--- a/agent/mibgroup/ucd-snmp/diskio.c
+++ b/agent/mibgroup/ucd-snmp/diskio.c
@@ -112,7 +112,7 @@
 static mach_port_t masterPort;		/* to communicate with I/O Kit	*/
 #endif                          /* darwin */
 
-#ifndef solaris2
+#if !defined(solaris2) && !(defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7))
 static int      getstats(void);
 #endif
 
diff --git a/agent/mibgroup/ucd-snmp/dlmod.c b/agent/mibgroup/ucd-snmp/dlmod.c
index 57bf87e..0b711fb 100644
--- a/agent/mibgroup/ucd-snmp/dlmod.c
+++ b/agent/mibgroup/ucd-snmp/dlmod.c
@@ -3,6 +3,7 @@
  *
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <ctype.h>
 #if HAVE_STDLIB_H
@@ -14,17 +15,10 @@
 #else
 #include <strings.h>
 #endif
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <ctype.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include "struct.h"
-#include "util_funcs.h"
-
 #if defined(WIN32)
 #include <windows.h>
 #else
@@ -32,73 +26,33 @@
 #endif
 #include "dlmod.h"
 
+#ifndef SNMPDLMODPATH
+#define SNMPDLMODPATH "/usr/local/lib/snmp/dlmod"
+#endif
+
+struct dlmod {
+  struct dlmod   *next;
+  int             index;
+  char            name[64 + 1];
+  char            path[255 + 1];
+  char            error[255 + 1];
+  void           *handle;
+  int             status;
+};
+
+#define DLMOD_LOADED		1
+#define DLMOD_UNLOADED		2
+#define DLMOD_ERROR		3
+#define DLMOD_LOAD		4
+#define DLMOD_UNLOAD		5
+#define DLMOD_CREATE		6
+#define DLMOD_DELETE		7
+
 static struct dlmod *dlmods;
 static unsigned int dlmod_next_index = 1;
 static char     dlmod_path[1024];
 
-static void     dlmod_parse_config(const char *, char *);
-static void     dlmod_free_config(void);
-
-/*
- * this variable defines function callbacks and type return
- * information for the dlmod mib
- */
-static struct variable4 dlmod_variables[] = {
-    {DLMODNEXTINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
-     var_dlmod, 1, {1}},
-    {DLMODNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
-     var_dlmodEntry, 3, {2, 1, 2}},
-    {DLMODPATH, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
-     var_dlmodEntry, 3, {2, 1, 3}},
-    {DLMODERROR, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
-     var_dlmodEntry, 3, {2, 1, 4}},
-    {DLMODSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
-     var_dlmodEntry, 3, {2, 1, 5}},
-};
-
-static oid      dlmod_variables_oid[] = { 1, 3, 6, 1, 4, 1, 2021, 13, 14 };
-static int      dlmod_variables_oid_len = 9;
-
-void
-init_dlmod(void)
-{
-    REGISTER_MIB("dlmod", dlmod_variables, variable4, dlmod_variables_oid);
-
-    /*
-     * TODO: REGISTER_SYSOR_ENTRY 
-     */
-
-    DEBUGMSGTL(("dlmod", "register mib\n"));
-
-    snmpd_register_config_handler("dlmod", dlmod_parse_config,
-                                  dlmod_free_config,
-                                  "module-name module-path");
-
-    {
-        const char * const p = getenv("SNMPDLMODPATH");
-        strlcpy(dlmod_path, SNMPDLMODPATH, sizeof(dlmod_path));
-        if (p) {
-            if (p[0] == ENV_SEPARATOR_CHAR) {
-                int len = strlen(dlmod_path);
-                if (len >= 1 && dlmod_path[len - 1] != ENV_SEPARATOR_CHAR)
-                    strlcat(dlmod_path, ENV_SEPARATOR, sizeof(dlmod_path));
-                strlcat(dlmod_path, p + 1, sizeof(dlmod_path));
-            } else
-                strlcpy(dlmod_path, p, sizeof(dlmod_path));
-        }
-    }
-
-    DEBUGMSGTL(("dlmod", "dlmod_path: %s\n", dlmod_path));
-}
-
-void
-deinit_dlmod(void)
-{
-    unregister_mib(dlmod_variables_oid, dlmod_variables_oid_len);
-    snmpd_unregister_config_handler("dlmod");
-}
-
-struct dlmod   *
+static struct dlmod   *
 dlmod_create_module(void)
 {
     struct dlmod  **pdlmod, *dlm;
@@ -118,7 +72,7 @@
     return dlm;
 }
 
-void
+static void
 dlmod_delete_module(struct dlmod *dlm)
 {
     struct dlmod  **pdlmod;
@@ -225,14 +179,9 @@
 #endif
 }
 
-void
+static void
 dlmod_load_module(struct dlmod *dlm)
 {
-    char            sym_init[64];
-    char           *p, tmp_path[255];
-    dl_function_ptr dl_init;
-    char           *st;
-
     DEBUGMSGTL(("dlmod", "dlmod_load_module %s: %s\n", dlm->name,
                 dlm->path));
 
@@ -249,6 +198,8 @@
             return;
         }
     } else {
+        char *st, *p, tmp_path[255];
+
         for (p = strtok_r(dlmod_path, ENV_SEPARATOR, &st); p;
              p = strtok_r(NULL, ENV_SEPARATOR, &st)) {
             snprintf(tmp_path, sizeof(tmp_path), "%s/%s.%s", p, dlm->path,
@@ -265,25 +216,30 @@
         if (dlm->status == DLMOD_ERROR)
             return;
     }
-    snprintf(sym_init, sizeof(sym_init), "init_%s", dlm->name);
-    dl_init = dlmod_dlsym(dlm->handle, sym_init);
-    if (dl_init == NULL) {
-        dlmod_dlclose(dlm->handle);
-        snprintf(dlm->error, sizeof(dlm->error),
-                 "dlsym failed: can't find \'%s\'", sym_init);
-        dlm->status = DLMOD_ERROR;
-        return;
+    {
+        char sym_init[64 + sizeof("init_")];
+        dl_function_ptr dl_init;
+
+        snprintf(sym_init, sizeof(sym_init), "init_%s", dlm->name);
+        dl_init = dlmod_dlsym(dlm->handle, sym_init);
+        if (dl_init == NULL) {
+            dlmod_dlclose(dlm->handle);
+            snprintf(dlm->error, sizeof(dlm->error),
+                     "dlsym failed: can't find \'%s\'", sym_init);
+            dlm->status = DLMOD_ERROR;
+            return;
+        }
+        dl_init();
     }
 
-    dl_init();
     dlm->error[0] = '\0';
     dlm->status = DLMOD_LOADED;
 }
 
-void
+static void
 dlmod_unload_module(struct dlmod *dlm)
 {
-    char            sym_deinit[64];
+    char            sym_deinit[64 + sizeof("shutdown_")];
     dl_function_ptr dl_deinit;
 
     if (!dlm || dlm->status != DLMOD_LOADED)
@@ -291,25 +247,22 @@
 
     snprintf(sym_deinit, sizeof(sym_deinit), "deinit_%s", dlm->name);
     dl_deinit = dlmod_dlsym(dlm->handle, sym_deinit);
-    if (dl_deinit) {
-        DEBUGMSGTL(("dlmod", "Calling deinit_%s()\n", dlm->name));
-        dl_deinit();
-    } else {
+    if (!dl_deinit) {
         snprintf(sym_deinit, sizeof(sym_deinit), "shutdown_%s", dlm->name);
         dl_deinit = dlmod_dlsym(dlm->handle, sym_deinit);
-        if (dl_deinit) {
-            DEBUGMSGTL(("dlmod", "Calling shutdown_%s()\n", dlm->name));
-            dl_deinit();
-        } else {
-            DEBUGMSGTL(("dlmod", "No destructor for %s\n", dlm->name));
-        }
+    }
+    if (dl_deinit) {
+        DEBUGMSGTL(("dlmod", "Calling %s()\n", sym_deinit));
+        dl_deinit();
+    } else {
+        DEBUGMSGTL(("dlmod", "No destructor for %s\n", dlm->name));
     }
     dlmod_dlclose(dlm->handle);
     dlm->status = DLMOD_UNLOADED;
     DEBUGMSGTL(("dlmod", "Module %s unloaded\n", dlm->name));
 }
 
-struct dlmod   *
+static struct dlmod   *
 dlmod_get_by_index(int iindex)
 {
     struct dlmod   *dlmod;
@@ -321,6 +274,10 @@
     return NULL;
 }
 
+/*
+ * Functions to parse config lines
+ */
+
 static void
 dlmod_parse_config(const char *token, char *cptr)
 {
@@ -333,7 +290,7 @@
         return;
     }
     /*
-     * remove comments 
+     * remove comments
      */
     *(cptr + strcspn(cptr, "#;\r\n")) = '\0';
 
@@ -342,7 +299,7 @@
         return;
 
     /*
-     * dynamic module name 
+     * dynamic module name
      */
     dlm_name = strtok_r(cptr, "\t ", &st);
     if (dlm_name == NULL) {
@@ -353,7 +310,7 @@
     strlcpy(dlm->name, dlm_name, sizeof(dlm->name));
 
     /*
-     * dynamic module path 
+     * dynamic module path
      */
     dlm_path = strtok_r(NULL, "\t ", &st);
     if (dlm_path)
@@ -381,13 +338,23 @@
     dlmods = NULL;
 }
 
+/*
+ * Functions to handle SNMP management
+ */
+
+#define DLMODNEXTINDEX 		1
+#define DLMODINDEX     		2
+#define DLMODNAME      		3
+#define DLMODPATH      		4
+#define DLMODERROR     		5
+#define DLMODSTATUS    		6
 
 /*
  * header_dlmod(...
  * Arguments:
  * vp     IN      - pointer to variable entry that points here
  * name    IN/OUT  - IN/name requested, OUT/name found
- * length  IN/OUT  - length of IN/OUT oid's 
+ * length  IN/OUT  - length of IN/OUT oid's
  * exact   IN      - TRUE if an exact match was requested
  * var_len OUT     - length of variable or 0 if function returned
  * write_method
@@ -419,7 +386,7 @@
 }
 
 
-u_char         *
+static u_char         *
 var_dlmod(struct variable * vp,
           oid * name,
           size_t * length,
@@ -427,7 +394,7 @@
 {
 
     /*
-     * variables we may use later 
+     * variables we may use later
      */
 
     *write_method = 0;         /* assume it isn't writable for the time being */
@@ -438,7 +405,7 @@
         return NULL;
 
     /*
-     * this is where we do the value assignments for the mib results. 
+     * this is where we do the value assignments for the mib results.
      */
     switch (vp->magic) {
     case DLMODNEXTINDEX:
@@ -452,16 +419,127 @@
 }
 
 
+static int
+write_dlmodName(int action,
+                u_char * var_val,
+                u_char var_val_type,
+                size_t var_val_len,
+                u_char * statP, oid * name, size_t name_len)
+{
+    static struct dlmod *dlm;
+
+    if (var_val_type != ASN_OCTET_STR) {
+        snmp_log(LOG_ERR, "write to dlmodName not ASN_OCTET_STR\n");
+        return SNMP_ERR_WRONGTYPE;
+    }
+    if (var_val_len > sizeof(dlm->name)-1) {
+        snmp_log(LOG_ERR, "write to dlmodName: bad length: too long\n");
+        return SNMP_ERR_WRONGLENGTH;
+    }
+    if (action == COMMIT) {
+        dlm = dlmod_get_by_index(name[12]);
+        if (!dlm || dlm->status == DLMOD_LOADED)
+            return SNMP_ERR_RESOURCEUNAVAILABLE;
+        strncpy(dlm->name, (const char *) var_val, var_val_len);
+        dlm->name[var_val_len] = 0;
+    }
+    return SNMP_ERR_NOERROR;
+}
+
+static int
+write_dlmodPath(int action,
+                u_char * var_val,
+                u_char var_val_type,
+                size_t var_val_len,
+                u_char * statP, oid * name, size_t name_len)
+{
+    static struct dlmod *dlm;
+
+    if (var_val_type != ASN_OCTET_STR) {
+        snmp_log(LOG_ERR, "write to dlmodPath not ASN_OCTET_STR\n");
+        return SNMP_ERR_WRONGTYPE;
+    }
+    if (var_val_len > sizeof(dlm->path)-1) {
+        snmp_log(LOG_ERR, "write to dlmodPath: bad length: too long\n");
+        return SNMP_ERR_WRONGLENGTH;
+    }
+    if (action == COMMIT) {
+        dlm = dlmod_get_by_index(name[12]);
+        if (!dlm || dlm->status == DLMOD_LOADED)
+            return SNMP_ERR_RESOURCEUNAVAILABLE;
+        strncpy(dlm->path, (const char *) var_val, var_val_len);
+        dlm->path[var_val_len] = 0;
+    }
+    return SNMP_ERR_NOERROR;
+}
+
+static int
+write_dlmodStatus(int action,
+                  u_char * var_val,
+                  u_char var_val_type,
+                  size_t var_val_len,
+                  u_char * statP, oid * name, size_t name_len)
+{
+    /*
+     * variables we may use later
+     */
+    struct dlmod   *dlm;
+
+    if (var_val_type != ASN_INTEGER) {
+        snmp_log(LOG_ERR, "write to dlmodStatus not ASN_INTEGER\n");
+        return SNMP_ERR_WRONGTYPE;
+    }
+    if (var_val_len > sizeof(long)) {
+        snmp_log(LOG_ERR, "write to dlmodStatus: bad length\n");
+        return SNMP_ERR_WRONGLENGTH;
+    }
+    if (action == COMMIT) {
+        /*
+         * object identifier in form .1.3.6.1.4.1.2021.13.14.2.1.4.x
+         * where X is index with offset 12
+         */
+
+        dlm = dlmod_get_by_index(name[12]);
+        switch (*((long *) var_val)) {
+        case DLMOD_CREATE:
+            if (dlm || (name[12] != dlmod_next_index))
+                return SNMP_ERR_RESOURCEUNAVAILABLE;
+            dlm = dlmod_create_module();
+            if (!dlm)
+                return SNMP_ERR_RESOURCEUNAVAILABLE;
+            break;
+        case DLMOD_LOAD:
+            if (!dlm || dlm->status == DLMOD_LOADED)
+                return SNMP_ERR_RESOURCEUNAVAILABLE;
+            dlmod_load_module(dlm);
+            break;
+        case DLMOD_UNLOAD:
+            if (!dlm || dlm->status != DLMOD_LOADED)
+                return SNMP_ERR_RESOURCEUNAVAILABLE;
+            dlmod_unload_module(dlm);
+            break;
+        case DLMOD_DELETE:
+            if (!dlm || dlm->status == DLMOD_LOADED)
+                return SNMP_ERR_RESOURCEUNAVAILABLE;
+            dlmod_delete_module(dlm);
+            break;
+        default:
+            return SNMP_ERR_WRONGVALUE;
+        }
+    }
+    return SNMP_ERR_NOERROR;
+}
+
 /*
  * header_dlmodEntry(...
  * Arguments:
  * vp     IN      - pointer to variable entry that points here
  * name    IN/OUT  - IN/name requested, OUT/name found
- * length  IN/OUT  - length of IN/OUT oid's 
+ * length  IN/OUT  - length of IN/OUT oid's
  * exact   IN      - TRUE if an exact match was requested
  * var_len OUT     - length of variable or 0 if function returned
  * write_method
- * 
+ *
  */
 
 
@@ -509,14 +587,14 @@
     return dlm;
 }
 
-u_char         *
+static u_char         *
 var_dlmodEntry(struct variable * vp,
                oid * name,
                size_t * length,
                int exact, size_t * var_len, WriteMethod ** write_method)
 {
     /*
-     * variables we may use later 
+     * variables we may use later
      */
     struct dlmod   *dlm;
 
@@ -528,7 +606,7 @@
         return NULL;
 
     /*
-     * this is where we do the value assignments for the mib results. 
+     * this is where we do the value assignments for the mib results.
      */
     switch (vp->magic) {
     case DLMODNAME:
@@ -553,113 +631,66 @@
     return NULL;
 }
 
-int
-write_dlmodName(int action,
-                u_char * var_val,
-                u_char var_val_type,
-                size_t var_val_len,
-                u_char * statP, oid * name, size_t name_len)
+/*
+ * this variable defines function callbacks and type return
+ * information for the dlmod mib
+ */
+static struct variable4 dlmod_variables[] = {
+    {DLMODNEXTINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_dlmod, 1, {1}},
+    {DLMODNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_dlmodEntry, 3, {2, 1, 2}},
+    {DLMODPATH, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_dlmodEntry, 3, {2, 1, 3}},
+    {DLMODERROR, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_dlmodEntry, 3, {2, 1, 4}},
+    {DLMODSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_dlmodEntry, 3, {2, 1, 5}},
+};
+
+static oid dlmod_variables_oid[] = { 1, 3, 6, 1, 4, 1, 2021, 13, 14 };
+
+void
+init_dlmod(void)
 {
-    static struct dlmod *dlm;
+    REGISTER_MIB("dlmod", dlmod_variables, variable4, dlmod_variables_oid);
 
-    if (var_val_type != ASN_OCTET_STR) {
-        snmp_log(LOG_ERR, "write to dlmodName not ASN_OCTET_STR\n");
-        return SNMP_ERR_WRONGTYPE;
-    }
-    if (var_val_len > sizeof(dlm->name)-1) {
-        snmp_log(LOG_ERR, "write to dlmodName: bad length: too long\n");
-        return SNMP_ERR_WRONGLENGTH;
-    }
-    if (action == COMMIT) {
-        dlm = dlmod_get_by_index(name[12]);
-        if (!dlm || dlm->status == DLMOD_LOADED)
-            return SNMP_ERR_RESOURCEUNAVAILABLE;
-        memcpy(dlm->name, var_val, var_val_len);
-        dlm->name[var_val_len] = 0;
-    }
-    return SNMP_ERR_NOERROR;
-}
-
-int
-write_dlmodPath(int action,
-                u_char * var_val,
-                u_char var_val_type,
-                size_t var_val_len,
-                u_char * statP, oid * name, size_t name_len)
-{
-    static struct dlmod *dlm;
-
-    if (var_val_type != ASN_OCTET_STR) {
-        snmp_log(LOG_ERR, "write to dlmodPath not ASN_OCTET_STR\n");
-        return SNMP_ERR_WRONGTYPE;
-    }
-    if (var_val_len > sizeof(dlm->path)-1) {
-        snmp_log(LOG_ERR, "write to dlmodPath: bad length: too long\n");
-        return SNMP_ERR_WRONGLENGTH;
-    }
-    if (action == COMMIT) {
-        dlm = dlmod_get_by_index(name[12]);
-        if (!dlm || dlm->status == DLMOD_LOADED)
-            return SNMP_ERR_RESOURCEUNAVAILABLE;
-        memcpy(dlm->path, var_val, var_val_len);
-        dlm->path[var_val_len] = 0;
-    }
-    return SNMP_ERR_NOERROR;
-}
-
-int
-write_dlmodStatus(int action,
-                  u_char * var_val,
-                  u_char var_val_type,
-                  size_t var_val_len,
-                  u_char * statP, oid * name, size_t name_len)
-{
     /*
-     * variables we may use later 
+     * TODO: REGISTER_SYSOR_ENTRY
      */
-    struct dlmod   *dlm;
 
-    if (var_val_type != ASN_INTEGER) {
-        snmp_log(LOG_ERR, "write to dlmodStatus not ASN_INTEGER\n");
-        return SNMP_ERR_WRONGTYPE;
-    }
-    if (var_val_len > sizeof(long)) {
-        snmp_log(LOG_ERR, "write to dlmodStatus: bad length\n");
-        return SNMP_ERR_WRONGLENGTH;
-    }
-    if (action == COMMIT) {
-        /*
-         * object identifier in form .1.3.6.1.4.1.2021.13.14.2.1.4.x 
-         * where X is index with offset 12 
-         */
+    DEBUGMSGTL(("dlmod", "register mib\n"));
 
-        dlm = dlmod_get_by_index(name[12]);
-        switch (*((long *) var_val)) {
-        case DLMOD_CREATE:
-            if (dlm || (name[12] != dlmod_next_index))
-                return SNMP_ERR_RESOURCEUNAVAILABLE;
-            dlm = dlmod_create_module();
-            if (!dlm)
-                return SNMP_ERR_RESOURCEUNAVAILABLE;
-            break;
-        case DLMOD_LOAD:
-            if (!dlm || dlm->status == DLMOD_LOADED)
-                return SNMP_ERR_RESOURCEUNAVAILABLE;
-            dlmod_load_module(dlm);
-            break;
-        case DLMOD_UNLOAD:
-            if (!dlm || dlm->status != DLMOD_LOADED)
-                return SNMP_ERR_RESOURCEUNAVAILABLE;
-            dlmod_unload_module(dlm);
-            break;
-        case DLMOD_DELETE:
-            if (!dlm || dlm->status == DLMOD_LOADED)
-                return SNMP_ERR_RESOURCEUNAVAILABLE;
-            dlmod_delete_module(dlm);
-            break;
-        default:
-            return SNMP_ERR_WRONGVALUE;
+    snmpd_register_config_handler("dlmod", dlmod_parse_config,
+                                  dlmod_free_config,
+                                  "module-name module-path");
+
+    {
+        const char * const p = getenv("SNMPDLMODPATH");
+        strncpy(dlmod_path, SNMPDLMODPATH, sizeof(dlmod_path));
+        dlmod_path[ sizeof(dlmod_path) - 1 ] = 0;
+        if (p) {
+            if (p[0] == ':') {
+                int len = strlen(dlmod_path);
+                if (dlmod_path[len - 1] != ':') {
+                    strncat(dlmod_path, ":", sizeof(dlmod_path) - len - 1);
+                    len++;
+                }
+                strncat(dlmod_path, p + 1,   sizeof(dlmod_path) - len);
+            } else
+                strncpy(dlmod_path, p, sizeof(dlmod_path));
         }
     }
-    return SNMP_ERR_NOERROR;
+
+    dlmod_path[ sizeof(dlmod_path)-1 ] = 0;
+    DEBUGMSGTL(("dlmod", "dlmod_path: %s\n", dlmod_path));
+}
+
+netsnmp_feature_require(snmpd_unregister_config_handler)
+
+void
+shutdown_dlmod(void)
+{
+    snmpd_unregister_config_handler("dlmod");
+    unregister_mib(dlmod_variables_oid, OID_LENGTH(dlmod_variables_oid));
 }
diff --git a/agent/mibgroup/ucd-snmp/dlmod.h b/agent/mibgroup/ucd-snmp/dlmod.h
index 4fbfb9e..9592bdd 100644
--- a/agent/mibgroup/ucd-snmp/dlmod.h
+++ b/agent/mibgroup/ucd-snmp/dlmod.h
@@ -3,61 +3,16 @@
  *
  */
 
-#ifndef _MIBGROUP_DLMOD_H
-#define _MIBGROUP_DLMOD_H
+#ifndef MIBGROUP_DLMOD_H
+#define MIBGROUP_DLMOD_H
 
-/*
- * TODO #include "mibdefs.h"
- */
 #if (!defined(HAVE_DLFCN_H) || !defined(HAVE_DLOPEN)) && !defined(WIN32)
 config_error(Dynamic modules not supported on this platform)
 #endif
 
 config_add_mib(UCD-DLMOD-MIB)
-#ifndef SNMPDLMODPATH
-#define SNMPDLMODPATH "/usr/local/lib/snmp/dlmod"
-#endif
-     struct dlmod {
-         struct dlmod   *next;
-         int             index;
-         char            name[64 + 1];
-         char            path[255 + 1];
-         char            error[255 + 1];
-         void           *handle;
-         int             status;
-     };
 
-     void            dlmod_load_module(struct dlmod *);
-     void            dlmod_unload_module(struct dlmod *);
-     struct dlmod   *dlmod_create_module(void);
-     void            dlmod_delete_module(struct dlmod *);
-     struct dlmod   *dlmod_get_by_index(int);
+void init_dlmod(void);
+void shutdown_dlmod(void);
 
-     void            dlmod_init(void);
-     void            dlmod_deinit(void);
-
-     extern void     init_dlmod(void);
-     extern void     deinit_dlmod(void);
-
-     extern FindVarMethod var_dlmod;
-     extern FindVarMethod var_dlmodEntry;
-     extern WriteMethod write_dlmodName;
-     extern WriteMethod write_dlmodPath;
-     extern WriteMethod write_dlmodStatus;
-
-#define DLMODNEXTINDEX 		1
-#define DLMODINDEX     		2
-#define DLMODNAME      		3
-#define DLMODPATH      		4
-#define DLMODERROR     		5
-#define DLMODSTATUS    		6
-
-#define DLMOD_LOADED		1
-#define DLMOD_UNLOADED		2
-#define DLMOD_ERROR		3
-#define DLMOD_LOAD		4
-#define	DLMOD_UNLOAD		5
-#define DLMOD_CREATE		6
-#define DLMOD_DELETE		7
-
-#endif                          /* _MIBGROUP_DLMOD_H */
+#endif                          /* MIBGROUP_DLMOD_H */
diff --git a/agent/mibgroup/ucd-snmp/extensible.c b/agent/mibgroup/ucd-snmp/extensible.c
index 37a5eeb..14b084a 100644
--- a/agent/mibgroup/ucd-snmp/extensible.c
+++ b/agent/mibgroup/ucd-snmp/extensible.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -109,6 +110,9 @@
 #include "utilities/execute.h"
 #include "util_funcs/header_simple_table.h"
 
+netsnmp_feature_require(get_exten_instance)
+netsnmp_feature_require(parse_miboid)
+
 extern struct myproc *procwatch;        /* moved to proc.c */
 extern int      numprocs;       /* ditto */
 extern struct extensible *extens;       /* In exec.c */
diff --git a/agent/mibgroup/ucd-snmp/lmSensors.c b/agent/mibgroup/ucd-snmp/lmSensors.c
index 605ee16..05c60b7 100644
--- a/agent/mibgroup/ucd-snmp/lmSensors.c
+++ b/agent/mibgroup/ucd-snmp/lmSensors.c
@@ -66,6 +66,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -76,6 +77,9 @@
 #include "util_funcs/header_simple_table.h"
 #include <time.h>
 
+netsnmp_feature_require(table_container)
+
+
 /*
  * Load required drivers and libraries.
  */
diff --git a/agent/mibgroup/ucd-snmp/lmsensorsMib.c b/agent/mibgroup/ucd-snmp/lmsensorsMib.c
index 5a50697..2557796 100644
--- a/agent/mibgroup/ucd-snmp/lmsensorsMib.c
+++ b/agent/mibgroup/ucd-snmp/lmsensorsMib.c
@@ -83,7 +83,7 @@
      * Register the table using the filtered container
      * Include an indicator of any scaling to be applied to the sensor value
      */
-    reg->my_reg_void = (void *)mult;
+    reg->my_reg_void = (void *)(uintptr_t)mult;
     table_info = SNMP_MALLOC_TYPEDEF( netsnmp_table_registration_info );
     netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER, 0);
     table_info->min_column = COLUMN_LMSENSORS_INDEX;
@@ -154,7 +154,7 @@
     netsnmp_request_info       *request;
     netsnmp_table_request_info *table_info;
     netsnmp_sensor_info        *sensor_info;
-    int mult  = (int)reginfo->my_reg_void;
+    int mult  = (uintptr_t)reginfo->my_reg_void;
 
     DEBUGMSGTL(( "ucd-snmp/lmsensorsMib","lmSensorsTables_handler - root: "));
     DEBUGMSGOID(("ucd-snmp/lmsensorsMib", reginfo->rootoid, reginfo->rootoid_len));
diff --git a/agent/mibgroup/ucd-snmp/loadave.c b/agent/mibgroup/ucd-snmp/loadave.c
index 6efc5e9..3178330 100644
--- a/agent/mibgroup/ucd-snmp/loadave.c
+++ b/agent/mibgroup/ucd-snmp/loadave.c
@@ -258,12 +258,6 @@
 int
 try_getloadavg(double *r_ave, size_t s_ave)
 {
-#if defined(HAVE_GETLOADAVG) || defined(linux) || defined(ultrix) \
-    || defined(sun) || defined(__alpha) || defined(dynix) \
-    || !defined(cygwin) && defined(NETSNMP_CAN_USE_NLIST) \
-       && defined(LOADAVE_SYMBOL)
-    double         *pave = r_ave;
-#endif
 #ifndef HAVE_GETLOADAVG
 #ifdef HAVE_SYS_FIXPOINT_H
     fix             favenrun[3];
@@ -278,7 +272,6 @@
 #endif
 #endif
 #if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
-    int             favenrun[3];
     perfstat_cpu_total_t cs;
 #endif
 #if defined(hpux10) || defined(hpux11)
@@ -291,7 +284,7 @@
 #endif	/* !HAVE_GETLOADAVG */
 
 #ifdef HAVE_GETLOADAVG
-    if (getloadavg(pave, s_ave) == -1)
+    if (getloadavg(r_ave, s_ave) == -1)
         return (-1);
 #elif defined(linux)
     {
@@ -300,7 +293,7 @@
             NETSNMP_LOGONCE((LOG_ERR, "snmpd: cannot open /proc/loadavg\n"));
             return (-1);
         }
-        fscanf(in, "%lf %lf %lf", pave, (pave + 1), (pave + 2));
+        fscanf(in, "%lf %lf %lf", r_ave, (r_ave + 1), (r_ave + 2));
         fclose(in);
     }
 #elif (defined(ultrix) || defined(sun) || defined(__alpha) || defined(dynix))
@@ -308,7 +301,7 @@
         0)
         return (-1);
     for (i = 0; i < s_ave; i++)
-        *(pave + i) = FIX_TO_DBL(favenrun[i]);
+        *(r_ave + i) = FIX_TO_DBL(favenrun[i]);
 #elif defined(hpux10) || defined(hpux11)
     if (pstat_getdynamic(&pst_buf, sizeof(struct pst_dynamic), 1, 0) < 0)
         return(-1);
@@ -330,7 +323,7 @@
     DEBUGMSGTL(("ucd-snmp/loadave", "irix6: %d %d %d\n", favenrun[0], favenrun[1], favenrun[2]));
 #elif !defined(cygwin)
 #if defined(NETSNMP_CAN_USE_NLIST) && defined(LOADAVE_SYMBOL)
-    if (auto_nlist(LOADAVE_SYMBOL, (char *) pave, sizeof(double) * s_ave)
+    if (auto_nlist(LOADAVE_SYMBOL, (char *) r_ave, sizeof(double) * s_ave)
         == 0)
 #endif
         return (-1);
diff --git a/agent/mibgroup/ucd-snmp/pass.c b/agent/mibgroup/ucd-snmp/pass.c
index 98eacbb..8d602c1 100644
--- a/agent/mibgroup/ucd-snmp/pass.c
+++ b/agent/mibgroup/ucd-snmp/pass.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -36,6 +37,9 @@
 #include "extensible.h"
 #include "util_funcs.h"
 
+netsnmp_feature_require(get_exten_instance)
+netsnmp_feature_require(parse_miboid)
+
 struct extensible *passthrus = NULL;
 int             numpassthrus = 0;
 
@@ -113,6 +117,7 @@
     if (*ppass == NULL)
         return;
     (*ppass)->type = PASSTHRU;
+    (*ppass)->mibpriority = priority;
 
     (*ppass)->miblen = parse_miboid(cptr, (*ppass)->miboid);
     while (isdigit((unsigned char)(*cptr)) || *cptr == '.')
@@ -132,9 +137,10 @@
     strlcpy((*ppass)->name, (*ppass)->command, sizeof((*ppass)->name));
     (*ppass)->next = NULL;
 
-    register_mib_priority("pass", (struct variable *) extensible_passthru_variables,
-			  sizeof(struct variable2),
-			  1, (*ppass)->miboid, (*ppass)->miblen, priority);
+    register_mib_priority("pass",
+                 (struct variable *) extensible_passthru_variables,
+                 sizeof(struct variable2), 1, (*ppass)->miboid,
+                 (*ppass)->miblen, (*ppass)->mibpriority);
 
     /*
      * argggg -- passthrus must be sorted 
@@ -170,7 +176,7 @@
     for (etmp = passthrus; etmp != NULL;) {
         etmp2 = etmp;
         etmp = etmp->next;
-        unregister_mib(etmp2->miboid, etmp2->miblen);
+        unregister_mib_priority(etmp2->miboid, etmp2->miblen, etmp2->mibpriority);
         free(etmp2);
     }
     passthrus = NULL;
diff --git a/agent/mibgroup/ucd-snmp/pass_persist.c b/agent/mibgroup/ucd-snmp/pass_persist.c
index bd9b603..8467e19 100644
--- a/agent/mibgroup/ucd-snmp/pass_persist.c
+++ b/agent/mibgroup/ucd-snmp/pass_persist.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_IO_H
 #include <io.h>
@@ -41,12 +42,15 @@
 #include "extensible.h"
 #include "util_funcs.h"
 
+netsnmp_feature_require(get_exten_instance)
+netsnmp_feature_require(parse_miboid)
+
 struct extensible *persistpassthrus = NULL;
 int             numpersistpassthrus = 0;
 struct persist_pipe_type {
     FILE           *fIn, *fOut;
     int             fdIn, fdOut;
-    int             pid;
+    netsnmp_pid_t   pid;
 }              *persist_pipes = (struct persist_pipe_type *) NULL;
 static unsigned pipe_check_alarm_id;
 static int      init_persist_pipes(void);
@@ -143,6 +147,7 @@
     if (*ppass == NULL)
         return;
     (*ppass)->type = PASSTHRU_PERSIST;
+    (*ppass)->mibpriority = priority;
 
     (*ppass)->miblen = parse_miboid(cptr, (*ppass)->miboid);
     while (isdigit((unsigned char)(*cptr)) || *cptr == '.')
@@ -165,7 +170,7 @@
     register_mib_priority("pass_persist",
                  (struct variable *) extensible_persist_passthru_variables,
                  sizeof(struct variable2), 1, (*ppass)->miboid,
-                 (*ppass)->miblen, priority);
+                 (*ppass)->miblen, (*ppass)->mibpriority);
 
     /*
      * argggg -- pasthrus must be sorted 
@@ -196,13 +201,19 @@
 pass_persist_free_config(void)
 {
     struct extensible *etmp, *etmp2;
+    int i;
 
     for (etmp = persistpassthrus; etmp != NULL;) {
         etmp2 = etmp;
         etmp = etmp->next;
-        unregister_mib(etmp2->miboid, etmp2->miblen);
+        unregister_mib_priority(etmp2->miboid, etmp2->miblen, etmp2->mibpriority);
         free(etmp2);
     }
+    if (persist_pipes) {
+        for (i = 0; i <= numpersistpassthrus; i++) {
+            close_persist_pipe(i);
+        }
+    }
     persistpassthrus = NULL;
     numpersistpassthrus = 0;
 }
@@ -426,7 +437,7 @@
         for (i = 0; i <= numpersistpassthrus; i++) {
             persist_pipes[i].fIn = persist_pipes[i].fOut = (FILE *) 0;
             persist_pipes[i].fdIn = persist_pipes[i].fdOut = -1;
-            persist_pipes[i].pid = -1;
+            persist_pipes[i].pid = NETSNMP_NO_SUCH_PROCESS;
         }
     }
     return persist_pipes ? 1 : 0;
@@ -440,7 +451,7 @@
  */
 static int process_stopped(int idx)
 {
-    if (persist_pipes[idx].pid != -1) {
+    if (persist_pipes[idx].pid != NETSNMP_NO_SUCH_PROCESS) {
 #if HAVE_SYS_WAIT_H
         return waitpid(persist_pipes[idx].pid, NULL, WNOHANG) > 0;
 #endif
@@ -507,14 +518,15 @@
     /*
      * Open if it's not already open 
      */
-    if (persist_pipes[iindex].pid == -1) {
-        int             fdIn, fdOut, pid;
+    if (persist_pipes[iindex].pid == NETSNMP_NO_SUCH_PROCESS) {
+        int             fdIn, fdOut;
+        netsnmp_pid_t   pid;
 
         /*
          * Did we fail? 
          */
         if ((0 == get_exec_pipes(command, &fdIn, &fdOut, &pid)) ||
-            (pid == -1)) {
+            (pid == NETSNMP_NO_SUCH_PROCESS)) {
             DEBUGMSGTL(("ucd-snmp/pass_persist",
                         "open_persist_pipe: pid == -1\n"));
             recurse = 0;
@@ -591,7 +603,7 @@
     /*
      * Don't write to a non-existant process 
      */
-    if (persist_pipes[iindex].pid == -1) {
+    if (persist_pipes[iindex].pid == NETSNMP_NO_SUCH_PROCESS) {
         DEBUGMSGTL(("ucd-snmp/pass_persist",
                     "write_persist_pipe: not writing %s, process is non-existent",
                     data));
@@ -709,16 +721,23 @@
 	unlink(fifo_out_path);
 #endif
 
-    if (persist_pipes[iindex].pid != -1) {
+    if (persist_pipes[iindex].pid != NETSNMP_NO_SUCH_PROCESS) {
+        /*
+         * kill the child, in case we got an error and the child is not
+         * cooperating.  Ignore the return code.
+         */
+#ifdef HAVE_SIGNAL
+        (void)kill(persist_pipes[iindex].pid, SIGKILL);
+#endif
 #if HAVE_SYS_WAIT_H
         waitpid(persist_pipes[iindex].pid, NULL, 0);
 #endif
 #if defined(WIN32) && !defined (mingw32) && !defined (HAVE_SIGNAL)
-        if (!CloseHandle((HANDLE)persist_pipes[iindex].pid)) {
+        if (!CloseHandle(persist_pipes[iindex].pid)) {
             DEBUGMSGTL(("ucd-snmp/pass_persist","close_persist_pipe pid: close error\n"));
         }
 #endif
-        persist_pipes[iindex].pid = -1;
+        persist_pipes[iindex].pid = NETSNMP_NO_SUCH_PROCESS;
     }
 
 }
diff --git a/agent/mibgroup/ucd-snmp/proc.c b/agent/mibgroup/ucd-snmp/proc.c
index 700acf2..e90c2e8 100644
--- a/agent/mibgroup/ucd-snmp/proc.c
+++ b/agent/mibgroup/ucd-snmp/proc.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #ifdef solaris2
 #define _KMEMUSER               /* Needed by <sys/user.h> */
@@ -359,6 +360,7 @@
 }
 
 #ifdef USING_HOST_DATA_ACCESS_SWRUN_MODULE
+netsnmp_feature_require(swrun_count_processes_by_name)
 int
 sh_count_procs(char *procname)
 {
@@ -812,6 +814,7 @@
 }
 #endif                          /* _SLASH_PROC_METHOD_ */
 #else
+netsnmp_feature_require(find_field)
 int
 sh_count_procs(char *procname)
 {
diff --git a/agent/mibgroup/ucd-snmp/proxy.c b/agent/mibgroup/ucd-snmp/proxy.c
index 9a0e356..017fd5c 100644
--- a/agent/mibgroup/ucd-snmp/proxy.c
+++ b/agent/mibgroup/ucd-snmp/proxy.c
@@ -9,6 +9,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #if HAVE_STRING_H
@@ -23,6 +24,9 @@
 
 #include "proxy.h"
 
+netsnmp_feature_require(handler_mark_requests_as_delegated)
+netsnmp_feature_require(request_set_error_idx)
+
 static struct simple_proxy *proxies = NULL;
 
 oid             testoid[] = { 1, 3, 6, 1, 4, 1, 2021, 8888, 1 };
@@ -356,6 +360,7 @@
         pdu = snmp_pdu_create(reqinfo->mode);
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_ACTION:
         pdu = snmp_pdu_create(SNMP_MSG_SET);
         break;
@@ -383,6 +388,7 @@
          *  Nothing to do in this pass
          */
         return SNMP_ERR_NOERROR;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         snmp_log(LOG_WARNING, "unsupported mode for proxy called (%d)\n",
@@ -403,7 +409,33 @@
         ourname = request->requestvb->name;
         ourlength = request->requestvb->name_length;
 
-        if (sp->base_len > 0) {
+        if (sp->base_len &&
+            reqinfo->mode == MODE_GETNEXT &&
+            (snmp_oid_compare(ourname, ourlength,
+                              sp->base, sp->base_len) < 0)) {
+            DEBUGMSGTL(( "proxy", "request is out of registered range\n"));
+            /*
+             * Create GETNEXT request with an OID so the
+             * master returns the first OID in the registered range.
+             */
+            memcpy(ourname, sp->base, sp->base_len * sizeof(oid));
+            ourlength = sp->base_len;
+            if (ourname[ourlength-1] <= 1) {
+                /*
+                 * The registered range ends with x.y.z.1
+                 * -> ask for the next of x.y.z
+                 */
+                ourlength--;
+            } else {
+                /*
+                 * The registered range ends with x.y.z.A
+                 * -> ask for the next of x.y.z.A-1.MAX_SUBID
+                 */
+                ourname[ourlength-1]--;
+                ourname[ourlength] = MAX_SUBID;
+                ourlength++;
+            }
+        } else if (sp->base_len > 0) {
             if ((ourlength - sp->name_len + sp->base_len) > MAX_OID_LEN) {
                 /*
                  * too large 
@@ -529,6 +561,7 @@
                 netsnmp_handler_mark_requests_as_delegated(requests,
                                                            REQUEST_IS_NOT_DELEGATED);
             }
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 	    else if (cache->reqinfo->mode == MODE_SET_ACTION) {
 		/*
 		 * In order for netsnmp_wrap_up_request to consider the
@@ -545,6 +578,7 @@
 		netsnmp_request_set_error_idx(requests, pdu->errstat,
                                                         pdu->errindex);
 	    }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
             else {
 		netsnmp_handler_mark_requests_as_delegated( requests,
                                              REQUEST_IS_NOT_DELEGATED);
diff --git a/agent/mibgroup/ucd-snmp/versioninfo.c b/agent/mibgroup/ucd-snmp/versioninfo.c
index f42932a..f7a8c63 100644
--- a/agent/mibgroup/ucd-snmp/versioninfo.c
+++ b/agent/mibgroup/ucd-snmp/versioninfo.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #if TIME_WITH_SYS_TIME
@@ -23,7 +24,12 @@
 
 #include "struct.h"
 #include "versioninfo.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
+#include "util_funcs/restart.h"
+#include "util_funcs.h" /* clear_cache */
+
+netsnmp_feature_require(clear_cache)
+
 
 void
 init_versioninfo(void)
diff --git a/agent/mibgroup/ucd-snmp/versioninfo.h b/agent/mibgroup/ucd-snmp/versioninfo.h
index d991147..007424e 100644
--- a/agent/mibgroup/ucd-snmp/versioninfo.h
+++ b/agent/mibgroup/ucd-snmp/versioninfo.h
@@ -28,5 +28,8 @@
 #define VERSAVEPERSISTENT 13
 #define VERDEBUGGING 20
 
+config_require(util_funcs/header_generic)
+config_require(util_funcs/restart)
 config_require(util_funcs)
+
 #endif                          /* _MIBGROUP_VERSIONINFO_H */
diff --git a/agent/mibgroup/ucd-snmp/vmstat.c b/agent/mibgroup/ucd-snmp/vmstat.c
index eadbf5a..d52a5b6 100644
--- a/agent/mibgroup/ucd-snmp/vmstat.c
+++ b/agent/mibgroup/ucd-snmp/vmstat.c
@@ -20,7 +20,7 @@
         netsnmp_create_handler_registration("vmstat", vmstat_handler,
                              vmstat_oid, OID_LENGTH(vmstat_oid),
                              HANDLER_CAN_RONLY),
-        MIBINDEX, RAWSWAPOUT);
+        MIBINDEX, CPURAWGUESTNICE);
 }
 
 
@@ -38,6 +38,7 @@
     switch (reqinfo->mode) {
     case MODE_GET:
         obj = requests->requestvb->name[ requests->requestvb->name_length-2 ];
+
         switch (obj) {
         case MIBINDEX:             /* dummy value */
              snmp_set_var_typed_integer(requests->requestvb, ASN_INTEGER, 1);
@@ -112,6 +113,18 @@
              snmp_set_var_typed_integer(requests->requestvb, ASN_COUNTER,
                                         info->sirq_ticks & 0xffffffff);
              break;
+        case CPURAWSTEAL:
+             snmp_set_var_typed_integer(requests->requestvb, ASN_COUNTER,
+                                        info->steal_ticks & 0xffffffff);
+             break;
+        case CPURAWGUEST:
+             snmp_set_var_typed_integer(requests->requestvb, ASN_COUNTER,
+                                        info->guest_ticks & 0xffffffff);
+             break;
+        case CPURAWGUESTNICE:
+             snmp_set_var_typed_integer(requests->requestvb, ASN_COUNTER,
+                                        info->guestnice_ticks & 0xffffffff);
+             break;
 
         /*
          *  'Cooked' CPU statistics
diff --git a/agent/mibgroup/ucd-snmp/vmstat.h b/agent/mibgroup/ucd-snmp/vmstat.h
index b8d5202..eedb5b4 100644
--- a/agent/mibgroup/ucd-snmp/vmstat.h
+++ b/agent/mibgroup/ucd-snmp/vmstat.h
@@ -36,5 +36,8 @@
 #define CPURAWSOFTIRQ 61
 #define RAWSWAPIN 62
 #define RAWSWAPOUT 63
+#define CPURAWSTEAL 64
+#define CPURAWGUEST 65
+#define CPURAWGUESTNICE 66
 
 #endif                          /* _MIBGROUP_VMSTAT_H */
diff --git a/agent/mibgroup/ucd-snmp/vmstat_linux.c b/agent/mibgroup/ucd-snmp/vmstat_linux.c
index 7538a14..d6eff50 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_linux.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_linux.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_LIMITS_H
 #include <limits.h>
@@ -111,6 +112,9 @@
 #include "util_funcs/header_generic.h"
 #include "vmstat.h"
 
+netsnmp_feature_require(hardware_cpu_load)
+
+
 FindVarMethod var_extensible_vmstat;
 
 static int has_vmstat = 1;
diff --git a/agent/mibgroup/udp-mib/data_access/udp_endpoint.h b/agent/mibgroup/udp-mib/data_access/udp_endpoint.h
index 1edb6d6..d9dec1d 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint.h
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint.h
@@ -23,7 +23,7 @@
 config_require(util_funcs/get_pid_from_inode)
 #elif defined( solaris2 )
 config_require(udp-mib/data_access/udp_endpoint_solaris2)
-#elif defined(freebsd4) || defined(dragonfly)
+#elif defined(freebsd4) || defined(dragonfly) || defined(darwin)
 config_require(udp-mib/data_access/udp_endpoint_freebsd4)
 #elif defined(openbsd4)
 config_require(udp-mib/data_access/udp_endpoint_openbsd)
diff --git a/agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c b/agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c
index bcb002e..63f8549 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c
@@ -4,6 +4,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "udp-mib/udpEndpointTable/udpEndpointTable_constants.h"
 
@@ -13,6 +14,10 @@
 
 #include "udp_endpoint_private.h"
 
+netsnmp_feature_child_of(udp_endpoint_common, libnetsnmpmibs)
+
+netsnmp_feature_child_of(udp_endpoint_entry_create, udp_endpoint_common)
+
 /**---------------------------------------------------------------------*/
 /*
  * local static vars
@@ -24,11 +29,6 @@
  * initialization
  */
 
-void
-netsnmp_access_udp_endpoint_init(void)
-{
-}
-
 /**---------------------------------------------------------------------*/
 /*
  * container functions
@@ -120,6 +120,7 @@
  */
 /**
  */
+#ifndef NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_ENTRY_CREATE
 netsnmp_udp_endpoint_entry *
 netsnmp_access_udp_endpoint_entry_create(void)
 {
@@ -136,6 +137,7 @@
 
     return entry;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_ENTRY_CREATE */
 
 /**
  */
diff --git a/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c b/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c
index 43b3230..6edbdc1 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c
@@ -4,6 +4,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -19,6 +20,10 @@
 
 #include <fcntl.h>
 
+netsnmp_feature_require(text_utils)
+netsnmp_feature_child_of(udp_endpoint_all, libnetsnmpmibs)
+netsnmp_feature_child_of(udp_endpoint_writable, udp_endpoint_all)
+
 static int _load4(netsnmp_container *container, u_int flags);
 #if defined (NETSNMP_ENABLE_IPV6)
 static int _load6(netsnmp_container *container, u_int flags);
@@ -30,6 +35,7 @@
  * @retval  0: success
  * @retval <0: error
  */
+#ifndef NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_WRITABLE
 int
 netsnmp_arch_udp_endpoint_entry_init(netsnmp_udp_endpoint_entry *entry)
 {
@@ -71,6 +77,7 @@
     /** xxx-rks:9 udp_endpoint delete not implemented */
     return -1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_WRITABLE */
 
 
 /**
@@ -84,6 +91,9 @@
 {
     int rc = 0;
 
+    /* Setup the pid_from_inode table, and fill it.*/
+    netsnmp_get_pid_from_inode_init();
+
     rc = _load4(container, load_flags);
     if(rc < 0) {
         u_int flags = NETSNMP_ACCESS_UDP_ENDPOINT_FREE_KEEP_CONTAINER;
diff --git a/agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c b/agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c
index f4b69df..f52244a 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -10,11 +11,16 @@
 
 #include "kernel_sunos5.h"
 
+netsnmp_feature_require(netsnmp_access_udp_endpoint_entry_create)
+netsnmp_feature_child_of(udp_endpoint_all, libnetsnmpmibs)
+netsnmp_feature_child_of(udp_endpoint_writable, udp_endpoint_all)
+
 static int _load_udp_endpoint_table_v4(netsnmp_container *, int);
 #if defined(NETSNMP_ENABLE_IPV6) && defined(SOLARIS_HAVE_IPV6_MIB_SUPPORT)
 static int _load_udp_endpoint_table_v6(netsnmp_container *, int);
 #endif
 
+#ifndef NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_WRITABLE
 int 
 netsnmp_arch_udp_endpoint_entry_init(netsnmp_udp_endpoint_entry *ep)
 {
@@ -48,6 +54,7 @@
      */
     return (-1);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_WRITABLE */
 
 int 
 netsnmp_arch_udp_endpoint_container_load(netsnmp_container * container, 
diff --git a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c
index 1b6dc67..60d37e9 100644
--- a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c
+++ b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,18 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(udpEndpointTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(udpEndpointTable_container_size, udpEndpointTable_external_access)
+netsnmp_feature_child_of(udpEndpointTable_registration_set, udpEndpointTable_external_access)
+netsnmp_feature_child_of(udpEndpointTable_registration_get, udpEndpointTable_external_access)
+netsnmp_feature_child_of(udpEndpointTable_container_get, udpEndpointTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -79,19 +92,23 @@
                 _udpEndpointTable_container_shutdown(udpEndpointTable_interface_ctx *
                                                      if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_CONTAINER_GET
 netsnmp_container *
 udpEndpointTable_container_get(void)
 {
     return udpEndpointTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_REGISTRATION_GET
 udpEndpointTable_registration *
 udpEndpointTable_registration_get(void)
 {
     return udpEndpointTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_REGISTRATION_SET
 udpEndpointTable_registration *
 udpEndpointTable_registration_set(udpEndpointTable_registration * newreg)
 {
@@ -99,12 +116,15 @@
     udpEndpointTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_CONTAINER_SIZE
 int
 udpEndpointTable_container_size(void)
 {
     return CONTAINER_SIZE(udpEndpointTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_CONTAINER_SIZE */
 
 /*
  * mfd multiplexer modes
@@ -228,7 +248,8 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+    /* XXX - are these actually necessary? */
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -251,7 +272,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -1047,6 +1068,7 @@
 }                               /* _udpEndpointTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_EXTERNAL_ACCESS
 udpEndpointTable_rowreq_ctx *
 udpEndpointTable_row_find_by_mib_index(udpEndpointTable_mib_index *
                                        mib_idx)
@@ -1074,3 +1096,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/util_funcs.c b/agent/mibgroup/util_funcs.c
index fb76083..54068c6 100644
--- a/agent/mibgroup/util_funcs.c
+++ b/agent/mibgroup/util_funcs.c
@@ -9,6 +9,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #if HAVE_IO_H
@@ -96,6 +97,24 @@
 #define setPerrorstatus(x) snmp_log_perror(x)
 #endif
 
+netsnmp_feature_child_of(util_funcs, libnetsnmpmibs)
+
+netsnmp_feature_child_of(shell_command, util_funcs)
+netsnmp_feature_child_of(get_exten_instance, util_funcs)
+netsnmp_feature_child_of(clear_cache, util_funcs)
+netsnmp_feature_child_of(find_field, util_funcs)
+netsnmp_feature_child_of(parse_miboid, util_funcs)
+netsnmp_feature_child_of(string_append_int, util_funcs)
+netsnmp_feature_child_of(internal_mib_table, util_funcs)
+
+#if defined(HAVE_LINUX_RTNETLINK_H)
+netsnmp_feature_child_of(prefix_info_all, util_funcs)
+netsnmp_feature_child_of(prefix_info, prefix_info_all)
+netsnmp_feature_child_of(update_prefix_info, prefix_info_all)
+netsnmp_feature_child_of(delete_prefix_info, prefix_info_all)
+netsnmp_feature_child_of(find_prefix_info, prefix_info_all)
+netsnmp_feature_child_of(create_prefix_info, prefix_info_all)
+#endif /* HAVE_LINUX_RTNETLINK_H */
 
 #ifdef NETSNMP_EXCACHETIME
 static long     cachetime;
@@ -110,6 +129,7 @@
     return netsnmp_mktemp();
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SHELL_COMMAND
 int
 shell_command(struct extensible *ex)
 {
@@ -143,6 +163,7 @@
 #endif
     return (ex->result);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SHELL_COMMAND */
 
 #define MAXOUTPUT 300
 
@@ -169,6 +190,7 @@
     return (ex->result);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_GET_EXTEN_INSTANCE
 struct extensible *
 get_exten_instance(struct extensible *exten, size_t inst)
 {
@@ -180,6 +202,7 @@
         exten = exten->next;
     return (exten);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_GET_EXTEN_INSTANCE */
 
 void
 wait_on_exec(struct extensible *ex)
@@ -188,7 +211,7 @@
   int rc;
   if (ex->tid != 0 && ex->pid != 0) {
     HANDLE hThread = ex->tid;
-    HANDLE hProcess = (HANDLE) ex->pid;
+    HANDLE hProcess = ex->pid;
     rc = WaitForSingleObject(hProcess, NETSNMP_TIMEOUT_WAITFORSINGLEOBJECT);
     DEBUGMSGT(("exec:wait_on_exec","WaitForSingleObject rc=(%d)\n",rc ));
     rc = CloseHandle( hThread );
@@ -345,7 +368,7 @@
     }
     
     /* Set global child process handle */
-    ex->pid = (int)pi.hProcess;
+    ex->pid = pi.hProcess;
     ex->tid = pi.hThread;
 
     /* Close pipe handles to make sure that no handles to the write end of the
@@ -371,7 +394,7 @@
     return -1;
 }
 int
-get_exec_pipes(char *cmd, int *fdIn, int *fdOut, int *pid)
+get_exec_pipes(char *cmd, int *fdIn, int *fdOut, netsnmp_pid_t *pid)
 {
 /* 	Alexander Prömel, alexander@proemel.de 08/24/2006
 	The following code, is tested on picotux rev. 1.01.
@@ -604,7 +627,7 @@
     DEBUGMSGTL(("util_funcs","child dwProcessId (task manager): %d\n",(int)pi.dwProcessId));
 
     /* Set global child process handle */
-    *pid = (int)pi.hProcess;
+    *pid = pi.hProcess;
 
     /* Cleanup */
     if (!CloseHandle(pi.hThread))
@@ -633,6 +656,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CLEAR_CACHE
 int
 clear_cache(int action,
             u_char * var_val,
@@ -655,6 +679,7 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CLEAR_CACHE */
 
 void
 print_mib_oid(oid name[], size_t len)
@@ -695,6 +720,7 @@
                                  write_method, max));
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_FIND_FIELD
 char           *
 find_field(char *ptr, int field)
 {
@@ -735,7 +761,9 @@
     }
     return (NULL);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_FIND_FIELD */
 
+#ifndef NETSNMP_FEATURE_REMOVE_PARSE_MIBOID
 int
 parse_miboid(const char *buf, oid * oidout)
 {
@@ -759,7 +787,9 @@
      */
     return i;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PARSE_MIBOID */
 
+#ifndef NETSNMP_FEATURE_REMOVE_STRING_APPEND_INT
 void
 string_append_int(char *s, int val)
 {
@@ -774,13 +804,16 @@
     strcpy(s, textVal);
     return;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_STRING_APPEND_INT */
+
+#ifndef NETSNMP_FEATURE_REMOVE_INTERNAL_MIB_TABLE
 
 struct internal_mib_table {
     int             max_size;   /* Size of the current data table */
     int             next_index; /* Index of the next free entry */
     int             current_index;      /* Index of the 'current' entry */
     int             cache_timeout;
-    marker_t        cache_marker;
+    marker_t        cache_markerM;
     RELOAD         *reload;     /* Routine to read in the data */
     COMPARE        *compare;    /* Routine to compare two entries */
     int             data_size;  /* Size of an individual entry */
@@ -801,7 +834,7 @@
     t->next_index = 1;          /* Don't use index 0 */
     t->current_index = 1;
     t->cache_timeout = timeout;
-    t->cache_marker = NULL;
+    t->cache_markerM = NULL;
     t->reload = reload;
     t->compare = compare;
     t->data_size = size;
@@ -823,8 +856,9 @@
      * If the saved data is fairly recent,
      *    we don't need to reload it
      */
-    if (table->cache_marker &&
-        !(atime_ready(table->cache_marker, table->cache_timeout * 1000)))
+    if (table->cache_markerM &&
+        !(netsnmp_ready_monotonic(table->cache_markerM,
+                                  table->cache_timeout * 1000)))
         return 1;
 
 
@@ -834,15 +868,12 @@
      * N.B:  Update the cache marker *before* calling
      *   this routine, to avoid problems with recursion
      */
-    if (!table->cache_marker)
-        table->cache_marker = atime_newMarker();
-    else
-        atime_setMarker(table->cache_marker);
+    netsnmp_set_monotonic_marker(&table->cache_markerM);
 
     table->next_index = 1;
     if (table->reload((mib_table_t) table) < 0) {
-        free(table->cache_marker);
-        table->cache_marker = NULL;
+        free(table->cache_markerM);
+        table->cache_markerM = NULL;
         return 0;
     }
     table->current_index = 1;
@@ -952,8 +983,11 @@
     *max_idx = table->next_index - 1;
     return table->data;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INTERNAL_MIB_TABLE */
 
 #if defined(HAVE_LINUX_RTNETLINK_H)
+
+#ifndef NETSNMP_FEATURE_REMOVE_CREATE_PREFIX_INFO
 prefix_cbx *net_snmp_create_prefix_info(unsigned long OnLinkFlag,
                                         unsigned long AutonomousFlag,
                                         char *in6ptr)
@@ -974,7 +1008,9 @@
 
    return node;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CREATE_PREFIX_INFO */
 
+#ifndef NETSNMP_FEATURE_REMOVE_FIND_PREFIX_INFO
 int net_snmp_find_prefix_info(prefix_cbx **head,
                               char *address,
                               prefix_cbx *node_to_find)
@@ -995,7 +1031,9 @@
     } else
        return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_FIND_PREFIX_INFO */
 
+#ifndef NETSNMP_FEATURE_REMOVE_UPDATE_PREFIX_INFO
 int net_snmp_update_prefix_info(prefix_cbx **head,
                                 prefix_cbx *node_to_update)
 {
@@ -1010,6 +1048,7 @@
     } else
        return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UPDATE_PREFIX_INFO */
 
 int net_snmp_search_update_prefix_info(prefix_cbx **head,
                                        prefix_cbx *node_to_use,
@@ -1058,6 +1097,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_DELETE_PREFIX_INFO
 int net_snmp_delete_prefix_info(prefix_cbx **head,
                                 char *address)
 {
@@ -1083,5 +1123,7 @@
     }
     return 0;
 }
-#endif
+#endif /* NETSNMP_FEATURE_REMOVE_DELETE_PREFIX_INFO */
 
+#endif /* HAVE_LINUX_RTNETLINK_H */
+         
diff --git a/agent/mibgroup/util_funcs.h b/agent/mibgroup/util_funcs.h
index d16b6c4..7f59780 100644
--- a/agent/mibgroup/util_funcs.h
+++ b/agent/mibgroup/util_funcs.h
@@ -4,15 +4,14 @@
 #ifndef _MIBGROUP_UTIL_FUNCS_H
 #define _MIBGROUP_UTIL_FUNCS_H
 
-config_require(util_funcs/Exit)
 config_require(util_funcs/header_generic)
 config_require(util_funcs/header_simple_table)
-config_require(util_funcs/restart)
 
-#include "util_funcs/Exit.h"
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
 #include "util_funcs/header_generic.h"
 #include "util_funcs/header_simple_table.h"
-#include "util_funcs/restart.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -37,7 +36,11 @@
 int             exec_command(struct extensible *);
 struct extensible *get_exten_instance(struct extensible *, size_t);
 int             get_exec_output(struct extensible *);
-int             get_exec_pipes(char *cmd, int *fdIn, int *fdOut, int *pid);
+#if defined(WIN32) && !defined(cygwin)
+int             get_exec_pipes(char *cmd, int *fdIn, int *fdOut, HANDLE *pid);
+#else
+int             get_exec_pipes(char *cmd, int *fdIn, int *fdOut, pid_t *pid);
+#endif
 WriteMethod     clear_cache;
 void            print_mib_oid(oid *, size_t);
 void            sprint_mib_oid(char *, const oid *, size_t);
diff --git a/agent/mibgroup/util_funcs/get_pid_from_inode.c b/agent/mibgroup/util_funcs/get_pid_from_inode.c
index 1c941b3..8e157ae 100644
--- a/agent/mibgroup/util_funcs/get_pid_from_inode.c
+++ b/agent/mibgroup/util_funcs/get_pid_from_inode.c
@@ -22,29 +22,106 @@
 # define SOCKET_TYPE_1      "socket:["
 # define SOCKET_TYPE_2      "[0000]:"
 
-pid_t
-netsnmp_get_pid_from_inode(ino64_t inode)
+/* Definition of a simple open addressing hash table.*/
+/* When inode == 0 then the entry is empty.*/
+typedef struct {
+    ino64_t inode;
+    pid_t   pid;
+} inode_pid_ent_t;
+
+#define INODE_PID_TABLE_MAX_COLLISIONS 1000
+#define INODE_PID_TABLE_LENGTH 20000
+#define INODE_PID_TABLE_SIZE (INODE_PID_TABLE_LENGTH * sizeof (inode_pid_ent_t))
+static inode_pid_ent_t  inode_pid_table[INODE_PID_TABLE_LENGTH];
+
+static uint32_t
+_hash(uint64_t key)
+{
+    key = (~key) + (key << 18);
+    key = key ^ (key >> 31);
+    key = key * 21;
+    key = key ^ (key >> 11);
+    key = key + (key << 6);
+    key = key ^ (key >> 22);
+    return key;
+}
+
+static void
+_clear(void)
+{
+    /* Clear the inode/pid hash table.*/
+    memset(inode_pid_table, 0, INODE_PID_TABLE_SIZE);
+}
+
+static void
+_set(ino64_t inode, pid_t pid)
+{
+    uint32_t        hash = _hash(inode);
+    uint32_t        i;
+    inode_pid_ent_t *entry;
+
+    /* We will try for a maximum number of collisions.*/
+    for (i = 0; i < INODE_PID_TABLE_MAX_COLLISIONS; i++) {
+        entry = &inode_pid_table[(hash + i) % INODE_PID_TABLE_LENGTH];
+
+        /* Check if this entry is empty, or the actual inode we were looking for.*/
+        /* The second part should never happen, but it is here for completeness.*/
+        if (entry->inode == 0 || entry->inode == inode) {
+            entry->inode = inode;
+            entry->pid = pid;
+            return;
+        }
+    }
+
+    /* We will silently fail to insert the inode if we get too many collisions.*/
+    /* the _get function will return a zero pid.*/
+}
+
+static pid_t _get(ino64_t inode)
+{
+    uint32_t        hash = _hash(inode);
+    uint32_t        i;
+    inode_pid_ent_t *entry;
+
+    /* We will try for a maximum number of collisions.*/
+    for (i = 0; i < INODE_PID_TABLE_MAX_COLLISIONS; i++) {
+        entry = &inode_pid_table[(hash + i) % INODE_PID_TABLE_LENGTH];
+
+        /* Check if this entry is empty, or the actual inode we were looking for.*/
+        /* If the entry is empty it means the inode is not in the table and we*/
+        /* should return 0, the entry will also have a zero pid.*/
+        if (entry->inode == 0 || entry->inode == inode) {
+            return entry->pid;
+        }
+    }
+
+    /* We could not find the pid.*/
+    return 0;
+}
+
+void
+netsnmp_get_pid_from_inode_init(void)
 {
     DIR            *procdirs = NULL, *piddirs = NULL;
     char            path_name[PATH_MAX + 1];
     char            socket_lnk[NAME_MAX + 1];
-    int             filelen = 0, readlen = 0, iflag = 0;
+    int             filelen = 0, readlen = 0;
     struct dirent  *procinfo, *pidinfo;
     pid_t           pid = 0;
     ino64_t         temp_inode;
 
-    if (inode == 0) {
-        /* an inode set to zero means it is not associated with a process. */
-        return 0;
-    }
+    _clear();
 
+    /* walk over all directories in /proc*/
     if (!(procdirs = opendir(PROC_PATH))) {
         NETSNMP_LOGONCE((LOG_ERR, "snmpd: cannot open /proc\n"));
-        return 0;
+        return;
     }
 
     while ((procinfo = readdir(procdirs)) != NULL) {
-	const char* name = procinfo->d_name;
+        const char* name = procinfo->d_name;
+
+        /* A pid directory only contains digits, check for those.*/
         for (; *name; name++) {
             if (!isdigit(*name))
                 break;
@@ -52,14 +129,16 @@
         if(*name)
             continue;
 
+        /* Create the /proc/<pid>/fd/ path name.*/
         memset(path_name, '\0', PATH_MAX + 1);
         filelen = snprintf(path_name, PATH_MAX,
                            PROC_PATH "/%s/fd/", procinfo->d_name);
         if (filelen <= 0 || PATH_MAX < filelen)
             continue;
 
+        /* walk over all the files in /proc/<pid>/fd/*/
         if (!(piddirs = opendir(path_name)))
-            continue;
+        continue;
 
         while ((pidinfo = readdir(piddirs)) != NULL) {
             if (filelen + strlen(pidinfo->d_name) > PATH_MAX)
@@ -67,29 +146,41 @@
 
             strcpy(path_name + filelen, pidinfo->d_name);
 
+            /* The file discriptor is a symbolic link to a socket or a file.*/
+            /* Thus read the symbolic link.*/
             memset(socket_lnk, '\0', NAME_MAX + 1);
             readlen = readlink(path_name, socket_lnk, NAME_MAX);
             if (readlen < 0)
                 continue;
+
             socket_lnk[readlen] = '\0';
 
+            /* Check if to see if the file descriptor is a socket by comparing*/
+            /* the start to a string. Also extract the inode number from this*/
+            /* symbolic link.*/
             if (!strncmp(socket_lnk, SOCKET_TYPE_1, 8)) {
                 temp_inode = strtoull(socket_lnk + 8, NULL, 0);
             } else if (!strncmp(socket_lnk, SOCKET_TYPE_2, 7)) {
                 temp_inode = strtoull(socket_lnk + 7, NULL, 0);
-            } else
-		temp_inode = 0;
-            if (inode == temp_inode) {
+            } else {
+                temp_inode = 0;
+            }
+
+            /* Add the inode/pid combination to our hash table.*/
+            if (temp_inode != 0) {
                 pid = strtoul(procinfo->d_name, NULL, 0);
-                iflag = 1;
-                break;
+                _set(temp_inode, pid);
             }
         }
         closedir(piddirs);
-        if (iflag == 1)
-            break;
     }
     if (procdirs)
         closedir(procdirs);
-    return pid;
 }
+
+pid_t
+netsnmp_get_pid_from_inode(ino64_t inode)
+{
+    return _get(inode);
+}
+
diff --git a/agent/mibgroup/util_funcs/get_pid_from_inode.h b/agent/mibgroup/util_funcs/get_pid_from_inode.h
index 2ad04e1..ad887a7 100644
--- a/agent/mibgroup/util_funcs/get_pid_from_inode.h
+++ b/agent/mibgroup/util_funcs/get_pid_from_inode.h
@@ -3,7 +3,7 @@
  * that controls a given inode on linux.
  */
 #ifndef NETSNMP_MIBGROUP_UTIL_FUNCS_GET_PID_FROM_INODE_H
-#define NETSNMP_MIBGROUP_UTIL_FUNCS_HEADER_SIMPLE_TABLE_H
+#define NETSNMP_MIBGROUP_UTIL_FUNCS_GET_PID_FROM_INODE_H
 
 #ifndef linux
 config_error(get_pid_from_inode is only suppored on linux)
@@ -28,6 +28,7 @@
 
 #include <sys/types.h>
 
+void netsnmp_get_pid_from_inode_init(void);
 pid_t netsnmp_get_pid_from_inode(ino64_t);
 
-#endif /* NETSNMP_MIBGROUP_UTIL_FUNCS_HEADER_SIMPLE_TABLE_H */
+#endif /* NETSNMP_MIBGROUP_UTIL_FUNCS_GET_PID_FROM_INODE_H */
diff --git a/agent/mibgroup/utilities/iquery.c b/agent/mibgroup/utilities/iquery.c
index 3beebc6..860590f 100644
--- a/agent/mibgroup/utilities/iquery.c
+++ b/agent/mibgroup/utilities/iquery.c
@@ -1,9 +1,19 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include "utilities/iquery.h"
 
+netsnmp_feature_child_of(iquery_all, libnetsnmpmibs)
+netsnmp_feature_child_of(iquery, iquery_all)
+netsnmp_feature_child_of(iquery_community_session, iquery_all)
+netsnmp_feature_child_of(iquery_pdu_session, iquery_all)
+
+netsnmp_feature_require(query_set_default_session)
+
+#ifndef NETSNMP_FEATURE_REMOVE_IQUERY
+
 void
 netsnmp_parse_iquerySecLevel(const char *token, char *line)
 {
@@ -120,6 +130,7 @@
      *
      **************************/
 
+#ifndef NETSNMP_FEATURE_REMOVE_IQUERY_PDU_SESSION
 netsnmp_session *netsnmp_iquery_pdu_session(netsnmp_pdu* pdu) {
     if (!pdu)
        return NULL;
@@ -138,6 +149,7 @@
                            pdu->securityEngineID,
                            pdu->securityEngineIDLen);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IQUERY_PDU_SESSION */
 
 netsnmp_session *netsnmp_iquery_user_session(char* secName){
     u_char eID[SNMP_MAXBUF_SMALL];
@@ -149,6 +161,7 @@
                            SNMP_SEC_LEVEL_AUTHNOPRIV, eID, elen);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_IQUERY_COMMUNITY_SESSION
 netsnmp_session *netsnmp_iquery_community_session( char* community, int version ) { 
     u_char eID[SNMP_MAXBUF_SMALL];
     size_t elen = snmpv3_get_engineID(eID, sizeof(eID));
@@ -156,6 +169,7 @@
     return netsnmp_iquery_session( community, version, version+1,
                            SNMP_SEC_LEVEL_NOAUTH, eID, elen);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IQUERY_COMMUNITY_SESSION */
 
 netsnmp_session *netsnmp_iquery_session(char* secName,   int   version,
                                         int   secModel,  int   secLevel,
@@ -192,3 +206,7 @@
     return ss;
 }
 
+#else /* NETSNMP_FEATURE_REMOVE_IQUERY */
+netsnmp_feature_unused(iquery);
+#endif /* NETSNMP_FEATURE_REMOVE_IQUERY */
+
diff --git a/agent/mibgroup/utilities/override.c b/agent/mibgroup/utilities/override.c
index d50b6e4..48ac281 100644
--- a/agent/mibgroup/utilities/override.c
+++ b/agent/mibgroup/utilities/override.c
@@ -50,6 +50,7 @@
                                  (u_char *) data->value, data->value_len);
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         if (requests->requestvb->type != data->type)
             netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);
@@ -87,6 +88,7 @@
     case MODE_SET_COMMIT:
         SNMP_FREE(data->set_space);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         snmp_log(LOG_ERR, "unsupported mode in override handler\n");
diff --git a/agent/mibgroup/winExtDLL.c b/agent/mibgroup/winExtDLL.c
index d78c185..f44f84f 100644
--- a/agent/mibgroup/winExtDLL.c
+++ b/agent/mibgroup/winExtDLL.c
@@ -82,6 +82,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/agent/mib_module_config.h>
 
 #ifdef USING_WINEXTDLL_MODULE
@@ -101,6 +102,8 @@
 #include "util_funcs.h"
 #include "winExtDLL.h"
 
+netsnmp_feature_require(oid_is_subtree)
+
 
 #define MAX_VALUE_NAME          16383
 #define MS_ASN_UINTEGER32 MS_ASN_UNSIGNED32
@@ -753,6 +756,79 @@
     return NULL;
 }
 
+/*
+ * Translate Net-SNMP request mode into an SnmpExtensionQuery() PDU type
+ * or into an SnmpExtensionQueryEx() request type.
+ */
+static int
+get_request_type(int mode, int request_type, UINT *nRequestType)
+{
+    switch (request_type) {
+    case 0:
+        /* SnmpExtensionQuery() PDU type */
+        switch (mode) {
+        case MODE_GET:
+            *nRequestType = SNMP_PDU_GET;
+            return 1;
+        case MODE_GETNEXT:
+            *nRequestType = SNMP_PDU_GETNEXT;
+            return 1;
+        case MODE_SET_RESERVE1:
+            return 0;
+        case MODE_SET_RESERVE2:
+            return 0;
+        case MODE_SET_ACTION:
+            return 0;
+        case MODE_SET_UNDO:
+            return 0;
+        case MODE_SET_COMMIT:
+            *nRequestType = SNMP_PDU_SET;
+            return 1;
+        case MODE_SET_FREE:
+            return 0;
+        default:
+            DEBUGMSG(("winExtDLL", "internal error: invalid mode %d.\n", mode));
+            netsnmp_assert(0);
+            return 0;
+        }
+    case 1:
+        /* SnmpExtensionQueryEx() request type */
+        switch (mode) {
+        case MODE_GET:
+            *nRequestType = SNMP_EXTENSION_GET;
+            return 1;
+        case MODE_GETNEXT:
+            *nRequestType = SNMP_EXTENSION_GET_NEXT;
+            return 1;
+        case MODE_SET_RESERVE1:
+            *nRequestType = SNMP_EXTENSION_SET_TEST;
+            return 1;
+        case MODE_SET_RESERVE2:
+            return 0;
+        case MODE_SET_ACTION:
+            return 0;
+        case MODE_SET_UNDO:
+            *nRequestType = SNMP_EXTENSION_SET_UNDO;
+            return 1;
+        case MODE_SET_COMMIT:
+            *nRequestType = SNMP_EXTENSION_SET_COMMIT;
+            return 1;
+        case MODE_SET_FREE:
+            *nRequestType = SNMP_EXTENSION_SET_CLEANUP;
+            return 1;
+        default:
+            DEBUGMSG(("winExtDLL", "internal error: invalid mode %d.\n", mode));
+            netsnmp_assert(0);
+            return 0;
+        }
+    default:
+        DEBUGMSG(("winExtDLL", "internal error: invalid argument %d.\n",
+                  request_type));
+        netsnmp_assert(0);
+        return 0;
+    }
+}
+
 static int
 var_winExtDLL(netsnmp_mib_handler *handler,
               netsnmp_handler_registration *reginfo,
@@ -779,35 +855,8 @@
         return SNMP_ERR_GENERR;
     }
 
-    switch (reqinfo->mode) {
-    case MODE_GET:
-        nRequestType = SNMP_EXTENSION_GET;
-        netsnmp_assert(!context_info_head);
-        break;
-    case MODE_GETNEXT:
-        nRequestType = SNMP_EXTENSION_GET_NEXT;
-        netsnmp_assert(!context_info_head);
-        break;
-    case MODE_SET_RESERVE1:
-        nRequestType = SNMP_EXTENSION_SET_TEST;
-        break;
-    case MODE_SET_RESERVE2:
-        return SNMP_ERR_NOERROR;
-    case MODE_SET_ACTION:
-        return SNMP_ERR_NOERROR;
-    case MODE_SET_UNDO:
-        nRequestType = SNMP_EXTENSION_SET_UNDO;
-        break;
-    case MODE_SET_COMMIT:
-        nRequestType = SNMP_EXTENSION_SET_COMMIT;
-        break;
-    case MODE_SET_FREE:
-        nRequestType = SNMP_EXTENSION_SET_CLEANUP;
-        break;
-    default:
-        DEBUGMSG(("winExtDLL",
-                  "internal error: invalid mode %d.\n", reqinfo->mode));
-        netsnmp_assert(0);
+    if (!get_request_type(reqinfo->mode, !!ext_dll_info->pfSnmpExtensionQueryEx,
+                          &nRequestType)) {
         return SNMP_ERR_NOERROR;
     }
 
diff --git a/agent/snmp_agent.c b/agent/snmp_agent.c
index 0946423..b96d650 100644
--- a/agent/snmp_agent.c
+++ b/agent/snmp_agent.c
@@ -44,6 +44,7 @@
  * @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #ifdef HAVE_LIMITS_H
@@ -107,6 +108,25 @@
 #include "smux/smux.h"
 #endif
 
+netsnmp_feature_child_of(snmp_agent, libnetsnmpagent)
+netsnmp_feature_child_of(agent_debugging_utilities, libnetsnmpagent)
+
+netsnmp_feature_child_of(allocate_globalcacheid, snmp_agent)
+netsnmp_feature_child_of(free_agent_snmp_session_by_session, snmp_agent)
+netsnmp_feature_child_of(check_all_requests_error, snmp_agent)
+netsnmp_feature_child_of(check_requests_error, snmp_agent)
+netsnmp_feature_child_of(request_set_error_idx, snmp_agent)
+netsnmp_feature_child_of(set_agent_uptime, snmp_agent)
+netsnmp_feature_child_of(agent_check_and_process, snmp_agent)
+
+netsnmp_feature_child_of(dump_sess_list, agent_debugging_utilities)
+
+netsnmp_feature_child_of(agent_remove_list_data, netsnmp_unused)
+netsnmp_feature_child_of(set_all_requests_error, netsnmp_unused)
+netsnmp_feature_child_of(addrcache_age, netsnmp_unused)
+netsnmp_feature_child_of(delete_subtree_cache, netsnmp_unused)
+
+
 NETSNMP_INLINE void
 netsnmp_agent_add_list_data(netsnmp_agent_request_info *ari,
                             netsnmp_data_list *node)
@@ -120,6 +140,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_AGENT_REMOVE_LIST_DATA
 NETSNMP_INLINE int
 netsnmp_agent_remove_list_data(netsnmp_agent_request_info *ari,
                                const char * name)
@@ -129,6 +150,7 @@
 
     return netsnmp_remove_list_node(&ari->agent_data, name);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_AGENT_REMOVE_LIST_DATA */
 
 NETSNMP_INLINE void    *
 netsnmp_agent_get_list_data(netsnmp_agent_request_info *ari,
@@ -181,7 +203,7 @@
 struct addrCache {
     char           *addr;
     int            status;
-    struct timeval lastHit;
+    struct timeval lastHitM;
 };
 
 static struct addrCache addrCache[SNMP_ADDRCACHE_SIZE];
@@ -227,11 +249,13 @@
 
 int      netsnmp_running = 1;
 
+#ifndef NETSNMP_FEATURE_REMOVE_ALLOCATE_GLOBALCACHEID
 int
 netsnmp_allocate_globalcacheid(void)
 {
     return ++current_globalid;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_ALLOCATE_GLOBALCACHEID */
 
 int
 netsnmp_get_local_cachid(netsnmp_cachemap *cache_store, int globalid)
@@ -594,15 +618,7 @@
     }
 }
 
-
-int
-getNextSessID(void)
-{
-    static int      SessionID = 0;
-
-    return ++SessionID;
-}
-
+#ifndef NETSNMP_FEATURE_REMOVE_AGENT_CHECK_AND_PROCESS
 /**
  * This function checks for packets arriving on the SNMP port and
  * processes them(snmp_read) if some are found, using the select(). If block
@@ -685,7 +701,7 @@
 
     return count;
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_AGENT_CHECK_AND_PROCESS */
 
 /*
  * Set up the address cache.  
@@ -741,7 +757,7 @@
     /*
      * First get the current and oldest allowable timestamps
      */
-    gettimeofday(&now, (struct timezone*) NULL);
+    netsnmp_get_monotonic_clock(&now);
     aged.tv_sec = now.tv_sec - SNMP_ADDRCACHE_MAXAGE;
     aged.tv_usec = now.tv_usec;
 
@@ -761,8 +777,8 @@
                 /*
                  * found a match
                  */
-                addrCache[i].lastHit = now;
-                if (timercmp(&addrCache[i].lastHit, &aged, <))
+                addrCache[i].lastHitM = now;
+                if (timercmp(&addrCache[i].lastHitM, &aged, <))
 		    rc = 1; /* should have expired, so is new */
 		else
 		    rc = 0; /* not expired, so is existing entry */
@@ -772,7 +788,7 @@
                 /*
                  * Used, but not this address. check if it's stale.
                  */
-                if (timercmp(&addrCache[i].lastHit, &aged, <)) {
+                if (timercmp(&addrCache[i].lastHitM, &aged, <)) {
                     /*
                      * Stale, reuse
                      */
@@ -790,8 +806,8 @@
                      */
                     if (oldest < 0)
                         oldest = i;
-                    else if (timercmp(&addrCache[i].lastHit,
-                                      &addrCache[oldest].lastHit, <))
+                    else if (timercmp(&addrCache[i].lastHitM,
+                                      &addrCache[oldest].lastHitM, <))
                         oldest = i;
                 } /* fresh */
             } /* used, no match */
@@ -808,7 +824,7 @@
              */
             addrCache[unused].addr = strdup(addr);
             addrCache[unused].status = SNMP_ADDRCACHE_USED;
-            addrCache[unused].lastHit = now;
+            addrCache[unused].lastHitM = now;
         }
         else { /* Otherwise, replace oldest entry */
             if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
@@ -818,7 +834,7 @@
             
             free(addrCache[oldest].addr);
             addrCache[oldest].addr = strdup(addr);
-            addrCache[oldest].lastHit = now;
+            addrCache[oldest].lastHitM = now;
         }
         rc = 1;
     }
@@ -836,11 +852,13 @@
  *
  * backwards compatability; not used anywhere
  */
+#ifndef NETSNMP_FEATURE_REMOVE_ADDRCACHE_AGE
 void
 netsnmp_addrcache_age(void)
 {
     (void)netsnmp_addrcache_add(NULL);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_ADDRCACHE_AGE */
 
 /*******************************************************************-o-******
  * netsnmp_agent_check_packet
@@ -971,9 +989,11 @@
             case SNMP_MSG_RESPONSE:
                 snmp_log(LOG_DEBUG, "  RESPONSE message\n");
                 break;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             case SNMP_MSG_SET:
                 snmp_log(LOG_DEBUG, "  SET message\n");
                 break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
             case SNMP_MSG_TRAP:
                 snmp_log(LOG_DEBUG, "  TRAP message\n");
                 break;
@@ -991,6 +1011,7 @@
                 snmp_log(LOG_DEBUG, "  REPORT message\n");
                 break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             case SNMP_MSG_INTERNAL_SET_RESERVE1:
                 snmp_log(LOG_DEBUG, "  INTERNAL RESERVE1 message\n");
                 break;
@@ -1014,6 +1035,7 @@
             case SNMP_MSG_INTERNAL_SET_UNDO:
                 snmp_log(LOG_DEBUG, "  INTERNAL UNDO message\n");
                 break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
             default:
                 snmp_log(LOG_DEBUG, "  UNKNOWN message, type=%02X\n",
@@ -1075,7 +1097,6 @@
     agent_nsap     *a = NULL, *n = NULL, **prevNext = &agent_nsap_list;
     int             handle = 0;
     void           *isp = NULL;
-    int             rc;
 
     if (t == NULL) {
         return -1;
@@ -1108,7 +1129,7 @@
 
     /* Optional supplimental transport configuration information and
        final call to actually open the transport */
-    if ((rc = netsnmp_sess_config_transport(s->transport_configuration, t))
+    if (netsnmp_sess_config_transport(s->transport_configuration, t)
         != SNMPERR_SUCCESS) {
         SNMP_FREE(s);
         SNMP_FREE(n);
@@ -1263,6 +1284,7 @@
         return 0;               /*  No error if ! MASTER_AGENT  */
     }
 
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
     /*
      * Have specific agent ports been specified?  
      */
@@ -1332,6 +1354,7 @@
         }
     } while(st && *st != '\0');
     SNMP_FREE(buf);
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
 
 #ifdef USING_AGENTX_MASTER_MODULE
     if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
@@ -1410,12 +1433,8 @@
         snmp_free_pdu(asp->pdu);
     if (asp->reqinfo)
         netsnmp_free_agent_request_info(asp->reqinfo);
-    if (asp->treecache) {
-        SNMP_FREE(asp->treecache);
-    }
-    if (asp->bulkcache) {
-        SNMP_FREE(asp->bulkcache);
-    }
+    SNMP_FREE(asp->treecache);
+    SNMP_FREE(asp->bulkcache);
     if (asp->requests) {
         int             i;
         for (i = 0; i < asp->vbcount; i++) {
@@ -1600,9 +1619,6 @@
 int
 netsnmp_wrap_up_request(netsnmp_agent_session *asp, int status)
 {
-    netsnmp_variable_list *var_ptr;
-    int             i;
-
     /*
      * if this request was a set, clear the global now that we are
      * done.
@@ -1622,6 +1638,7 @@
             asp->status = status;
 
         switch (asp->pdu->command) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             case SNMP_MSG_INTERNAL_SET_BEGIN:
             case SNMP_MSG_INTERNAL_SET_RESERVE1:
             case SNMP_MSG_INTERNAL_SET_RESERVE2:
@@ -1631,6 +1648,7 @@
                  */
                 save_set_cache(asp);
                 break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
             case SNMP_MSG_GETNEXT:
                 _fix_endofmibview(asp);
@@ -1649,6 +1667,7 @@
          * v1 query.  See RFC2576 - section 4.3
          */
 #ifndef NETSNMP_DISABLE_SNMPV1
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if ((asp->pdu->command == SNMP_MSG_SET) &&
             (asp->pdu->version == SNMP_VERSION_1)) {
             switch (asp->status) {
@@ -1683,8 +1702,10 @@
          */
         if ((asp->pdu->command != SNMP_MSG_SET) &&
             (asp->pdu->version == SNMP_VERSION_1)) {
-            for (var_ptr = asp->pdu->variables, i = 1;
-                 var_ptr != NULL; var_ptr = var_ptr->next_variable, i++) {
+            netsnmp_variable_list *var_ptr = asp->pdu->variables;
+            int                    i = 1;
+
+            while (var_ptr != NULL) {
                 switch (var_ptr->type) {
                     case SNMP_NOSUCHOBJECT:
                     case SNMP_NOSUCHINSTANCE:
@@ -1695,8 +1716,11 @@
                         asp->index = i;
                         break;
                 }
+                var_ptr = var_ptr->next_variable;
+                ++i;
             }
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 #endif /* snmpv1 support */
     } /** if asp->pdu */
 
@@ -1742,10 +1766,16 @@
     }
 
     if ((status == SNMP_ERR_NOERROR) && (asp->pdu)) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         snmp_increment_statistic_by((asp->pdu->command == SNMP_MSG_SET ?
                                      STAT_SNMPINTOTALSETVARS :
                                      STAT_SNMPINTOTALREQVARS),
                                     count_varbinds(asp->pdu->variables));
+#else /* NETSNMP_NO_WRITE_SUPPORT */
+        snmp_increment_statistic_by(STAT_SNMPINTOTALREQVARS,
+                                    count_varbinds(asp->pdu->variables));
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
     } else {
         /*
          * Use a copy of the original request
@@ -1790,6 +1820,7 @@
     return 1;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_DUMP_SESS_LIST
 void
 dump_sess_list(void)
 {
@@ -1801,6 +1832,7 @@
     }
     DEBUGMSG(("snmp_agent", "[NIL]\n"));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DUMP_SESS_LIST */
 
 void
 netsnmp_remove_and_free_agent_snmp_session(netsnmp_agent_session *asp)
@@ -1829,6 +1861,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_FREE_AGENT_SNMP_SESSION_BY_SESSION
 void
 netsnmp_free_agent_snmp_session_by_session(netsnmp_session * sess,
                                            void (*free_request)
@@ -1849,6 +1882,7 @@
         }
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_FREE_AGENT_SNMP_SESSION_BY_SESSION */
 
 /** handles an incoming SNMP packet into the agent */
 int
@@ -1966,7 +2000,6 @@
                              netsnmp_subtree *tp)
 {
     netsnmp_request_info *request = NULL;
-    int             cacheid;
 
     DEBUGMSGTL(("snmp_agent", "add_vb_to_cache(%8p, %d, ", asp, vbcount));
     DEBUGMSGOID(("snmp_agent", varbind_ptr->name,
@@ -2030,7 +2063,9 @@
             varbind_ptr->type = SNMP_ENDOFMIBVIEW;
             break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case SNMP_MSG_SET:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         case SNMP_MSG_GET:
             varbind_ptr->type = SNMP_NOSUCHOBJECT;
             break;
@@ -2039,6 +2074,8 @@
             return NULL;        /* shouldn't get here */
         }
     } else {
+        int cacheid;
+
         DEBUGMSGTL(("snmp_agent", "tp->start "));
         DEBUGMSGOID(("snmp_agent", tp->start_a, tp->start_len));
         DEBUGMSG(("snmp_agent", ", tp->end "));
@@ -2064,8 +2101,10 @@
         /*
          * for non-SET modes, set the type to NULL 
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (!MODE_IS_SET(asp->pdu->command)) {
-        DEBUGMSGTL(("verbose:asp", "asp %p reqinfo %p assigned to request\n",
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+            DEBUGMSGTL(("verbose:asp", "asp %p reqinfo %p assigned to request\n",
                     asp, asp->reqinfo));
             if (varbind_ptr->type == ASN_PRIV_INCL_RANGE) {
                 DEBUGMSGTL(("snmp_agent", "varbind %d is inclusive\n",
@@ -2073,7 +2112,9 @@
                 request->inclusive = 1;
             }
             varbind_ptr->type = ASN_NULL;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         /*
          * place them in a cache 
@@ -2400,6 +2441,7 @@
                                          NULL, 0);
             break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case SNMP_MSG_SET:
             view = in_a_view(varbind_ptr->name, &varbind_ptr->name_length,
                              asp->pdu, varbind_ptr->type);
@@ -2408,6 +2450,7 @@
                 return SNMP_ERR_NOACCESS;
             }
             break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         case SNMP_MSG_GETNEXT:
         case SNMP_MSG_GETBULK:
@@ -2478,10 +2521,7 @@
             if (!netsnmp_add_varbind_to_cache(asp, asp->requests[i].index,
                                               asp->requests[i].requestvb,
                                               asp->requests[i].subtree->next)) {
-                if (old_treecache != NULL) {
-                    SNMP_FREE(old_treecache);
-                    old_treecache = NULL;
-                }
+                SNMP_FREE(old_treecache);
             }
         } else if (asp->requests[i].requestvb->type == ASN_PRIV_RETRY) {
             /*
@@ -2491,17 +2531,12 @@
             if (!netsnmp_add_varbind_to_cache(asp, asp->requests[i].index,
                                               asp->requests[i].requestvb,
                                               asp->requests[i].subtree)) {
-                if (old_treecache != NULL) {
-                    SNMP_FREE(old_treecache);
-                    old_treecache = NULL;
-                }
+                SNMP_FREE(old_treecache);
             }
         }
     }
 
-    if (old_treecache != NULL) {
-        SNMP_FREE(old_treecache);
-    }
+    SNMP_FREE(old_treecache);
     return SNMP_ERR_NOERROR;
 }
 
@@ -2514,6 +2549,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_DELETE_SUBTREE_CACHE
 void
 netsnmp_delete_subtree_cache(netsnmp_agent_session *asp)
 {
@@ -2526,7 +2562,9 @@
         asp->treecache_num--;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DELETE_SUBTREE_CACHE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_ALL_REQUESTS_ERROR
 /*
  * check all requests for errors
  *
@@ -2557,7 +2595,9 @@
 
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_ALL_REQUESTS_ERROR */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_REQUESTS_ERROR
 int
 netsnmp_check_requests_error(netsnmp_request_info *requests)
 {
@@ -2570,6 +2610,7 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_REQUESTS_ERROR */
 
 int
 netsnmp_check_requests_status(netsnmp_agent_session *asp,
@@ -2645,6 +2686,7 @@
          * errors).
          */
         switch (asp->mode) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_COMMIT:
             retstatus = netsnmp_check_requests_status(asp,
 						      asp->treecache[i].
@@ -2658,6 +2700,7 @@
 						      requests_begin,
 						      SNMP_ERR_UNDOFAILED);
             break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         default:
             retstatus = netsnmp_check_requests_status(asp,
@@ -2768,6 +2811,7 @@
          * if the top request is a set, don't pop it
          * off if there are delegated requests
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if ((netsnmp_agent_queued_list->pdu->command == SNMP_MSG_SET) &&
             (agent_delegated_list)) {
 
@@ -2778,6 +2822,7 @@
                         "delegated requests finish, asp = %8p\n", asp));
             break;
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         /*
          * pop the first request and process it
@@ -2849,6 +2894,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_COMMIT:
         netsnmp_check_all_requests_status(asp, SNMP_ERR_COMMITFAILED);
         goto settop;
@@ -2884,6 +2930,7 @@
             return SNMP_ERR_NOERROR;
         }
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         break;
@@ -3083,6 +3130,7 @@
     return SNMP_ERR_NOERROR;
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 handle_set(netsnmp_agent_session *asp)
 {
@@ -3180,6 +3228,7 @@
     }
     return asp->status;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 int
 netsnmp_handle_request(netsnmp_agent_session *asp, int status)
@@ -3207,6 +3256,7 @@
         /*
          * check for set request
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (asp->pdu->command == SNMP_MSG_SET) {
             netsnmp_processing_set = asp;
 
@@ -3222,6 +3272,7 @@
                 return 1;
             }
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
     /*
@@ -3273,6 +3324,7 @@
      */
     switch (asp->pdu->command) {
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_INTERNAL_SET_RESERVE2:
     case SNMP_MSG_INTERNAL_SET_ACTION:
     case SNMP_MSG_INTERNAL_SET_COMMIT:
@@ -3282,6 +3334,7 @@
         if (status != SNMP_ERR_NOERROR)
             return status;
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     case SNMP_MSG_GET:
     case SNMP_MSG_GETNEXT:
@@ -3305,8 +3358,10 @@
          * fall through 
          */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_INTERNAL_SET_BEGIN:
     case SNMP_MSG_INTERNAL_SET_RESERVE1:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     default:
         asp->vbcount = count_varbinds(asp->pdu->variables);
         if (asp->vbcount) /* efence doesn't like 0 size allocs */
@@ -3396,6 +3451,7 @@
         status = handle_getnext_loop(asp);
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_SET:
 #ifdef NETSNMP_DISABLE_SET_SUPPORT
         return SNMP_ERR_NOTWRITABLE;
@@ -3424,6 +3480,7 @@
          * asp related cache is saved in cleanup 
          */
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     case SNMP_MSG_RESPONSE:
         snmp_increment_statistic(STAT_SNMPINGETRESPONSES);
@@ -3486,9 +3543,11 @@
             return SNMPERR_VALUE;
              */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case SNMP_MSG_INTERNAL_SET_RESERVE1:
             request->status = SNMP_ERR_NOCREATION;
             break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         default:
             request->status = SNMP_ERR_NOSUCHNAME;      /* WWW: correct? */
@@ -3532,6 +3591,7 @@
                               error_value);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_REQUEST_SET_ERROR_IDX
 /** set error for a request within a request list
  * @param request head of the request list
  * @param error_value error value for request
@@ -3559,6 +3619,7 @@
     return _request_set_error(req, request->agent_req_info->mode,
                               error_value);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REQUEST_SET_ERROR_IDX */
 
 /** set error for all requests
  * @param requests request list
@@ -3594,11 +3655,11 @@
 }
 
 /**
- * Return the value of 'sysUpTime' at the given marker
+ * Return the difference between pm and the agent start time in hundredths of
+ * a second.
+ * \deprecated Don't use in new code.
  *
- * @note Use netsnmp_get_agent_runtime() instead of this function if you need
- *   to know how much time elapsed since netsnmp_set_agent_starttime() has been
- *   called.
+ * @param[in] pm An absolute time as e.g. reported by gettimeofday().
  */
 u_long
 netsnmp_marker_uptime(marker_t pm)
@@ -3610,9 +3671,14 @@
     return res;
 }
 
-                        /*
-                         * struct timeval equivalents of these 
-                         */
+/**
+ * Return the difference between tv and the agent start time in hundredths of
+ * a second.
+ *
+ * \deprecated Use netsnmp_get_agent_uptime() instead.
+ *
+ * @param[in] tv An absolute time as e.g. reported by gettimeofday().
+ */
 u_long
 netsnmp_timeval_uptime(struct timeval * tv)
 {
@@ -3621,10 +3687,15 @@
 
 
 struct timeval  starttime;
+static struct timeval starttimeM;
 
 /**
  * Return a pointer to the variable in which the Net-SNMP start time has
  * been stored.
+ *
+ * @note Use netsnmp_get_agent_runtime() instead of this function if you need
+ *   to know how much time elapsed since netsnmp_set_agent_starttime() has been
+ *   called.
  */
 const_marker_t        
 netsnmp_get_agent_starttime(void)
@@ -3643,48 +3714,70 @@
 {
     struct timeval now, delta;
 
-    gettimeofday(&now, NULL);
-    NETSNMP_TIMERSUB(&now, &starttime, &delta);
+    netsnmp_get_monotonic_clock(&now);
+    NETSNMP_TIMERSUB(&now, &starttimeM, &delta);
     return delta.tv_sec * (uint64_t)100 + delta.tv_usec / 10000;
 }
 
 /**
  * Set the time at which Net-SNMP started either to the current time
  * (if s == NULL) or to *s (if s is not NULL).
+ *
+ * @see See also netsnmp_set_agent_uptime().
  */
 void            
 netsnmp_set_agent_starttime(marker_t s)
 {
-    if (s)
+    if (s) {
+        struct timeval nowA, nowM;
+
         starttime = *(struct timeval*)s;
-    else
+        gettimeofday(&nowA, NULL);
+        netsnmp_get_monotonic_clock(&nowM);
+        NETSNMP_TIMERSUB(&starttime, &nowA, &starttimeM);
+        NETSNMP_TIMERADD(&starttimeM, &nowM, &starttimeM);
+    } else {
         gettimeofday(&starttime, NULL);
+        netsnmp_get_monotonic_clock(&starttimeM);
+    }
 }
 
 
-                /*
-                 * Return the current value of 'sysUpTime' 
-                 */
+/**
+ * Return the current value of 'sysUpTime' 
+ */
 u_long
 netsnmp_get_agent_uptime(void)
 {
-    struct timeval  now;
-    gettimeofday(&now, NULL);
+    struct timeval now, delta;
 
-    return netsnmp_timeval_uptime(&now);
+    netsnmp_get_monotonic_clock(&now);
+    NETSNMP_TIMERSUB(&now, &starttimeM, &delta);
+    return delta.tv_sec * 100UL + delta.tv_usec / 10000;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SET_AGENT_UPTIME
+/**
+ * Set the start time from which 'sysUpTime' is computed.
+ *
+ * @param[in] hsec New sysUpTime in hundredths of a second.
+ *
+ * @see See also netsnmp_set_agent_starttime().
+ */
 void
 netsnmp_set_agent_uptime(u_long hsec)
 {
-    struct timeval  now;
+    struct timeval  nowA, nowM;
     struct timeval  new_uptime;
 
-    gettimeofday(&now, NULL);
+    gettimeofday(&nowA, NULL);
+    netsnmp_get_monotonic_clock(&nowM);
     new_uptime.tv_sec = hsec / 100;
-    new_uptime.tv_usec = (hsec - new_uptime.tv_sec * 100) * 10000L;
-    NETSNMP_TIMERSUB(&now, &new_uptime, &starttime);
+    new_uptime.tv_usec = (uint32_t)(hsec - new_uptime.tv_sec * 100) * 10000L;
+    NETSNMP_TIMERSUB(&nowA, &new_uptime, &starttime);
+    NETSNMP_TIMERSUB(&nowM, &new_uptime, &starttimeM);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SET_AGENT_UPTIME */
 
 
 /*************************************************************************
@@ -3735,6 +3828,7 @@
  * @param error_value error value for requests
  * @return error_value
  */
+#ifndef NETSNMP_FEATURE_REMOVE_SET_ALL_REQUESTS_ERROR
 int
 netsnmp_set_all_requests_error(netsnmp_agent_request_info *reqinfo,
                                netsnmp_request_info *requests,
@@ -3743,4 +3837,5 @@
     netsnmp_request_set_error_all(requests, error_value);
     return error_value;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SET_ALL_REQUESTS_ERROR */
 /** @} */
diff --git a/agent/snmp_perl.c b/agent/snmp_perl.c
index 3f0a216..48d9695 100644
--- a/agent/snmp_perl.c
+++ b/agent/snmp_perl.c
@@ -36,6 +36,7 @@
     const char     *perl_init_file = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID,
 							   NETSNMP_DS_AGENT_PERL_INIT_FILE);
     char            init_file[SNMP_MAXBUF];
+    int             res;
 
     static int      have_done_init = 0;
 
@@ -57,8 +58,11 @@
     env = NULL;
     PERL_SYS_INIT3(&argc, &argv, &env);
     my_perl = perl_alloc();
-    if (!my_perl)
+    if (!my_perl) {
+        snmp_log(LOG_ERR,
+                 "embedded perl support failed to initialize (perl_alloc())\n");
         goto bail_out;
+    }
 
     perl_construct(my_perl);
 
@@ -66,11 +70,21 @@
     PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
 #endif
 
-    if (perl_parse(my_perl, xs_init, 2, embedargs, NULL))
+    res = perl_parse(my_perl, xs_init, 2, embedargs, NULL);
+    if (res) {
+        snmp_log(LOG_ERR,
+                 "embedded perl support failed to initialize (perl_parse(%s)"
+                 " returned %d)\n", embedargs[1], res);
         goto bail_out;
+    }
 
-    if (perl_run(my_perl))
+    res = perl_run(my_perl);
+    if (res) {
+        snmp_log(LOG_ERR,
+                 "embedded perl support failed to initialize (perl_run()"
+                 " returned %d)\n", res);
         goto bail_out;
+    }
 
     free(embedargs[0]);
     free(embedargs[1]);
@@ -82,7 +96,6 @@
   bail_out:
     free(embedargs[0]);
     free(embedargs[1]);
-    snmp_log(LOG_ERR, "embedded perl support failed to initialize\n");
     netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
 			   NETSNMP_DS_AGENT_DISABLE_PERL, 1);
     return;
diff --git a/agent/snmp_vars.c b/agent/snmp_vars.c
index a4ea379..2f9e6ef 100644
--- a/agent/snmp_vars.c
+++ b/agent/snmp_vars.c
@@ -375,7 +375,7 @@
     clear_sec_mod();
     clear_snmp_enum();
     clear_callback();
-    clear_user_list();
+    shutdown_secmod();
     netsnmp_addrcache_destroy();
 #ifdef NETSNMP_CAN_USE_NLIST
     free_kmem();
diff --git a/agent/snmpd.c b/agent/snmpd.c
index b3cfe32..cfc7bce 100644
--- a/agent/snmpd.c
+++ b/agent/snmpd.c
@@ -36,6 +36,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/types.h>
 
 #if HAVE_IO_H
@@ -111,6 +112,9 @@
 #if HAVE_GRP_H
 #include <grp.h>
 #endif
+#ifdef HAVE_CRTDBG_H
+#include <crtdbg.h>
+#endif
 
 #ifndef PATH_MAX
 # ifdef _POSIX_PATH_MAX
@@ -136,19 +140,17 @@
 #include <net-snmp/library/large_fd_set.h>
 
 #include "m2m.h"
+#include <net-snmp/agent/agent_module_config.h>
 #include <net-snmp/agent/mib_module_config.h>
 
 #include "snmpd.h"
-#include "mibgroup/struct.h"
-#include <net-snmp/agent/mib_modules.h>
 
-#include "mibgroup/util_funcs.h"
+#include <net-snmp/agent/mib_modules.h>
 
 #include <net-snmp/agent/agent_trap.h>
 
 #include <net-snmp/agent/table.h>
 #include <net-snmp/agent/table_iterator.h>
-#include "mib_module_includes.h"
 
 /*
  * Include winservice.h to support Windows Service
@@ -162,6 +164,10 @@
 
 #endif
 
+netsnmp_feature_want(logging_file)
+netsnmp_feature_want(logging_stdio)
+netsnmp_feature_want(logging_syslog)
+
 /*
  * Globals.
  */
@@ -189,9 +195,11 @@
 const char     *app_name = "snmpd";
 
 extern int      netsnmp_running;
+#ifdef USING_UTIL_FUNCS_RESTART_MODULE
 extern char   **argvrestartp;
 extern char    *argvrestart;
 extern char    *argvrestartname;
+#endif /* USING_UTIL_FUNCS_RESTART_MODULE */
 
 #ifdef USING_SMUX_MODULE
 #include <mibgroup/smux/smux.h>
@@ -386,9 +394,13 @@
 {
     /* Disable all logs and log the error via syslog */
     snmp_disable_log();
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
     snmp_enable_syslog();
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     snmp_log(LOG_ERR, "Exiting on signal %d\n", a);
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
     snmp_disable_syslog();
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     exit(1);
 }
 
@@ -429,16 +441,12 @@
     int             dont_fork = 0, do_help = 0;
     int             log_set = 0;
     int             agent_mode = -1;
-    char           *cptr, **argvptr;
     char           *pid_file = NULL;
     char            option_compatability[] = "-Le";
 #if HAVE_GETPID
     int fd;
     FILE           *PID;
 #endif
-#if HAVE_GETPWNAM && HAVE_PWD_H
-    struct passwd  *info;
-#endif
 
 #ifndef WIN32
     /*
@@ -518,11 +526,13 @@
             argv[i] = option_compatability;            
     }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 #ifdef WIN32
     snmp_log_syslogname(app_name_long);
 #else
     snmp_log_syslogname(app_name);
 #endif
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
                           NETSNMP_DS_LIB_APPTYPE, app_name);
 
@@ -566,9 +576,9 @@
             break;
 
         case 'd':
-            snmp_set_dump_packet(++snmp_dump_packet);
-            netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
-				   NETSNMP_DS_AGENT_VERBOSE, 1);
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
+                                   NETSNMP_DS_LIB_DUMP_PACKET,
+                                   ++snmp_dump_packet);
             break;
 
         case 'D':
@@ -592,19 +602,18 @@
                 int             gid;
 
                 gid = strtoul(optarg, &ecp, 10);
+#if HAVE_GETGRNAM && HAVE_PWD_H
                 if (*ecp) {
-#if HAVE_GETPWNAM && HAVE_PWD_H
                     struct group  *info;
+
                     info = getgrnam(optarg);
-                    if (info) {
-                        gid = info->gr_gid;
-                    } else {
+                    gid = info ? info->gr_gid : -1;
+                    endgrent();
+                }
 #endif
-                        fprintf(stderr, "Bad group id: %s\n", optarg);
-                        exit(1);
-#if HAVE_GETPWNAM && HAVE_PWD_H
-                    }
-#endif
+                if (gid < 0) {
+                    fprintf(stderr, "Bad group id: %s\n", optarg);
+                    exit(1);
                 }
                 netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 				   NETSNMP_DS_AGENT_GROUPID, gid);
@@ -630,6 +639,7 @@
             }
             break;
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
         case 'l':
             printf("Warning: -l option is deprecated, use -Lf <file> instead\n");
             if (optarg != NULL) {
@@ -647,6 +657,7 @@
                 usage(argv[0]);
             }
             break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
         case 'L':
 	    if  (snmp_log_options( optarg, argc, argv ) < 0 ) {
@@ -692,7 +703,8 @@
             break;
 
         case 'q':
-            snmp_set_quick_print(1);
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                   NETSNMP_DS_LIB_QUICK_PRINT, 1);
             break;
 
         case 'r':
@@ -700,6 +712,7 @@
 				      NETSNMP_DS_AGENT_NO_ROOT_ACCESS);
             break;
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
         case 's':
             printf("Warning: -s option is deprecated, use -Lsd instead\n");
             snmp_enable_syslog();
@@ -753,6 +766,7 @@
                 usage(argv[0]);
             }
             break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
         case 'U':
             netsnmp_ds_toggle_boolean(NETSNMP_DS_APPLICATION_ID, 
@@ -766,18 +780,18 @@
                 int             uid;
 
                 uid = strtoul(optarg, &ecp, 10);
+#if HAVE_GETPWNAM && HAVE_PWD_H
                 if (*ecp) {
-#if HAVE_GETPWNAM && HAVE_PWD_H
+                    struct passwd  *info;
+
                     info = getpwnam(optarg);
-                    if (info) {
-                        uid = info->pw_uid;
-                    } else {
+                    uid = info ? info->pw_uid : -1;
+                    endpwent();
+                }
 #endif
-                        fprintf(stderr, "Bad user id: %s\n", optarg);
-                        exit(1);
-#if HAVE_GETPWNAM && HAVE_PWD_H
-                    }
-#endif
+                if (uid < 0) {
+                    fprintf(stderr, "Bad user id: %s\n", optarg);
+                    exit(1);
                 }
                 netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 				   NETSNMP_DS_AGENT_USERID, uid);
@@ -841,6 +855,7 @@
     }
 
     if (optind < argc) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
         /*
          * There are optional transport addresses on the command line.  
          */
@@ -866,51 +881,62 @@
         DEBUGMSGTL(("snmpd/main", "port spec: %s\n",
                     netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID, 
 					  NETSNMP_DS_AGENT_PORTS)));
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        fprintf(stderr, "You specified ports to open; this agent was built to only send notifications\n");
+        exit(1);
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     }
 
 #ifdef NETSNMP_LOGFILE
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
     if (0 == log_set)
         snmp_enable_filelog(NETSNMP_LOGFILE,
                             netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
                                                    NETSNMP_DS_LIB_APPEND_LOGFILES));
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 #endif
 
-    /*
-     * Initialize a argv set to the current for restarting the agent.   
-     */
-    argvrestartp = (char **)malloc((argc + 2) * sizeof(char *));
-    argvptr = argvrestartp;
-    for (i = 0, ret = 1; i < argc; i++) {
-        ret += strlen(argv[i]) + 1;
+#ifdef USING_UTIL_FUNCS_RESTART_MODULE
+    {
+        /*
+         * Initialize a argv set to the current for restarting the agent.
+         */
+        char *cptr, **argvptr;
+
+        argvrestartp = (char **)malloc((argc + 2) * sizeof(char *));
+        argvptr = argvrestartp;
+        for (i = 0, ret = 1; i < argc; i++) {
+            ret += strlen(argv[i]) + 1;
+        }
+        argvrestart = (char *) malloc(ret);
+        argvrestartname = (char *) malloc(strlen(argv[0]) + 1);
+        if (!argvrestartp || !argvrestart || !argvrestartname) {
+            fprintf(stderr, "malloc failure processing argvrestart\n");
+            exit(1);
+        }
+        strcpy(argvrestartname, argv[0]);
+
+        for (cptr = argvrestart, i = 0; i < argc; i++) {
+            strcpy(cptr, argv[i]);
+            *(argvptr++) = cptr;
+            cptr += strlen(argv[i]) + 1;
+        }
     }
-    argvrestart = (char *) malloc(ret);
-    argvrestartname = (char *) malloc(strlen(argv[0]) + 1);
-    if (!argvrestartp || !argvrestart || !argvrestartname) {
-        fprintf(stderr, "malloc failure processing argvrestart\n");
-        exit(1);
-    }
-    strcpy(argvrestartname, argv[0]);
+#endif /* USING_UTIL_FUNCS_RESTART_MODULE */
+
     if (agent_mode == -1) {
-        if (strstr(argvrestartname, "agentxd") != NULL) {
-            netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
+        if (strstr(argv[0], "agentxd") != NULL) {
+            netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
 				   NETSNMP_DS_AGENT_ROLE, SUB_AGENT);
         } else {
-            netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
+            netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
 				   NETSNMP_DS_AGENT_ROLE, MASTER_AGENT);
         }
     } else {
-        netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
+        netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
 			       NETSNMP_DS_AGENT_ROLE, agent_mode);
     }
 
-    for (cptr = argvrestart, i = 0; i < argc; i++) {
-        strcpy(cptr, argv[i]);
-        *(argvptr++) = cptr;
-        cptr += strlen(argv[i]) + 1;
-    }
-    *cptr = 0;
-    *argvptr = NULL;
-
     SOCK_STARTUP;
     if (init_agent(app_name) != 0) {
         snmp_log(LOG_ERR, "Agent initialization failed\n");
@@ -927,7 +953,8 @@
         /*
          * Some error opening one of the specified agent transports.  
          */
-        Exit(1);                /*  Exit logs exit val for us  */
+        snmp_log(LOG_ERR, "Server Exiting with code 1\n");
+        exit(1);
     }
 
     /*
@@ -936,12 +963,20 @@
     if(!dont_fork) {
         int quit = ! netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
                                             NETSNMP_DS_AGENT_QUIT_IMMEDIATELY);
-        ret = netsnmp_daemonize(quit, snmp_stderrlog_status());
+        ret = netsnmp_daemonize(quit,
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
+                                snmp_stderrlog_status()
+#else /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
+                                0
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
+            );
         /*
          * xxx-rks: do we care if fork fails? I think we should...
          */
-        if(ret != 0)
-            Exit(1);                /*  Exit logs exit val for us  */
+        if(ret != 0) {
+            snmp_log(LOG_ERR, "Server Exiting with code 1\n");
+            exit(1);
+        }
     }
 
 #if HAVE_GETPID
@@ -1015,6 +1050,8 @@
     if ((uid = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID, 
 				  NETSNMP_DS_AGENT_USERID)) > 0) {
 #if HAVE_GETPWNAM && HAVE_PWD_H && HAVE_INITGROUPS
+        struct passwd *info;
+
         /*
          * Set supplementary groups before changing UID
          *   (which probably involves giving up privileges)
@@ -1030,6 +1067,7 @@
                 }
             }
         }
+        endpwent();
 #endif
         DEBUGMSGTL(("snmpd/main", "Changing uid to %d.\n", uid));
         if (setuid(uid) == -1) {
@@ -1091,9 +1129,12 @@
     agent_status = AGENT_STOPPED;
 #endif
 
+#ifdef USING_UTIL_FUNCS_RESTART_MODULE
     SNMP_FREE(argvrestartname);
     SNMP_FREE(argvrestart);
     SNMP_FREE(argvrestartp);
+#endif /* USING_UTIL_FUNCS_RESTART_MODULE */
+
     SOCK_CLEANUP;
     return 0;
 }                               /* End main() -- snmpd */
@@ -1227,22 +1268,27 @@
         }
 #endif                          /* USING_SMUX_MODULE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
         netsnmp_external_event_info2(&numfds, &readfds, &writefds, &exceptfds);
+#endif /* NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
 
     reselect:
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_SIGNAL
         for (i = 0; i < NUM_EXTERNAL_SIGS; i++) {
             if (external_signal_scheduled[i]) {
                 external_signal_scheduled[i]--;
                 external_signal_handler[i](i);
             }
         }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_SIGNAL */
 
         DEBUGMSGTL(("snmpd/select", "select( numfds=%d, ..., tvp=%p)\n",
                     numfds, tvp));
-        if(tvp)
-            DEBUGMSGTL(("timer", "tvp %ld.%ld\n", tvp->tv_sec, tvp->tv_usec));
-        count = net_snmp_large_fd_set_select(numfds, &readfds, &writefds, &exceptfds,
-				      tvp);
+        if (tvp)
+            DEBUGMSGTL(("timer", "tvp %ld.%ld\n", (long) tvp->tv_sec,
+                        (long) tvp->tv_usec));
+        count = netsnmp_large_fd_set_select(numfds, &readfds, &writefds, &exceptfds,
+				     tvp);
         DEBUGMSGTL(("snmpd/select", "returned, count = %d\n", count));
 
         if (count > 0) {
@@ -1271,8 +1317,12 @@
             }
 
 #endif                          /* USING_SMUX_MODULE */
+
+#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
             netsnmp_dispatch_external_events2(&count, &readfds,
                                               &writefds, &exceptfds);
+#endif /* NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
+
             /* If there are still events leftover, process them */
             if (count > 0) {
               snmp_read2(&readfds);
@@ -1410,6 +1460,10 @@
     int             nRunType = RUN_AS_CONSOLE;
     int             quiet = 0;
     
+#if 0
+    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF /*| _CRTDBG_CHECK_ALWAYS_DF*/);
+#endif
+
     nRunType = ParseCmdLineForServiceOption(argc, argv, &quiet);
 
     switch (nRunType) {
diff --git a/apps/Makefile.depend b/apps/Makefile.depend
index 985c2c9..15cb176 100644
--- a/apps/Makefile.depend
+++ b/apps/Makefile.depend
@@ -5,6 +5,7 @@
 ./agentxtrap.lo: ../include/net-snmp/system/sysv.h
 ./agentxtrap.lo: ../include/net-snmp/system/generic.h
 ./agentxtrap.lo: ../include/net-snmp/machine/generic.h
+./agentxtrap.lo: ../include/net-snmp/net-snmp-features.h
 ./agentxtrap.lo: ../include/net-snmp/net-snmp-includes.h
 ./agentxtrap.lo: ../include/net-snmp/definitions.h
 ./agentxtrap.lo: ../include/net-snmp/types.h
@@ -24,11 +25,8 @@
 ./agentxtrap.lo: ../include/net-snmp/library/snmp_service.h
 ./agentxtrap.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./agentxtrap.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agentxtrap.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agentxtrap.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./agentxtrap.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./agentxtrap.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agentxtrap.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agentxtrap.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./agentxtrap.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./agentxtrap.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agentxtrap.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -73,44 +71,9 @@
 ./agentxtrap.lo: ../include/net-snmp/library/lcd_time.h
 ./agentxtrap.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agentxtrap.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agentxtrap.lo: ../include/net-snmp/library/snmptsm.h
 ./agentxtrap.lo: ../include/net-snmp/library/snmpusm.h
-./agentxtrap.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
-./agentxtrap.lo: ../include/net-snmp/agent/mib_module_config.h
-./agentxtrap.lo: ../include/net-snmp/agent/agent_module_config.h
-./agentxtrap.lo: ../include/net-snmp/agent/snmp_agent.h
-./agentxtrap.lo: ../include/net-snmp/agent/snmp_vars.h
-./agentxtrap.lo: ../include/net-snmp/agent/agent_handler.h
-./agentxtrap.lo: ../include/net-snmp/agent/var_struct.h
-./agentxtrap.lo: ../include/net-snmp/agent/agent_registry.h
-./agentxtrap.lo: ../include/net-snmp/library/fd_event_manager.h
 ./agentxtrap.lo: ../include/net-snmp/agent/ds_agent.h
-./agentxtrap.lo: ../include/net-snmp/agent/agent_read_config.h
-./agentxtrap.lo: ../include/net-snmp/agent/agent_trap.h
-./agentxtrap.lo: ../include/net-snmp/agent/all_helpers.h
-./agentxtrap.lo: ../include/net-snmp/agent/instance.h
-./agentxtrap.lo: ../include/net-snmp/agent/baby_steps.h
-./agentxtrap.lo: ../include/net-snmp/agent/scalar.h
-./agentxtrap.lo: ../include/net-snmp/agent/scalar_group.h
-./agentxtrap.lo: ../include/net-snmp/agent/watcher.h
-./agentxtrap.lo: ../include/net-snmp/agent/multiplexer.h
-./agentxtrap.lo: ../include/net-snmp/agent/null.h
-./agentxtrap.lo: ../include/net-snmp/agent/debug_handler.h
-./agentxtrap.lo: ../include/net-snmp/agent/cache_handler.h
-./agentxtrap.lo: ../include/net-snmp/agent/old_api.h
-./agentxtrap.lo: ../include/net-snmp/agent/read_only.h
-./agentxtrap.lo: ../include/net-snmp/agent/row_merge.h
-./agentxtrap.lo: ../include/net-snmp/agent/serialize.h
-./agentxtrap.lo: ../include/net-snmp/agent/bulk_to_next.h
-./agentxtrap.lo: ../include/net-snmp/agent/mode_end_call.h
-./agentxtrap.lo: ../include/net-snmp/agent/table.h
-./agentxtrap.lo: ../include/net-snmp/agent/table_data.h
-./agentxtrap.lo: ../include/net-snmp/agent/table_dataset.h
-./agentxtrap.lo: ../include/net-snmp/agent/table_tdata.h
-./agentxtrap.lo: ../include/net-snmp/agent/table_iterator.h
-./agentxtrap.lo: ../include/net-snmp/agent/table_container.h
-./agentxtrap.lo: ../include/net-snmp/agent/table_array.h
-./agentxtrap.lo: ../include/net-snmp/agent/mfd.h
-./agentxtrap.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./agentxtrap.lo: ../agent/mibgroup/agentx/agentx_config.h
 ./agentxtrap.lo: ../agent/mibgroup/agentx/client.h
 ./agentxtrap.lo: ../agent/mibgroup/agentx/protocol.h
@@ -134,11 +97,8 @@
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_service.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./encode_keychange.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./encode_keychange.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./encode_keychange.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./encode_keychange.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./encode_keychange.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -148,6 +108,7 @@
 ./encode_keychange.lo: ../include/net-snmp/mib_api.h
 ./encode_keychange.lo: ../include/net-snmp/library/parse.h
 ./encode_keychange.lo: ../include/net-snmp/library/oid_stash.h
+./encode_keychange.lo: ../include/net-snmp/net-snmp-features.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_impl.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp-tc.h
@@ -182,9 +143,11 @@
 ./encode_keychange.lo: ../include/net-snmp/library/lcd_time.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_secmod.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./encode_keychange.lo: ../include/net-snmp/library/snmptsm.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpbulkget.lo: ../include/net-snmp/net-snmp-config.h
-./snmpbulkget.lo: ../include/net-snmp/utilities.h ../include/net-snmp/types.h
+./snmpbulkget.lo: ../include/net-snmp/utilities.h
+./snmpbulkget.lo: ../include/net-snmp/types.h
 ./snmpbulkget.lo: ../include/net-snmp/library/oid.h
 ./snmpbulkget.lo: ../include/net-snmp/library/types.h
 ./snmpbulkget.lo: ../include/net-snmp/definitions.h
@@ -202,11 +165,8 @@
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -216,6 +176,7 @@
 ./snmpbulkget.lo: ../include/net-snmp/mib_api.h
 ./snmpbulkget.lo: ../include/net-snmp/library/parse.h
 ./snmpbulkget.lo: ../include/net-snmp/library/oid_stash.h
+./snmpbulkget.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp-tc.h
@@ -250,6 +211,7 @@
 ./snmpbulkget.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpbulkwalk.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpbulkwalk.lo: ../include/net-snmp/net-snmp-includes.h
@@ -271,11 +233,8 @@
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -285,6 +244,7 @@
 ./snmpbulkwalk.lo: ../include/net-snmp/mib_api.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/parse.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/oid_stash.h
+./snmpbulkwalk.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp-tc.h
@@ -319,6 +279,7 @@
 ./snmpbulkwalk.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpdelta.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpdelta.lo: ../include/net-snmp/net-snmp-includes.h
@@ -339,11 +300,8 @@
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpdelta.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpdelta.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpdelta.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpdelta.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpdelta.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -353,6 +311,7 @@
 ./snmpdelta.lo: ../include/net-snmp/mib_api.h
 ./snmpdelta.lo: ../include/net-snmp/library/parse.h
 ./snmpdelta.lo: ../include/net-snmp/library/oid_stash.h
+./snmpdelta.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp-tc.h
@@ -387,11 +346,11 @@
 ./snmpdelta.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpdelta.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpdf.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpdf.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpdf.lo: ../include/net-snmp/definitions.h
-./snmpdf.lo: ../include/net-snmp/types.h
+./snmpdf.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
 ./snmpdf.lo: ../include/net-snmp/library/oid.h
 ./snmpdf.lo: ../include/net-snmp/library/types.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp_api.h
@@ -407,11 +366,8 @@
 ./snmpdf.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpdf.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpdf.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpdf.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpdf.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpdf.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -420,6 +376,7 @@
 ./snmpdf.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./snmpdf.lo: ../include/net-snmp/library/parse.h
 ./snmpdf.lo: ../include/net-snmp/library/oid_stash.h
+./snmpdf.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp-tc.h
@@ -453,9 +410,11 @@
 ./snmpdf.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpdf.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpget.lo: ../include/net-snmp/net-snmp-config.h
-./snmpget.lo: ../include/net-snmp/utilities.h ../include/net-snmp/types.h
+./snmpget.lo: ../include/net-snmp/utilities.h
+./snmpget.lo: ../include/net-snmp/types.h
 ./snmpget.lo: ../include/net-snmp/library/oid.h
 ./snmpget.lo: ../include/net-snmp/library/types.h
 ./snmpget.lo: ../include/net-snmp/definitions.h
@@ -473,11 +432,8 @@
 ./snmpget.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpget.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpget.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpget.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpget.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpget.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpget.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpget.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpget.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpget.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpget.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpget.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -486,6 +442,7 @@
 ./snmpget.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./snmpget.lo: ../include/net-snmp/library/parse.h
 ./snmpget.lo: ../include/net-snmp/library/oid_stash.h
+./snmpget.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpget.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpget.lo: ../include/net-snmp/library/snmp.h
 ./snmpget.lo: ../include/net-snmp/library/snmp-tc.h
@@ -520,6 +477,7 @@
 ./snmpget.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpget.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpget.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpget.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpget.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpgetnext.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpgetnext.lo: ../include/net-snmp/net-snmp-includes.h
@@ -541,11 +499,8 @@
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -555,6 +510,7 @@
 ./snmpgetnext.lo: ../include/net-snmp/mib_api.h
 ./snmpgetnext.lo: ../include/net-snmp/library/parse.h
 ./snmpgetnext.lo: ../include/net-snmp/library/oid_stash.h
+./snmpgetnext.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp-tc.h
@@ -589,11 +545,11 @@
 ./snmpgetnext.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpset.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpset.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpset.lo: ../include/net-snmp/definitions.h
-./snmpset.lo: ../include/net-snmp/types.h
+./snmpset.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
 ./snmpset.lo: ../include/net-snmp/library/oid.h
 ./snmpset.lo: ../include/net-snmp/library/types.h
 ./snmpset.lo: ../include/net-snmp/library/snmp_api.h
@@ -610,11 +566,8 @@
 ./snmpset.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpset.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpset.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpset.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpset.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpset.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpset.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpset.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpset.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpset.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpset.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpset.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -623,6 +576,7 @@
 ./snmpset.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./snmpset.lo: ../include/net-snmp/library/parse.h
 ./snmpset.lo: ../include/net-snmp/library/oid_stash.h
+./snmpset.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpset.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpset.lo: ../include/net-snmp/library/snmp.h
 ./snmpset.lo: ../include/net-snmp/library/snmp-tc.h
@@ -656,6 +610,7 @@
 ./snmpset.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpset.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpset.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpset.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpset.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpstatus.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpstatus.lo: ../include/net-snmp/utilities.h ../include/net-snmp/types.h
@@ -676,11 +631,8 @@
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpstatus.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpstatus.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpstatus.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpstatus.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpstatus.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -690,6 +642,7 @@
 ./snmpstatus.lo: ../include/net-snmp/mib_api.h
 ./snmpstatus.lo: ../include/net-snmp/library/parse.h
 ./snmpstatus.lo: ../include/net-snmp/library/oid_stash.h
+./snmpstatus.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp-tc.h
@@ -724,6 +677,7 @@
 ./snmpstatus.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpstatus.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptable.lo: ../include/net-snmp/net-snmp-config.h
 ./snmptable.lo: ../include/net-snmp/net-snmp-includes.h
@@ -744,11 +698,8 @@
 ./snmptable.lo: ../include/net-snmp/library/snmp_service.h
 ./snmptable.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmptable.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptable.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptable.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmptable.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmptable.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmptable.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptable.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmptable.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmptable.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptable.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -758,6 +709,7 @@
 ./snmptable.lo: ../include/net-snmp/mib_api.h
 ./snmptable.lo: ../include/net-snmp/library/parse.h
 ./snmptable.lo: ../include/net-snmp/library/oid_stash.h
+./snmptable.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptable.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptable.lo: ../include/net-snmp/library/snmp.h
 ./snmptable.lo: ../include/net-snmp/library/snmp-tc.h
@@ -792,11 +744,11 @@
 ./snmptable.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptable.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptable.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptable.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptable.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptest.lo: ../include/net-snmp/net-snmp-config.h
 ./snmptest.lo: ../include/net-snmp/net-snmp-includes.h
-./snmptest.lo: ../include/net-snmp/definitions.h
-./snmptest.lo: ../include/net-snmp/types.h
+./snmptest.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
 ./snmptest.lo: ../include/net-snmp/library/oid.h
 ./snmptest.lo: ../include/net-snmp/library/types.h
 ./snmptest.lo: ../include/net-snmp/library/snmp_api.h
@@ -813,11 +765,8 @@
 ./snmptest.lo: ../include/net-snmp/library/snmp_service.h
 ./snmptest.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmptest.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptest.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptest.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmptest.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmptest.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmptest.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptest.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmptest.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmptest.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptest.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -827,6 +776,7 @@
 ./snmptest.lo: ../include/net-snmp/mib_api.h
 ./snmptest.lo: ../include/net-snmp/library/parse.h
 ./snmptest.lo: ../include/net-snmp/library/oid_stash.h
+./snmptest.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptest.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptest.lo: ../include/net-snmp/library/snmp.h
 ./snmptest.lo: ../include/net-snmp/library/snmp-tc.h
@@ -860,10 +810,13 @@
 ./snmptest.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptest.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptest.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptest.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptest.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptls.lo: ../include/net-snmp/net-snmp-config.h
+./snmptls.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptls.lo: ../include/net-snmp/net-snmp-includes.h
-./snmptls.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmptls.lo: ../include/net-snmp/definitions.h
+./snmptls.lo: ../include/net-snmp/types.h
 ./snmptls.lo: ../include/net-snmp/library/oid.h
 ./snmptls.lo: ../include/net-snmp/library/types.h
 ./snmptls.lo: ../include/net-snmp/library/snmp_api.h
@@ -880,11 +833,8 @@
 ./snmptls.lo: ../include/net-snmp/library/snmp_service.h
 ./snmptls.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmptls.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptls.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptls.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmptls.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmptls.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmptls.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptls.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmptls.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmptls.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptls.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -926,6 +876,7 @@
 ./snmptls.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptls.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptls.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptls.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptls.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptls.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmptls.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -989,11 +940,8 @@
 ./snmptranslate.lo: ../include/net-snmp/library/snmp_service.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptranslate.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptranslate.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmptranslate.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmptranslate.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1003,6 +951,7 @@
 ./snmptranslate.lo: ../include/net-snmp/mib_api.h
 ./snmptranslate.lo: ../include/net-snmp/library/parse.h
 ./snmptranslate.lo: ../include/net-snmp/library/oid_stash.h
+./snmptranslate.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmp.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1047,11 +996,8 @@
 ./snmptrap.lo: ../include/net-snmp/library/snmp_service.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptrap.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptrap.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmptrap.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmptrap.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptrap.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1061,6 +1007,7 @@
 ./snmptrap.lo: ../include/net-snmp/mib_api.h
 ./snmptrap.lo: ../include/net-snmp/library/parse.h
 ./snmptrap.lo: ../include/net-snmp/library/oid_stash.h
+./snmptrap.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1094,6 +1041,7 @@
 ./snmptrap.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptrap.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptrapd_auth.lo: ../include/net-snmp/net-snmp-config.h
 ./snmptrapd_auth.lo: ../include/net-snmp/net-snmp-includes.h
@@ -1115,11 +1063,8 @@
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_service.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1129,6 +1074,7 @@
 ./snmptrapd_auth.lo: ../include/net-snmp/mib_api.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/parse.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/oid_stash.h
+./snmptrapd_auth.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmp.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1163,6 +1109,7 @@
 ./snmptrapd_auth.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptrapd_auth.lo: snmptrapd_handlers.h snmptrapd_auth.h snmptrapd_ds.h
 ./snmptrapd_auth.lo: ../include/net-snmp/agent/agent_module_config.h
@@ -1188,11 +1135,8 @@
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_service.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptrapd.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptrapd.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmptrapd.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmptrapd.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptrapd.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1202,6 +1146,7 @@
 ./snmptrapd.lo: ../include/net-snmp/mib_api.h
 ./snmptrapd.lo: ../include/net-snmp/library/parse.h
 ./snmptrapd.lo: ../include/net-snmp/library/oid_stash.h
+./snmptrapd.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1236,6 +1181,7 @@
 ./snmptrapd.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptrapd.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptrapd.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmptrapd.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1280,6 +1226,7 @@
 ./snmptrapd.lo: ../agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h
 ./snmptrapd.lo: ../agent/mibgroup/mibII/vacm_conf.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/net-snmp-config.h
+./snmptrapd_handlers.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/config_api.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/types.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/oid.h
@@ -1299,11 +1246,8 @@
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_service.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1347,6 +1291,7 @@
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1409,11 +1354,8 @@
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_service.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1423,6 +1365,7 @@
 ./snmptrapd_log.lo: ../include/net-snmp/mib_api.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/parse.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/oid_stash.h
+./snmptrapd_log.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1457,13 +1400,14 @@
 ./snmptrapd_log.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpusm.h snmptrapd_log.h
 ./snmptrapd_log.lo: snmptrapd_ds.h
 ./snmptrapd_sql.lo: ../include/net-snmp/net-snmp-config.h
+./snmptrapd_sql.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpusm.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpusm.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpusm.lo: ../include/net-snmp/definitions.h
-./snmpusm.lo: ../include/net-snmp/types.h
+./snmpusm.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
 ./snmpusm.lo: ../include/net-snmp/library/oid.h
 ./snmpusm.lo: ../include/net-snmp/library/types.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_api.h
@@ -1480,11 +1424,8 @@
 ./snmpusm.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1493,6 +1434,7 @@
 ./snmpusm.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./snmpusm.lo: ../include/net-snmp/library/parse.h
 ./snmpusm.lo: ../include/net-snmp/library/oid_stash.h
+./snmpusm.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1526,11 +1468,11 @@
 ./snmpusm.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpusm.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpvacm.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpvacm.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpvacm.lo: ../include/net-snmp/definitions.h
-./snmpvacm.lo: ../include/net-snmp/types.h
+./snmpvacm.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
 ./snmpvacm.lo: ../include/net-snmp/library/oid.h
 ./snmpvacm.lo: ../include/net-snmp/library/types.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_api.h
@@ -1547,11 +1489,8 @@
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpvacm.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpvacm.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpvacm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpvacm.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpvacm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1561,6 +1500,7 @@
 ./snmpvacm.lo: ../include/net-snmp/mib_api.h
 ./snmpvacm.lo: ../include/net-snmp/library/parse.h
 ./snmpvacm.lo: ../include/net-snmp/library/oid_stash.h
+./snmpvacm.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1594,6 +1534,7 @@
 ./snmpvacm.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpvacm.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpwalk.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpwalk.lo: ../include/net-snmp/net-snmp-includes.h
@@ -1615,11 +1556,8 @@
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpwalk.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpwalk.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpwalk.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpwalk.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpwalk.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1629,6 +1567,7 @@
 ./snmpwalk.lo: ../include/net-snmp/mib_api.h
 ./snmpwalk.lo: ../include/net-snmp/library/parse.h
 ./snmpwalk.lo: ../include/net-snmp/library/oid_stash.h
+./snmpwalk.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1662,6 +1601,7 @@
 ./snmpwalk.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpwalk.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpusm.h
 ./sshtosnmp.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpnetstat/if.lo: ../include/net-snmp/net-snmp-config.h
@@ -1684,11 +1624,8 @@
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1698,6 +1635,7 @@
 ./snmpnetstat/if.lo: ../include/net-snmp/mib_api.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/parse.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/if.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1732,6 +1670,7 @@
 ./snmpnetstat/if.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpnetstat/if.lo: ./snmpnetstat/main.h
 ./snmpnetstat/if.lo: ./snmpnetstat/netstat.h
@@ -1755,11 +1694,8 @@
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1769,6 +1705,7 @@
 ./snmpnetstat/inet6.lo: ../include/net-snmp/mib_api.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/parse.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1803,6 +1740,7 @@
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpnetstat/inet6.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/net-snmp-config.h
@@ -1825,11 +1763,8 @@
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1839,6 +1774,7 @@
 ./snmpnetstat/inet.lo: ../include/net-snmp/mib_api.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/parse.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/inet.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1873,8 +1809,78 @@
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpnetstat/inet.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/net-snmp-config.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/net-snmp-includes.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/definitions.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/types.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/oid.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/types.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/varbind_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_client.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/pdu_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/asn1.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/output_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/session_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/callback.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_service.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/mib.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/mib_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/parse.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/net-snmp-features.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/getopt.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/utilities.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/system.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/tools.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/int64.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/mt_support.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/data_list.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/check_varbind.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/container.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/factory.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/container_binary_array.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/container_iterator.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/container.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_assert.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/version.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/config_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/read_config.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/default_store.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/vacm.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/snmpv3_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpv3.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/transform_oids.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/keytools.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/scapi.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/lcd_time.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_secmod.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmptsm.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpusm.h
+./snmpnetstat/inetx.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
 ./snmpnetstat/main.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpnetstat/main.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpnetstat/main.lo: ../include/net-snmp/definitions.h
@@ -1895,11 +1901,8 @@
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1909,6 +1912,7 @@
 ./snmpnetstat/main.lo: ../include/net-snmp/mib_api.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/parse.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/main.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1943,6 +1947,7 @@
 ./snmpnetstat/main.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpnetstat/main.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
 ./snmpnetstat/route.lo: ../include/net-snmp/net-snmp-config.h
@@ -1965,11 +1970,8 @@
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1979,6 +1981,7 @@
 ./snmpnetstat/route.lo: ../include/net-snmp/mib_api.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/parse.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/route.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2013,8 +2016,78 @@
 ./snmpnetstat/route.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpnetstat/route.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
+./snmpnetstat/routex.lo: ../include/net-snmp/net-snmp-config.h
+./snmpnetstat/routex.lo: ../include/net-snmp/net-snmp-includes.h
+./snmpnetstat/routex.lo: ../include/net-snmp/definitions.h
+./snmpnetstat/routex.lo: ../include/net-snmp/types.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/oid.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/types.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/varbind_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_client.h
+./snmpnetstat/routex.lo: ../include/net-snmp/pdu_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/asn1.h
+./snmpnetstat/routex.lo: ../include/net-snmp/output_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpnetstat/routex.lo: ../include/net-snmp/session_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/callback.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_service.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/mib.h
+./snmpnetstat/routex.lo: ../include/net-snmp/mib_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/parse.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/routex.lo: ../include/net-snmp/net-snmp-features.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/getopt.h
+./snmpnetstat/routex.lo: ../include/net-snmp/utilities.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/system.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/tools.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/int64.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/mt_support.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/data_list.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/check_varbind.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/container.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/factory.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/container_binary_array.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/container_iterator.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/container.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_assert.h
+./snmpnetstat/routex.lo: ../include/net-snmp/version.h
+./snmpnetstat/routex.lo: ../include/net-snmp/config_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/read_config.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/default_store.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/vacm.h
+./snmpnetstat/routex.lo: ../include/net-snmp/snmpv3_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpv3.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/transform_oids.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/keytools.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/scapi.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/lcd_time.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_secmod.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmptsm.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpusm.h
+./snmpnetstat/routex.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/definitions.h
@@ -2035,11 +2108,8 @@
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2049,6 +2119,7 @@
 ./snmpnetstat/winstub.lo: ../include/net-snmp/mib_api.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/parse.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2083,4 +2154,5 @@
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpusm.h
diff --git a/apps/Makefile.in b/apps/Makefile.in
index 769352d..77404dd 100644
--- a/apps/Makefile.in
+++ b/apps/Makefile.in
@@ -4,6 +4,7 @@
 #
 
 top_builddir=..
+mysubdir=apps
 
 # use GNU vpath, if available, to only set a path for source and headers
 # VPATH will pick up objects too, which is bad if you are sharing a
@@ -19,16 +20,35 @@
 
 @NETSNMP_BUILD_SSH_PROG_TRUE@SSHINSTALLBINPROG = sshtosnmp$(EXEEXT)
 @NETSNMP_BUILD_SSH_PROG_FALSE@SSHINSTALLBINPROG =
+@NETSNMP_BUILD_SSH_PROG_TRUE@SSHFEATUREPROG = sshtosnmp.ft
+@NETSNMP_BUILD_SSH_PROG_FALSE@SSHFEATUREPROG =
 @NETSNMP_BUILD_TLS_PROG_TRUE@TLSINSTALLBINPROG = snmptls$(EXEEXT)
 @NETSNMP_BUILD_TLS_PROG_FALSE@TLSINSTALLBINPROG =
+@NETSNMP_BUILD_TLS_PROG_TRUE@TLSFEATUREPROG = snmptls.ft
+@NETSNMP_BUILD_TLS_PROG_FALSE@TLSFEATUREPROG =
+@NETSNMP_BUILD_USM_PROG_TRUE@USMINSTALLBINPROG = snmpusm$(EXEEXT)
+@NETSNMP_BUILD_USM_PROG_FALSE@USMINSTALLBINPROG =
+@NETSNMP_BUILD_USM_PROG_TRUE@USMFEATUREPROG = snmpusm.ft
+@NETSNMP_BUILD_USM_PROG_FALSE@USMFEATUREPROG =
+@NETSNMP_BUILD_USM_PROG_TRUE@EKCSTALLBINPROG = encode_keychange$(EXEEXT)
+@NETSNMP_BUILD_USM_PROG_FALSE@EKCSTALLBINPROG =
+@NETSNMP_BUILD_USM_PROG_TRUE@EKCFEATUREPROG = encode_keychange.ft
+@NETSNMP_BUILD_USM_PROG_FALSE@EKCFEATUREPROG =
+@NETSNMP_BUILD_SET_PROG_TRUE@SNMPSETINSTALLBINPROG = snmpset$(EXEEXT)
+@NETSNMP_BUILD_SET_PROG_FALSE@SNMPSETINSTALLBINPROG = 
+@NETSNMP_BUILD_SET_PROG_TRUE@SNMPSETFEATUREPROG = snmpset.ft
+@NETSNMP_BUILD_SET_PROG_FALSE@SNMPSETFEATUREPROG = 
+@NETSNMP_BUILD_SET_PROG_TRUE@SNMPVACMINSTALLBINPROG = snmpvacm$(EXEEXT)
+@NETSNMP_BUILD_SET_PROG_FALSE@SNMPVACMINSTALLBINPROG = 
+@NETSNMP_BUILD_SET_PROG_TRUE@SNMPVACMFEATUREPROG = snmpvacm.ft
+@NETSNMP_BUILD_SET_PROG_FALSE@SNMPVACMFEATUREPROG = 
 
 @NETSNMP_HAVE_AGENTX_LIBS_TRUE@AGENTXTRAP = agentxtrap$(EXEEXT)
 @NETSNMP_HAVE_AGENTX_LIBS_FALSE@AGENTXTRAP =
 
 INSTALLBINPROGS	= snmpget$(EXEEXT) 			\
 		snmpgetnext$(EXEEXT) 			\
-		snmpset$(EXEEXT) 			\
-		snmpusm$(EXEEXT)			\
+		$(SNMPSETINSTALLBINPROG)	        \
 		snmpwalk$(EXEEXT) 			\
 		snmpbulkwalk$(EXEEXT) 			\
 		snmptable$(EXEEXT)			\
@@ -38,11 +58,11 @@
 		snmpstatus$(EXEEXT) 			\
 		snmpdelta$(EXEEXT) 			\
 		snmptest$(EXEEXT)			\
-		encode_keychange$(EXEEXT) 		\
 		snmpdf$(EXEEXT) 			\
 		$(AGENTXTRAP)				\
-		snmpvacm$(EXEEXT)                       \
-                $(SSHINSTALLBINPROG) $(TLSINSTALLBINPROG)
+		$(SNMPVACMINSTALLBINPROG)	        \
+                $(SSHINSTALLBINPROG) $(TLSINSTALLBINPROG) \
+		$(USMINSTALLBINPROG) $(EKCSTALLBINPROG)
 
 INSTALLSBINPROGS = snmptrapd$(EXEEXT)
 
@@ -50,6 +70,8 @@
 
 SUBDIRS		= snmpnetstat
 
+FEATUREFILE=../include/net-snmp/features-apps.h
+
 #
 # build variables.
 #
@@ -62,14 +84,15 @@
 MYSQL_LIBS	= @MYSQL_LIBS@
 MYSQL_INCLUDES	= @MYSQL_INCLUDES@
 
-LIBS		= $(USELIBS) @LIBS@
+VAL_LIBS	= @VAL_LIBS@
+LIBS		= $(USELIBS) $(VAL_LIBS) @LIBS@
 PERLLDOPTS_FOR_APPS = @PERLLDOPTS_FOR_APPS@
 PERLLDOPTS_FOR_LIBS = @PERLLDOPTS_FOR_LIBS@
 
 #
 # hack for compiling trapd when agent is disabled
-TRAPDWITHAGENT  = $(USETRAPLIBS) $(MYSQL_LIBS) @AGENTLIBS@
-TRAPDWITHOUTAGENT = $(LIBS) $(MYSQL_LIBS)
+TRAPDWITHAGENT  = $(USETRAPLIBS) $(MYSQL_LIBS) $(VAL_LIBS) @AGENTLIBS@
+TRAPDWITHOUTAGENT = $(LIBS) $(MYSQL_LIBS) $(VAL_LIBS)
 
 # these will be set by configure to one of the above 2 lines
 TRAPLIBS	= @TRAPLIBS@ $(PERLLDOPTS_FOR_APPS)
@@ -85,8 +108,31 @@
 		  snmptrapd_auth.o snmptrapd_sql.o
 LLIBTRAPD_OBJS  = snmptrapd_handlers.lo snmptrapd_log.lo \
 		  snmptrapd_auth.lo snmptrapd_sql.lo
+LIBTRAPD_FTS    = snmptrapd_handlers.ft snmptrapd_log.ft \
+		  snmptrapd_auth.ft snmptrapd_sql.ft
 OBJS  = *.o
 LOBJS = *.lo
+FTOBJS=$(LIBTRAPD_FTS) \
+       snmpwalk.ft \
+       snmpbulkwalk.ft \
+       snmpbulkget.ft \
+       snmptranslate.ft \
+       snmpstatus.ft \
+       snmpget.ft \
+       snmpdelta.ft \
+       snmptable.ft \
+       snmptest.ft \
+       snmptrapd.ft \
+       snmptrap.ft \
+       $(SNMPSETFEATUREPROG) \
+       $(SNMPVACMFEATUREPROG) \
+       $(USMFEATUREPROG) \
+       $(TLSFEATUREPROG) \
+       agentxtrap.ft \
+       snmpgetnext.ft \
+       $(EKCFEATUREPROG) \
+       snmpdf.ft \
+       $(SSHFEATUREPROG)
 
 all: standardall
 
diff --git a/apps/agentxtrap.c b/apps/agentxtrap.c
index 340f114..4df423c 100644
--- a/apps/agentxtrap.c
+++ b/apps/agentxtrap.c
@@ -1,4 +1,5 @@
- #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <errno.h>
 #include <signal.h>
@@ -8,12 +9,16 @@
 #endif
 
 #include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/ds_agent.h>
 
 #include "../agent/mibgroup/agentx/agentx_config.h"
 #include "../agent/mibgroup/agentx/client.h"
 #include "../agent/mibgroup/agentx/protocol.h"
 
+netsnmp_feature_require(snmp_split_pdu)
+netsnmp_feature_require(snmp_reset_var_types)
+
+
 #ifdef __GNUC__
 #define UNUSED __attribute__((unused))
 #else
diff --git a/apps/snmpdelta.c b/apps/snmpdelta.c
index 710fc77..08e2ebc 100644
--- a/apps/snmpdelta.c
+++ b/apps/snmpdelta.c
@@ -214,7 +214,7 @@
     /*
      * Now figure out the amount of time to sleep 
      */
-    target = (SecondsAtNextHour - tv->tv_sec) % seconds;
+    target = (int)(SecondsAtNextHour - tv->tv_sec) % seconds;
 
     return target;
 }
diff --git a/apps/snmpdf.c b/apps/snmpdf.c
index 2b438f9..144a505 100644
--- a/apps/snmpdf.c
+++ b/apps/snmpdf.c
@@ -87,9 +87,14 @@
             "\t-Cu\tUse UCD-SNMP dskTable to do the calculations.\n");
     fprintf(stderr,
             "\t\t[Normally the HOST-RESOURCES-MIB is consulted first.]\n");
+    fprintf(stderr,
+            "\t-Ch\tPrint using human readable format (MiB, GiB, TiB)\n");
+    fprintf(stderr,
+            "\t-CH\tPrint using human readable SI format (MB, GB, TB)\n");
 }
 
 int             ucd_mib = 0;
+int             human_units = 0;
 
 static void
 optProc(int argc, char *const *argv, int opt)
@@ -101,6 +106,12 @@
             case 'u':
                 ucd_mib = 1;
                 break;
+            case 'h':
+                human_units = 1024;
+                break;
+            case 'H':
+                human_units = 1000;
+                break;
             default:
                 fprintf(stderr,
                         "Unknown flag passed to -C: %c\n", optarg[-1]);
@@ -166,14 +177,14 @@
             exit(1);
         }
         if (response->errstat != SNMP_ERR_NOERROR) {
-	    fprintf(stderr, "snmpdf: Error in packet: %s\n",
+            fprintf(stderr, "snmpdf: Error in packet: %s\n",
                     snmp_errstring(response->errstat));
             exit(1);
         }
         if (snmp_oid_compare(response->variables->name,
-			     SNMP_MIN(base_length,
-				      response->variables->name_length),
-			     base, base_length) != 0)
+                             SNMP_MIN(base_length,
+                                      response->variables->name_length),
+                             base, base_length) != 0)
             running = 0;
         else if (response->variables->type == SNMP_NOSUCHINSTANCE ||
                  response->variables->type == SNMP_NOSUCHOBJECT ||
@@ -203,6 +214,27 @@
     return saved;
 }
 
+
+
+char *format_human(char *buf, size_t len, unsigned long mem, unsigned long scale)
+{
+    if (mem >= scale*scale*scale*scale)
+        snprintf(buf, len, "%4.2fP%sB", (float)mem/(scale*scale*scale*scale),
+		scale == 1024 ? "i" : "");
+    else if (mem >= scale*scale*scale)
+        snprintf(buf, len, "%4.2fT%sB", (float)mem/(scale*scale*scale),
+		scale == 1024 ? "i" : "");
+    else if (mem >= scale*scale)
+        snprintf(buf, len, "%4.2fG%sB", (float)mem/(scale*scale),
+		scale == 1024 ? "i" : "");
+    else if (mem >= scale)
+        snprintf(buf, len, "%4.2fM%sB", (float)mem/scale,
+		scale == 1024 ? "i" : "");
+    else
+        snprintf(buf, len, "%4.2fkB", (float)mem);
+    return buf;
+}
+
 /* Computes value*units/divisor in an overflow-proof way.
  */
 unsigned long
@@ -260,8 +292,14 @@
         exit(1);
     }
 
-    printf("%-18s %15s %15s %15s %5s\n", "Description", "size (kB)",
+    if (human_units) {
+        printf("%-18s %10s %10s %10s %5s\n", "Description", "Size",
            "Used", "Available", "Used%");
+    }
+    else {
+        printf("%-18s %15s %15s %15s %5s\n", "Description", "Size (kB)",
+           "Used", "Available", "Used%");
+    }
     if (ucd_mib == 0) {
         /*
          * * Begin by finding all the storage pieces that are of
@@ -316,12 +354,26 @@
             if (vlp2->type == SNMP_NOSUCHINSTANCE) goto next;
             hsused = vlp2->val.integer ? *(vlp2->val.integer) : 0;
 
-            printf("%-18s %15lu %15lu %15lu %4lu%%\n", descr,
-                   units ? convert_units(hssize, units, 1024) : hssize,
-                   units ? convert_units(hsused, units, 1024) : hsused,
-                   units ? convert_units(hssize-hsused, units, 1024) : hssize -
-                   hsused, hssize ? convert_units(hsused, 100, hssize) :
-                   hsused);
+            if (human_units) {
+                char size[10], used[10], avail[10];
+                printf("%-18s %10s %10s %10s %4lu%%\n", descr,
+                    format_human(size, sizeof size,
+                        units ? convert_units(hssize, units, 1024) : hssize, human_units),
+                    format_human(used, sizeof used,
+                        units ? convert_units(hsused, units, 1024) : hsused, human_units),
+                    format_human(avail, sizeof avail,
+                        units ? convert_units(hssize-hsused, units, 1024) : hssize -
+                    hsused, human_units),
+                    hssize ? convert_units(hsused, 100, hssize) : hsused);
+            }
+            else {
+                printf("%-18s %15lu %15lu %15lu %4lu%%\n", descr,
+                    units ? convert_units(hssize, units, 1024) : hssize,
+                    units ? convert_units(hsused, units, 1024) : hsused,
+                    units ? convert_units(hssize-hsused, units, 1024) : hssize -
+                    hsused,
+                    hssize ? convert_units(hsused, 100, hssize) : hsused);
+            }
 
         next:
             vlp = vlp->next_variable;
@@ -331,7 +383,6 @@
     }
 
     if (count == 0) {
-        size_t          units = 0;
         /*
          * the host resources mib must not be supported.  Lets try the
          * UCD-SNMP-MIB and its dskTable 
@@ -378,12 +429,19 @@
             if (vlp2->type == SNMP_NOSUCHINSTANCE) goto next2;
             hsused = *(vlp2->val.integer);
 
-            printf("%-18s %15lu %15lu %15lu %4lu%%\n", descr,
-                   units ? convert_units(hssize, units, 1024) : hssize,
-                   units ? convert_units(hsused, units, 1024) : hsused,
-                   units ? convert_units(hssize-hsused, units, 1024) : hssize -
-                   hsused, hssize ? convert_units(hsused, 100, hssize) :
-                   hsused);
+            if (human_units) {
+                char size[10], used[10], avail[10];
+                printf("%-18s %10s %10s %10s %4lu%%\n", descr,
+                    format_human(size, sizeof size, hssize, human_units),
+                    format_human(used, sizeof used, hsused, human_units),
+                    format_human(avail, sizeof avail, hssize - hsused, human_units),
+                    hssize ? convert_units(hsused, 100, hssize) : hsused);
+            }
+            else {
+                printf("%-18s %15lu %15lu %15lu %4lu%%\n", descr,
+                     hssize, hsused, hssize - hsused,
+                     hssize ? convert_units(hsused, 100, hssize) : hsused);
+            }
 
         next2:
             vlp = vlp->next_variable;
diff --git a/apps/snmpnetstat/Makefile.depend b/apps/snmpnetstat/Makefile.depend
index c1faecf..a7ad095 100644
--- a/apps/snmpnetstat/Makefile.depend
+++ b/apps/snmpnetstat/Makefile.depend
@@ -37,6 +37,7 @@
 ./if.lo: ../../include/net-snmp/mib_api.h
 ./if.lo: ../../include/net-snmp/library/parse.h
 ./if.lo: ../../include/net-snmp/library/oid_stash.h
+./if.lo: ../../include/net-snmp/net-snmp-features.h
 ./if.lo: ../../include/net-snmp/library/snmp_impl.h
 ./if.lo: ../../include/net-snmp/library/snmp.h
 ./if.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -71,6 +72,7 @@
 ./if.lo: ../../include/net-snmp/library/lcd_time.h
 ./if.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./if.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./if.lo: ../../include/net-snmp/library/snmptsm.h
 ./if.lo: ../../include/net-snmp/library/snmpusm.h
 ./if.lo: main.h
 ./if.lo: netstat.h
@@ -108,6 +110,7 @@
 ./inet6.lo: ../../include/net-snmp/mib_api.h
 ./inet6.lo: ../../include/net-snmp/library/parse.h
 ./inet6.lo: ../../include/net-snmp/library/oid_stash.h
+./inet6.lo: ../../include/net-snmp/net-snmp-features.h
 ./inet6.lo: ../../include/net-snmp/library/snmp_impl.h
 ./inet6.lo: ../../include/net-snmp/library/snmp.h
 ./inet6.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -142,6 +145,7 @@
 ./inet6.lo: ../../include/net-snmp/library/lcd_time.h
 ./inet6.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./inet6.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./inet6.lo: ../../include/net-snmp/library/snmptsm.h
 ./inet6.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
 ./inet.lo: ../../include/net-snmp/net-snmp-config.h
 ./inet.lo: ../../include/net-snmp/net-snmp-includes.h
@@ -177,6 +181,7 @@
 ./inet.lo: ../../include/net-snmp/mib_api.h
 ./inet.lo: ../../include/net-snmp/library/parse.h
 ./inet.lo: ../../include/net-snmp/library/oid_stash.h
+./inet.lo: ../../include/net-snmp/net-snmp-features.h
 ./inet.lo: ../../include/net-snmp/library/snmp_impl.h
 ./inet.lo: ../../include/net-snmp/library/snmp.h
 ./inet.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -211,7 +216,79 @@
 ./inet.lo: ../../include/net-snmp/library/lcd_time.h
 ./inet.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./inet.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./inet.lo: ../../include/net-snmp/library/snmptsm.h
 ./inet.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
+./inetx.lo: ../../include/net-snmp/net-snmp-config.h
+./inetx.lo: ../../include/net-snmp/net-snmp-includes.h
+./inetx.lo: ../../include/net-snmp/definitions.h
+./inetx.lo: ../../include/net-snmp/types.h
+./inetx.lo: ../../include/net-snmp/library/oid.h
+./inetx.lo: ../../include/net-snmp/library/types.h
+./inetx.lo: ../../include/net-snmp/library/snmp_api.h
+./inetx.lo: ../../include/net-snmp/varbind_api.h
+./inetx.lo: ../../include/net-snmp/library/snmp_client.h
+./inetx.lo: ../../include/net-snmp/pdu_api.h
+./inetx.lo: ../../include/net-snmp/library/asn1.h
+./inetx.lo: ../../include/net-snmp/output_api.h
+./inetx.lo: ../../include/net-snmp/library/snmp_debug.h
+./inetx.lo: ../../include/net-snmp/library/snmp_logging.h
+./inetx.lo: ../../include/net-snmp/session_api.h
+./inetx.lo: ../../include/net-snmp/library/callback.h
+./inetx.lo: ../../include/net-snmp/library/snmp_transport.h
+./inetx.lo: ../../include/net-snmp/library/snmp_service.h
+./inetx.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./inetx.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./inetx.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./inetx.lo: ../../include/net-snmp/library/ucd_compat.h
+./inetx.lo: ../../include/net-snmp/library/mib.h
+./inetx.lo: ../../include/net-snmp/mib_api.h
+./inetx.lo: ../../include/net-snmp/library/parse.h
+./inetx.lo: ../../include/net-snmp/library/oid_stash.h
+./inetx.lo: ../../include/net-snmp/net-snmp-features.h
+./inetx.lo: ../../include/net-snmp/library/snmp_impl.h
+./inetx.lo: ../../include/net-snmp/library/snmp.h
+./inetx.lo: ../../include/net-snmp/library/snmp-tc.h
+./inetx.lo: ../../include/net-snmp/library/getopt.h
+./inetx.lo: ../../include/net-snmp/utilities.h
+./inetx.lo: ../../include/net-snmp/library/system.h
+./inetx.lo: ../../include/net-snmp/library/tools.h
+./inetx.lo: ../../include/net-snmp/library/int64.h
+./inetx.lo: ../../include/net-snmp/library/mt_support.h
+./inetx.lo: ../../include/net-snmp/library/snmp_alarm.h
+./inetx.lo: ../../include/net-snmp/library/data_list.h
+./inetx.lo: ../../include/net-snmp/library/check_varbind.h
+./inetx.lo: ../../include/net-snmp/library/container.h
+./inetx.lo: ../../include/net-snmp/library/factory.h
+./inetx.lo: ../../include/net-snmp/library/container_binary_array.h
+./inetx.lo: ../../include/net-snmp/library/container_list_ssll.h
+./inetx.lo: ../../include/net-snmp/library/container_iterator.h
+./inetx.lo: ../../include/net-snmp/library/container.h
+./inetx.lo: ../../include/net-snmp/library/snmp_assert.h
+./inetx.lo: ../../include/net-snmp/version.h
+./inetx.lo: ../../include/net-snmp/config_api.h
+./inetx.lo: ../../include/net-snmp/library/read_config.h
+./inetx.lo: ../../include/net-snmp/library/default_store.h
+./inetx.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./inetx.lo: ../../include/net-snmp/library/snmp_enum.h
+./inetx.lo: ../../include/net-snmp/library/vacm.h
+./inetx.lo: ../../include/net-snmp/snmpv3_api.h
+./inetx.lo: ../../include/net-snmp/library/snmpv3.h
+./inetx.lo: ../../include/net-snmp/library/transform_oids.h
+./inetx.lo: ../../include/net-snmp/library/keytools.h
+./inetx.lo: ../../include/net-snmp/library/scapi.h
+./inetx.lo: ../../include/net-snmp/library/lcd_time.h
+./inetx.lo: ../../include/net-snmp/library/snmp_secmod.h
+./inetx.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./inetx.lo: ../../include/net-snmp/library/snmptsm.h
+./inetx.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
 ./main.lo: ../../include/net-snmp/net-snmp-config.h
 ./main.lo: ../../include/net-snmp/net-snmp-includes.h
 ./main.lo: ../../include/net-snmp/definitions.h
@@ -246,6 +323,7 @@
 ./main.lo: ../../include/net-snmp/mib_api.h
 ./main.lo: ../../include/net-snmp/library/parse.h
 ./main.lo: ../../include/net-snmp/library/oid_stash.h
+./main.lo: ../../include/net-snmp/net-snmp-features.h
 ./main.lo: ../../include/net-snmp/library/snmp_impl.h
 ./main.lo: ../../include/net-snmp/library/snmp.h
 ./main.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -280,6 +358,7 @@
 ./main.lo: ../../include/net-snmp/library/lcd_time.h
 ./main.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./main.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./main.lo: ../../include/net-snmp/library/snmptsm.h
 ./main.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
 ./route.lo: ../../include/net-snmp/net-snmp-config.h
 ./route.lo: ../../include/net-snmp/net-snmp-includes.h
@@ -315,6 +394,7 @@
 ./route.lo: ../../include/net-snmp/mib_api.h
 ./route.lo: ../../include/net-snmp/library/parse.h
 ./route.lo: ../../include/net-snmp/library/oid_stash.h
+./route.lo: ../../include/net-snmp/net-snmp-features.h
 ./route.lo: ../../include/net-snmp/library/snmp_impl.h
 ./route.lo: ../../include/net-snmp/library/snmp.h
 ./route.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -349,7 +429,79 @@
 ./route.lo: ../../include/net-snmp/library/lcd_time.h
 ./route.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./route.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./route.lo: ../../include/net-snmp/library/snmptsm.h
 ./route.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
+./routex.lo: ../../include/net-snmp/net-snmp-config.h
+./routex.lo: ../../include/net-snmp/net-snmp-includes.h
+./routex.lo: ../../include/net-snmp/definitions.h
+./routex.lo: ../../include/net-snmp/types.h
+./routex.lo: ../../include/net-snmp/library/oid.h
+./routex.lo: ../../include/net-snmp/library/types.h
+./routex.lo: ../../include/net-snmp/library/snmp_api.h
+./routex.lo: ../../include/net-snmp/varbind_api.h
+./routex.lo: ../../include/net-snmp/library/snmp_client.h
+./routex.lo: ../../include/net-snmp/pdu_api.h
+./routex.lo: ../../include/net-snmp/library/asn1.h
+./routex.lo: ../../include/net-snmp/output_api.h
+./routex.lo: ../../include/net-snmp/library/snmp_debug.h
+./routex.lo: ../../include/net-snmp/library/snmp_logging.h
+./routex.lo: ../../include/net-snmp/session_api.h
+./routex.lo: ../../include/net-snmp/library/callback.h
+./routex.lo: ../../include/net-snmp/library/snmp_transport.h
+./routex.lo: ../../include/net-snmp/library/snmp_service.h
+./routex.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./routex.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./routex.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./routex.lo: ../../include/net-snmp/library/ucd_compat.h
+./routex.lo: ../../include/net-snmp/library/mib.h
+./routex.lo: ../../include/net-snmp/mib_api.h
+./routex.lo: ../../include/net-snmp/library/parse.h
+./routex.lo: ../../include/net-snmp/library/oid_stash.h
+./routex.lo: ../../include/net-snmp/net-snmp-features.h
+./routex.lo: ../../include/net-snmp/library/snmp_impl.h
+./routex.lo: ../../include/net-snmp/library/snmp.h
+./routex.lo: ../../include/net-snmp/library/snmp-tc.h
+./routex.lo: ../../include/net-snmp/library/getopt.h
+./routex.lo: ../../include/net-snmp/utilities.h
+./routex.lo: ../../include/net-snmp/library/system.h
+./routex.lo: ../../include/net-snmp/library/tools.h
+./routex.lo: ../../include/net-snmp/library/int64.h
+./routex.lo: ../../include/net-snmp/library/mt_support.h
+./routex.lo: ../../include/net-snmp/library/snmp_alarm.h
+./routex.lo: ../../include/net-snmp/library/data_list.h
+./routex.lo: ../../include/net-snmp/library/check_varbind.h
+./routex.lo: ../../include/net-snmp/library/container.h
+./routex.lo: ../../include/net-snmp/library/factory.h
+./routex.lo: ../../include/net-snmp/library/container_binary_array.h
+./routex.lo: ../../include/net-snmp/library/container_list_ssll.h
+./routex.lo: ../../include/net-snmp/library/container_iterator.h
+./routex.lo: ../../include/net-snmp/library/container.h
+./routex.lo: ../../include/net-snmp/library/snmp_assert.h
+./routex.lo: ../../include/net-snmp/version.h
+./routex.lo: ../../include/net-snmp/config_api.h
+./routex.lo: ../../include/net-snmp/library/read_config.h
+./routex.lo: ../../include/net-snmp/library/default_store.h
+./routex.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./routex.lo: ../../include/net-snmp/library/snmp_enum.h
+./routex.lo: ../../include/net-snmp/library/vacm.h
+./routex.lo: ../../include/net-snmp/snmpv3_api.h
+./routex.lo: ../../include/net-snmp/library/snmpv3.h
+./routex.lo: ../../include/net-snmp/library/transform_oids.h
+./routex.lo: ../../include/net-snmp/library/keytools.h
+./routex.lo: ../../include/net-snmp/library/scapi.h
+./routex.lo: ../../include/net-snmp/library/lcd_time.h
+./routex.lo: ../../include/net-snmp/library/snmp_secmod.h
+./routex.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./routex.lo: ../../include/net-snmp/library/snmptsm.h
+./routex.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
 ./winstub.lo: ../../include/net-snmp/net-snmp-config.h
 ./winstub.lo: ../../include/net-snmp/net-snmp-includes.h
 ./winstub.lo: ../../include/net-snmp/definitions.h
@@ -384,6 +536,7 @@
 ./winstub.lo: ../../include/net-snmp/mib_api.h
 ./winstub.lo: ../../include/net-snmp/library/parse.h
 ./winstub.lo: ../../include/net-snmp/library/oid_stash.h
+./winstub.lo: ../../include/net-snmp/net-snmp-features.h
 ./winstub.lo: ../../include/net-snmp/library/snmp_impl.h
 ./winstub.lo: ../../include/net-snmp/library/snmp.h
 ./winstub.lo: ../../include/net-snmp/library/snmp-tc.h
@@ -418,4 +571,5 @@
 ./winstub.lo: ../../include/net-snmp/library/lcd_time.h
 ./winstub.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./winstub.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./winstub.lo: ../../include/net-snmp/library/snmptsm.h
 ./winstub.lo: ../../include/net-snmp/library/snmpusm.h
diff --git a/apps/snmpnetstat/Makefile.in b/apps/snmpnetstat/Makefile.in
index 4a07ebb..04aeb40 100644
--- a/apps/snmpnetstat/Makefile.in
+++ b/apps/snmpnetstat/Makefile.in
@@ -3,6 +3,8 @@
 #
 
 top_builddir=../..
+mysubdir=apps/snmpnetstat
+
 INSTALLBINPROGS=snmpnetstat$(EXEEXT)
 
 # use GNU vpath, if available, to only set a path for source and headers
@@ -16,15 +18,19 @@
 #
 # build info
 #
-SRCS=	inet.c inet6.c if.c main.c route.c winstub.c ffs.c
-OBJS=	inet.o inet6.o if.o main.o route.o winstub.o ffs.o
-LOBJS=	inet.lo inet6.lo if.lo main.lo route.lo winstub.lo ffs.lo
+SRCS=	inet.c inet6.c inetx.c if.c main.c route.c routex.c winstub.c ffs.c
+OBJS=	inet.o inet6.o inetx.o if.o main.o route.o routex.o winstub.o ffs.o
+LOBJS=	inet.lo inet6.lo inetx.lo if.lo main.lo route.lo routex.lo winstub.lo ffs.lo
+FTOBJS=	inet.ft inet6.ft inetx.ft if.ft main.ft route.ft routex.ft winstub.ft ffs.ft
 TARG= snmpnetstat$(EXEEXT)
 
+FEATUREFILE=../../include/net-snmp/features-snmpnetstat.h
+
 CPPFLAGS= $(TOP_INCLUDES)  @CPPFLAGS@
 
+VAL_LIBS	= @VAL_LIBS@
 USELIBS= ../../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION)
-LIBS=	 ../../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) @LIBS@
+LIBS=	 ../../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) $(VAL_LIBS) @LIBS@
 
 all: standardall
 
diff --git a/apps/snmpnetstat/if.c b/apps/snmpnetstat/if.c
index 81334f7..125e6a3 100644
--- a/apps/snmpnetstat/if.c
+++ b/apps/snmpnetstat/if.c
@@ -151,16 +151,16 @@
          *   displaying the local network information
          */
         cp = tmpAddr.data;
-        cp[0] = vp2->name[ 10 ] & 0xff;
-        cp[1] = vp2->name[ 11 ] & 0xff;
-        cp[2] = vp2->name[ 12 ] & 0xff;
-        cp[3] = vp2->name[ 13 ] & 0xff;
+        cp[0] = (uint8_t) vp2->name[10];
+        cp[1] = (uint8_t) vp2->name[11];
+        cp[2] = (uint8_t) vp2->name[12];
+        cp[3] = (uint8_t) vp2->name[13];
         ifAddr = tmpAddr.addr;
         cp = tmpAddr.data;
-        cp[0] = vp2->val.string[ 0 ] & 0xff;
-        cp[1] = vp2->val.string[ 1 ] & 0xff;
-        cp[2] = vp2->val.string[ 2 ] & 0xff;
-        cp[3] = vp2->val.string[ 3 ] & 0xff;
+        cp[0] = (uint8_t) vp2->val.string[0];
+        cp[1] = (uint8_t) vp2->val.string[1];
+        cp[2] = (uint8_t) vp2->val.string[2];
+        cp[3] = (uint8_t) vp2->val.string[3];
         mask = tmpAddr.addr;
         snprintf( cur_if->route, 128, "%s", netname(ifAddr, mask));
     }
@@ -291,7 +291,6 @@
                  * XXX - Try to recover ?
                  */
                 SNMP_FREE( cur_if );
-                cur_if = NULL;
                 break;    /* not for now, no */
             }
             switch ( vp->name[ var->name_length-2 ] ) {
@@ -396,7 +395,6 @@
          */
         if ( intrface && strcmp( cur_if->name, intrface) != 0 && strcmp( cur_if->descr, intrface) != 0) {
             SNMP_FREE( cur_if );
-            cur_if = NULL;
         }
 
         /*
diff --git a/apps/snmpnetstat/inet.c b/apps/snmpnetstat/inet.c
index 6f7c1e1..0537340 100644
--- a/apps/snmpnetstat/inet.c
+++ b/apps/snmpnetstat/inet.c
@@ -126,7 +126,7 @@
 		if (aflag)
 			printf(" (including servers)");
 		putchar('\n');
-		width = Aflag ? 18 : 22;
+		width = 27;
 		printf("%-5.5s %*.*s %*.*s %s\n",
 			   "Proto", -width, width, "Local Address",
 						-width, width, "Remote Address", "(state)");
@@ -135,27 +135,27 @@
 	
 	/* Extract the local/remote information from the index values */
 	cp = tmpAddr.data;
-	cp[0] = vp->name[ 10 ] & 0xff;
-	cp[1] = vp->name[ 11 ] & 0xff;
-	cp[2] = vp->name[ 12 ] & 0xff;
-	cp[3] = vp->name[ 13 ] & 0xff;
+	cp[0] = (uint8_t) vp->name[10];
+	cp[1] = (uint8_t) vp->name[11];
+	cp[2] = (uint8_t) vp->name[12];
+	cp[3] = (uint8_t) vp->name[13];
 	localAddr.s_addr = tmpAddr.addr.s_addr;
-	localPort        = ntohs(vp->name[ 14 ]);
+	localPort        = vp->name[ 14 ];
 	cp = tmpAddr.data;
-	cp[0] = vp->name[ 15 ] & 0xff;
-	cp[1] = vp->name[ 16 ] & 0xff;
-	cp[2] = vp->name[ 17 ] & 0xff;
-	cp[3] = vp->name[ 18 ] & 0xff;
+	cp[0] = (uint8_t) vp->name[15];
+	cp[1] = (uint8_t) vp->name[16];
+	cp[2] = (uint8_t) vp->name[17];
+	cp[3] = (uint8_t) vp->name[18];
 	remoteAddr.s_addr = tmpAddr.addr.s_addr;
-	remotePort        = ntohs(vp->name[ 19 ]);
+	remotePort        = vp->name[ 19 ];
 
 	printf("%-5.5s", name);
 	inetprint(&localAddr,  localPort,  name, 1);
 	inetprint(&remoteAddr, remotePort, name, 0);
 	if (state < 1 || state > TCP_NSTATES) {
-		printf("%d\n", state );
+		printf(" %d\n", state );
 	} else {
-		printf("%s\n", tcpstates[state]);
+		printf(" %s\n", tcpstates[state]);
 	}
 }
 
@@ -176,6 +176,8 @@
         return;
     if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
         return;
+    if ((var->type & 0xF0) == 0x80)	/* Exception */
+	return;
 
     for (vp = var; vp ; vp=vp->next_variable) {
         tcpprotoprint_line(name, vp, &first);
@@ -212,9 +214,11 @@
         return;
     if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
         return;
+    if ((var->type & 0xF0) == 0x80)	/* Exception */
+	return;
 
     printf("Active Internet (%s) Connections\n", name);
-    printf("%-5.5s %-28.28s\n", "Proto", "Local Address");
+    printf("%-5.5s %-27.27s\n", "Proto", "Local Address");
     for (vp = var; vp ; vp=vp->next_variable) {
         printf("%-5.5s", name);
         /*
@@ -223,12 +227,12 @@
          *   we walked udpLocalAddress rather than udpLocalPort)
          */
         cp = tmpAddr.data;
-        cp[0] = vp->name[ 10 ] & 0xff;
-        cp[1] = vp->name[ 11 ] & 0xff;
-        cp[2] = vp->name[ 12 ] & 0xff;
-        cp[3] = vp->name[ 13 ] & 0xff;
+        cp[0] = (uint8_t) vp->name[10];
+        cp[1] = (uint8_t) vp->name[11];
+        cp[2] = (uint8_t) vp->name[12];
+        cp[3] = (uint8_t) vp->name[13];
         localAddr.s_addr = tmpAddr.addr.s_addr;
-        localPort        = ntohs( (u_short)(vp->name[ 14 ]));
+        localPort        = vp->name[ 14 ];
         inetprint(&localAddr, localPort, name, 1);
         putchar('\n');
     }
@@ -281,11 +285,12 @@
                         continue;
                     }
 
-					tcpprotoprint_line(name, vp, &first);
-
                     if ((vp->type != SNMP_ENDOFMIBVIEW) &&
                         (vp->type != SNMP_NOSUCHOBJECT) &&
                         (vp->type != SNMP_NOSUCHINSTANCE)) {
+
+			tcpprotoprint_line(name, vp, &first);
+
                         /*
                          * Check if last variable, and if so, save for next request.
                          */
@@ -324,19 +329,19 @@
 {
     oid    tcpConnState_oid[] = { 1,3,6,1,2,1,6,13,1,1 };
     size_t tcpConnState_len   = OID_LENGTH( tcpConnState_oid );
-	int    use_getbulk = 1;
+    int    use_getbulk = 1;
 
 #ifndef NETSNMP_DISABLE_SNMPV1
     if (ss->version == SNMP_VERSION_1) {
         use_getbulk = 0;
-	}
+    }
 #endif
 
-	if (use_getbulk) {
-		tcpprotopr_bulkget(name, tcpConnState_oid, tcpConnState_len);
-	} else {
-		tcpprotopr_get(name, tcpConnState_oid, tcpConnState_len);
-	}
+    if (use_getbulk) {
+	    tcpprotopr_bulkget(name, tcpConnState_oid, tcpConnState_len);
+    } else {
+	    tcpprotopr_get(name, tcpConnState_oid, tcpConnState_len);
+    }
 }
 
 
@@ -391,7 +396,6 @@
          *   then only display non-zero stats.
          */
         if ( *vp->val.integer > 0 || sflag == 1 ) {
-            putchar('\t');
             printf(sp->description, *vp->val.integer,
                              plural(*vp->val.integer));
             putchar('\n');
@@ -410,24 +414,24 @@
     oid               ipstats_oid[] = { 1, 3, 6, 1, 2, 1, 4, 0, 0 };
     size_t            ipstats_len   = OID_LENGTH( ipstats_oid );
     struct stat_table ipstats_tbl[] = {
-        {3, "%d total datagram%s received"},
-        {4, "%d datagram%s with header errors"},
-        {5, "%d datagram%s with an invalid destination address"},
-        {6, "%d datagram%s forwarded"},
-        {7, "%d datagram%s with unknown protocol"},
-        {8, "%d datagram%s discarded"},
-        {9, "%d datagram%s delivered"},
-        {10, "%d output datagram request%s"},
-        {11, "%d output datagram%s discarded"},
-        {12, "%d datagram%s with no route"},
-        {14, "%d fragment%s received"},
-        {15, "%d datagram%s reassembled"},
-        {16, "%d reassembly failure%s"},
-        {17, "%d datagram%s fragmented"},
-        {18, "%d fragmentation failure%s"},
-        {19, "%d fragment%s created"},
-        {23, "%d route%s discarded"},
-        {0, ""}
+        { 3, "%14d total datagram%s received"},
+        { 4, "%14d datagram%s with header errors"},
+        { 5, "%14d datagram%s with an invalid destination address"},
+        { 6, "%14d datagram%s forwarded"},
+        { 7, "%14d datagram%s with unknown protocol"},
+        { 8, "%14d datagram%s discarded"},
+        { 9, "%14d datagram%s delivered"},
+        {10, "%14d output datagram request%s"},
+        {11, "%14d output datagram%s discarded"},
+        {12, "%14d datagram%s with no route"},
+        {14, "%14d fragment%s received"},
+        {15, "%14d datagram%s reassembled"},
+        {16, "%14d reassembly failure%s"},
+        {17, "%14d datagram%s fragmented"},
+        {18, "%14d fragmentation failure%s"},
+        {19, "%14d fragment%s created"},
+        {23, "%14d route%s discarded"},
+        { 0, ""}
     };
 
     _dump_stats( name, ipstats_oid, ipstats_len, ipstats_tbl );
@@ -443,38 +447,38 @@
     oid               icmpstats_oid[] = { 1, 3, 6, 1, 2, 1, 5, 0, 0 };
     size_t            icmpstats_len   = OID_LENGTH( icmpstats_oid );
     struct stat_table icmpstats_tbl[] = {
-        {1, "%d total message%s received"},
-        {2, "%d message%s dropped due to errors"},
-        {14, "%d ouput message request%s"},
-        {15, "%d output message%s discarded"},
-        {0, ""}
+        { 1, "%14d total message%s received"},
+        { 2, "%14d message%s dropped due to errors"},
+        {14, "%14d ouput message request%s"},
+        {15, "%14d output message%s discarded"},
+        { 0, ""}
     };
     struct stat_table icmp_inhistogram[] = {
-        {3, "Destination unreachable: %d"},
-        {4, "Time Exceeded: %d"},
-        {5, "Parameter Problem: %d"},
-        {6, "Source Quench: %d"},
-        {7, "Redirect: %d"},
-        {8, "Echo Request: %d"},
-        {9, "Echo Reply: %d"},
-        {10, "Timestamp Request: %d"},
-        {11, "Timestamp Reply: %d"},
-        {12, "Address Mask Request: %d"},
-        {13, "Address Mask Reply: %d"},
-        {0, ""}
+        { 3, "        Destination unreachable: %d"},
+        { 4, "        Time Exceeded: %d"},
+        { 5, "        Parameter Problem: %d"},
+        { 6, "        Source Quench: %d"},
+        { 7, "        Redirect: %d"},
+        { 8, "        Echo Request: %d"},
+        { 9, "        Echo Reply: %d"},
+        {10, "        Timestamp Request: %d"},
+        {11, "        Timestamp Reply: %d"},
+        {12, "        Address Mask Request: %d"},
+        {13, "        Address Mask Reply: %d"},
+        { 0, ""}
     };
     struct stat_table icmp_outhistogram[] = {
-        {16, "Destination unreachable: %d"},
-        {17, "Time Exceeded: %d"},
-        {18, "Parameter Problem: %d"},
-        {19, "Source Quench: %d"},
-        {20, "Redirect: %d"},
-        {21, "Echo Request: %d"},
-        {22, "Echo Reply: %d"},
-        {23, "Timestamp Request: %d"},
-        {24, "Timestamp Reply: %d"},
-        {25, "Address Mask Request: %d"},
-        {26, "Address Mask Reply: %d"},
+        {16, "        Destination unreachable: %d"},
+        {17, "        Time Exceeded: %d"},
+        {18, "        Parameter Problem: %d"},
+        {19, "        Source Quench: %d"},
+        {20, "        Redirect: %d"},
+        {21, "        Echo Request: %d"},
+        {22, "        Echo Reply: %d"},
+        {23, "        Timestamp Request: %d"},
+        {24, "        Timestamp Reply: %d"},
+        {25, "        Address Mask Request: %d"},
+        {26, "        Address Mask Reply: %d"},
         {0, ""}
     };
 
@@ -495,19 +499,19 @@
     oid               tcpstats_oid[] = { 1, 3, 6, 1, 2, 1, 6, 0, 0 };
     size_t            tcpstats_len   = OID_LENGTH( tcpstats_oid );
     struct stat_table tcpstats_tbl[] = {
-        {5, "%d active open%s"},
-        {6, "%d passive open%s"},
-        {7, "%d failed attempt%s"},
-        {8, "%d reset%s of established connections"},
-        {9, "%d current established connection%s"},
-        {10, "%d segment%s received"},
-        {11, "%d segment%s sent"},
-        {12, "%d segment%s retransmitted"},
-        {14, "%d invalid segment%s received"},
-        {15, "%d reset%s sent"},
-        {0, ""}
+        { 5, "%14d active open%s"},
+        { 6, "%14d passive open%s"},
+        { 7, "%14d failed attempt%s"},
+        { 8, "%14d reset%s of established connections"},
+        { 9, "%14d currently established connection%s"},
+        {10, "%14d segment%s received"},
+        {11, "%14d segment%s sent"},
+        {12, "%14d segment%s retransmitted"},
+        {14, "%14d invalid segment%s received"},
+        {15, "%14d reset%s sent"},
+        { 0, ""}
     };
-    _dump_stats( name, tcpstats_oid, tcpstats_len, tcpstats_tbl );
+    _dump_stats( "tcp", tcpstats_oid, tcpstats_len, tcpstats_tbl );
 }
 
 
@@ -520,13 +524,13 @@
     oid               udpstats_oid[] = { 1, 3, 6, 1, 2, 1, 7, 0, 0 };
     size_t            udpstats_len   = OID_LENGTH( udpstats_oid );
     struct stat_table udpstats_tbl[] = {
-        {1, "%d total datagram%s received"},
-        {2, "%d datagram%s to invalid port"},
-        {3, "%d datagram%s dropped due to errors"},
-        {4, "%d output datagram request%s"},
+        {1, "%14d total datagram%s received"},
+        {2, "%14d datagram%s to invalid port"},
+        {3, "%14d datagram%s dropped due to errors"},
+        {4, "%14d output datagram request%s"},
         {0, ""}
     };
-    _dump_stats( name, udpstats_oid, udpstats_len, udpstats_tbl );
+    _dump_stats( "udp", udpstats_oid, udpstats_len, udpstats_tbl );
 }
 
 
@@ -560,22 +564,25 @@
 {
 	struct servent *sp = NULL;
 	char line[80], *cp;
-	int width;
+	int width = 27;
 
-	snprintf(line, sizeof line, "%.*s.", (Aflag && !nflag) ? 12 : 16,
-	    inetname(in));
+	if (vflag)
+	    snprintf(line, sizeof line, "%s.", inetname(in));
+	else
+	    snprintf(line, sizeof line, "%.*s.", width-9, inetname(in));
 	cp = strchr(line, '\0');
 	if (!nflag && port)
-		sp = getservbyport((int)port, proto);
+		sp = getservbyport(htons((uint16_t) port), proto);
 	if (sp || port == 0)
-		snprintf(cp, line + sizeof line - cp, "%.8s",
+		snprintf(cp, line + sizeof line - cp, vflag ? "%s" : "%.8s",
 		    sp ? sp->s_name : "*");
      /*
       * Translation of RPC service names - Omitted
       */
 	else
-		snprintf(cp, line + sizeof line - cp, "%d", ntohs(port));
-	width = Aflag ? 18 : 22;
+		snprintf(cp, line + sizeof line - cp, "%d", port);
+	if (vflag && width < strlen(line))
+	    width = strlen(line);
 	printf(" %-*.*s", width, width, line);
 }
 
@@ -598,9 +605,10 @@
 #endif
 
 	if (first && !nflag) {
+		char tmp[MAXHOSTNAMELEN];
 		first = 0;
-		if (gethostname(domain, sizeof(domain)) == 0 &&
-		    (cp = strchr(domain, '.')))
+		if (gethostname(tmp, sizeof(tmp)) == 0 &&
+		    (cp = strchr(tmp, '.')))
 			(void) strlcpy(domain, cp + 1, sizeof domain);
 		else
 			domain[0] = '\0';
@@ -616,7 +624,8 @@
 				cp = np->n_name;
 		}
 		if (cp == NULL) {
-			hp = gethostbyaddr((char *)inp, sizeof (*inp), AF_INET);
+			hp = netsnmp_gethostbyaddr((char *)inp, sizeof (*inp),
+                                                   AF_INET);
 			if (hp) {
 				if ((cp = strchr(hp->h_name, '.')) &&
 				    !strcmp(cp + 1, domain))
diff --git a/apps/snmpnetstat/inet6.c b/apps/snmpnetstat/inet6.c
index 42718f2..7109b87 100644
--- a/apps/snmpnetstat/inet6.c
+++ b/apps/snmpnetstat/inet6.c
@@ -124,7 +124,7 @@
                                      ASN_NULL, NULL,  0);
     if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
         return;
-    if (var->type == ASN_NULL)    /* No entries */
+    if ((var->type & 0xF0) == 0x80)		/* exception */
         return;
 
     for (vp = var; vp ; vp=vp->next_variable) {
@@ -137,7 +137,7 @@
             if (aflag)
                 printf(" (including servers)");
             putchar('\n');
-            printf("%-5.5s %-28.28s %-28.28s %4s %s\n",
+            printf("%-5.5s %-27.27s %-27.27s %4s %s\n",
                    "Proto", "Local Address", "Remote Address", "I/F", "(state)");
             first = 0;
         }
@@ -184,11 +184,11 @@
                                      ASN_NULL, NULL,  0);
     if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
         return;
-    if (var->type == ASN_NULL)    /* No entries */
+    if ((var->type & 0xF0) == 0x80)		/* exception */
         return;
 
     printf("Active Internet Connections\n");
-    printf("%-5.5s %-28.28s %4s\n", "Proto", "Local Address", "I/F");
+    printf("%-5.5s %-27.27s %4s\n", "Proto", "Local Address", "I/F");
     for (vp = var; vp ; vp=vp->next_variable) {
         printf("%-5.5s", name);
         /*
@@ -245,6 +245,8 @@
     while (1) {
         if (netsnmp_query_getnext( var, ss ) != SNMP_ERR_NOERROR)
             break;
+        if ((var->type & 0xF0) == 0x80)		/* exception */
+            break;
         if ( snmp_oid_compare( oid_buf,   buf_len,
                                var->name, buf_len) != 0 )
             break;    /* End of Table */
@@ -271,7 +273,6 @@
          *   then only display non-zero stats.
          */
         if ( stats[sp->entry] > 0 || sflag == 1 ) {
-            putchar('\t');
             printf(sp->description, stats[sp->entry],
                              plural(stats[sp->entry]));
             putchar('\n');
@@ -291,27 +292,27 @@
     oid               ip6stats_oid[] = { 1, 3, 6, 1, 2, 1, 55, 1, 6, 1, 0 };
     size_t            ip6stats_len   = OID_LENGTH( ip6stats_oid );
     struct stat_table ip6stats_tbl[] = {
-        {1, "%d total datagram%s received"},
-        {2, "%d datagram%s with header errors"},
-        {3, "%d oversized datagram%s"},
-        {4, "%d datagram%s with no route"},
-        {5, "%d datagram%s with an invalid destination address"},
-        {6, "%d datagram%s with unknown protocol"},
-        {7, "%d short datagram%s discarded"},
-        {8, "%d datagram%s discarded"},
-        {9, "%d datagram%s delivered"},
-        {10, "%d datagram%s forwarded"},
-        {11, "%d output datagram request%s"},
-        {12, "%d output datagram%s discarded"},
-        {13, "%d datagram%s fragmented"},
-        {14, "%d fragmentation failure%s"},
-        {15, "%d fragment%s created"},
-        {16, "%d fragment%s received"},
-        {17, "%d datagram%s reassembled"},
-        {18, "%d reassembly failure%s"},
-        {19, "%d multicast datagram%s received"},
-        {20, "%d multicast datagram%s transmitted"},
-        {0, ""}
+        { 1, "%14d total datagram%s received"},
+        { 2, "%14d datagram%s with header errors"},
+        { 3, "%14d oversized datagram%s"},
+        { 4, "%14d datagram%s with no route"},
+        { 5, "%14d datagram%s with an invalid destination address"},
+        { 6, "%14d datagram%s with unknown protocol"},
+        { 7, "%14d short datagram%s discarded"},
+        { 8, "%14d datagram%s discarded"},
+        { 9, "%14d datagram%s delivered"},
+        {10, "%14d datagram%s forwarded"},
+        {11, "%14d output datagram request%s"},
+        {12, "%14d output datagram%s discarded"},
+        {13, "%14d datagram%s fragmented"},
+        {14, "%14d fragmentation failure%s"},
+        {15, "%14d fragment%s created"},
+        {16, "%14d fragment%s received"},
+        {17, "%14d datagram%s reassembled"},
+        {18, "%14d reassembly failure%s"},
+        {19, "%14d multicast datagram%s received"},
+        {20, "%14d multicast datagram%s transmitted"},
+        { 0, ""}
     };
 
     _dump_v6stats( name, ip6stats_oid, ip6stats_len, ip6stats_tbl );
@@ -331,46 +332,46 @@
     oid               icmp6stats_oid[] = { 1, 3, 6, 1, 2, 1, 56, 1, 1, 1, 0 };
     size_t            icmp6stats_len   = OID_LENGTH( icmp6stats_oid );
     struct stat_table icmp6stats_tbl[] = {
-        {1, "%d total message%s received"},
-        {2, "%d message%s dropped due to errors"},
-        {18, "%d ouput message request%s"},
-        {19, "%d output message%s discarded"},
-        {0, ""}
+        { 1, "%14d total message%s received"},
+        { 2, "%14d message%s dropped due to errors"},
+        {18, "%14d ouput message request%s"},
+        {19, "%14d output message%s discarded"},
+        { 0, ""}
     };
     struct stat_table icmp6_inhistogram[] = {
-        {3, "Destination unreachable: %d"},
-        {4, "Admin Prohibit: %d"},
-        {5, "Time Exceeded: %d"},
-        {6, "Parameter Problem: %d"},
-        {7, "Too Big: %d"},
-        {8, "Echo Request: %d"},
-        {9, "Echo Reply: %d"},
-        {10, "Router Solicit: %d"},
-        {11, "Router Advert: %d"},
-        {12, "Neighbor Solicit: %d"},
-        {13, "Neighbor Advert: %d"},
-        {14, "Redirect: %d"},
-        {15, "Group Member Request: %d"},
-        {16, "Group Member Reply:%d"},
-        {17, "Group Member Reduce:%d"},
-        {0, ""}
+        { 3, "        Destination unreachable: %d"},
+        { 4, "        Admin Prohibit: %d"},
+        { 5, "        Time Exceeded: %d"},
+        { 6, "        Parameter Problem: %d"},
+        { 7, "        Too Big: %d"},
+        { 8, "        Echo Request: %d"},
+        { 9, "        Echo Reply: %d"},
+        {10, "        Router Solicit: %d"},
+        {11, "        Router Advert: %d"},
+        {12, "        Neighbor Solicit: %d"},
+        {13, "        Neighbor Advert: %d"},
+        {14, "        Redirect: %d"},
+        {15, "        Group Member Request: %d"},
+        {16, "        Group Member Reply: %d"},
+        {17, "        Group Member Reduce: %d"},
+        { 0, ""}
     };
     struct stat_table icmp6_outhistogram[] = {
-        {20, "Destination unreachable: %d"},
-        {21, "Admin Prohibit: %d"},
-        {22, "Time Exceeded: %d"},
-        {23, "Parameter Problem: %d"},
-        {24, "Too Big: %d"},
-        {25, "Echo Request: %d"},
-        {26, "Echo Reply: %d"},
-        {27, "Router Solicit: %d"},
-        {28, "Router Advert: %d"},
-        {29, "Neighbor Solicit: %d"},
-        {30, "Neighbor Advert: %d"},
-        {31, "Redirect: %d"},
-        {32, "Group Member Request: %d"},
-        {33, "Group Member Reply:%d"},
-        {34, "Group Member Reduce:%d"},
+        {20, "        Destination unreachable: %d"},
+        {21, "        Admin Prohibit: %d"},
+        {22, "        Time Exceeded: %d"},
+        {23, "        Parameter Problem: %d"},
+        {24, "        Too Big: %d"},
+        {25, "        Echo Request: %d"},
+        {26, "        Echo Reply: %d"},
+        {27, "        Router Solicit: %d"},
+        {28, "        Router Advert: %d"},
+        {29, "        Neighbor Solicit: %d"},
+        {30, "        Neighbor Advert: %d"},
+        {31, "        Redirect: %d"},
+        {32, "        Group Member Request: %d"},
+        {33, "        Group Member Reply: %d"},
+        {34, "        Group Member Reduce: %d"},
         {0, ""}
     };
 
@@ -414,10 +415,9 @@
 
 	struct servent *sp = NULL;
 	char line[80], *cp;
-	unsigned width;
+	int width = 27-9;
 	int len = sizeof line;
 
-	width = Aflag ? 12 : 16;
 	if (vflag && width < strlen(inet6name(in6)))
 		width = strlen(inet6name(in6));
 	snprintf(line, len, "%.*s.", width, inet6name(in6));
@@ -427,12 +427,12 @@
 
 	cp = strchr(line, '\0');
 	if (!nflag && port && local)
-		GETSERVBYPORT6(port, proto, sp);
+		GETSERVBYPORT6(htons(port), proto, sp);
 	if (sp || port == 0)
-		snprintf(cp, len, "%.8s", sp ? sp->s_name : "*");
+		snprintf(cp, len, vflag ? "%s" : "%.8s", sp ? sp->s_name : "*");
 	else
-		snprintf(cp, len, "%d", ntohs((u_short)port));
-	width = Aflag ? 18 : 22;
+		snprintf(cp, len, "%d", port);
+	width = 27;
 	if (vflag && width < strlen(line))
 		width = strlen(line);
 bail:
@@ -462,8 +462,8 @@
 
 	if (first && !nflag) {
 		first = 0;
-		if (gethostname(domain, sizeof(domain)) == 0 &&
-		    (cp = strchr(domain, '.')))
+		if (gethostname(line, sizeof(line)) == 0 &&
+		    (cp = strchr(line, '.')))
 			(void) strlcpy(domain, cp + 1, sizeof domain);
 		else
 			domain[0] = '\0';
@@ -471,7 +471,8 @@
 #ifdef NETSNMP_ENABLE_IPV6
 	cp = NULL;
 	if (!nflag && !IN6_IS_ADDR_UNSPECIFIED(in6p)) {
-		hp = gethostbyaddr((const char *)in6p, sizeof(*in6p), AF_INET6);
+		hp = netsnmp_gethostbyaddr((const char *)in6p, sizeof(*in6p),
+                                           AF_INET6);
 		if (hp) {
 			if ((cp = strchr(hp->h_name, '.')) &&
 			    !strcmp(cp + 1, domain))
diff --git a/apps/snmpnetstat/inetx.c b/apps/snmpnetstat/inetx.c
new file mode 100644
index 0000000..365ebee
--- /dev/null
+++ b/apps/snmpnetstat/inetx.c
@@ -0,0 +1,584 @@
+/*	$OpenBSD: inet6.c,v 1.31 2004/11/17 01:47:20 itojun Exp $	*/
+/*	BSDI inet.c,v 2.3 1995/10/24 02:19:29 prb Exp	*/
+/*
+ * Copyright (c) 1983, 1988, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifdef  INHERITED_CODE
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)inet.c	8.4 (Berkeley) 4/20/94";
+#else
+/*__RCSID("$OpenBSD: inet6.c,v 1.31 2004/11/17 01:47:20 itojun Exp $");*/
+/*__RCSID("KAME Id: inet6.c,v 1.10 2000/02/09 10:49:31 itojun Exp");*/
+#endif
+#endif /* not lint */
+#endif
+
+#include <net-snmp/net-snmp-config.h>
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_WINSOCK_H
+#include "winstub.h"
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#include <net-snmp/net-snmp-includes.h>
+
+#include "main.h"
+#include "netstat.h"
+
+struct stat_table {
+    unsigned int entry;      /* entry number in table */
+    /*
+     * format string to printf(description, value) 
+     * warning: the %d must be before the %s 
+     */
+    char            description[80];
+};
+
+void	inetxprint(int, struct sockaddr_in6 , int, const char *, int);
+
+/*
+ * Print a summary of TCP connections
+ * Listening processes are suppressed unless the
+ *   -a (all) flag is specified.
+ */
+const char     *tcpxstates[] = {
+    "",
+    "CLOSED",
+    "LISTEN",
+    "SYNSENT",
+    "SYNRECEIVED",
+    "ESTABLISHED",
+    "FINWAIT1",
+    "FINWAIT2",
+    "CLOSEWAIT",
+    "LASTACK",
+    "CLOSING",
+    "TIMEWAIT"
+};
+#define TCP_NSTATES 11
+
+typedef struct {
+    int stat;
+    int hcstat;
+    const char *str;
+} systemstats_t;
+
+systemstats_t systemstats[] = {
+    {  3,  4, "datagrams input" },
+    {  5,  6, "octets received" },
+    {  7,  0, "hdr errors input" },
+    {  8,  0, "no routes input" },
+    {  9,  0, "address errors input" },
+    { 10,  0, "unknown protocol input" },
+    { 12, 13, "input datagrams forwarded" },
+    { 11,  0, "truncated datagrams input" },
+    { 14,  0, "input reassembly required" },
+    { 15,  0, "input reassemled OK" },
+    { 16,  0, "input reassembly failed" },
+    { 17,  0, "input datagrams discarded" },
+    { 18, 19, "input datagrams received" },
+    { 20, 21, "output datagram requests" },
+    { 22,  0, "output no route" },
+    { 23, 24, "datagrams forwarded" },
+    { 25,  0, "output datagrams discarded" },
+    { 26,  0, "output datagrams fragmentation required" },
+    { 27,  0, "output datagrams fragmented" },
+    { 28,  0, "output fragmentation failed" },
+    { 29,  0, "fragments created" },
+    { 30, 31, "datagrams transmitted" },
+    { 32, 33, "octets transmitted" },
+    {  0 }
+};
+
+systemstats_t icmpstats[] = {
+    {  2,  0, "input messages" },
+    {  3,  0, "input errors" },
+    {  4,  0, "output messages" },
+    {  5,  0, "output errors" },
+    {  0 }
+};
+
+typedef struct {
+    int code;
+    const char *name;
+} codelist_t;
+
+codelist_t icmpcodes[] = {
+    {   0, "Echo reply" },
+    {   3, "Destination unreachable" },
+    {   4, "Source quench" },
+    {   5, "Redirect" },
+    {   6, "Alternate host address" },
+    {   8, "Echo request" },
+    {   9, "Router advertisement" },
+    {  10, "Router selection" },
+    {  11, "Time exceeded" },
+    {  12, "Parameter problem" },
+    {  13, "Timestamp request" },
+    {  14, "Timestamp reply" },
+    {  15, "Information request" },
+    {  16, "Information reply" },
+    {  17, "Address mask request" },
+    {  18, "Address mask reply" },
+    { 0 }
+};
+
+codelist_t icmp6codes[] = {
+    {   1,   "Destination Unreachable" },
+    {   2,   "Packet Too Big" },
+    {   3,   "Time Exceeded" },
+    {   4,   "Parameter Problem" },
+    { 100,   "Private experimentation 100" },
+    { 101,   "Private experimentation 101" },
+    { 127,   "Reserved for expansion of ICMPv6 error messages" },
+    { 128,   "Echo Request" },
+    { 129,   "Echo Reply" },
+    { 130,   "Multicast Listener Query" },
+    { 131,   "Multicast Listener Report" },
+    { 132,   "Multicast Listener Done" },
+    { 133,   "Router Solicitation" },
+    { 134,   "Router Advertisement" },
+    { 135,   "Neighbor Solicitation" },
+    { 136,   "Neighbor Advertisement" },
+    { 137,   "Redirect Message" },
+    { 138,   "Router Renumbering" },
+    { 139,   "ICMP Node Information Query" },
+    { 140,   "ICMP Node Information Response" },
+    { 141,   "Inverse Neighbor Discovery Solicitation Message" },
+    { 142,   "Inverse Neighbor Discovery Advertisement Message" },
+    { 143,   "Version 2 Multicast Listener Report" },
+    { 144,   "Home Agent Address Discovery Request Message" },
+    { 145,   "Home Agent Address Discovery Reply Message" },
+    { 146,   "Mobile Prefix Solicitation" },
+    { 147,   "Mobile Prefix Advertisement" },
+    { 148,   "Certification Path Solicitation Message" },
+    { 149,   "Certification Path Advertisement Message" },
+    { 151,   "Multicast Router Advertisement" },
+    { 152,   "Multicast Router Solicitation" },
+    { 153,   "Multicast Router Termination" },
+    { 154,   "FMIPv6 Messages" },
+    { 155,   "RPL Control Message" },
+    { 0 }
+};
+
+
+void
+tcpxprotopr(const char *name)
+{
+    netsnmp_variable_list *var, *vp, *pvar;
+    oid    tcpConnectionState_oid[] = { 1,3,6,1,2,1,6,19,1,7 };
+    size_t tcpConnectionState_len   = OID_LENGTH( tcpConnectionState_oid );
+    int    state, i;
+    struct sockaddr_in6 localAddr, remoteAddr;
+    int    localPort,     remotePort,  pid = 0;
+    int    localType,    remoteType, inx;
+    int    first = 1;
+    static int done = 0;
+
+    if (done++) return;
+
+    /*
+     * Walking the v6 tcpConnectionState column will provide all
+     *   the necessary information.
+     */
+    var = NULL;
+    snmp_varlist_add_variable( &var, tcpConnectionState_oid,
+                                     tcpConnectionState_len,
+                                     ASN_NULL, NULL,  0);
+    if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
+        return;
+    if ((var->type & 0xF0) == 0x80)	/* Exception */
+        return;
+
+    for (vp = var; vp ; vp=vp->next_variable) {
+	char lname[5];
+        state = *vp->val.integer;
+	inx = tcpConnectionState_len;
+	pvar = NULL;
+
+	vp->name[inx-1] = 8;
+	snmp_varlist_add_variable( &pvar, vp->name, vp->name_length,
+					 ASN_NULL, NULL,  0);
+	if (netsnmp_query_get( pvar, ss ) != SNMP_ERR_NOERROR) {
+	    snmp_free_var( pvar );
+	    return;
+	}
+	if ((pvar->type & 0xF0) != 0x80)	/* Exception */
+	    pid = *pvar->val.integer;
+        
+        /* Extract the local/remote information from the index values */
+	localType = vp->name[inx++];
+	for (i = 0; i < vp->name[inx]; i++)
+	    localAddr.sin6_addr.s6_addr[i] = vp->name[inx+i+1];
+	inx += vp->name[inx] + 1;
+        localPort    = vp->name[inx++];
+	remoteType = vp->name[inx++];
+	for (i = 0; i < vp->name[inx]; i++)
+	    remoteAddr.sin6_addr.s6_addr[i] = vp->name[inx+i+1];
+	inx += vp->name[inx] + 1;
+        remotePort    = vp->name[inx++];
+
+	snmp_free_varbind(pvar);
+
+	if (af == AF_INET && localType == 2) continue;
+	if (af == AF_INET6 && localType != 2) continue;
+
+        if (first) {
+            printf("Active Internet (%s) Connections", "tcp");
+            putchar('\n');
+            printf("%-5.5s %-27.27s %-27.27s %11.11s %5.5s\n",
+                   "Proto", "Local Address", "Remote Address", "State", "PID");
+            first = 0;
+        }
+
+	strcpy(lname, "tcp");
+	if (localType == 2) lname[3] = '6';
+	else lname[3] = '4';
+	lname[4] = 0;
+        printf("%-5.5s", lname);
+        inetxprint(localType, localAddr,  localPort, "tcp", 1);
+        inetxprint(remoteType, remoteAddr, remotePort, "tcp", 0);
+        if ( state < 1 || state > TCP_NSTATES )
+            printf(" %11d %5d\n", state, pid);
+        else
+            printf(" %11s %5d\n", tcpxstates[ state ], pid);
+    }
+    snmp_free_varbind( var );
+
+    if (aflag)
+	listenxprotopr(name);
+}
+
+/*
+ * Print a summary of listening "connections"
+ */
+void
+listenxprotopr(const char *name)
+{
+    netsnmp_variable_list *var, *vp;
+    oid    tcpListenerProcess_oid[] = { 1,3,6,1,2,1,6,20,1,4 };
+    size_t tcpListenerProcess_len   = OID_LENGTH( tcpListenerProcess_oid );
+    struct sockaddr_in6 localAddr;
+    int    localType, localPort, pid;
+    int    i, inx;
+
+    /*
+     * Walking a single column of the udpTable will provide
+     *   all the necessary information from the index values.
+     */
+    var = NULL;
+    snmp_varlist_add_variable( &var, tcpListenerProcess_oid,
+                                     tcpListenerProcess_len,
+                                     ASN_NULL, NULL,  0);
+    if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
+        return;
+    if ((var->type & 0xF0) == 0x80)	/* Exception */
+        return;
+
+    printf("Listening Internet (%s) Connections\n", "tcp");
+    printf("%-5.5s %-27.27s %5s\n", "Proto", "Local Address", "PID");
+    for (vp = var; vp ; vp=vp->next_variable) {
+	char lname[5];
+	inx = tcpListenerProcess_len;
+        /*
+         * Extract the local port from the index values, but take
+         *   the IP address from the varbind value, (which is why
+         *   we walked udpLocalAddress rather than udpLocalPort)
+         */
+	localType = vp->name[inx++];
+	if (af == AF_INET && localType == 2) continue;
+	if (af == AF_INET6 && localType != 2) continue;
+
+	for (i = 0; i < vp->name[inx]; i++)
+	    localAddr.sin6_addr.s6_addr[i] = vp->name[inx+i+1];
+	inx += vp->name[inx]+1;
+        localPort = vp->name[ inx++ ];
+        pid   = *vp->val.integer;
+	strcpy(lname, "tcp");
+	if (localType == 2) lname[3] = '6';
+	else lname[3] = '4';
+	lname[4] = 0;
+        printf("%-5.5s", lname);
+        inetxprint(localType, localAddr, localPort, "tcp", 1);
+        printf(" %5d\n", pid);
+    }
+    snmp_free_varbind( var );
+}
+
+/*
+ * Print a summary of UDPv6 "connections"
+ *    XXX - what about "listening" services ??
+ */
+void
+udpxprotopr(const char *name)
+{
+    netsnmp_variable_list *var, *vp;
+    oid    udpEndpointProcess_oid[] = { 1,3,6,1,2,1,7,7,1,8 };
+    size_t udpEndpointProcess_len   = OID_LENGTH( udpEndpointProcess_oid );
+    struct sockaddr_in6 localAddr, remoteAddr;
+    int    localType, remoteType, localPort, remotePort, pid;
+    int    i, inx;
+    static int done = 0;
+
+    if (done++) return;
+
+    /*
+     * Walking a single column of the udpTable will provide
+     *   all the necessary information from the index values.
+     */
+    var = NULL;
+    snmp_varlist_add_variable( &var, udpEndpointProcess_oid,
+                                     udpEndpointProcess_len,
+                                     ASN_NULL, NULL,  0);
+    if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
+        return;
+    if ((var->type & 0xF0) == 0x80)	/* Exception */
+        return;
+
+    printf("Active Internet (%s) Connections\n", "udp");
+    printf("%-5.5s %-27.27s %-27.27s %5s\n", "Proto", "Local Address", "Remote Address", "PID");
+    for (vp = var; vp ; vp=vp->next_variable) {
+        char lname[5];
+	inx = udpEndpointProcess_len;
+        /*
+         * Extract the local port from the index values, but take
+         *   the IP address from the varbind value, (which is why
+         *   we walked udpLocalAddress rather than udpLocalPort)
+         */
+	localType = vp->name[inx++];
+	if (af == AF_INET && localType == 2) continue;
+	if (af == AF_INET6 && localType != 2) continue;
+	for (i = 0; i < vp->name[inx]; i++)
+	    localAddr.sin6_addr.s6_addr[i] = vp->name[inx+i+1];
+	inx += vp->name[inx]+1;
+        localPort = vp->name[ inx++ ];
+	remoteType = vp->name[inx++];
+	for (i = 0; i < vp->name[inx]; i++)
+	    remoteAddr.sin6_addr.s6_addr[i] = vp->name[inx+i+1];
+	inx += vp->name[inx]+1;
+        remotePort = vp->name[ inx++ ];
+        pid   = *vp->val.integer;
+	strcpy(lname, "udp");
+	if (localType == 2) lname[3] = '6';
+	else lname[3] = '4';
+	lname[4] = 0;
+        printf("%-5.5s", lname);
+        inetxprint(localType, localAddr, localPort, "udp", 1);
+        inetxprint(remoteType, remoteAddr, remotePort, "udp", 1);
+        printf(" %5d\n", pid);
+    }
+    snmp_free_varbind( var );
+}
+
+static void
+statsprint(const char *name, const systemstats_t *st, int proto,
+	const oid *tbl, size_t tbllen)
+{
+    oid var[32];
+    size_t len;
+    netsnmp_variable_list *vb;
+
+    memcpy(var, tbl, tbllen*sizeof(oid));
+    var[tbllen+1] = proto;
+    len = tbllen+2;
+
+    printf("%s:\n", name);
+    while (st->stat) {
+	vb = NULL;
+	if (st->hcstat) {
+	    var[tbllen] = st->hcstat;
+	    snmp_varlist_add_variable( &vb, var, len, ASN_NULL, NULL,  0);
+	    if (netsnmp_query_get( vb, ss ) != SNMP_ERR_NOERROR) {
+		snmp_free_var( vb );
+		vb = NULL;
+	    }
+	}
+	if (!vb) {
+	    var[tbllen] = st->stat;
+	    snmp_varlist_add_variable( &vb, var, len, ASN_NULL, NULL, 0);
+	    if (netsnmp_query_get( vb, ss ) != SNMP_ERR_NOERROR) {
+		snmp_free_var( vb );
+		vb = NULL;
+	    }
+	}
+	if (vb) {
+	    if (vb->type == ASN_COUNTER) {
+		if (*vb->val.integer > 0 || sflag == 1)
+		    printf("%14lu %s\n", *vb->val.integer, st->str);
+	    }
+	    else if (vb->type == ASN_COUNTER64) {
+		char a64buf[I64CHARSZ + 1];
+		printU64(a64buf, vb->val.counter64);
+		if (strcmp(a64buf, "0") != 0 || sflag == 1)
+		    printf("%14s %s\n", a64buf, st->str);
+	    }
+	    else
+		printf("%14s %s\n", "-", st->str);
+	    snmp_free_varbind(vb);
+	}
+	else {
+	    printf("%14s %s\n", "-", st->str);
+	}
+	st++;
+    }
+}
+
+static void
+prhisto(const char *name, const oid *var, size_t len, int ver, codelist_t *cs)
+{
+    netsnmp_variable_list *vb = NULL, *vp;
+    codelist_t *cp;
+    int code;
+    char nocode[32];
+
+    snmp_varlist_add_variable( &vb, var, len, ASN_NULL, NULL,  0);
+    if (netsnmp_query_walk( vb, ss ) != SNMP_ERR_NOERROR) {
+	snmp_free_var( vb );
+	return;
+    }
+    printf("     %s histogram:\n", name);
+    printf("     %10s %10s %s\n", "input", "output", "type");
+    for (code = 0; code < 256; code++) {
+	unsigned long inp = 0, out = 0;
+	int found = 0;
+	vp = vb;
+	while (vp && found != 2) {
+	    if (vp->name[11] == code && vp->name[10] == ver) {
+		if (vp->name[9] == 3) inp = *vp->val.integer;
+		else out = *vp->val.integer;
+		found++;
+	    }
+	    vp = vp->next_variable;
+	}
+	if (found) {
+	    cp = cs;
+	    while (cp->name && cp->code != code) cp++;
+	    if (inp || out || sflag == 1) {
+		if (!cp->code)
+		    snprintf(nocode, sizeof nocode, "type %d", code);
+		printf("     %10lu %10lu %s\n", inp, out, cp->name ? cp->name : nocode);
+	    }
+	}
+    }
+    snmp_free_varbind(vb);
+}
+
+void
+ipx_stats(const char *name)
+{
+    oid ipsysstat_oid[] = { 1, 3, 6, 1, 2, 1, 4, 31, 1, 1 };
+    size_t ipsysstat_len = sizeof(ipsysstat_oid) / sizeof(ipsysstat_oid[0]);
+    static int first = 1;
+
+    if (!first) return;
+    first = 0;
+
+    if (!name || strcmp(name, "ip") == 0)
+	statsprint("ip", systemstats, 1, ipsysstat_oid, ipsysstat_len);
+    if (!name || strcmp(name, "ip6") == 0)
+	statsprint("ip6", systemstats, 2, ipsysstat_oid, ipsysstat_len);
+}
+
+void
+icmpx_stats(const char *name)
+{
+    oid icmpstat_oid[] = { 1, 3, 6, 1, 2, 1, 5, 29, 1 };
+    size_t icmpstat_len = sizeof(icmpstat_oid) / sizeof(icmpstat_oid[0]);
+    oid icmpmsg_oid[] = { 1, 3, 6, 1, 2, 1, 5, 30, 1 };
+    size_t icmpmsg_len = sizeof(icmpmsg_oid) / sizeof(icmpmsg_oid[0]);
+    static int first = 1;
+
+    if (!first)
+	return;
+    first = 0;
+
+    if (!name || strcmp(name, "icmp") == 0) {
+	statsprint("icmp", icmpstats, 1, icmpstat_oid, icmpstat_len);
+	prhisto("icmp", icmpmsg_oid, icmpmsg_len, 1, icmpcodes);
+    }
+    if (!name || strcmp(name, "icmp6") == 0) {
+	statsprint("icmp6", icmpstats, 2, icmpstat_oid, icmpstat_len);
+	prhisto("icmp6", icmpmsg_oid, icmpmsg_len, 2, icmp6codes);
+    }
+}
+
+
+static void
+unknownprint(void)
+{
+    char line[80], *cp;
+    int width = 27;
+
+    if (vflag)
+	snprintf(line, sizeof line, "%s.", "*");
+    else
+	snprintf(line, sizeof line, "%.*s.", width-9, "*");
+    cp = strchr(line, '\0');
+    snprintf(cp, line + sizeof line - cp, vflag ? "%s" : "%.8s", "*");
+    if (vflag && width < strlen(line))
+	width = strlen(line);
+    printf(" %-*.*s", width, width, line);
+}
+
+/*
+ * Pretty print an Internet address (net address + port).
+ * If the nflag was specified, use numbers instead of names.
+ */
+
+void
+inetxprint(int proto, struct sockaddr_in6 in6, int port, const char *name, int local)
+{
+
+	if (proto == 2)
+	    inet6print((u_char *)&in6.sin6_addr.s6_addr, port, name, local);
+	else if (proto == 1)
+	    inetprint((struct in_addr *)&in6.sin6_addr.s6_addr, port, name, local);
+	else if (proto == 0)
+	    unknownprint();
+	else abort();
+}
diff --git a/apps/snmpnetstat/main.c b/apps/snmpnetstat/main.c
index fa199ed..0e977ad 100644
--- a/apps/snmpnetstat/main.c
+++ b/apps/snmpnetstat/main.c
@@ -61,13 +61,13 @@
 #include "winstub.h"
 #endif
 
-int	Aflag;		/* show addresses of protocol control block */
 int	aflag;		/* show all sockets (including servers) */
 int	bflag;		/* show bytes instead of packets */
 int	dflag;		/* show i/f dropped packets */
 int	gflag;		/* show group (multicast) routing or stats */
 int	iflag;		/* show interfaces */
 int	lflag;		/* show routing table with use and ref */
+int	Lflag;		/* Legacy mibs */
 int	mflag;		/* show memory stats */
 int	nflag;		/* show addresses numerically */
 int	oflag;		/* Open/Net-BSD style octet output */
@@ -86,7 +86,7 @@
 int     max_getbulk = 32;  /* specifies the max-repeaters value to use with GETBULK requests */
 
 char    *progname = NULL;
-
+const char *pname;
     /*
      * struct nlist nl[] - Omitted
      */
@@ -99,7 +99,9 @@
 	stringfun	*pr_cblocks;	/* control blocks printing routine */
 	stringfun	*pr_stats;	/* statistics printing routine */
 	const char	*pr_name;	/* well-known name */
-} protox[] = {
+};
+
+struct protox protox[] = {
 	{ 1,	tcpprotopr,	tcp_stats,	"tcp" },	
 	{ 1,	udpprotopr,	udp_stats,	"udp" },	
 
@@ -119,6 +121,16 @@
 	{ 0,	(stringfun*)0,	(stringfun*)0,	NULL }
 };
 
+struct protox ipxprotox[] = {
+	{ 1,	tcpxprotopr,	tcp_stats,	"tcp" },	
+	{ 1,	udpxprotopr,	udp_stats,	"udp" },	
+	{ 1,	(stringfun*)0,	ipx_stats,	"ip" },/* ip6protopr Omitted */
+	{ 1,	(stringfun*)0,	ipx_stats,	"ip6" },/* ip6protopr Omitted */
+	{ 1,	(stringfun*)0,	icmpx_stats,	"icmp" },
+	{ 1,	(stringfun*)0,	icmpx_stats,	"icmp6" },
+	{ 0,	(stringfun*)0,	(stringfun*)0,	NULL }
+};
+
 	/* {ipx,ns,atalk}protox Omitted */
 
 struct protox *protoprotox[] = {
@@ -140,11 +152,6 @@
     case 'C':
         while (*optarg) {
             switch (*optarg++) {
-	    /*	case 'A':		*BSD:  display PCB addresses
-					Linux: protocol family
-			Aflag = 1;
-			break;
-	     */
 		case 'a':
 			aflag = 1;
 			break;
@@ -194,6 +201,9 @@
 		case 'i':
 			iflag = 1;
 			break;
+		case 'L':
+			Lflag = 1;
+			break;
 	    /*  case 'L':		FreeBSD: Display listen queue lengths
 					NetBSD:  Suppress link-level routes */
 	    /*	case 'l':		OpenBSD: Wider IPv6 display
@@ -230,6 +240,7 @@
 				exit(1);
 			}
 			pflag = 1;
+			pname = tp->pr_name;
 			return;
 	    /*	case 'q':		NetBSD:  IRQ information
 					OpenBSD: Suppress inactive I/Fs
@@ -358,6 +369,7 @@
 	 *     Kernel namelis handling
 	 */
 
+#if 0
 	if (mflag) {
             /*
 		mbpr(nl[N_MBSTAT].n_value, nl[N_MBPOOL].n_value,
@@ -369,6 +381,7 @@
 		printproto(tp, tp->pr_name);
 		exit(0);
 	}
+#endif
 	/*
 	 * Keep file descriptors open to avoid overhead
 	 * of open/close on each call to get* routines.
@@ -385,7 +398,10 @@
 			rt_stats();
 		else
               */
-			routepr();
+		if (Lflag || routexpr(af) == 0) {
+		    if (route4pr(af) == 0 && af == AF_INET) routepr();
+		    route6pr(af);
+		}
 		exit(0);
 	}
      /*
@@ -416,23 +432,33 @@
 		exit(0);
 	}
      */
-	if (af == AF_INET || af == AF_UNSPEC) {
+	setservent(1);
+        if (Lflag) {
+            switch (af) {
+            case AF_UNSPEC:
 		setprotoent(1);
-		setservent(1);
 		/* ugh, this is O(MN) ... why do we do this? */
 		while ((p = getprotoent())) {
 			for (tp = protox; tp->pr_name; tp++)
 				if (strcmp(tp->pr_name, p->p_name) == 0)
-					break;
-			if (tp->pr_name == NULL || tp->pr_wanted == 0)
-				continue;
-			printproto(tp, p->p_name);
+					if (tp->pr_name && tp->pr_wanted)
+					    printproto(tp, p->p_name);
 		}
 		endprotoent();
+                break;
+            case AF_INET:
+                    for (tp = protox; tp->pr_name; tp++)
+                            printproto(tp, tp->pr_name);
+            case AF_INET6:
+                    for (tp = ip6protox; tp->pr_name; tp++)
+                            printproto(tp, tp->pr_name);
+            }
 	}
-	if (af == AF_INET6 || af == AF_UNSPEC)
-		for (tp = ip6protox; tp->pr_name; tp++)
-			printproto(tp, tp->pr_name);
+        else {
+	    for (tp = ipxprotox; tp->pr_name; tp++)
+		if (!pname || strcmp(pname,tp->pr_name) == 0)
+		    printproto(tp, pname);
+	}
     /*
 	if (af == AF_IPX || af == AF_UNSPEC)
 		for (tp = ipxprotox; tp->pr_name; tp++)
@@ -477,12 +503,6 @@
 	return (n != 1 ? "s" : "");
 }
 
-const char *
-plurales(int n)
-{
-	return (n != 1 ? "es" : "");
-}
-
 /*
  * Find the protox for the given "well-known" name.
  */
@@ -532,14 +552,12 @@
 usage(void)
 {
 	(void)fprintf(stderr,
-"usage: %s [snmp_opts] [-Can] [-Cf address_family]\n", progname);
+"usage: %s [snmp_opts] [-Canv] [-Cf address_family]\n", progname);
 	(void)fprintf(stderr,
-"       %s [snmp_opts] [-CbdgimnrSs] [-Cf address_family]\n", progname);
+"       %s [snmp_opts] [-Cibodnv] [-CI interface] [-Cw wait]\n", progname);
 	(void)fprintf(stderr,
-"       %s [snmp_opts] [-Cbdn] [-CI interface] [-Cw wait]\n", progname);
+"       %s [snmp_opts] [-Cs[s]] [-Cp protocol]\n", progname);
 	(void)fprintf(stderr,
-"       %s [snmp_opts] [-Cs] [-Cp protocol]\n", progname);
-	(void)fprintf(stderr,
-"       %s [snmp_opts] [-Ca] [-Cf address_family] [-Ci | -CI interface]\n", progname);
+"       %s [snmp_opts] [-Crnv] [-Cf address_family]\n", progname);
 	exit(1);
 }
diff --git a/apps/snmpnetstat/netstat.h b/apps/snmpnetstat/netstat.h
index 355c8b2..ba61eb3 100644
--- a/apps/snmpnetstat/netstat.h
+++ b/apps/snmpnetstat/netstat.h
@@ -39,13 +39,13 @@
 /* What is the max length of a pointer printed with %p (including 0x)? */
 #define PLEN	(LONG_BIT / 4 + 2)
 
-extern int	Aflag;		/* show addresses of protocol control block */
 extern int	aflag;		/* show all sockets (including servers) */
 extern int	bflag;		/* show bytes instead of packets */
 extern int	dflag;		/* show i/f dropped packets */
 extern int	gflag;		/* show group (multicast) routing or stats */
 extern int	iflag;		/* show interfaces */
 extern int	lflag;		/* show routing table with use and ref */
+extern int	Lflag;		/* Legacy mibs */
 extern int	mflag;		/* show memory stats */
 extern int	nflag;		/* show addresses numerically */
 extern int	oflag;		/* Open/Net-BSD style octet output */
@@ -67,7 +67,6 @@
 extern	char *__progname; /* program name, from crt0.o */
 
 const char	*plural(int);
-const char	*plurales(int);
 
 void	tcpprotopr(const char *);
 void	udpprotopr(const char *);
@@ -81,15 +80,26 @@
 void	ip6_stats(  const char *);
 void	icmp6_stats(const char *);
 
+void	tcpxprotopr(const char *);
+void	udpxprotopr(const char *);
+void	listenxprotopr(const char *);
+void	ipx_stats(const char *);
+void	icmpx_stats(const char *);
+
 void	pr_rthdr(int);
 void	pr_encaphdr(void);
 void	pr_family(int);
 void	rt_stats(void);
 
+void    get_ifname(char *, int);
 char	*routename(in_addr_t);
 char	*netname(in_addr_t, in_addr_t);
 char	*ns_print(struct sockaddr *);
 void	routepr(void);
+int     route4pr(int);
+int     route6pr(int);
+int     routexpr(int);
 
 void	intpr(int);
-
+void	inetprint(struct in_addr *, int, const char *, int);
+void	inet6print(unsigned char *, int, const char *, int);
diff --git a/apps/snmpnetstat/route.c b/apps/snmpnetstat/route.c
index 98a9c0c..1dba74d 100644
--- a/apps/snmpnetstat/route.c
+++ b/apps/snmpnetstat/route.c
@@ -80,13 +80,13 @@
 #define SET_ALL  0x1f
 
 struct route_entry {
-    oid             instance[4];
     in_addr_t       destination;
     in_addr_t       mask;
     in_addr_t       gateway;
     int             ifNumber;
     int             type;
     int             proto;
+    int             af;
     int             set_bits;
     char            ifname[64];
 };
@@ -110,7 +110,7 @@
     netsnmp_variable_list *var=NULL, *vp;
     char  *cp;
     
-    printf("Routing tables\n");
+    printf("Routing tables (ipRouteTable)\n");
     pr_rthdr(AF_INET);
 
 #define ADD_RTVAR( x ) rtcol_oid[ rtcol_len-1 ] = x; \
@@ -132,6 +132,10 @@
         if ( snmp_oid_compare( rtcol_oid, rtcol_len,
                                var->name, rtcol_len) != 0 )
             break;    /* End of Table */
+	if (var->type == SNMP_NOSUCHOBJECT ||
+                var->type == SNMP_NOSUCHINSTANCE ||
+                var->type == SNMP_ENDOFMIBVIEW)
+	    break;
         memset( &route, 0, sizeof( struct route_entry ));
         /* Extract ipRouteDest index value */
         cp = tmpAddr.data;
@@ -174,6 +178,104 @@
 }
 
 
+int
+route4pr(int af)
+{
+    struct route_entry  route, *rp = &route;
+    oid    rtcol_oid[]  = { 1,3,6,1,2,1,4,24,4,1,0 }; /* ipCidrRouteEntry */
+    size_t rtcol_len    = OID_LENGTH( rtcol_oid );
+    netsnmp_variable_list *var = NULL, *vp;
+    union {
+        in_addr_t addr;
+        unsigned char data[4];
+    } tmpAddr;
+    int printed = 0;
+    int hdr_af = AF_UNSPEC;
+
+    if (af != AF_UNSPEC && af != AF_INET)
+        return 0;
+
+#define ADD_RTVAR( x ) rtcol_oid[ rtcol_len-1 ] = x; \
+    snmp_varlist_add_variable( &var, rtcol_oid, rtcol_len, ASN_NULL, NULL,  0)
+    ADD_RTVAR( 5 );                 /* ipCidrRouteIfIndex */
+    ADD_RTVAR( 6 );                 /* ipCidrRouteType    */
+    ADD_RTVAR( 7 );                 /* ipCidrRouteProto   */
+#undef ADD_RTVAR
+
+    /*
+     * Now walk the ipCidrRouteTable, reporting the various route entries
+     */
+    while ( 1 ) {
+        oid *op;
+        unsigned char *cp;
+
+        if (netsnmp_query_getnext( var, ss ) != SNMP_ERR_NOERROR)
+            break;
+        rtcol_oid[ rtcol_len-1 ] = 5;        /* ipRouteIfIndex */
+        if ( snmp_oid_compare( rtcol_oid, rtcol_len,
+                               var->name, rtcol_len) != 0 )
+            break;    /* End of Table */
+        if (var->type == SNMP_NOSUCHOBJECT ||
+                var->type == SNMP_NOSUCHINSTANCE ||
+                var->type == SNMP_ENDOFMIBVIEW)
+            break;
+        memset( &route, 0, sizeof( struct route_entry ));
+	rp->af = AF_INET;
+	op = var->name+rtcol_len;
+        cp = tmpAddr.data;
+        cp[0] = *op++ & 0xff;
+        cp[1] = *op++ & 0xff;
+        cp[2] = *op++ & 0xff;
+        cp[3] = *op++ & 0xff;
+        rp->destination = tmpAddr.addr;
+        cp = tmpAddr.data;
+        cp[0] = *op++ & 0xff;
+        cp[1] = *op++ & 0xff;
+        cp[2] = *op++ & 0xff;
+        cp[3] = *op++ & 0xff;
+        rp->mask = tmpAddr.addr;
+	op++; /* ipCidrRouteTos */
+        cp = tmpAddr.data;
+        cp[0] = *op++ & 0xff;
+        cp[1] = *op++ & 0xff;
+        cp[2] = *op++ & 0xff;
+        cp[3] = *op++ & 0xff;
+        rp->gateway = tmpAddr.addr;
+	rp->set_bits = SET_MASK | SET_GWAY;
+
+        for ( vp=var; vp; vp=vp->next_variable ) {
+            switch ( vp->name[ rtcol_len - 1 ] ) {
+            case 5:     /* ipCidrRouteIfIndex */
+                rp->ifNumber  = *vp->val.integer;
+                rp->set_bits |= SET_IFNO;
+                break;
+            case 6:     /* ipCidrRouteType    */
+                rp->type      = *vp->val.integer;
+                rp->set_bits |= SET_TYPE;
+                break;
+            case 7:     /* ipCidrRouteProto   */
+                rp->proto     = *vp->val.integer;
+                rp->set_bits |= SET_PRTO;
+                break;
+            }
+        }
+        if (rp->set_bits != SET_ALL) {
+            continue;   /* Incomplete query */
+        }
+
+        if (hdr_af != rp->af) {
+            if (hdr_af != AF_UNSPEC)
+                printf("\n");
+            hdr_af = rp->af;
+	    printf("Routing tables (ipCidrRouteTable)\n");
+            pr_rthdr(hdr_af);
+        }
+        p_rtnode( rp );
+        printed++;
+    }
+    return printed;
+}
+
 
 struct iflist {
     int             index;
@@ -186,6 +288,8 @@
 {
     oid    ifdescr_oid[]  = { 1,3,6,1,2,1,2,2,1,2,0 };
     size_t ifdescr_len    = OID_LENGTH( ifdescr_oid );
+    oid    ifxcol_oid[] = { 1,3,6,1,2,1,31,1,1,1,1,0 };
+    size_t ifxcol_len   = OID_LENGTH( ifxcol_oid );
     netsnmp_variable_list *var = NULL;
     struct iflist         *ip;
 
@@ -204,6 +308,18 @@
     Iflist = ip;
     ip->index = ifIndex;
 
+    ifxcol_oid[ ifxcol_len-1 ] = ifIndex;
+    snmp_varlist_add_variable( &var, ifxcol_oid, ifxcol_len,
+                               ASN_NULL, NULL,  0);
+    if (netsnmp_query_get( var, ss ) == SNMP_ERR_NOERROR) {
+        if (var->val_len >= sizeof(ip->name))
+            var->val_len  = sizeof(ip->name) - 1;
+        memmove(ip->name, var->val.string, var->val_len);
+        ip->name[var->val_len] = '\0';
+	strcpy(name, ip->name);
+	return;
+    }
+
     ifdescr_oid[ ifdescr_len-1 ] = ifIndex;
     snmp_varlist_add_variable( &var, ifdescr_oid, ifdescr_len,
                                ASN_NULL, NULL,  0);
@@ -218,50 +334,6 @@
     strcpy(name, ip->name);
 }
 
-/*
- * Print address family header before a section of the routing table.
- */
-void
-pr_family(int af)
-{
-	const char *afname;
-
-	switch (af) {
-	case AF_INET:
-		afname = "Internet";
-		break;
-#ifdef NETSNMP_ENABLE_IPV6
-	case AF_INET6:
-		afname = "Internet6";
-		break;
-#endif
-    /*
-	case AF_NS:
-		afname = "XNS";
-		break;
-	case AF_IPX:
-		afname = "IPX";
-		break;
-	case AF_CCITT:
-		afname = "X.25";
-		break;
-	case PF_KEY:
-		afname = "Encap";
-		break;
-	case AF_APPLETALK:
-		afname = "AppleTalk";
-		break;
-     */
-	default:
-		afname = NULL;
-		break;
-	}
-	if (afname)
-		printf("\n%s:\n", afname);
-	else
-		printf("\nProtocol Family %d:\n", af);
-}
-
 /* column widths; each followed by one space */
 #ifndef NETSNMP_ENABLE_IPV6
 #define	WID_DST(af)	26	/* width of destination column */
@@ -323,15 +395,15 @@
 
 	if (first) {
 		first = 0;
-		if (gethostname(domain, sizeof domain) == 0 &&
-		    (cp = strchr(domain, '.')))
+		if (gethostname(line, sizeof line) == 0 &&
+		    (cp = strchr(line, '.')))
 			(void) strlcpy(domain, cp + 1, sizeof domain);
 		else
 			domain[0] = '\0';
 	}
 	cp = NULL;
 	if (!nflag) {
-		hp = gethostbyaddr((char *)&in, sizeof (struct in_addr),
+		hp = netsnmp_gethostbyaddr((char *)&in, sizeof (struct in_addr),
 		    AF_INET);
 		if (hp) {
 			if ((cp = strchr(hp->h_name, '.')) &&
@@ -499,7 +571,6 @@
     static char flag_buf[10];
     char  *cp = flag_buf;
 
-    memset( flag_buf, 0, sizeof(flag_buf));
     *cp++ = '<';
     *cp++ = 'U';   /* route is in use */
     if (rp->mask  == 0xffffffff)
@@ -509,6 +580,7 @@
     if (rp->type  == 4)
         *cp++ = 'G';   /* remote destination/net */
     *cp++ = '>';
+    *cp = 0;
     return flag_buf;
 }
 
diff --git a/apps/snmpnetstat/routex.c b/apps/snmpnetstat/routex.c
new file mode 100644
index 0000000..be06d25
--- /dev/null
+++ b/apps/snmpnetstat/routex.c
@@ -0,0 +1,558 @@
+/*        $OpenBSD: route.c,v 1.66 2004/11/17 01:47:20 itojun Exp $        */
+/*        $NetBSD: route.c,v 1.15 1996/05/07 02:55:06 thorpej Exp $        */
+
+/*
+ * Copyright (c) 1983, 1988, 1993
+ *        The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifdef  INHERITED_CODE
+#ifndef lint
+#if 0
+static char sccsid[] = "from: @(#)route.c        8.3 (Berkeley) 3/9/94";
+#else
+static char *rcsid = "$OpenBSD: route.c,v 1.66 2004/11/17 01:47:20 itojun Exp $";
+#endif
+#endif /* not lint */
+#endif
+
+#include <net-snmp/net-snmp-config.h>
+
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#include <net-snmp/net-snmp-includes.h>
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+#ifndef INET
+#define INET
+#endif
+
+#include "main.h"
+#include "netstat.h"
+#if HAVE_WINSOCK_H
+#include "winstub.h"
+#endif
+
+/* inetCidrRouteTable */
+#define SET_IFNO 0x01
+#define SET_TYPE 0x02
+#define SET_PRTO 0x04
+#define SET_AGE  0x08
+#define SET_AS   0x10
+#define SET_MET1 0x20
+#define SET_ALL  0x3f
+
+/* ip6RouteTable */
+#define SET_HOP     0x40
+#define SET_INVALID 0x80
+#define SET_ALL6    0x67
+/* not invalid, and only the columns that we fetch */
+
+struct route_entry {
+    int             af;
+    struct sockaddr_storage dst;
+    struct sockaddr_storage hop;
+    int             mask;
+    int             ifNumber;
+    int             type;
+    int             proto;
+    int             age;
+    int             as;
+    int             metric1;
+    int             set_bits;
+    char            ifname[64];
+};
+
+
+static void pr_rtxhdr(int af, const char *table);
+static void p_rtnodex( struct route_entry *rp );
+
+/*
+ * Print routing tables.
+ */
+int
+routexpr(int af)
+{
+    struct route_entry  route, *rp = &route;
+    oid    rtcol_oid[]  = { 1,3,6,1,2,1,4,24,7,1,0 }; /* inetCidrRouteEntry */
+    size_t rtcol_len    = OID_LENGTH( rtcol_oid );
+    netsnmp_variable_list *var = NULL, *vp;
+    int hdr_af = AF_UNSPEC;
+    int printed = 0;
+
+#define ADD_RTVAR( x ) rtcol_oid[ rtcol_len-1 ] = x; \
+    snmp_varlist_add_variable( &var, rtcol_oid, rtcol_len, ASN_NULL, NULL,  0)
+    ADD_RTVAR( 7 );                 /* inetCidrRouteIfIndex */
+    ADD_RTVAR( 8 );                 /* inetCidrRouteType    */
+    ADD_RTVAR( 9 );                 /* inetCidrRouteProto   */
+    ADD_RTVAR( 10 );                /* inetCidrRouteAge   */
+    ADD_RTVAR( 11 );                /* inetCidrRouteNextHopAS   */
+    ADD_RTVAR( 12 );                /* inetCidrRouteMetric1   */
+#undef ADD_RTVAR
+
+    /*
+     * Now walk the inetCidrRouteTable, reporting the various route entries
+     */
+    while ( 1 ) {
+        oid *op;
+        unsigned char *cp;
+        int i;
+
+        if (netsnmp_query_getnext( var, ss ) != SNMP_ERR_NOERROR)
+            break;
+        rtcol_oid[ rtcol_len-1 ] = 7;        /* ifRouteIfIndex */
+        if ( snmp_oid_compare( rtcol_oid, rtcol_len,
+                               var->name, rtcol_len) != 0 )
+            break;    /* End of Table */
+        if (var->type == SNMP_NOSUCHOBJECT ||
+                var->type == SNMP_NOSUCHINSTANCE ||
+                var->type == SNMP_ENDOFMIBVIEW)
+            break;
+        memset( &route, 0, sizeof( struct route_entry ));
+        /* Extract inetCidrRouteDest, inetCidrRoutePfxLen,
+         * inetCidrRouteNextHop from index */
+        switch (var->name[rtcol_len]) {
+        case 1:
+            {   struct sockaddr_in *sin = (struct sockaddr_in *)&route.dst;
+                int len;
+                route.af = AF_INET;
+                sin->sin_family = AF_INET;
+                op = var->name+rtcol_len+1;
+                len = *op++;
+                cp = (unsigned char *)&sin->sin_addr;
+                for (i = 0; i < len; i++) *cp++ = *op++;
+                route.mask = *op++;
+                op += *op+1;
+                op++; /* addrType */
+                op++; /* addrLen */
+                sin = (struct sockaddr_in *)&route.hop;
+                sin->sin_family = AF_INET;
+                cp = (unsigned char *)&sin->sin_addr;
+                for (i = 0; i < len; i++) *cp++ = *op++;
+                break;
+            }
+        case 2:
+            {   struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&route.dst;
+                int len;
+                route.af = AF_INET6;
+                sin6->sin6_family = AF_INET6;
+                op = var->name+rtcol_len+1;
+                len = *op++;
+                cp = (unsigned char *)&sin6->sin6_addr;
+                for (i = 0; i < len; i++) *cp++ = *op++;
+                route.mask = *op++;
+                op += *op+1;
+                op++; /* addrType */
+                op++; /* addrLen */
+                sin6 = (struct sockaddr_in6 *)&route.hop;
+                sin6->sin6_family = AF_INET6;
+                cp = (unsigned char *)&sin6->sin6_addr;
+                for (i = 0; i < len; i++) *cp++ = *op++;
+                break;
+            }
+        default:
+            fprintf(stderr, "Bad address type: %d\n", (int)var->name[rtcol_len]);
+            exit(1);
+        }
+        /* Extract ipRouteDest index value */
+
+        for ( vp=var; vp; vp=vp->next_variable ) {
+            switch ( vp->name[ rtcol_len - 1 ] ) {
+            case 7:     /* inetCidrRouteIfIndex */
+                rp->ifNumber  = *vp->val.integer;
+                rp->set_bits |= SET_IFNO;
+                break;
+            case 8:     /* inetCidrRouteType    */
+                rp->type      = *vp->val.integer;
+                rp->set_bits |= SET_TYPE;
+                break;
+            case 9:     /* inetCidrRouteProto   */
+                rp->proto     = *vp->val.integer;
+                rp->set_bits |= SET_PRTO;
+                break;
+            case 10:     /* inetCidrRouteAge   */
+                rp->age     = *vp->val.integer;
+                rp->set_bits |= SET_AGE;
+                break;
+            case 11:     /* inetCidrRouteNextHopAS   */
+                rp->as     = *vp->val.integer;
+                rp->set_bits |= SET_AS;
+                break;
+            case 12:     /* inetCidrRouteMetric1   */
+                rp->metric1     = *vp->val.integer;
+                rp->set_bits |= SET_MET1;
+                break;
+            }
+        }
+        if (rp->set_bits != SET_ALL) {
+            continue;   /* Incomplete query */
+        }
+    
+        if (af != AF_UNSPEC && rp->af != af)
+            continue;
+
+        if (hdr_af != rp->af) {
+            if (hdr_af != AF_UNSPEC)
+                printf("\n");
+            hdr_af = rp->af;
+            pr_rtxhdr(hdr_af, "inetCidrRouteTable");
+        }
+        p_rtnodex( rp );
+        printed++;
+    }
+    return printed;
+}
+
+/*
+ * Backwards-compatibility for the IPV6-MIB
+ */
+int
+route6pr(int af)
+{
+    struct route_entry  route, *rp = &route;
+    oid    rtcol_oid[]  = { 1,3,6,1,2,1,55,1,11,1,0 }; /* ipv6RouteEntry */
+    size_t rtcol_len    = OID_LENGTH( rtcol_oid );
+    netsnmp_variable_list *var = NULL, *vp;
+    int printed = 0;
+    int hdr_af = AF_UNSPEC;
+    int i;
+
+    if (af != AF_UNSPEC && af != AF_INET6)
+        return 0;
+
+#define ADD_RTVAR( x ) rtcol_oid[ rtcol_len-1 ] = x; \
+    snmp_varlist_add_variable( &var, rtcol_oid, rtcol_len, ASN_NULL, NULL,  0)
+    ADD_RTVAR( 4 );                 /* ipv6RouteIfIndex */
+    ADD_RTVAR( 5 );                 /* ipv6RouteNextHop */
+    ADD_RTVAR( 6 );                 /* ipv6RouteType    */
+    ADD_RTVAR( 7 );                 /* ipv6RouteProto   */
+    ADD_RTVAR( 11 );                /* ipv6RouteMetric  */
+    ADD_RTVAR( 14 );                /* ipv6RouteValid   */
+#undef ADD_RTVAR
+
+    /*
+     * Now walk the ipv6RouteTable, reporting the various route entries
+     */
+    while ( 1 ) {
+        oid *op;
+        unsigned char *cp, *cp1;
+        struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&route.dst;
+
+        if (netsnmp_query_getnext( var, ss ) != SNMP_ERR_NOERROR)
+            break;
+        rtcol_oid[ rtcol_len-1 ] = 4;        /* ipv6RouteIfIndex */
+        if ( snmp_oid_compare( rtcol_oid, rtcol_len,
+                               var->name, rtcol_len) != 0 )
+            break;    /* End of Table */
+        if (var->type == SNMP_NOSUCHOBJECT ||
+                var->type == SNMP_NOSUCHINSTANCE ||
+                var->type == SNMP_ENDOFMIBVIEW)
+            break;
+        memset( &route, 0, sizeof( struct route_entry ));
+        rp->af = AF_INET6;
+        sin6->sin6_family = AF_INET6;
+        op = var->name+rtcol_len;
+        cp = (unsigned char *)&sin6->sin6_addr;
+        for (i = 0; i < 16; i++) *cp++ = *op++;
+        route.mask = *op++;
+
+        for ( vp=var; vp; vp=vp->next_variable ) {
+            switch ( vp->name[ rtcol_len - 1 ] ) {
+            case 4:     /* ipv6RouteIfIndex  */
+                rp->ifNumber  = *vp->val.integer;
+                /*
+                 * This is, technically, an Ipv6IfIndex, which
+                 * could maybe be different than the IfIndex
+                 * for the same interface.  We ignore this
+                 * possibility for now, in the hopes that
+                 * nobody actually allocates these numbers
+                 * differently.
+                 */
+                rp->set_bits |= SET_IFNO;
+                break;
+            case 5:     /* ipv6RouteNextHop  */
+                cp1 = (unsigned char *)vp->val.string;
+                sin6 = (struct sockaddr_in6 *)&rp->hop;
+                sin6->sin6_family = AF_INET6;
+                cp = (unsigned char *)&sin6->sin6_addr;
+                for (i = 0; i < 16; i++) *cp++ = *cp1++;
+                rp->set_bits |= SET_HOP;
+            case 6:     /* ipv6RouteType     */
+                rp->type      = *vp->val.integer;
+                /* This enum maps to similar values in inetCidrRouteType */
+                rp->set_bits |= SET_TYPE;
+                break;
+            case 7:     /* ipv6RouteProtocol */
+                rp->proto     = *vp->val.integer;
+                /* TODO: this does not map directly to the
+                 * inetCidrRouteProtocol values.  If we use
+                 * rp->proto more, we will have to manage this. */
+                rp->set_bits |= SET_PRTO;
+                break;
+            case 11:    /* ipv6RouteMetric   */
+                rp->metric1   = *vp->val.integer;
+                rp->set_bits |= SET_MET1;
+                break;
+            case 14:    /* ipv6RouteValid    */
+                if (*vp->val.integer == 2)
+                    rp->set_bits |= SET_INVALID;
+                break;
+            }
+        }
+        if (rp->set_bits != SET_ALL6) {
+            continue;   /* Incomplete query */
+        }
+    
+        if (hdr_af != rp->af) {
+            if (hdr_af != AF_UNSPEC)
+                printf("\n");
+            hdr_af = rp->af;
+            pr_rtxhdr(AF_INET6, "ip6RouteTable");
+        }
+        p_rtnodex( rp );
+        printed++;
+    }
+    return printed;
+}
+
+
+/* column widths; each followed by one space */
+#ifndef NETSNMP_ENABLE_IPV6
+#define        WID_DST(af)        26        /* width of destination column */
+#define        WID_GW(af)        18        /* width of gateway column */
+#else
+/* width of destination/gateway column */
+/* strlen("fe80::aaaa:bbbb:cccc:dddd@gif0") == 30, strlen("/128") == 4 */
+#define        WID_DST(af)        ((af) == AF_INET6 ? (nflag ? 34 : 26) : 26)
+#define        WID_GW(af)        ((af) == AF_INET6 ? (nflag ? 39 : 26) : 26)
+#endif /* NETSNMP_ENABLE_IPV6 */
+
+/*
+ * Print header for routing table columns.
+ */
+static void
+pr_rtxhdr(int af, const char *table)
+{
+    switch (af) {
+    case AF_INET:
+	printf("IPv4 Routing tables (inetCidrRouteTable)\n");
+	break;
+    case AF_INET6:
+	printf("IPv6 Routing tables (%s)\n", table);
+	break;
+    }
+    printf("%-*.*s ",
+	WID_DST(af), WID_DST(af), "Destination");
+    printf("%-*.*s %-6.6s  %s\n",
+	WID_GW(af), WID_GW(af), "Gateway",
+	"Flags", "Interface");
+}
+
+#ifndef HAVE_INET_NTOP
+/* MSVC and MinGW */
+#define inet_ntop netsnmp_inet_ntop
+static const char *
+netsnmp_inet_ntop(int af, const void *src, char *dst, size_t size)
+{
+    DWORD out_len = size;
+
+    switch (af) {
+    case AF_INET:
+	{
+	    struct sockaddr_in in;
+
+	    memset(&in, 0, sizeof(in));
+	    in.sin_family = af;
+	    memcpy(&in.sin_addr, src, 4);
+	    if (WSAAddressToString((struct sockaddr *)&in, sizeof(in), NULL, dst,
+				   &out_len) == 0)
+		return dst;
+	}
+	break;
+    case AF_INET6:
+	{
+	    struct sockaddr_in6 in6;
+
+	    memset(&in6, 0, sizeof(in6));
+	    in6.sin6_family = af;
+	    memcpy(&in6.sin6_addr, src, 16);
+	    if (WSAAddressToString((struct sockaddr *)&in6, sizeof(in6), NULL, dst,
+				   &out_len) == 0)
+		return dst;
+	}
+	break;
+    }
+    return NULL;
+}
+#endif
+
+/*
+ * Return the name of the network whose address is given.
+ * The address is assumed to be that of a net or subnet, not a host.
+ */
+static char *
+netxname(struct sockaddr_storage *in, int mask)
+{
+    static char host[MAXHOSTNAMELEN];
+    static char line[MAXHOSTNAMELEN];
+    struct sockaddr_in *sin = (struct sockaddr_in *)in;
+    struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)in;
+
+    switch (in->ss_family) {
+    case AF_INET:
+        inet_ntop(in->ss_family, &sin->sin_addr, host, sizeof(host));
+        if (mask == 32) strcpy(line, host);
+        else snprintf(line, sizeof(line), "%s/%d", host, mask);
+        break;
+    case AF_INET6:
+        inet_ntop(in->ss_family, &sin6->sin6_addr, host, sizeof(host));
+        if (mask == 128) strcpy(line, host);
+        else snprintf(line, sizeof(line), "%s/%d", host, mask);
+        break;
+    }
+    return line;
+}
+
+static char *
+routexname(struct sockaddr_storage *in)
+{
+    char *cp;
+    static char line[MAXHOSTNAMELEN];
+    struct hostent *hp = NULL;
+    static char domain[MAXHOSTNAMELEN];
+    static int first = 1;
+    struct sockaddr_in *sin = (struct sockaddr_in *)in;
+    struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)in;
+
+    if (first) {
+        first = 0;
+        if (gethostname(line, sizeof line) == 0 &&
+            (cp = strchr(line, '.')))
+            (void) strlcpy(domain, cp + 1, sizeof domain);
+        else
+            domain[0] = '\0';
+    }
+    cp = NULL;
+    if (!nflag) {
+        switch (in->ss_family) {
+        case AF_INET:
+            hp = netsnmp_gethostbyaddr(&sin->sin_addr,
+                    sizeof (struct in_addr), AF_INET);
+            break;
+        case AF_INET6:
+            hp = netsnmp_gethostbyaddr(&sin6->sin6_addr,
+                    sizeof (struct in6_addr), AF_INET6);
+            break;
+        }
+        if (hp) {
+            if ((cp = strchr(hp->h_name, '.')) && !strcmp(cp + 1, domain))
+                *cp = '\0';
+            cp = hp->h_name;
+        }
+    }
+    if (cp) {
+        strlcpy(line, cp, sizeof(line));
+    } else {
+        switch (in->ss_family) {
+        case AF_INET:
+            inet_ntop(sin->sin_family, &sin->sin_addr, line, sizeof(line));
+            break;
+        case AF_INET6:
+            inet_ntop(sin6->sin6_family, &sin6->sin6_addr, line, sizeof(line));
+            break;
+        }
+    }
+    return (line);
+}
+
+
+static char *
+s_rtflagsx( struct route_entry *rp )
+{
+    static char flag_buf[10];
+    char  *cp = flag_buf;
+
+    *cp++ = '<';
+    *cp++ = 'U';   /* route is in use */
+    if ((rp->af == AF_INET && rp->mask == 32) ||
+            (rp->af == AF_INET6 && rp->mask == 128))
+        *cp++ = 'H';   /* host */
+    if (rp->proto == 4)
+        *cp++ = 'D';   /* ICMP redirect */
+    if (rp->type  == 4)
+        *cp++ = 'G';   /* remote destination/net */
+    *cp++ = '>';
+    *cp = 0;
+    return flag_buf;
+}
+
+static void
+p_rtnodex( struct route_entry *rp )
+{
+    get_ifname(rp->ifname, rp->ifNumber);
+    if (rp->af == AF_INET) {
+        struct sockaddr_in *sin = (struct sockaddr_in *)&rp->dst;
+        printf("%-*s ",
+            WID_DST(AF_INET),
+                (sin->sin_addr.s_addr == INADDR_ANY) ? "default" :
+                (rp->mask == 32 ?
+                    routexname(&rp->dst) :
+                    netxname(&rp->dst, rp->mask)));
+    }
+    else if (rp->af == AF_INET6) {
+        struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&rp->dst;
+        struct in6_addr in6_addr_any = IN6ADDR_ANY_INIT;
+        printf("%-*s ",
+            WID_DST(AF_INET6),
+                memcmp(&sin6->sin6_addr, &in6_addr_any, sizeof(in6_addr_any)) == 0 ? "default" :
+                (rp->mask == 128 ?
+                    routexname(&rp->dst) :
+                    netxname(&rp->dst, rp->mask)));
+    }
+    printf("%-*s %-6.6s  %s",
+        WID_GW(rp->af),
+        1 ? routexname(&rp->hop) : "*",
+        s_rtflagsx(rp), rp->ifname);
+    if ((rp->set_bits & SET_AS) && rp->as != 0)
+        printf(" (AS %d)", rp->as);
+    printf("\n");
+}
diff --git a/apps/snmptest.c b/apps/snmptest.c
index 519e38e..24de47b 100644
--- a/apps/snmptest.c
+++ b/apps/snmptest.c
@@ -210,9 +210,11 @@
                     case SNMP_MSG_RESPONSE:
                         printf("Received Get Response ");
                         break;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                     case SNMP_MSG_SET:
                         printf("Received Set Request ");
                         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                     case SNMP_MSG_TRAP:
                         printf("Received Trap Request ");
                         break;
@@ -311,10 +313,12 @@
             command = SNMP_MSG_GETNEXT;
             printf("Request type is Getnext Request\n");
             break;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case 'S':
             command = SNMP_MSG_SET;
             printf("Request type is Set Request\n");
             break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         case 'B':
             command = SNMP_MSG_GETBULK;
             printf("Request type is Bulk Request\n");
@@ -333,11 +337,14 @@
             printf("(Are you sending to the right port?)\n");
             break;
         case 'D':
-            if (snmp_get_dump_packet()) {
-                snmp_set_dump_packet(0);
+            if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                       NETSNMP_DS_LIB_DUMP_PACKET)) {
+                netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                       NETSNMP_DS_LIB_DUMP_PACKET, 0);
                 printf("Turned packet dump off\n");
             } else {
-                snmp_set_dump_packet(1);
+                netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                       NETSNMP_DS_LIB_DUMP_PACKET, 1);
                 printf("Turned packet dump on\n");
             }
             break;
@@ -350,11 +357,14 @@
                 exit(0);
                 break;
             case 'P':
-                if (snmp_get_quick_print()) {
-                    snmp_set_quick_print(0);
+                if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                           NETSNMP_DS_LIB_QUICK_PRINT)) {
+                    netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                           NETSNMP_DS_LIB_QUICK_PRINT, 0);
                     printf("Turned quick printing off\n");
                 } else {
-                    snmp_set_quick_print(1);
+                    netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                           NETSNMP_DS_LIB_QUICK_PRINT, 1);
                     printf("Turned quick printing on\n");
                 }
                 break;
@@ -375,8 +385,12 @@
 	vp->name = snmp_duplicate_objid(name, vp->name_length);
     }
 
-    if (command == SNMP_MSG_SET || command == SNMP_MSG_INFORM
-        || command == SNMP_MSG_TRAP2) {
+    if (command == SNMP_MSG_INFORM
+        || command == SNMP_MSG_TRAP2
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        || command == SNMP_MSG_SET
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+        ) {
         printf("Type [i|u|s|x|d|n|o|t|a]: ");
         fflush(stdout);
         if (!fgets(buf, sizeof(buf), stdin)) {
diff --git a/apps/snmptls.c b/apps/snmptls.c
index 809d369..84c5fbe 100644
--- a/apps/snmptls.c
+++ b/apps/snmptls.c
@@ -4,10 +4,13 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #undef NETSNMP_USE_ASSERT
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_require(tls_fingerprint_build)
+
 #include <ctype.h>
 
 #include <openssl/ssl.h>
diff --git a/apps/snmptranslate.c b/apps/snmptranslate.c
index 7391fd4..2b19777 100644
--- a/apps/snmptranslate.c
+++ b/apps/snmptranslate.c
@@ -202,7 +202,8 @@
 #endif /* NETSNMP_DISABLE_MIB_LOADING */
                 case 'd':
                     description = 1;
-                    snmp_set_save_descriptions(1);
+                    netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                           NETSNMP_DS_LIB_SAVE_MIB_DESCRS, 1);
                     break;
                 case 'B':
                     find_all = 1;
@@ -261,7 +262,8 @@
 
     do {
         name_length = MAX_OID_LEN;
-        if (snmp_get_random_access()) {
+        if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+				  NETSNMP_DS_LIB_RANDOM_ACCESS)) {
 #ifndef NETSNMP_DISABLE_MIB_LOADING
             if (!get_node(current_name, name, &name_length)) {
 #endif /* NETSNMP_DISABLE_MIB_LOADING */
diff --git a/apps/snmptrapd.c b/apps/snmptrapd.c
index 16dff50..bce0d47 100644
--- a/apps/snmptrapd.c
+++ b/apps/snmptrapd.c
@@ -123,6 +123,8 @@
 #include <tcpd.h>
 #endif
 
+#include <net-snmp/net-snmp-features.h>
+
 #ifndef BSD4_3
 #define BSD4_2
 #endif
@@ -215,8 +217,6 @@
 
 const char     *app_name = "snmptrapd";
 
-struct timeval  Now;
-
 void            trapd_update_config(void);
 
 #ifdef WIN32SERVICE
@@ -289,6 +289,7 @@
     fprintf(stderr, "  -v, --version\t\tdisplay version information\n");
 #if defined(USING_AGENTX_SUBAGENT_MODULE) && !defined(NETSNMP_SNMPTRAPD_DISABLE_AGENTX)
     fprintf(stderr, "  -x ADDRESS\t\tuse ADDRESS as AgentX address\n");
+    fprintf(stderr, "  -X\t\t\tdon't become a subagent\n");
 #endif
     fprintf(stderr,
             "  -O <OUTOPTS>\t\ttoggle options controlling output display\n");
@@ -443,6 +444,7 @@
 {
     if (default_port != ddefault_port) {
         free(default_port);
+        default_port = ddefault_port;
     }
 }
 
@@ -472,13 +474,10 @@
 void
 parse_config_agentuser(const char *token, char *cptr)
 {
-#if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
-    struct passwd  *info;
-#endif
-
     if (cptr[0] == '#') {
         char           *ecp;
         int             uid;
+
         uid = strtoul(cptr + 1, &ecp, 10);
         if (*ecp != 0) {
             config_perror("Bad number");
@@ -486,44 +485,47 @@
 	    netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 			       NETSNMP_DS_AGENT_USERID, uid);
 	}
-    }
 #if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
-    else if ((info = getpwnam(cptr)) != NULL) {
-        netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
-			   NETSNMP_DS_AGENT_USERID, info->pw_uid);
     } else {
-        config_perror("User not found in passwd database");
-    }
-    endpwent();
+        struct passwd *info;
+
+        info = getpwnam(cptr);
+        if (info)
+            netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
+                               NETSNMP_DS_AGENT_USERID, info->pw_uid);
+        else
+            config_perror("User not found in passwd database");
+        endpwent();
 #endif
+    }
 }
 
 void
 parse_config_agentgroup(const char *token, char *cptr)
 {
-#if defined(HAVE_GETGRNAM) && defined(HAVE_GRP_H)
-    struct group   *info;
-#endif
-
     if (cptr[0] == '#') {
         char           *ecp;
         int             gid = strtoul(cptr + 1, &ecp, 10);
+
         if (*ecp != 0) {
             config_perror("Bad number");
 	} else {
             netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 			       NETSNMP_DS_AGENT_GROUPID, gid);
 	}
-    }
 #if defined(HAVE_GETGRNAM) && defined(HAVE_GRP_H)
-    else if ((info = getgrnam(cptr)) != NULL) {
-        netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
-			   NETSNMP_DS_AGENT_GROUPID, info->gr_gid);
     } else {
-        config_perror("Group not found in group database");
-    }
-    endpwent();
+        struct group   *info;
+
+        info = getgrnam(cptr);
+        if (info)
+            netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
+                               NETSNMP_DS_AGENT_GROUPID, info->gr_gid);
+        else
+            config_perror("Group not found in group database");
+        endgrent();
 #endif
+    }
 }
 #endif
 
@@ -553,6 +555,74 @@
   }
 }
 
+static void
+snmptrapd_main_loop(void)
+{
+    int             count, numfds, block;
+    fd_set          readfds,writefds,exceptfds;
+    struct timeval  timeout, *tvp;
+
+    while (netsnmp_running) {
+        if (reconfig) {
+                /*
+                 * If we are logging to a file, receipt of SIGHUP also
+                 * indicates that the log file should be closed and
+                 * re-opened.  This is useful for users that want to
+                 * rotate logs in a more predictable manner.
+                 */
+                netsnmp_logging_restart();
+                snmp_log(LOG_INFO, "NET-SNMP version %s restarted\n",
+                         netsnmp_get_version());
+            trapd_update_config();
+            if (trap1_fmt_str_remember) {
+                parse_format( NULL, trap1_fmt_str_remember );
+            }
+            reconfig = 0;
+        }
+        numfds = 0;
+        FD_ZERO(&readfds);
+        FD_ZERO(&writefds);
+        FD_ZERO(&exceptfds);
+        block = 0;
+        tvp = &timeout;
+        timerclear(tvp);
+        tvp->tv_sec = 5;
+        snmp_select_info(&numfds, &readfds, tvp, &block);
+        if (block == 1)
+            tvp = NULL;         /* block without timeout */
+#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
+        netsnmp_external_event_info(&numfds, &readfds, &writefds, &exceptfds);
+#endif /* NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
+        count = select(numfds, &readfds, &writefds, &exceptfds, tvp);
+        if (count > 0) {
+#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
+            netsnmp_dispatch_external_events(&count, &readfds, &writefds,
+                                             &exceptfds);
+#endif /* NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
+            /* If there are any more events after external events, then
+             * try SNMP events. */
+            if (count > 0) {
+                snmp_read(&readfds);
+            }
+        } else {
+            switch (count) {
+            case 0:
+                snmp_timeout();
+                break;
+            case -1:
+                if (errno == EINTR)
+                    continue;
+                snmp_log_perror("select");
+                netsnmp_running = 0;
+                break;
+            default:
+                fprintf(stderr, "select returned %d\n", count);
+                netsnmp_running = 0;
+            }
+	}
+	run_alarms();
+    }
+}
 
 /*******************************************************************-o-******
  * main - Non Windows
@@ -577,14 +647,11 @@
 main(int argc, char *argv[])
 #endif
 {
-    char            options[128] = "aAc:CdD::efF:g:hHI:L:m:M:no:O:PqsS:tu:vx:-:";
+    char            options[128] = "aAc:CdD::efF:g:hHI:L:m:M:no:O:Ptu:vx:X-:";
     netsnmp_session *sess_list = NULL, *ss = NULL;
     netsnmp_transport *transport = NULL;
     int             arg, i = 0;
     int             uid = 0, gid = 0;
-    int             count, numfds, block;
-    fd_set          readfds,writefds,exceptfds;
-    struct timeval  timeout, *tvp;
     char           *cp, *listen_ports = NULL;
 #if defined(USING_AGENTX_SUBAGENT_MODULE) && !defined(NETSNMP_SNMPTRAPD_DISABLE_AGENTX)
     int             agentx_subagent = 1;
@@ -623,7 +690,9 @@
 #ifdef NETSNMP_USE_MYSQL
     snmptrapd_register_sql_configs( );
 #endif
+#ifdef NETSNMP_SECMOD_USM
     init_usm_conf( "snmptrapd" );
+#endif /* NETSNMP_SECMOD_USM */
     register_config_handler("snmptrapd", "snmpTrapdAddr",
                             parse_trapd_address, free_trapd_address, "string");
 
@@ -656,11 +725,13 @@
     strcat(options, "p:");
 #endif
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 #ifdef WIN32
     snmp_log_syslogname(app_name_long);
 #else
     snmp_log_syslogname(app_name);
 #endif
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
     /*
      * Now process options normally.  
@@ -706,7 +777,8 @@
             break;
 
         case 'd':
-            snmp_set_dump_packet(1);
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                   NETSNMP_DS_LIB_DUMP_PACKET, 1);
             break;
 
         case 'D':
@@ -861,19 +933,18 @@
                 char           *ecp;
 
                 uid = strtoul(optarg, &ecp, 10);
+#if HAVE_GETPWNAM && HAVE_PWD_H
                 if (*ecp) {
-#if HAVE_GETPWNAM && HAVE_PWD_H
                     struct passwd  *info;
+
                     info = getpwnam(optarg);
-                    if (info) {
-                        uid = info->pw_uid;
-                    } else {
+                    uid = info ? info->pw_uid : -1;
+                    endpwent();
+                }
 #endif
-                        fprintf(stderr, "Bad user id: %s\n", optarg);
-                        exit(1);
-#if HAVE_GETPWNAM && HAVE_PWD_H
-                    }
-#endif
+                if (uid < 0) {
+                    fprintf(stderr, "Bad user id: %s\n", optarg);
+                    exit(1);
                 }
                 netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 				   NETSNMP_DS_AGENT_USERID, uid);
@@ -889,6 +960,7 @@
             exit(0);
             break;
 
+#if defined(USING_AGENTX_SUBAGENT_MODULE) && !defined(NETSNMP_SNMPTRAPD_DISABLE_AGENTX)
         case 'x':
             if (optarg != NULL) {
                 netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID,
@@ -899,6 +971,11 @@
             }
             break;
 
+         case 'X':
+            agentx_subagent = 0;
+            break;
+#endif
+
         default:
             fprintf(stderr, "invalid option: -%c\n", arg);
             usage();
@@ -940,10 +1017,19 @@
      * Don't try this at home, children!
      */
     if (0 == snmp_get_do_logging()) {
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
         traph = netsnmp_add_global_traphandler(NETSNMPTRAPD_PRE_HANDLER,
                                                syslog_handler);
         traph->authtypes = TRAP_AUTH_LOG;
         snmp_enable_syslog();
+#else /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
+        traph = netsnmp_add_global_traphandler(NETSNMPTRAPD_PRE_HANDLER,
+                                               print_handler);
+        traph->authtypes = TRAP_AUTH_LOG;
+        snmp_enable_stderr();
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     } else {
         traph = netsnmp_add_global_traphandler(NETSNMPTRAPD_PRE_HANDLER,
                                                print_handler);
@@ -980,6 +1066,9 @@
     init_agent("snmptrapd");
 
 #if defined(USING_AGENTX_SUBAGENT_MODULE) && !defined(NETSNMP_SNMPTRAPD_DISABLE_AGENTX)
+#ifdef NETSNMP_FEATURE_CHECKING
+    netsnmp_feature_require(register_snmpEngine_scalars_context)
+#endif /* NETSNMP_FEATURE_CHECKING */
     /*
      * initialize local modules 
      */
@@ -1020,6 +1109,9 @@
         extern void init_register_nsVacm_context(const char *);
 #endif
 #ifdef USING_SNMPV3_USMUSER_MODULE
+#ifdef NETSNMP_FEATURE_CHECKING
+        netsnmp_feature_require(init_register_usmUser_context)
+#endif /* NETSNMP_FEATURE_CHECKING */
         extern void init_register_usmUser_context(const char *);
         /* register ourselves as having a USM user database */
         init_register_usmUser_context("snmptrapd");
@@ -1073,11 +1165,13 @@
      * if no logging options on command line or in conf files, use syslog
      */
     if (0 == snmp_get_do_logging()) {
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 #ifdef WIN32
         snmp_enable_syslog_ident(app_name_long, Facility);
 #else
         snmp_enable_syslog_ident(app_name, Facility);
 #endif        
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     }
 
     if (listen_ports)
@@ -1107,7 +1201,6 @@
                  * successfully so what could have gone wrong?  
                  */
                 snmptrapd_close_sessions(sess_list);
-                netsnmp_transport_free(transport);
                 snmp_log(LOG_ERR, "couldn't open snmp - %s", strerror(errno));
                 SOCK_CLEANUP;
                 exit(1);
@@ -1228,62 +1321,8 @@
 #ifdef WIN32SERVICE
     trapd_status = SNMPTRAPD_RUNNING;
 #endif
-    while (netsnmp_running) {
-        if (reconfig) {
-                /*
-                 * If we are logging to a file, receipt of SIGHUP also
-                 * indicates the the log file should be closed and
-                 * re-opened.  This is useful for users that want to
-                 * rotate logs in a more predictable manner.
-                 */
-                netsnmp_logging_restart();
-                snmp_log(LOG_INFO, "NET-SNMP version %s restarted\n",
-                         netsnmp_get_version());
-            trapd_update_config();
-            if (trap1_fmt_str_remember) {
-                parse_format( NULL, trap1_fmt_str_remember );
-            }
-            reconfig = 0;
-        }
-        numfds = 0;
-        FD_ZERO(&readfds);
-        FD_ZERO(&writefds);
-        FD_ZERO(&exceptfds);
-        block = 0;
-        tvp = &timeout;
-        timerclear(tvp);
-        tvp->tv_sec = 5;
-        snmp_select_info(&numfds, &readfds, tvp, &block);
-        if (block == 1)
-            tvp = NULL;         /* block without timeout */
-        netsnmp_external_event_info(&numfds, &readfds, &writefds, &exceptfds);
-        count = select(numfds, &readfds, &writefds, &exceptfds, tvp);
-        gettimeofday(&Now, NULL);
-        if (count > 0) {
-            netsnmp_dispatch_external_events(&count, &readfds, &writefds,
-                                             &exceptfds);
-            /* If there are any more events after external events, then
-             * try SNMP events. */
-            if (count > 0) {
-                snmp_read(&readfds);
-            }
-        } else
-            switch (count) {
-            case 0:
-                snmp_timeout();
-                break;
-            case -1:
-                if (errno == EINTR)
-                    continue;
-                snmp_log_perror("select");
-                netsnmp_running = 0;
-                break;
-            default:
-                fprintf(stderr, "select returned %d\n", count);
-                netsnmp_running = 0;
-            }
-	run_alarms();
-    }
+
+    snmptrapd_main_loop();
 
     if (snmp_get_do_logging()) {
         struct tm      *tm;
diff --git a/apps/snmptrapd_handlers.c b/apps/snmptrapd_handlers.c
index 3ee3aa7..5a8e3c8 100644
--- a/apps/snmptrapd_handlers.c
+++ b/apps/snmptrapd_handlers.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -37,6 +38,8 @@
 #include "snmptrapd_log.h"
 #include "notification-log-mib/notification_log.h"
 
+netsnmp_feature_child_of(add_default_traphandler, snmptrapd)
+
 char *syslog_format1 = NULL;
 char *syslog_format2 = NULL;
 char *print_format1  = NULL;
@@ -400,6 +403,7 @@
     return traph;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_ADD_DEFAULT_TRAPHANDLER
 /*
  * Register a new "default" traphandler, to be applied to all
  * traps with no specific trap handlers of their own.
@@ -409,6 +413,7 @@
     return netsnmp_add_global_traphandler(NETSNMPTRAPD_DEFAULT_HANDLER,
                                           handler);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_ADD_DEFAULT_TRAPHANDLER */
 
 
 /*
@@ -802,8 +807,10 @@
 	    v2_pdu = convert_v1pdu_to_v2(pdu);
 	else
 	    v2_pdu = pdu;
-        oldquick = snmp_get_quick_print();
-        snmp_set_quick_print(1);
+        oldquick = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                          NETSNMP_DS_LIB_QUICK_PRINT);
+        netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                               NETSNMP_DS_LIB_QUICK_PRINT, 1);
 
         /*
 	 * Format the trap and pass this string to the external command
@@ -842,7 +849,8 @@
          *  and pass this formatted string to the command specified
          */
         run_shell_command(handler->token, (char*)rbuf, NULL, NULL);   /* Not interested in output */
-        snmp_set_quick_print(oldquick);
+        netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                               NETSNMP_DS_LIB_QUICK_PRINT, oldquick);
         if (pdu->command == SNMP_MSG_TRAP)
             snmp_free_pdu(v2_pdu);
         free(rbuf);
diff --git a/apps/snmptrapd_log.c b/apps/snmptrapd_log.c
index 9bfc0b2..774f797 100644
--- a/apps/snmptrapd_log.c
+++ b/apps/snmptrapd_log.c
@@ -648,7 +648,7 @@
          */
         if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
                                     NETSNMP_DS_APP_NUMERIC_IP)) {
-            host = gethostbyaddr((char *) pdu->agent_addr, 4, AF_INET);
+            host = netsnmp_gethostbyaddr((char *) pdu->agent_addr, 4, AF_INET);
         }
         if (host != NULL) {
             if (!snmp_strcat(&temp_buf, &temp_buf_len, &temp_out_len, 1,
@@ -1368,7 +1368,7 @@
      */
     if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
                                 NETSNMP_DS_APP_NUMERIC_IP)) {
-        host = gethostbyaddr((char *) pdu->agent_addr, 4, AF_INET);
+        host = netsnmp_gethostbyaddr((char *) pdu->agent_addr, 4, AF_INET);
     }
     if (host != (struct hostent *) NULL) {
         if (!snmp_strcat
diff --git a/apps/snmptrapd_sql.c b/apps/snmptrapd_sql.c
index ce25423..671e542 100644
--- a/apps/snmptrapd_sql.c
+++ b/apps/snmptrapd_sql.c
@@ -11,6 +11,7 @@
  *
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #ifdef NETSNMP_USE_MYSQL
 
@@ -54,6 +55,8 @@
 #include <mysql.h>
 #include <errmsg.h>
 
+netsnmp_feature_require(container_fifo)
+
 /*
  * define a structure to hold all the file globals
  */
diff --git a/apps/snmpwalk.c b/apps/snmpwalk.c
index dfad7e0..659d7de 100644
--- a/apps/snmpwalk.c
+++ b/apps/snmpwalk.c
@@ -69,6 +69,7 @@
 #define NETSNMP_DS_WALK_DONT_CHECK_LEXICOGRAPHIC	3
 #define NETSNMP_DS_WALK_TIME_RESULTS     	        4
 #define NETSNMP_DS_WALK_DONT_GET_REQUESTED	        5
+#define NETSNMP_DS_WALK_TIME_RESULTS_SINGLE	        6
 
 oid             objid_mib[] = { 1, 3, 6, 1, 2, 1 };
 int             numprinted = 0;
@@ -90,7 +91,9 @@
     fprintf(stderr,
             "\t\t\t  c:  do not check returned OIDs are increasing\n");
     fprintf(stderr,
-            "\t\t\t  t:  Display wall-clock time to complete the request\n");
+            "\t\t\t  t:  Display wall-clock time to complete the walk\n");
+    fprintf(stderr,
+            "\t\t\t  T:  Display wall-clock time to complete each request\n");
     fprintf(stderr, "\t\t\t  E {OID}:  End the walk at the specified OID\n");
 }
 
@@ -151,6 +154,11 @@
             case 'E':
                 end_name = argv[optind++];
                 break;
+
+            case 'T':
+                netsnmp_ds_toggle_boolean(NETSNMP_DS_APPLICATION_ID,
+                                          NETSNMP_DS_WALK_TIME_RESULTS_SINGLE);
+                break;
                 
             default:
                 fprintf(stderr, "Unknown flag passed to -C: %c\n",
@@ -180,7 +188,7 @@
     int             status = STAT_ERROR;
     int             check;
     int             exitval = 0;
-    struct timeval  tv1, tv2;
+    struct timeval  tv1, tv2, tv_a, tv_b;
 
     netsnmp_ds_register_config(ASN_BOOLEAN, "snmpwalk", "includeRequested",
 			       NETSNMP_DS_APPLICATION_ID, 
@@ -200,7 +208,11 @@
 
     netsnmp_ds_register_config(ASN_BOOLEAN, "snmpwalk", "timeResults",
                                NETSNMP_DS_APPLICATION_ID,
-			       NETSNMP_DS_WALK_TIME_RESULTS);
+                               NETSNMP_DS_WALK_TIME_RESULTS);
+
+    netsnmp_ds_register_config(ASN_BOOLEAN, "snmpwalk", "timeResultsSingle",
+                               NETSNMP_DS_APPLICATION_ID,
+                               NETSNMP_DS_WALK_TIME_RESULTS_SINGLE);
 
     /*
      * get the common command line arguments 
@@ -286,7 +298,7 @@
 
     if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
                                NETSNMP_DS_WALK_TIME_RESULTS))
-        gettimeofday(&tv1, NULL);
+        netsnmp_get_monotonic_clock(&tv1);
     while (running) {
         /*
          * create PDU for GETNEXT request and add object name to request 
@@ -297,8 +309,12 @@
         /*
          * do the request 
          */
+        if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_WALK_TIME_RESULTS_SINGLE))
+            netsnmp_get_monotonic_clock(&tv_a);
         status = snmp_synch_response(ss, pdu, &response);
         if (status == STAT_SUCCESS) {
+            if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_WALK_TIME_RESULTS_SINGLE))
+                netsnmp_get_monotonic_clock(&tv_b);
             if (response->errstat == SNMP_ERR_NOERROR) {
                 /*
                  * check resulting variables 
@@ -314,6 +330,10 @@
                         continue;
                     }
                     numprinted++;
+                    if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_WALK_TIME_RESULTS_SINGLE))
+                        fprintf(stdout, "%f s: ",  
+                                (double) (tv_b.tv_usec - tv_a.tv_usec)/1000000 +
+                                (double) (tv_b.tv_sec - tv_a.tv_sec));
                     print_variable(vars->name, vars->name_length, vars);
                     if ((vars->type != SNMP_ENDOFMIBVIEW) &&
                         (vars->type != SNMP_NOSUCHOBJECT) &&
@@ -382,7 +402,7 @@
     }
     if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
                                NETSNMP_DS_WALK_TIME_RESULTS))
-        gettimeofday(&tv2, NULL);
+        netsnmp_get_monotonic_clock(&tv2);
 
     if (numprinted == 0 && status == STAT_SUCCESS) {
         /*
diff --git a/config.guess b/config.guess
index ca2a03c..2852378 100755
--- a/config.guess
+++ b/config.guess
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
-timestamp='2008-01-08'
+timestamp='2010-08-21'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -27,16 +27,16 @@
 # the same distribution terms that you use for the rest of that program.
 
 
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
 #
 # This script attempts to guess a canonical system name similar to
 # config.sub.  If it succeeds, it prints the system name on stdout, and
 # exits with 0.  Otherwise, it exits with 1.
 #
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -56,8 +56,9 @@
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -91,7 +92,7 @@
   exit 1
 fi
 
-trap 'exit 1' 1 2 15
+trap 'exit 1' HUP INT TERM
 
 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
 # compiler to aid in system detection is discouraged as it requires
@@ -105,7 +106,7 @@
 
 set_cc_for_build='
 trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ;
 : ${TMPDIR=/tmp} ;
  { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
  { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
@@ -170,7 +171,7 @@
 	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
 		eval $set_cc_for_build
 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep __ELF__ >/dev/null
+			| grep -q __ELF__
 		then
 		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
 		    # Return netbsd for either.  FIX?
@@ -324,14 +325,33 @@
 	case `/usr/bin/uname -p` in
 	    sparc) echo sparc-icl-nx7; exit ;;
 	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
     sun4H:SunOS:5.*:*)
 	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
     sun4*:SunOS:6*:*)
 	# According to config.sub, this is the proper way to canonicalize
@@ -532,7 +552,7 @@
 		echo rs6000-ibm-aix3.2
 	fi
 	exit ;;
-    *:AIX:*:[456])
+    *:AIX:*:[4567])
 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
 	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
 		IBM_ARCH=rs6000
@@ -640,7 +660,7 @@
 	    # => hppa64-hp-hpux11.23
 
 	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep __LP64__ >/dev/null
+		grep -q __LP64__
 	    then
 		HP_ARCH="hppa2.0w"
 	    else
@@ -791,12 +811,12 @@
     i*:PW*:*)
 	echo ${UNAME_MACHINE}-pc-pw32
 	exit ;;
-    *:Interix*:[3456]*)
+    *:Interix*:*)
     	case ${UNAME_MACHINE} in
 	    x86)
 		echo i586-pc-interix${UNAME_RELEASE}
 		exit ;;
-	    EM64T | authenticamd)
+	    authenticamd | genuineintel | EM64T)
 		echo x86_64-unknown-interix${UNAME_RELEASE}
 		exit ;;
 	    IA64)
@@ -806,6 +826,9 @@
     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
 	echo i${UNAME_MACHINE}-pc-mks
 	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -835,6 +858,20 @@
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
 	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
     arm*:Linux:*:*)
 	eval $set_cc_for_build
 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -857,6 +894,17 @@
     frv:Linux:*:*)
     	echo frv-unknown-linux-gnu
 	exit ;;
+    i*86:Linux:*:*)
+	LIBC=gnu
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+	exit ;;
     ia64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
@@ -866,74 +914,33 @@
     m68*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
-    mips:Linux:*:*)
+    mips:Linux:*:* | mips64:Linux:*:*)
 	eval $set_cc_for_build
 	sed 's/^	//' << EOF >$dummy.c
 	#undef CPU
-	#undef mips
-	#undef mipsel
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
 	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mipsel
+	CPU=${UNAME_MACHINE}el
 	#else
 	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips
+	CPU=${UNAME_MACHINE}
 	#else
 	CPU=
 	#endif
 	#endif
 EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-	;;
-    mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef mips64
-	#undef mips64el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mips64el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips64
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
 	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
 	;;
     or32:Linux:*:*)
 	echo or32-unknown-linux-gnu
 	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-gnu
 	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
 	exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
@@ -943,8 +950,11 @@
 	  *)    echo hppa-unknown-linux-gnu ;;
 	esac
 	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
 	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
 	echo ${UNAME_MACHINE}-ibm-linux
@@ -958,6 +968,9 @@
     sparc:Linux:*:* | sparc64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-tilera-linux-gnu
+	exit ;;
     vax:Linux:*:*)
 	echo ${UNAME_MACHINE}-dec-linux-gnu
 	exit ;;
@@ -967,69 +980,6 @@
     xtensa*:Linux:*:*)
     	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
-    i*86:Linux:*:*)
-	# The BFD linker knows what the default object file format is, so
-	# first see if it will tell us. cd to the root directory to prevent
-	# problems with other programs or directories called `ld' in the path.
-	# Set LC_ALL=C to ensure ld outputs messages in English.
-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-			 | sed -ne '/supported targets:/!d
-				    s/[ 	][ 	]*/ /g
-				    s/.*supported targets: *//
-				    s/ .*//
-				    p'`
-        case "$ld_supported_targets" in
-	  elf32-i386)
-		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-		;;
-	  a.out-i386-linux)
-		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-		exit ;;
-	  coff-i386)
-		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-		exit ;;
-	  "")
-		# Either a pre-BFD a.out linker (linux-gnuoldld) or
-		# one that does not give us useful --help.
-		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-		exit ;;
-	esac
-	# Determine whether the default compiler is a.out or elf
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#ifdef __ELF__
-	# ifdef __GLIBC__
-	#  if __GLIBC__ >= 2
-	LIBC=gnu
-	#  else
-	LIBC=gnulibc1
-	#  endif
-	# else
-	LIBC=gnulibc1
-	# endif
-	#else
-	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-	LIBC=gnu
-	#else
-	LIBC=gnuaout
-	#endif
-	#endif
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^LIBC/{
-		s: ::g
-		p
-	    }'`"
-	test x"${LIBC}" != x && {
-		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-		exit
-	}
-	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
-	;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
 	# earlier versions are messed up and put the nodename in both
@@ -1058,7 +1008,7 @@
     i*86:syllable:*:*)
 	echo ${UNAME_MACHINE}-pc-syllable
 	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
 	echo i386-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
     i*86:*DOS:*:*)
@@ -1102,8 +1052,11 @@
     pc:*:*:*)
 	# Left here for compatibility:
         # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i386.
-	echo i386-pc-msdosdjgpp
+        # the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
         exit ;;
     Intel:Mach:3*:*)
 	echo i386-pc-mach3
@@ -1141,6 +1094,16 @@
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
           && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
 	echo m68k-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
@@ -1153,7 +1116,7 @@
     rs6000:LynxOS:2.*:*)
 	echo rs6000-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
 	echo powerpc-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
     SM[BE]S:UNIX_SV:*:*)
@@ -1216,6 +1179,9 @@
     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
 	echo i586-pc-beos
 	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
     SX-4:SUPER-UX:*:*)
 	echo sx4-nec-superux${UNAME_RELEASE}
 	exit ;;
@@ -1243,6 +1209,16 @@
     *:Darwin:*:*)
 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
 	case $UNAME_PROCESSOR in
+	    i386)
+		eval $set_cc_for_build
+		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		      grep IS_64BIT_ARCH >/dev/null
+		  then
+		      UNAME_PROCESSOR="x86_64"
+		  fi
+		fi ;;
 	    unknown) UNAME_PROCESSOR=powerpc ;;
 	esac
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
@@ -1324,6 +1300,9 @@
     i*86:rdos:*:*)
 	echo ${UNAME_MACHINE}-pc-rdos
 	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1484,9 +1463,9 @@
 the operating system you are using. It is advised that you
 download the most up to date version of the config scripts from
 
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 and
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
 
 If the version you run ($0) is already up to date, please
 send the following data and any information you think might be
diff --git a/config.sub b/config.sub
index 6759825..320e303 100755
--- a/config.sub
+++ b/config.sub
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
-timestamp='2008-01-16'
+timestamp='2010-09-11'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -32,13 +32,16 @@
 
 
 # Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# diff and a properly formatted GNU ChangeLog entry.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
 # If it is invalid, we print an error message on stderr and exit with code 1.
 # Otherwise, we print the canonical config type on stdout and succeed.
 
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
 # that are meaningful with *any* GNU software.
@@ -72,8 +75,9 @@
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -120,8 +124,10 @@
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -148,10 +154,13 @@
 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray)
+	-apple | -axis | -knuth | -cray | -microblaze)
 		os=
 		basic_machine=$1
 		;;
+        -bluegene*)
+	        os=-cnk
+		;;
 	-sim | -cisco | -oki | -wec | -winbond)
 		os=
 		basic_machine=$1
@@ -249,13 +258,16 @@
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
 	| i370 | i860 | i960 | ia64 \
 	| ip2k | iq2000 \
+	| lm32 \
 	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | mcore | mep \
+	| maxq | mb | microblaze | mcore | mep | metag \
 	| mips | mipsbe | mipseb | mipsel | mipsle \
 	| mips16 \
 	| mips64 | mips64el \
-	| mips64vr | mips64vrel \
+	| mips64octeon | mips64octeonel \
 	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
 	| mips64vr4100 | mips64vr4100el \
 	| mips64vr4300 | mips64vr4300el \
 	| mips64vr5000 | mips64vr5000el \
@@ -268,28 +280,41 @@
 	| mipsisa64sr71k | mipsisa64sr71kel \
 	| mipstx39 | mipstx39el \
 	| mn10200 | mn10300 \
+	| moxie \
 	| mt \
 	| msp430 \
+	| nds32 | nds32le | nds32be \
 	| nios | nios2 \
 	| ns16k | ns32k \
 	| or32 \
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
 	| pyramid \
+	| rx \
 	| score \
-	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
 	| spu | strongarm \
-	| tahoe | thumb | tic4x | tic80 | tron \
+	| tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
 	| v850 | v850e \
 	| we32k \
 	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-	| z8k)
+	| z8k | z80)
 		basic_machine=$basic_machine-unknown
 		;;
-	m6811 | m68hc11 | m6812 | m68hc12)
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
 		# Motorola 68HC11/12.
 		basic_machine=$basic_machine-unknown
 		os=-none
@@ -320,7 +345,7 @@
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* | avr32-* \
 	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
 	| clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
@@ -329,14 +354,17 @@
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
 	| i*86-* | i860-* | i960-* | ia64-* \
 	| ip2k-* | iq2000-* \
+	| lm32-* \
 	| m32c-* | m32r-* | m32rle-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
 	| mips16-* \
 	| mips64-* | mips64el-* \
-	| mips64vr-* | mips64vrel-* \
+	| mips64octeon-* | mips64octeonel-* \
 	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
 	| mips64vr4100-* | mips64vr4100el-* \
 	| mips64vr4300-* | mips64vr4300el-* \
 	| mips64vr5000-* | mips64vr5000el-* \
@@ -351,27 +379,30 @@
 	| mmix-* \
 	| mt-* \
 	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
 	| nios-* | nios2-* \
 	| none-* | np1-* | ns16k-* | ns32k-* \
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
 	| pyramid-* \
-	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
 	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
 	| tahoe-* | thumb-* \
 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile-* | tilegx-* \
 	| tron-* \
+	| ubicom32-* \
 	| v850-* | v850e-* | vax-* \
 	| we32k-* \
 	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
 	| xstormy16-* | xtensa*-* \
 	| ymp-* \
-	| z8k-*)
+	| z8k-* | z80-*)
 		;;
 	# Recognize the basic CPU types without company name, with glob match.
 	xtensa*)
@@ -439,6 +470,10 @@
 		basic_machine=m68k-apollo
 		os=-bsd
 		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
 	aux)
 		basic_machine=m68k-apple
 		os=-aux
@@ -455,10 +490,27 @@
 		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
 		os=-linux
 		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	c90)
 		basic_machine=c90-cray
 		os=-unicos
 		;;
+        cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
 	convex-c1)
 		basic_machine=c1-convex
 		os=-bsd
@@ -526,6 +578,10 @@
 		basic_machine=m88k-motorola
 		os=-sysv3
 		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
 	djgpp)
 		basic_machine=i586-pc
 		os=-msdosdjgpp
@@ -699,6 +755,9 @@
 		basic_machine=ns32k-utek
 		os=-sysv
 		;;
+        microblaze)
+		basic_machine=microblaze-xilinx
+		;;
 	mingw32)
 		basic_machine=i386-pc
 		os=-mingw32
@@ -803,6 +862,12 @@
 	np1)
 		basic_machine=np1-gould
 		;;
+        neo-tandem)
+		basic_machine=neo-tandem
+		;;
+        nse-tandem)
+		basic_machine=nse-tandem
+		;;
 	nsr-tandem)
 		basic_machine=nsr-tandem
 		;;
@@ -1037,17 +1102,10 @@
 		basic_machine=t90-cray
 		os=-unicos
 		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tic55x | c55x*)
-		basic_machine=tic55x-unknown
-		os=-coff
-		;;
-	tic6x | c6x*)
-		basic_machine=tic6x-unknown
-		os=-coff
+        # This must be matched before tile*.
+        tilegx*)
+		basic_machine=tilegx-unknown
+		os=-linux-gnu
 		;;
 	tile*)
 		basic_machine=tile-unknown
@@ -1128,6 +1186,10 @@
 		basic_machine=z8k-unknown
 		os=-sim
 		;;
+	z80-*-coff)
+		basic_machine=z80-unknown
+		os=-sim
+		;;
 	none)
 		basic_machine=none-none
 		os=-none
@@ -1166,7 +1228,7 @@
 	we32k)
 		basic_machine=we32k-att
 		;;
-	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
 		basic_machine=sh-unknown
 		;;
 	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
@@ -1216,6 +1278,9 @@
         # First match some system type aliases
         # that might get confused with valid system types.
 	# -solaris* is a basic system type, with this one exception.
+        -auroraux)
+	        os=-auroraux
+		;;
 	-solaris1 | -solaris1.*)
 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
 		;;
@@ -1236,10 +1301,11 @@
 	# Each alternative MUST END IN A *, to match a version number.
 	# -sysv* is not here because it comes later, after sysvr4.
 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* \
+	      | -aos* | -aros* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
@@ -1248,9 +1314,10 @@
 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
 	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -mingw32* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1258,7 +1325,7 @@
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1388,6 +1455,11 @@
 	-zvmoe)
 		os=-zvmoe
 		;;
+	-dicos*)
+		os=-dicos
+		;;
+        -nacl*)
+	        ;;
 	-none)
 		;;
 	*)
@@ -1428,6 +1500,15 @@
         c4x-* | tic4x-*)
         	os=-coff
 		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
+		;;
 	# This must come before the *-dec entry.
 	pdp10-*)
 		os=-tops20
@@ -1585,7 +1666,7 @@
 			-sunos*)
 				vendor=sun
 				;;
-			-aix*)
+			-cnk*|-aix*)
 				vendor=ibm
 				;;
 			-beos*)
diff --git a/configure b/configure
index 935bee0..af3b0f8 100755
--- a/configure
+++ b/configure
Binary files differ
diff --git a/configure.ac b/configure.ac
index 4215a30..af4d447 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,9 +10,9 @@
 #
 # Process this file with autoconf to produce a configure script.
 #
-AC_INIT([Net-SNMP], [5.6.2], [net-snmp-coders@lists.sourceforge.net])
+AC_INIT([Net-SNMP], [5.7.3.pre5], [net-snmp-coders@lists.sourceforge.net])
 AC_PREREQ([2.63])
-AC_CONFIG_SRCDIR([agent/mibgroup/ucd-snmp/extensible.c])
+AC_CONFIG_SRCDIR([agent/snmpd.c])
 AC_REVISION([$Revision$])
 
 AC_CONFIG_MACRO_DIR([m4])
@@ -72,6 +72,7 @@
 AC_SUBST(AGENTLIBS)
 AC_SUBST(OTHERAGENTLIBOBJS)
 AC_SUBST(OTHERAGENTLIBLOBJS)
+AC_SUBST(OTHERAGENTLIBLFTS)
 
 AC_SUBST(DLLIBS)
 
@@ -94,6 +95,7 @@
 AC_CONFIG_FILES([net-snmp-create-v3-user:net-snmp-create-v3-user.in],
 		[chmod +x net-snmp-create-v3-user])
 AC_CONFIG_FILES([dist/generation-scripts/gen-variables:dist/generation-scripts/gen-variables.in])
+AC_CONFIG_FILES([local/snmpconf])
 
 AC_CONFIG_COMMANDS([default], echo timestamp > stamp-h)
 
diff --git a/configure.d/config_modules_agent b/configure.d/config_modules_agent
index 5cb30bb..c18ac33 100644
--- a/configure.d/config_modules_agent
+++ b/configure.d/config_modules_agent
@@ -28,7 +28,7 @@
 AC_MSG_CHECKING([for and configuring mib modules to use])
 
 # set up the CPP command
-MODULECPP="$CPP $PARTIALTARGETFLAGS -I${srcdir}/include -I${srcdir}/agent/mibgroup"
+MODULECPP="$CPP $PARTIALTARGETFLAGS $CPPFLAGS -DNETSNMP_FEATURE_CHECKING -I${srcdir}/include -I${srcdir}/agent/mibgroup"
 if test "x$enable_mfd_rewrites" = "xyes"; then
   MODULECPP="$MODULECPP -DNETSNMP_ENABLE_MFD_REWRITES"
 fi
@@ -77,6 +77,8 @@
   fi
 done
 
+new_module_list=`(echo $new_module_list | tr ' ' '\n' | sort | tr '\n' ' '; echo '') | $SED 's/ $//'`
+
 AC_MSG_RESULT([$new_module_list.])
 
 #---------------------
@@ -174,9 +176,9 @@
     # build a pseudo include header that includes current config and
     # system symbols:
     rm -f conftest.$ac_ext module_tmp_header.h
-    AC_LANG_CONFTEST(AC_LANG_SOURCE([[
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([[
 #include NETSNMP_SYSTEM_INCLUDE_FILE
-#include "$srcdir/$mibdir/$i.h"]]))
+#include "$srcdir/$mibdir/$i.h"]])])
     mv conftest.$ac_ext module_tmp_header.h
 
     #---------------------
@@ -189,7 +191,8 @@
     module_type=mib_module
     if test -f $srcdir/$mibdir/$i.h; then
       changequote(, )
-      module_type=`$MODULECPP module_tmp_header.h | $GREP config_belongs_in | $SED 's@.*config_belongs_in(\([^)]*\)).*@\1@'`
+      module_type=`$MODULECPP module_tmp_header.h | \
+                   $SED -n 's@.*config_belongs_in(\([^)]*\)).*@\1@p'`
       changequote([, ])
     fi
     if test "x$module_type" = "x" ; then
@@ -270,7 +273,8 @@
         # check if $i has any conflicts
         #
         AH_TOP([#define config_exclude(x)])
-	new_list_excl=`$MODULECPP module_tmp_header.h | $GREP config_exclude | $SED 's/.*config_exclude(\(.*\)).*/\1/'`
+        new_list_excl=`$MODULECPP module_tmp_header.h | \
+                       $SED -n 's/.*config_exclude(\(.*\)).*/\1/p'`
 	if test "x$new_list_excl" != "x"; then
           AC_MSG_MODULE_DBG("$i excludes $new_list_excl")
 	  for j in $new_list_excl
@@ -299,7 +303,8 @@
         #
         AH_TOP([#define config_arch_require(x,y)])
         changequote(, )
-        new_list_arch=`$MODULECPP module_tmp_header.h | $GREP config_arch_require | $SED 's/.*config_arch_require( *\([^ ]*\) *, *\([^ ]*\) *).*/\1-xarchx-\2/'`
+        new_list_arch=`$MODULECPP module_tmp_header.h | \
+                       $SED -n 's/.*config_arch_require( *\([^ ]*\) *, *\([^ ]*\) *).*/\1-xarchx-\2/p'`
         changequote([, ])
 	if test "x$new_list_arch" != "x"; then
           for j in $new_list_arch
@@ -320,11 +325,7 @@
         #
         AH_TOP([#define config_version_require(x)])
         [new_list_alt3=`$MODULECPP module_tmp_header.h | \
-            $GREP config_version_require | \
-            $SED -e 's/  */ /g' \
-                 -e 's/.*config_version_require(( *\([^)]*\) *)).*/\1/' \
-                 -e 's/ *, */,/g' | \
-            awk '
+            $AWK '
                 BEGIN {
                     if("'"$enable_new_features"'" == "yes")
                         method="max";
@@ -336,7 +337,10 @@
                     split("'"$with_features_of"'", a);
                     version=sprintf("%03d%03d%03d%03d", a[1], a[2], a[3], a[4]);
                 }
-                {
+                /config_version_require/ {
+                    gsub("^.*config_version_require *\\\\(\\\\(", "");
+                    gsub("\\\\)\\\\).*$", "");
+                    gsub(", *", ",");
                     FS = ",";
                     n = split($0, a);
                     FS = ".";
@@ -362,7 +366,8 @@
         # check if $i has any other required modules
         #
         AH_TOP([#define config_require(x)])
-	new_list="$new_list `$MODULECPP module_tmp_header.h | $GREP config_require | $SED 's/.*config_require(\(.*\)).*/\1/'`"
+        new_list="$new_list `$MODULECPP module_tmp_header.h | \
+                  $SED -n 's/.*config_require(\(.*\)).*/\1/p'`"
         AC_MSG_MODULE_DBG(" $i will test: $new_list")
 	if test "x$new_list" != "x"; then
 	  for j in $new_list
@@ -398,7 +403,8 @@
         # check if $i has any mibs to add
         #
         AH_TOP([#define config_add_mib(x)])
-	new_mibs=`$MODULECPP module_tmp_header.h | $GREP config_add_mib | $SED 's/.*config_add_mib(\(.*\)).*/\1/'`
+        new_mibs=`$MODULECPP module_tmp_header.h | \
+                  $SED -n 's/.*config_add_mib(\(.*\)).*/\1/p'`
 	if test "x$new_mibs" != "x"; then
 	    for j in $new_mibs
 		do
@@ -434,7 +440,7 @@
         #-------------------
         # check for unsupported config_load_mib
         #
-        if $MODULECPP module_tmp_header.h | $GREP config_load_mib > /dev/null 2>&1; then
+        if $MODULECPP module_tmp_header.h | $GREP -q config_load_mib; then
           AC_MSG_WARN([mib module error])
       	  AC_MSG_WARN([mib module "$i" uses the "config_load_mib" directive, which is no longer supported.  It probably won't work.])
         fi # grep config_load_mib
@@ -445,7 +451,8 @@
         #
         AH_TOP([#define config_parse_dot_conf(w,x,y,z)])
         changequote(, )
-        $MODULECPP module_tmp_header.h | $GREP config_parse_dot_conf | $SED 's@.*config_parse_dot_conf(\([^)]*\), *\([^),]*\), *\([^),]*\), *\([^),]*\)).*@register_config_handler("snmpd",\1, \2, \3, \4);@' >> $mibdir/mib_module_dot_conf.h
+        $MODULECPP module_tmp_header.h | \
+        $SED -n 's@.*config_parse_dot_conf(\([^)]*\), *\([^),]*\), *\([^),]*\), *\([^),]*\)).*@register_config_handler("snmpd",\1, \2, \3, \4);@p' >> $mibdir/mib_module_dot_conf.h
 	changequote([, ])
 
         #---------------------
@@ -455,7 +462,8 @@
         # check if $i has any errors, or warnings
         #
         AH_TOP([#define config_error(x)])
-	error=`$MODULECPP module_tmp_header.h | $GREP config_error | $SED 's/.*config_error(\(.*\)).*/\1/'`
+        error=`$MODULECPP module_tmp_header.h | \
+               $SED -n 's/.*config_error(\(.*\)).*/\1/p'`
 	if test "x$error" != "x"; then
           echo
           echo
@@ -467,7 +475,8 @@
       	#  - used to signal a configuration "warning" to be printed to the user
         #
         AH_TOP([#define config_warning(x)])
-	warning=`$MODULECPP module_tmp_header.h | $GREP config_warning | $SED 's/.*config_warning(\(.*\)).*/\1/'`
+        warning=`$MODULECPP module_tmp_header.h | \
+                 $SED -n 's/.*config_warning(\(.*\)).*/\1/p'`
 	if test "x$warning" != "x"; then
           all_warnings="$all_warnings $warning
 "
@@ -678,29 +687,34 @@
 #
 changequote(, )
 
-for i in module_list_o module_list_c module_list_lo mib_module_list_o mib_module_list_c mib_module_list_lo mibgroup_list_o mibgroup_list_lo agent_module_list_o agent_module_list_c agent_module_list_lo agentgroup_list_o agentgroup_list_lo ; do
+for i in module_list_o module_list_c module_list_lo module_list_ft mib_module_list_o mib_module_list_c mib_module_list_lo mib_module_list_ft mibgroup_list_o mibgroup_list_lo mibgroup_list_ft agent_module_list_o agent_module_list_c agent_module_list_lo agent_module_list_ft agentgroup_list_o agentgroup_list_lo agentgroup_list_ft ; do
   eval "$i=mk/${i}.mk"
 done
 
 $SED 's/^module_list_code/module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $module_list_code  > $module_list_o
 $SED 's/^module_list_code/module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $module_list_code  > $module_list_c
 $SED 's/^module_list_code/module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $module_list_code  > $module_list_lo
+$SED 's/^module_list_code/module_list_ft/;s/\([^=]\)  *\\/\1.ft \\/g' < $module_list_code  > $module_list_ft
 
 $SED 's/^mib_module_list_code/mib_module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $mib_module_list_code  > $mib_module_list_o
 $SED 's/^mib_module_list_code/mib_module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $mib_module_list_code  > $mib_module_list_c
 $SED 's/^mib_module_list_code/mib_module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $mib_module_list_code  > $mib_module_list_lo
+$SED 's/^mib_module_list_code/mib_module_list_ft/;s/\([^=]\)  *\\/\1.ft \\/g' < $mib_module_list_code  > $mib_module_list_ft
 
 $SED 's/^mib_module_list_o/mibgroup_list_o/;s@\([^ 	]*\)\.o@mibgroup/\1.o@g' < $mib_module_list_o > $mibgroup_list_o
 $SED 's/^mib_module_list_lo/mibgroup_list_lo/;s@\([^ 	]*\)\.lo@mibgroup/\1.lo@g' < $mib_module_list_lo > $mibgroup_list_lo
+$SED 's/^mib_module_list_ft/mibgroup_list_ft/;s@\([^ 	]*\)\.ft@mibgroup/\1.ft@g' < $mib_module_list_ft > $mibgroup_list_ft
 
 $SED 's/^agent_module_list_code/agent_module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $agent_module_list_code  > $agent_module_list_o
 $SED 's/^agent_module_list_code/agent_module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $agent_module_list_code  > $agent_module_list_c
 $SED 's/^agent_module_list_code/agent_module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $agent_module_list_code  > $agent_module_list_lo
+$SED 's/^agent_module_list_code/agent_module_list_ft/;s/\([^=]\)  *\\/\1.ft \\/g' < $agent_module_list_code  > $agent_module_list_ft
 
 $SED 's/^agent_module_list_o/agentgroup_list_o/;s@\([^ 	]*\)\.o@mibgroup/\1.o@g' < $agent_module_list_o > $agentgroup_list_o
 $SED 's/^agent_module_list_lo/agentgroup_list_lo/;s@\([^ 	]*\)\.lo@mibgroup/\1.lo@g' < $agent_module_list_lo > $agentgroup_list_lo
+$SED 's/^agent_module_list_ft/agentgroup_list_ft/;s@\([^ 	]*\)\.ft@mibgroup/\1.ft@g' < $agent_module_list_ft > $agentgroup_list_ft
 
-for i in module_list_o module_list_c module_list_lo mib_module_list_o mib_module_list_c mib_module_list_lo mibgroup_list_o mibgroup_list_lo agent_module_list_o agent_module_list_c agent_module_list_lo agentgroup_list_o agentgroup_list_lo ; do
+for i in module_list_o module_list_c module_list_lo module_list_ft mib_module_list_o mib_module_list_c mib_module_list_lo mib_module_list_ft mibgroup_list_o mibgroup_list_lo mibgroup_list_ft agent_module_list_o agent_module_list_c agent_module_list_lo agent_module_list_ft agentgroup_list_o agentgroup_list_lo agentgroup_list_ft ; do
 	# hpux make (at least) doesn't like a trailing \ on the last
 	# line even when the next line contains nothing but
 	# whitespace.
@@ -726,16 +740,21 @@
 AC_SUBST_FILE(module_list_c)
 AC_SUBST_FILE(module_list_o)
 AC_SUBST_FILE(module_list_lo)
+AC_SUBST_FILE(module_list_ft)
 AC_SUBST_FILE(mib_module_list_c)
 AC_SUBST_FILE(mib_module_list_o)
 AC_SUBST_FILE(mib_module_list_lo)
+AC_SUBST_FILE(mib_module_list_ft)
 AC_SUBST_FILE(agent_module_list_c)
 AC_SUBST_FILE(agent_module_list_o)
 AC_SUBST_FILE(agent_module_list_lo)
+AC_SUBST_FILE(agent_module_list_ft)
 AC_SUBST_FILE(mibgroup_list_o)
 AC_SUBST_FILE(mibgroup_list_lo)
+AC_SUBST_FILE(mibgroup_list_ft)
 AC_SUBST_FILE(agentgroup_list_o)
 AC_SUBST_FILE(agentgroup_list_lo)
+AC_SUBST_FILE(agentgroup_list_ft)
 
 AC_SUBST(default_mibs_install)
 AC_SUBST(dllcleans)
@@ -766,8 +785,10 @@
 if test "x$NETSNMP_DEFAULT_MIBS" = "x"; then
   NETSNMP_DEFAULT_MIBS="$default_mibs"
 fi
-if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
-  # mingw32 and cygwin use ';' as the environment variable separator char
+if test "x$ENV_SEPARATOR" != "x"; then
+  :
+elif test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
+  # mingw32 and cygwin use ';' as the default environment variable separator
   ENV_SEPARATOR=";"
   NETSNMP_DEFAULT_MIBS=`echo "$NETSNMP_DEFAULT_MIBS" | $SED 's/:/;/g'`
   default_mibs=`echo "$default_mibs" | $SED 's/:/;/g'`
@@ -775,6 +796,10 @@
   ENV_SEPARATOR=":"
 fi
 AC_SUBST(ENV_SEPARATOR)
+AC_DEFINE_UNQUOTED([ENV_SEPARATOR], ["$ENV_SEPARATOR"],
+         [Environment separator character surrounded by double quotes.])
+AC_DEFINE_UNQUOTED([ENV_SEPARATOR_CHAR], ['$ENV_SEPARATOR'],
+          [Environment separator character surrounded by single quotes.])
 AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_MIBS,"$NETSNMP_DEFAULT_MIBS")
 AC_SUBST(NETSNMP_DEFAULT_MIBS)
 AC_MSG_RESULT($NETSNMP_DEFAULT_MIBS)
diff --git a/configure.d/config_modules_lib b/configure.d/config_modules_lib
index 52063f1..362ba0a 100644
--- a/configure.d/config_modules_lib
+++ b/configure.d/config_modules_lib
@@ -25,10 +25,12 @@
 #
 AC_MSG_CHECKING([for platform-specific source])
 other_src_list=""
-other_objs_list=""
+other_ftobjs_list=""
 other_lobjs_list=""
+other_objs_list=""
 other_agentobjs=""
 other_lagentobjs=""
+other_ftagentobjs=""
 other_trapd_objects=""
 
 # Win32 service code
@@ -36,8 +38,10 @@
   other_src_list="$other_src_list winservice.c winservicerc.rc"
   other_objs_list="$other_objs_list winservice.o winservicerc.o"
   other_lobjs_list="$other_lobjs_list winservice.lo winservicerc.lo"
+  other_ftobjs_list="$other_ftobjs_list winservice.ft winservicerc.ft"
   other_agentobjs="../snmplib/winservicerc.o"
   other_lagentobjs="../snmplib/winservicerc.lo"
+  other_ftagentobjs="../snmplib/winservicerc.lo"
   other_trapd_objects="../snmplib/winservicerc.o" 
 fi
   
@@ -46,13 +50,16 @@
   other_src_list="$other_src_list winpipe.c"
   other_objs_list="$other_objs_list winpipe.o"
   other_lobjs_list="$other_lobjs_list winpipe.lo"
+  other_ftobjs_list="$other_ftobjs_list winpipe.ft"
 fi
 
 AC_SUBST(other_src_list)
 AC_SUBST(other_objs_list)
 AC_SUBST(other_lobjs_list)
+AC_SUBST(other_ftobjs_list)
 AC_SUBST(other_agentobjs)
 AC_SUBST(other_lagentobjs)
+AC_SUBST(other_ftagentobjs)
 AC_SUBST(other_trapd_objects)
 
 AC_MSG_RESULT([$other_src_list $other_objs_list $other_lobjs_list])
@@ -96,6 +103,7 @@
 AC_SUBST(transport_src_list)
 AC_SUBST(transport_obj_list)
 AC_SUBST(transport_lobj_list)
+AC_SUBST(transport_ftobj_list)
 for i in $transport_def_list; do
   AC_DEFINE_UNQUOTED($i)
 done
@@ -115,6 +123,7 @@
 AC_SUBST(security_hdr_list)
 AC_SUBST(security_obj_list) 	 
 AC_SUBST(security_lobj_list)
+AC_SUBST(security_ftobj_list)
 AC_MSG_RESULT($new_with_security)
 AC_MSG_CACHE_ADD(SNMPv3 Security Modules:    $new_with_security)
 
diff --git a/configure.d/config_modules_security_modules b/configure.d/config_modules_security_modules
index 1b5d125..823ca7d 100644
--- a/configure.d/config_modules_security_modules
+++ b/configure.d/config_modules_security_modules
@@ -1,31 +1,46 @@
 # -*- sh -*-
 security_def_list="usm"
 security_src_list=""
-security_obj_list="" 	 
+security_obj_list=""
 security_lobj_list=""
-if test "x$security_init_file" = "x" ; then
-    security_init_file="snmplib/snmpsm_init.h"
-fi
-if test "x$security_incl_file" = "x" ; then
-    security_incl_file="include/net-snmp/library/snmpv3-security-includes.h"
-fi
-new_with_security=`echo $with_security_modules | $SED 's/,/ /g;'`
-new_with_out_security=`echo $with_out_security_modules | $SED 's/,/ /g;'`
+security_ftobj_list=""
+security_mod_list=" "
 
-echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $security_init_file
-echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $security_incl_file
+new_with_security=
+new_with_out_security=`echo $with_out_security_modules | tr , ' '`
 
-for i in $security_def_list; do
+# Assign additional security modules
+for i in `echo $with_security_modules | tr , ' '`; do
   if echo " $new_with_out_security " | $GREP " $i " > /dev/null; then
-    if test "x$i" = "xusm"; then
-	echo
-        AC_MSG_ERROR(The USM security module is mandatory)
-    fi
+    echo
+    AC_MSG_ERROR([security module conflict - $i both included and excluded])
+  elif echo " $new_with_security " | $GREP " $i " > /dev/null ; then
+    : # Double define, ignore
   else
     new_with_security="$new_with_security $i"
   fi
 done
 
+# Add default security modules
+for i in $security_def_list; do
+  if echo " $new_with_out_security " | $GREP " $i " > /dev/null; then
+    : # Excluded, ignore
+  elif echo " $new_with_security " | $GREP " $i " > /dev/null ; then
+    : # Double define, ignore
+  else
+    new_with_security="$new_with_security $i"
+  fi
+done
+
+# Generate output files
+: ${security_init_file:='snmplib/snmpsm_init.h'}
+: ${security_shutdown_file:='snmplib/snmpsm_shutdown.h'}
+: ${security_incl_file:='include/net-snmp/library/snmpv3-security-includes.h'}
+
+echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $security_init_file
+echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $security_shutdown_file
+echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $security_incl_file
+
 for i in $new_with_security; do
   cfile="snmp"$i".c"
   hfile="snmp"$i".h"
@@ -39,13 +54,17 @@
   fi
 
   # define a bunch of stuff to enable it
+  security_mod_list="${security_mod_list} $i"
+  security_src_list="$security_src_list $cfile"
   security_src_list="$security_src_list $cfile"
   security_hdr_list="$security_hdr_list $hfile"
-  security_obj_list="$security_obj_list snmp"$i".o" 	 
+  security_obj_list="$security_obj_list snmp"$i".o"
   security_lobj_list="$security_lobj_list snmp"$i".lo"
-  def_name="NETSNMP_SECMOD_"`echo $i | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  security_ftobj_list="$security_ftobj_list snmp"$i".ft"
   echo "init_"$i"();" >> $security_init_file
+  echo "shutdown_"$i"();" >> $security_shutdown_file
   echo "#include <net-snmp/library/$hfile>" >> $security_incl_file
+  def_name="AS_TR_CPP([NETSNMP_SECMOD_$i])"
   AC_DEFINE_UNQUOTED($def_name)
 done
 
diff --git a/configure.d/config_modules_transports b/configure.d/config_modules_transports
index aa27146..b10b960 100644
--- a/configure.d/config_modules_transports
+++ b/configure.d/config_modules_transports
@@ -69,14 +69,15 @@
       # build a pseudo include header that includes current config and
       # system symbols:
       rm -f conftest.$ac_ext module_tmp_header.h
-      AC_LANG_CONFTEST(AC_LANG_SOURCE([[
+      AC_LANG_CONFTEST([AC_LANG_SOURCE([[
 #include NETSNMP_SYSTEM_INCLUDE_FILE
+#undef NETSNMP_MINIMAL_CODE
 #define NET_SNMP_CONFIG_H
 #undef config_require
 #define config_require(foo) config_checkit_require(foo)
 #undef config_error
 #define config_error(foo) config_checkit_error(foo)
-#include "$rel_transport_hdr"]]))
+#include "$rel_transport_hdr"]])])
       mv conftest.$ac_ext module_tmp_header.h
 
       #
@@ -117,6 +118,7 @@
 done # while new transports exist
 transport_obj_list=`echo " $transport_src_list " | $SED 's/\.c/\.o/g'`
 transport_lobj_list=`echo " $transport_src_list " | $SED 's/\.c/\.lo/g'`
+transport_ftobj_list=`echo " $transport_src_list " | $SED 's/\.c/\.ft/g'`
 for i in $tr_init_list ; do
    echo "$i();" >> $ctor_header
 done
@@ -126,6 +128,7 @@
   if echo "$transport_def_list" | $GREP "IPV6" >/dev/null; then
     transport_obj_list="$transport_obj_list inet_ntop.o inet_pton.o"
     transport_lobj_list="$transport_lobj_list inet_ntop.lo inet_pton.lo"
+    transport_ftobj_list="$transport_ftobj_list inet_ntop.ft inet_pton.ft"
   fi
 fi
 
diff --git a/configure.d/config_os_functions b/configure.d/config_os_functions
index 57d7854..3c5385b 100644
--- a/configure.d/config_os_functions
+++ b/configure.d/config_os_functions
@@ -31,7 +31,8 @@
                [signal          sigset                  ] )
 
 #  Library:
-AC_CHECK_FUNCS([closedir        fork            getipnodebyname  ] dnl
+AC_CHECK_FUNCS([closedir        fgetc_unlocked  flockfile        ] dnl
+               [fork            funlockfile     getipnodebyname  ] dnl
                [gettimeofday    if_nametoindex  mkstemp          ] dnl
                [opendir         readdir         regcomp          ] dnl
                [setenv          setitimer       setlocale        ] dnl
@@ -62,6 +63,12 @@
     ], [ ])
 
     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <winsock2.h>],
+    [ gethostbyaddr(NULL); ])],
+    [ ac_cv_func_gethostaddr=yes
+      AS_ECHO "#define HAVE_GETHOSTBYADDR 1" >>confdefs.h
+    ], [ ])
+
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <winsock2.h>],
     [ gethostname(NULL, 0); ])],
     [ ac_cv_func_gethostname=yes
       AS_ECHO "#define HAVE_GETHOSTNAME 1" >>confdefs.h
@@ -69,7 +76,7 @@
     ;;
 
   *)
-    AC_CHECK_FUNCS([gai_strerror getaddrinfo gethostbyname gethostbyname2 gethostname])
+    AC_CHECK_FUNCS([gai_strerror getaddrinfo gethostbyname gethostbyname2 gethostname gethostbyaddr])
     ;;
 esac
 
@@ -167,11 +174,11 @@
                [netsnmp_cv__func__name],[
     netsnmp_cv__func__name=no
     AC_COMPILE_IFELSE(
-        AC_LANG_PROGRAM(,[[const char* cp = __func__;]]),
+        [AC_LANG_PROGRAM(,[[const char* cp = __func__;]])],
         [netsnmp_cv__func__name=__func__])
     if test "$netsnmp_cv__func__name" = no ; then
       AC_COMPILE_IFELSE(
-        AC_LANG_PROGRAM(,[[const char* cp = __FUNCTION__;]]),
+        [AC_LANG_PROGRAM(,[[const char* cp = __FUNCTION__;]])],
         [netsnmp_cv__func__name=__FUNCTION__])
     fi])
 if test "$netsnmp_cv__func__name" != no; then
@@ -184,14 +191,14 @@
 #
 AC_CACHE_CHECK([[whether static inline functions are broken (Unixware)]],
                 [netsnmp_cv_c_broken_inline],
-    AC_COMPILE_IFELSE([[
+    AC_COMPILE_IFELSE([AC_LANG_SOURCE([
 static inline int nested_inline_function(void) {
   return 0;
 }
 inline int main_inline_function( void ) {
   return nested_inline_function();
 }
-    ]],
+    ])],
     netsnmp_cv_broken_inline=no,
     netsnmp_cv_broken_inline=yes))
 
diff --git a/configure.d/config_os_headers b/configure.d/config_os_headers
index 19b27fc..708aa09 100644
--- a/configure.d/config_os_headers
+++ b/configure.d/config_os_headers
@@ -55,6 +55,7 @@
                  [ioctls.h   kstat.h    kvm.h      limits.h     ] dnl
                  [           mntent.h   mtab.h                  ] dnl
                  [           pkglocs.h             pwd.h        ] dnl
+                 [           com_err.h             et/com_err.h ] dnl
                  [           utmpx.h    utsname.h               ])
 
 AC_CHECK_HEADERS([sys/diskio.h  sys/dkio.h                                 ] dnl
@@ -90,6 +91,8 @@
                  [pci/pci.h                        ])
 
 
+# Valgrind
+AC_CHECK_HEADERS([valgrind/valgrind.h valgrind/memcheck.h])
 # OpenSSL
 AC_CHECK_HEADERS([openssl/aes.h ])     #  (Core)
 AC_CHECK_HEADERS([openssl/dh.h  ])     #  (Apps)
@@ -388,18 +391,21 @@
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
+#if HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#if HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#if HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
 #if HAVE_NETINET_IP6_H
 #include <netinet/ip6.h>
 #endif
-#if HAVE_NET_IF_H
-#include <net/if.h>
-#endif
-#if HAVE_NET_ROUTE_H
-#include <net/route.h>
-#endif
     ]])
 
 #       requiring <netinet/in.h>                        (OpenBSD 2.6)
@@ -467,6 +473,27 @@
     NETSNMP_SEARCH_LIBS(pkginfo, adm,
         AC_DEFINE(HAVE_PKGINFO, 1, [define if you have pkginfo]),,,LMIBLIBS))
 
+AC_CHECK_HEADERS(pkg.h,
+    NETSNMP_SEARCH_LIBS(pkg_init, pkg,
+        AC_DEFINE(HAVE_LIBPKG, 1, [define if you have BSD pkg-ng])))
+
+if test $ac_cv_header_pkg_h = no
+then
+    unset ac_cv_header_pkg_h
+    netsnmp_save_CPPFLAGS="$CPPFLAGS"
+    netsnmp_save_LDFLAGS="$LDFLAGS"
+    CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+    LDFLAGS="$LDFLAGS -L/usr/local/lib"
+    AC_CHECK_HEADERS(pkg.h,
+        NETSNMP_SEARCH_LIBS(pkg_init, pkg,
+	    AC_DEFINE(HAVE_LIBPKG, 1, [define if you have BSD pkg-ng])))
+    if test $ac_cv_header_pkg_h = no
+    then
+        CPPFLAGS="$netsnmp_save_CPPFLAGS"
+        LDFLAGS="$netsnmp_save_LDFLAGS"
+    fi
+fi
+
 case $target_os in
     aix*)
         #       for CPU/memory statistics               (AIX)
@@ -518,4 +545,44 @@
 #
 AC_CHECK_HEADERS([sensors/sensors.h picl.h])
 
+##  This is here to avoid loads of redefinition warnings during
+##  module configuration
+
+##
+#   rtentry structure checks:
+##
+
+# Check struct rtentry for common fields
+#   Agent:
+#
+AC_CHECK_MEMBERS([struct rtentry.rt_dst,
+                  struct rtentry.rt_hash,
+                  struct rtentry.rt_next,
+                  struct rtentry.rt_refcnt,
+                  struct rtentry.rt_unit,
+                  struct rtentry.rt_use],,,
+    [
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#endif
+#ifdef HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+    ])
+
 fi # NETSNMP_QUICK_CHECK
diff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2
index 3414678..47491e2 100644
--- a/configure.d/config_os_libs2
+++ b/configure.d/config_os_libs2
@@ -86,6 +86,8 @@
   AC_SEARCH_LIBS(socket, socket,,AC_MSG_ERROR([socket(2) not found.]))
   AC_SEARCH_LIBS(gethostbyname, [nsl socket])
   AC_CHECK_FUNCS(gethostbyname)
+  AC_SEARCH_LIBS(gethostbyaddr, [nsl socket])
+  AC_CHECK_FUNCS(gethostbyaddr)
   ;;
 esac
 
@@ -156,6 +158,16 @@
         LNETSNMPLIBS)
 
 
+#
+#   librt
+#
+
+NETSNMP_SEARCH_LIBS(clock_gettime, rt,
+        AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
+                [Define to 1 if you have the `clock_gettime' library]),,,
+        LNETSNMPLIBS)
+
+
 ##
 #   MIB-module-specific checks
 ##
@@ -175,6 +187,12 @@
                         [define if you have devstat_getdevs()]),,,LMIBLIBS)
 fi
 
+#   libpci
+#        (for if-mib description)
+#
+NETSNMP_SEARCH_LIBS(pci_lookup_name, pci,
+	AC_DEFINE(HAVE_PCI_LOOKUP_NAME, 1,
+		[define if you have pci_lookup_name()]),,,LMIBLIBS)
 
 #   LM-SENSORS-MIB support
 #
@@ -310,6 +328,17 @@
         AC_DEFINE(HAVE_LIBPKCS11)
         LIBPKCS11="-lpkcs11")
 fi
+if test "x$TLSPROG" = "xyes"; then
+   AC_CHECK_DECL([EVP_sha224],
+    AC_DEFINE([HAVE_EVP_SHA224], [], [Define if you have EVP_sha224/256 in openssl]),
+    : ,
+    [[#include <openssl/evp.h>]])
+   AC_CHECK_DECL([EVP_sha384],
+    AC_DEFINE([HAVE_EVP_SHA384], [], [Define if you have EVP_sha384/256 in openssl]),
+    : ,
+    [[#include <openssl/evp.h>]])
+fi
+
 LIBS=$NONAGENTLIBS	 # restore old libraries
 if test "x$SSHPROG" = "xyes"; then
     NETSNMP_BUILD_SSH_PROG_TRUE=''
@@ -318,17 +347,40 @@
     NETSNMP_BUILD_SSH_PROG_TRUE='#'
     NETSNMP_BUILD_SSH_PROG_FALSE=''
 fi
-if test "x$TLSPROG" = "xyes"; then
+if test "x$TLSPROG" = "xyes" -a "x$enable_read_only" != "xyes" ; then
     NETSNMP_BUILD_TLS_PROG_TRUE=''
     NETSNMP_BUILD_TLS_PROG_FALSE='#'
 else
     NETSNMP_BUILD_TLS_PROG_TRUE='#'
     NETSNMP_BUILD_TLS_PROG_FALSE=''
 fi
+if echo " ${security_mod_list} " | grep ' usm ' ; then
+    if test "x$enable_read_only" != "xyes" ; then
+    	NETSNMP_BUILD_USM_PROG_TRUE=''
+    	NETSNMP_BUILD_USM_PROG_FALSE='#'
+    else
+    	NETSNMP_BUILD_USM_PROG_TRUE='#'
+    	NETSNMP_BUILD_USM_PROG_FALSE=''
+    fi
+else
+    NETSNMP_BUILD_USM_PROG_TRUE='#'
+    NETSNMP_BUILD_USM_PROG_FALSE=''
+fi
+if test "x$enable_read_only" != "xyes" ; then
+    NETSNMP_BUILD_SET_PROG_TRUE=""
+    NETSNMP_BUILD_SET_PROG_FALSE="#"
+else
+    NETSNMP_BUILD_SET_PROG_TRUE="#"
+    NETSNMP_BUILD_SET_PROG_FALSE=""
+fi
 AC_SUBST(NETSNMP_BUILD_SSH_PROG_TRUE)
 AC_SUBST(NETSNMP_BUILD_SSH_PROG_FALSE)
 AC_SUBST(NETSNMP_BUILD_TLS_PROG_TRUE)
 AC_SUBST(NETSNMP_BUILD_TLS_PROG_FALSE)
+AC_SUBST(NETSNMP_BUILD_USM_PROG_TRUE)
+AC_SUBST(NETSNMP_BUILD_USM_PROG_FALSE)
+AC_SUBST(NETSNMP_BUILD_SET_PROG_TRUE)
+AC_SUBST(NETSNMP_BUILD_SET_PROG_FALSE)
 
 #
 # If we're using internal crypto support we need to compile in extra files
diff --git a/configure.d/config_os_misc2 b/configure.d/config_os_misc2
index d90036d..e2a8ff5 100644
--- a/configure.d/config_os_misc2
+++ b/configure.d/config_os_misc2
@@ -96,3 +96,47 @@
 if test "x$all_warnings" != "x"; then
     AC_MSG_CACHE_ADD(WARNING: $all_warnings)
 fi
+
+#
+# Check whether user wants DNSSEC local validation support
+#
+_libs=${LIBS}
+if ! test "x-$want_dnssec" = "x-no" ; then
+    AC_CHECK_HEADERS([validator/validator-config.h])
+    if test "$ac_cv_header_validator_validator_config_h" != yes; then
+        AC_MSG_ERROR(Can't find validator.h)
+    fi
+    if test "x$ac_cv_lib_crypto_EVP_md5" != "xyes" -a \
+            "x$ac_cv_lib_eay32_EVP_md5" != "xyes" -o \
+            "x$ac_cv_header_openssl_hmac_h" != "xyes"; then
+        AC_MSG_ERROR(Couldn't find OpenSSL for local DNSSEC validation support.)
+    fi
+    LIBS="$LIBS $LIBCRYPTO"
+    AC_CHECK_LIB(sres, query_send,,AC_MSG_ERROR([Can't find libsres]))
+    VAL_LIBS="-lsres $LIBCRYPTO"
+    LIBS="$LIBS -lsres"
+    AC_CHECK_LIB(val, p_val_status,
+                 LIBS="$LIBS -lval"
+                 VAL_LIBS="$VAL_LIBS -lval"
+                 have_val_res_query=yes,
+                 [ AC_CHECK_LIB(pthread, pthread_rwlock_init)
+		   AC_CHECK_LIB(val-threads, p_val_status,
+                   have_val_res_query=yes
+                   LIBS="-lval-threads $LIBS"
+                   VAL_LIBS="-lval-threads -lpthread $VAL_LIBS"
+                   LIBVAL_SUFFIX="-threads",
+                   AC_MSG_ERROR(Can't find libval or libval-threads))
+                 ])
+    AC_DEFINE(DNSSEC_LOCAL_VALIDATION, 1,
+              [Define if you want local DNSSEC validation support])
+    DNSSEC="enabled"
+else
+    DNSSEC="disabled"
+fi
+
+LIBS=${_libs}
+
+AC_SUBST(VAL_LIBS)
+AC_MSG_CACHE_ADD(Local DNSSEC validation:    $DNSSEC)
+
+ 
diff --git a/configure.d/config_os_misc4 b/configure.d/config_os_misc4
index 73f8087..cc8bad2 100644
--- a/configure.d/config_os_misc4
+++ b/configure.d/config_os_misc4
@@ -49,6 +49,23 @@
 AC_DEFINE_UNQUOTED(KERNEL_LOC,"$ac_cv_KERNEL_LOC", [location of UNIX kernel])
 
 
+#       /dev/kmem existence
+#	    used in agent only
+#
+AC_CACHE_CHECK([for /dev/kmem],
+    ac_cv_HAVE_KMEM,
+   [if test $CDEV_TEST_FLAG /dev/kmem; then
+        ac_cv_HAVE_KMEM="/dev/kmem"
+    fi
+])
+#
+#  Note that it's OK if this device is not found
+#
+if test "x$ac_cv_HAVE_KMEM" = "x/dev/kmem"; then
+    AC_DEFINE_UNQUOTED(HAVE_KMEM,"$ac_cv_HAVE_KMEM", [Define if you have /dev/kmem])
+fi
+
+
 #       Swap device Location
 #           (/dev/dmem or /dev/drum)
 #	    used in agent only
@@ -211,39 +228,6 @@
   AC_DEFINE(NETSNMP_CAN_USE_SYSCTL, 1, [sysctl works to get boottime, etc...])
 fi
 
-#   Check FreeBSD's kernel OID kern.cp_times existance
-#
-#         used in agent only 
-#
-if test $cross_compiling = yes; then
-    AC_MSG_WARN([Can't check either sysctl kern.cp_times, manually define HAVE_KERN_CP_TIMES if platform support available])
-else
-    AC_CACHE_CHECK([if sysctl provides kern.cp_times kernel information],
-        ac_cv_HAVE_KERN_CP_TIMES,
-       [AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/sysctl.h>
-#include <stdlib.h>
-
-main () {
-
-  size_t              cp_times_size;
-  size_t              ncpu_size;
-
-  if (sysctlbyname("kern.cp_times", NULL, &cp_times_size, NULL, 0))
-    exit(1);
-  else
-    exit(0);
-}
-        ],
-        ac_cv_HAVE_KERN_CP_TIMES=yes,
-        ac_cv_HAVE_KERN_CP_TIMES=no,
-        ac_cv_HAVE_KERN_CP_TIMES=no)])
-fi
-
-if test "x$ac_cv_HAVE_KERN_CP_TIMES" = "xyes"; then
-  AC_DEFINE(HAVE_KERN_CP_TIMES, 1, [kern.cp_times displays multi cpu load on FreeBSD...])
-fi
 
 #   Check whether TCP timer constants are indeed constant
 #       or depend on the kernel clock tick 'hz'.        (FreeBSD 4.x)
diff --git a/configure.d/config_os_progs b/configure.d/config_os_progs
index a60714e..160134c 100644
--- a/configure.d/config_os_progs
+++ b/configure.d/config_os_progs
@@ -401,12 +401,12 @@
 	fi
 	;;
 
-    darwin8*|darwin9*|darwin10*)
+    darwin8*|darwin9*|darwin10*|darwin11*|darwin12*|darwin13*)
         #   Flat Namespace linking                      (Mac OS/X)
         #
         AC_MSG_CHECKING([whether darwin ld might need -flat_namespace])
 	if test -z "$MACOSX_DEPLOYMENT_TARGET"; then
-		LDFLAGS="-flat_namespace $LDFLAGS"
+		LDFLAGS="-flat_namespace -framework CoreFoundation -framework CoreServices -framework DiskArbitration -framework IOKit $LDFLAGS"
 		AC_MSG_RESULT([yes])
 	else
 		AC_MSG_RESULT([no])
diff --git a/configure.d/config_os_struct_members b/configure.d/config_os_struct_members
index 2f408f6..7f6b2c0 100644
--- a/configure.d/config_os_struct_members
+++ b/configure.d/config_os_struct_members
@@ -33,7 +33,6 @@
 #endif
     ]])
 
-
 #       struct des_ks_struct
 #         ('weak_key' indicates older version of OpenSSL)
 #   Library:
@@ -92,6 +91,20 @@
 #include <netinet/ip_var.h>
 #endif
     ]])
+#       struct ip6stat
+#   Agent:
+#
+AC_CHECK_MEMBERS([struct ip6stat.ip6s_exthdrtoolong ],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET6_IP6_VAR_H
+#include <netinet6/ip6_var.h>
+#endif
+    ]])
+
 #
 #   Not-Used:
 AC_CHECK_MEMBERS([struct ipstat.ips_cantforward,
@@ -357,6 +370,7 @@
                   struct udpstat.udps_fullsock,
                   struct udpstat.udps_noport,
                   struct udpstat.udps_noportbcast,
+                  struct udpstat.udps_ipackets,
                   struct udpstat.udps_opackets],,,[
     AC_INCLUDES_DEFAULT()
     [
@@ -386,7 +400,7 @@
         [ac_cv_IFNET_NEEDS_KERNEL],
         [ac_cv_IFNET_NEEDS_KERNEL=unknown
          AC_COMPILE_IFELSE(
-             AC_LANG_PROGRAM([
+             [AC_LANG_PROGRAM([
 #include <sys/types.h>
 #ifdef HAVE_SYS_PARAM_H
 #include <sys/param.h>
@@ -400,11 +414,11 @@
 #ifdef HAVE_NET_IF_VAR_H
 #include <net/if_var.h>
 #endif
-             ], [[struct ifnet test; test.if_mtu = 0;]]),
+             ], [[struct ifnet test; test.if_mtu = 0;]])],
              [ac_cv_IFNET_NEEDS_KERNEL=no])
          if test "$ac_cv_IFNET_NEEDS_KERNEL" = unknown ; then
          AC_COMPILE_IFELSE(
-             AC_LANG_PROGRAM([
+             [AC_LANG_PROGRAM([
 #define _KERNEL 1
 #include <sys/types.h>
 #ifdef HAVE_SYS_PARAM_H
@@ -419,7 +433,7 @@
 #ifdef HAVE_NET_IF_VAR_H
 #include <net/if_var.h>
 #endif
-             ], [[struct ifnet test; test.if_mtu = 0;]]),
+             ], [[struct ifnet test; test.if_mtu = 0;]])],
              [ac_cv_IFNET_NEEDS_KERNEL=yes])
          fi])
 
@@ -593,44 +607,6 @@
     ]])
 
 
-##
-#   rtentry structure checks:
-##
-
-# Check struct rtentry for common fields
-#   Agent:
-#
-AC_CHECK_MEMBERS([struct rtentry.rt_dst,
-                  struct rtentry.rt_hash,
-                  struct rtentry.rt_next,
-                  struct rtentry.rt_refcnt,
-                  struct rtentry.rt_unit,
-                  struct rtentry.rt_use],,,
-    [
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
-#define _KERNEL_STRUCTURES 1
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#ifdef NETSNMP_IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#endif
-#ifdef HAVE_NET_ROUTE_H
-#include <net/route.h>
-#endif
-    ])
-
-
 # Check for BSD 4.3 vs 4.4 struct rtentry
 #
 AC_CACHE_CHECK([type of rtentry structure],
diff --git a/configure.d/config_project_perl_python b/configure.d/config_project_perl_python
index 798c5ce..23f8c7e 100644
--- a/configure.d/config_project_perl_python
+++ b/configure.d/config_project_perl_python
@@ -276,6 +276,7 @@
         [Define if you are embedding perl in the main agent.])
       OTHERAGENTLIBOBJS="snmp_perl.o"
       OTHERAGENTLIBLOBJS="snmp_perl.lo"
+      OTHERAGENTLIBLFTS="snmp_perl.ft"
 
       EMBEDPERLINSTALL="embedperlinstall"
       EMBEDPERLUNINSTALL="embedperluninstall"
@@ -314,11 +315,13 @@
 PERLTARGS=""
 PERLINSTALLTARGS=""
 PERLUNINSTALLTARGS=""
+PERLFEATURES=""
 AC_MSG_CHECKING([if we can install the Perl modules])
 if test "x$install_perl" = "xyes" ; then
     PERLTARGS="perlmodules"
     PERLINSTALLTARGS="perlinstall"
     PERLUNINSTALLTARGS="perluninstall"
+    PERLFEATURES="perlfeatures"
     if test "x$embed_perl" = "xyes" ; then
       AC_MSG_CACHE_ADD(SNMP Perl modules:          building -- embeddable)
       AC_MSG_RESULT([yes -- and embeddable])
@@ -334,6 +337,7 @@
 AC_SUBST(PERLINSTALLTARGS)
 AC_SUBST(PERLUNINSTALLTARGS)
 AC_SUBST(PERLARGS)
+AC_SUBST(PERLFEATURES)
 
 
 #       Reset LIBS to pre-libwrap value   (???)
@@ -351,12 +355,14 @@
 PYTHONINSTALLTARGS=""
 PYTHONUNINSTALLTARGS=""
 PYTHONCLEANTARGS=""
+PYTHONFEATURES=""
 AC_MSG_CHECKING([if we should install the python bindings])
 if test "x$install_python" = "xyes" ; then
     PYTHONTARGS="pythonmodules"
     PYTHONINSTALLTARGS="pythoninstall"
     PYTHONUNINSTALLTARGS="pythonuninstall"
     PYTHONCLEANTARGS="pythonclean"
+    PYTHONFEATURES="pythonfeatures"
     AC_MSG_CACHE_ADD(SNMP Python modules:        building for $PYTHONPROG)
     AC_MSG_RESULT([yes])
 else
@@ -368,5 +374,6 @@
 AC_SUBST(PYTHONUNINSTALLTARGS)
 AC_SUBST(PYTHONCLEANTARGS)
 AC_SUBST(PYTHONARGS)
+AC_SUBST(PYTHONFEATURES)
 
 
diff --git a/configure.d/config_project_with_enable b/configure.d/config_project_with_enable
index 069cc07..61ba026 100644
--- a/configure.d/config_project_with_enable
+++ b/configure.d/config_project_with_enable
@@ -93,7 +93,12 @@
     elif test "x$withval" = "xno"; then
       tryopenssl=no
     elif test -d "$withval"; then
-      AC_ADD_SEARCH_PATH($withval)
+      if test -d "$withval/lib/MinGW"; then
+        LDFLAGS="-L$withval/lib/MinGW $LDFLAGS"
+        CPPFLAGS="-I$withval/include $CPPFLAGS"
+      else
+        AC_ADD_SEARCH_PATH($withval)
+      fi
       tryopenssl=yes
       askedopenssl=yes
     fi,
@@ -140,6 +145,13 @@
       krb5path=/usr/kerberos
 fi
 
+AC_ARG_WITH(dnssec-local-validation,
+        [  --with-dnssec-local-validation Enable local DNSSEC validation using libval (no)], want_dnssec=$withval, want_dnssec=no)
+AC_ARG_ENABLE([dnssec-local-validation],,
+              NETSNMP_INVALID_WITH([dnssec-local-validation]))
+AC_ARG_WITH([dnssec],,NETSNMP_INVALID_WITH([dnssec-local-validation]))
+AC_ARG_ENABLE([dnssec],,NETSNMP_INVALID_WITH([dnssec-local-validation]))
+
 NETSNMP_ARG_WITH(rpm,
 [  --without-rpm                   Don't include support for the RPM package
                                   management system when building the host MIB
@@ -168,8 +180,14 @@
 AC_SUBST(INSTALL_PREFIX)
 
 
-#   
+#
 #   Subsystems to build:
+#       Library
+#
+FEATUREHEADERS="library/features.h"
+FTMAINSUBS=""
+
+#
 #       Agent
 #
 NETSNMP_ARG_ENABLE(agent,
@@ -177,6 +195,8 @@
 if test "x$enable_agent" != "xno"; then
    SNMPD='snmpd$(EXEEXT)'
    MAINSUBS="$MAINSUBS agent"
+   FEATUREHEADERS="$FEATUREHEADERS agent/features-mibgroups.h agent/features.h"
+   FTMAINSUBS="agent $FTMAINSUBS"
    TRAPLIBS='$(TRAPDWITHAGENT)'
    USETRAPLIBS='$(USEAGENTLIBS)'
 else
@@ -188,7 +208,9 @@
    #USETRAPLIBS='$(USELIBS)'
    TRAPLIBS='$(TRAPDWITHAGENT)'
    USETRAPLIBS='$(USEAGENTLIBS)'
+   AC_DEFINE([NETSNMP_DISABLE_AGENT], 1, [Define if no agent is built])
 fi
+
 AC_SUBST(SNMPD)
 AC_SUBST(TRAPLIBS)
 AC_SUBST(USETRAPLIBS)
@@ -199,6 +221,10 @@
 [  --disable-applications          Do not build the apps (snmpget, ...).])
 if test "x$enable_applications" != "xno"; then
    MAINSUBS="$MAINSUBS apps"
+   FEATUREHEADERS="$FEATUREHEADERS features-snmpnetstat.h features-apps.h"
+   FTMAINSUBS="apps $FTMAINSUBS"
+else
+   AC_DEFINE([NETSNMP_DISABLE_APPS], 1, [Define if no apps are built])
 fi
 
 #       Manual pages
@@ -227,6 +253,7 @@
 # with-mibs is valid too, but means something else
 
 AC_SUBST(MAINSUBS)
+AC_SUBST(FTMAINSUBS)
 AC_MSG_CHECKING([what to build and install])
 AC_MSG_RESULT([$MAINSUBS])
 
@@ -555,12 +582,16 @@
   Available SNMP security services:
 
         usm                support for user based SNMP security
-                           (required and always compiled in)
         ksm                support for kerberos based SNMP security
         tsm                support for the Transport-based security
                            (for use with the SSH, DTLSUDP and TLSTCP transports)
 ])
 
+NETSNMP_ARG_WITH(out-security-modules,
+[  --with-out-security-modules="s1 s2 ..."   Removes the given SNMP security
+                                    module services from the default list.
+])
+
 
 ##
 #   Project: Library: Developer-related settings
@@ -717,6 +748,90 @@
 AC_DEFINE_UNQUOTED(NETSNMP_AGENTX_SOCKET,"$withval",
         [Unix domain socket for AgentX master-subagent communication])
 
+#
+# feature addition/removal and minimialist support
+#
+FEATURE_ADD_FLAGS=""
+NETSNMP_ARG_WITH(features,
+[  --with-features="feat1 feat2"   Request extra features to be turned on.
+                                   (only useful with --enable-minimalist)],[
+  if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a list of features ]);
+  fi
+  FEATURE_ADD_FLAGS="--add $withval"
+  AC_MSG_RESULT(adding in features: $withval)
+])
+AC_SUBST(FEATURE_ADD_FLAGS)
+
+
+FEATURE_REMOVE_FLAGS=""
+NETSNMP_ARG_WITH(out-features,
+[  --with-out-features="feat1..."  Remove specific features.
+                                   (implies --enable-minimalist)],[
+  if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a list of features ]);
+  fi
+  FEATURE_REMOVE_FLAGS="--remove $withval"
+  FEATURETARGS="features"
+  AC_DEFINE(NETSNMP_MINIMAL_CODE, 1,
+    [Define if you want to remove all non-essential code features.])
+  AC_MSG_RESULT(removing features: $withval)
+])
+AC_SUBST(FEATURE_REMOVE_FLAGS)
+
+
+# Catch common mistakes
+AC_ARG_WITH(feature,, NETSNMP_INVALID_WITH([features]))
+AC_ARG_WITH(out-feature,, NETSNMP_INVALID_WITH([out-features]))
+
+FEATURETARGS=""
+NETSNMP_ARG_ENABLE(minimalist,
+[  --enable-minimalist             Remove all non-essential code features.])
+if test "x$enable_minimalist" = "xyes"; then
+   # we'll assume the mini agent is desired here as well
+   mini_agent="yes"
+   FEATURETARGS="features"
+
+   # needed to bootstrap later checks
+   echo "" > include/net-snmp/feature-details.h
+   AC_DEFINE(NETSNMP_MINIMAL_CODE, 1,
+     [Define if you want to remove all non-essential code features.])
+else
+   FEATUREHEADERS=""
+fi
+AC_ARG_WITH([minimalist],,NETSNMP_INVALID_ENABLE([minimalist]))
+AC_SUBST(FEATURETARGS)
+AC_SUBST(FEATUREHEADERS)
+
+NETSNMP_ARG_ENABLE(notify-only,
+[  --enable-notify-only            Build tools that can only send notifications.])
+if test "x$enable_notify_only" = "xyes"; then
+   AC_DEFINE(NETSNMP_NOTIFY_ONLY, 1,
+     [Define if you want to only support sending notifications])
+fi
+AC_ARG_WITH([notify-only],,NETSNMP_INVALID_ENABLE([notify-only]))
+AC_ARG_ENABLE([notifyonly],,NETSNMP_INVALID_ENABLE([notify-only]))
+
+NETSNMP_ARG_ENABLE(no-listen,
+[  --enable-no-listen              Build tools that can't listen to ports.])
+if test "x$enable_no_listen" = "xyes" -o "x$enable_notify_only" = "xyes"; then
+   enable_no_listen="yes"
+   AC_DEFINE(NETSNMP_NO_LISTEN_SUPPORT, 1,
+     [Define if you want to remove all listening support from the code])
+fi
+AC_ARG_WITH([no-listen],,NETSNMP_INVALID_ENABLE([no-listen]))
+AC_ARG_ENABLE([nolisten],,NETSNMP_INVALID_ENABLE([no-listen]))
+
+NETSNMP_ARG_ENABLE(read-only,
+[  --enable-read-only              Remove all SET support from the code.])
+if test "x$enable_read_only" = "xyes" -o "x$enable_notify_only" = "xyes" ; then
+   enable_read_only="yes"
+   AC_DEFINE(NETSNMP_NO_WRITE_SUPPORT, 1,
+     [Define if you want to remove all SET/write access from the code])
+fi
+AC_ARG_WITH([read-only],,NETSNMP_INVALID_ENABLE([read-only]))
+AC_ARG_ENABLE([readonly],,NETSNMP_INVALID_ENABLE([read-only]))
+
 
 ##
 #   Project: Agent: MIB module configuration
@@ -732,6 +847,9 @@
 AC_ARG_WITH([miniagent],,NETSNMP_INVALID_ENABLE([mini-agent]))
 AC_ARG_ENABLE([miniagent],,NETSNMP_INVALID_ENABLE([mini-agent]))
 
+
+
+
 NETSNMP_ARG_ENABLE(mfd-rewrites,
 [  --enable-mfd-rewrites           Use new MFD rewrites of mib modules,
                                   where available. (default is to use
diff --git a/dist/Makefile b/dist/Makefile
index 10a7493..27fc171 100644
--- a/dist/Makefile
+++ b/dist/Makefile
@@ -19,7 +19,7 @@
 NAME = net-snmp
 
 # Define the default RPM release number. Set by Version-Munge.pl
-VERSION = 5.6.2
+VERSION = 5.7.3.pre5
 
 VERSION_TAG=`echo Ext-$(VERSION) | sed 's/\./-/g;'`
 
diff --git a/dist/autoconf-version b/dist/autoconf-version
index c95fea5..264f2ce 100644
--- a/dist/autoconf-version
+++ b/dist/autoconf-version
@@ -1 +1 @@
-2.63
+2.68
diff --git a/dist/makerelease.xml b/dist/makerelease.xml
index c32b813..b02e626 100644
--- a/dist/makerelease.xml
+++ b/dist/makerelease.xml
@@ -371,7 +371,7 @@
 	    <command>NETSNMP_DONT_CHECK_VERSION=1 make</command>
 	  </commands>
 	</step>
-	<step type="system" stepname="build:test" title="build:test">
+	<step type="system" stepname="build:test" title="testing: default tests">
 	  <text>Now we run "make test" which should produce a perfect
 	  set up test results.  If not, this needs to be fixed or at
 	  least understood and accepted as is for some other reason.</text>
@@ -379,6 +379,24 @@
 	    <command>make test</command>
 	  </commands>
 	</step>
+	<step type="system" stepname="build:test:unit" title="testing: unit-tests">
+	  <text>Now we run the unit-tests which should also produce a perfect
+	  set up test results.  If not, this needs to be fixed or at
+	  least understood and accepted as is for some other reason.</text>
+	  <commands>
+	    <command>cd testing &amp;&amp; ./RUNFULLTESTS -g unit-tests</command>
+	  </commands>
+	</step>
+	<step type="system" stepname="build:test:transports" title="testing: transports">
+	  <text>Now we run the transport tests which should also
+	  produce a perfect set up test results, if your machine
+	  supports all the transports.  If not, this needs to be fixed
+	  or at least understood and accepted as is for some other
+	  reason (like you can't do IPv6 on your system).</text>
+	  <commands>
+	    <command>cd testing &amp;&amp; ./RUNFULLTESTS -g transports</command>
+	  </commands>
+	</step>
 	<step type="system" stepname="code:checkcomments" title="code:checkcomments">
 	  <text>This command looks for source code oddities and policy
 	  violations.</text>
diff --git a/dist/net-snmp.spec b/dist/net-snmp.spec
index 2283c2f..f5415a6 100644
--- a/dist/net-snmp.spec
+++ b/dist/net-snmp.spec
@@ -37,7 +37,7 @@
 %endif
 Summary: Tools and servers for the SNMP protocol
 Name: net-snmp
-Version: 5.6.2
+Version: 5.7.3.pre5
 # update release for vendor release. (eg 1.fc6, 1.rh72, 1.ydl3, 1.ydl23)
 Release: 1
 URL: http://www.net-snmp.org/
diff --git a/dist/patme b/dist/patme
index cc0b87a..0fd50ee 100755
--- a/dist/patme
+++ b/dist/patme
@@ -14,12 +14,13 @@
 our %opts =
 (
  'd' => $ENV{'HOME'} . "/src/snmp/patme/",
- 'b' => 'main,5.5,5.4,5.3,5.2',
+ 'b' => 'main,5.6,5.5,5.4,5.3',
  'p' => '-p0',
 );
 
 # sets the order shown
 our @codetrees = ('main',
+		  '5.6',
 		  '5.5',
 		  '5.4',
 		  '5.3',
@@ -34,6 +35,7 @@
 		  '5.3' => 'V5-3-patches',
 		  '5.4' => 'V5-4-patches',
 		  '5.5' => 'V5-5-patches',
+		  '5.6' => 'V5-6-patches',
 		  'main' => 'net-snmp',
 		  'UCD' => 'V4-2-patches');
 
diff --git a/include/net-snmp/agent/agent_handler.h b/include/net-snmp/agent/agent_handler.h
index 2432b88..ec930fe 100644
--- a/include/net-snmp/agent/agent_handler.h
+++ b/include/net-snmp/agent/agent_handler.h
@@ -61,6 +61,17 @@
                                           struct
                                           netsnmp_agent_request_info_s *,
                                           struct netsnmp_request_info_s *);
+        /** data clone hook for myvoid
+         *  deep copy the myvoid member - default is to copy the pointer
+         *  This method is only called if myvoid != NULL
+         *  myvoid is the current myvoid pointer.
+         *  returns NULL on failure
+         */
+        void *(*data_clone)(void *myvoid);
+        /** data free hook for myvoid
+         *  delete the myvoid member - default is to do nothing
+         *  This method is only called if myvoid != NULL
+         */
         void (*data_free)(void *myvoid); /**< data free hook for myvoid */
 
         struct netsnmp_mib_handler_s *next;
diff --git a/include/net-snmp/agent/agent_registry.h b/include/net-snmp/agent/agent_registry.h
index ba80793..2949c9d 100644
--- a/include/net-snmp/agent/agent_registry.h
+++ b/include/net-snmp/agent/agent_registry.h
@@ -59,18 +59,21 @@
 void             shutdown_tree    (void);
 
 
-netsnmp_subtree *netsnmp_subtree_find	  (oid *, size_t, netsnmp_subtree *,
+netsnmp_subtree *netsnmp_subtree_find	  (const oid *, size_t,
+					   netsnmp_subtree *,
 					   const char *context_name);
 
-netsnmp_subtree *netsnmp_subtree_find_next(oid *, size_t, netsnmp_subtree *,
+netsnmp_subtree *netsnmp_subtree_find_next(const oid *, size_t,
+					   netsnmp_subtree *,
 					   const char *context_name);
 
-netsnmp_subtree *netsnmp_subtree_find_prev(oid *, size_t,netsnmp_subtree *,
+netsnmp_subtree *netsnmp_subtree_find_prev(const oid *, size_t,
+					   netsnmp_subtree *,
 					   const char *context_name);
 
 netsnmp_subtree *netsnmp_subtree_find_first(const char *context_name);
 
-netsnmp_session *get_session_for_oid	   (oid *, size_t, 
+netsnmp_session *get_session_for_oid	   (const oid *, size_t, 
 					    const char *context_name);
 
 subtree_context_cache *get_top_context_cache(void);
@@ -86,25 +89,32 @@
 #define MIB_UNREGISTRATION_FAILED	-2
 #define DEFAULT_MIB_PRIORITY		127
 
-int             register_mib		   (const char *, struct variable *,
-					    size_t, size_t, oid *, size_t);
+int             register_mib		   (const char *,
+                                            const struct variable *,
+					    size_t, size_t, const oid *,
+					    size_t);
 
-int             register_mib_priority	   (const char *, struct variable *,
-					    size_t, size_t, oid *, size_t,
+int             register_mib_priority	   (const char *,
+                                            const struct variable *,
+					    size_t, size_t, const oid *, size_t,
 					    int);
 
-int             register_mib_range	   (const char *, struct variable *,
-					    size_t, size_t, oid *, size_t, 
-					    int, int, oid, netsnmp_session *);
+int             register_mib_range	   (const char *,
+                                            const struct variable *,
+					    size_t, size_t, const oid *,
+					    size_t, int, int, oid,
+					    netsnmp_session *);
 
-int		register_mib_context	   (const char *, struct variable *,
-					    size_t, size_t, oid *, size_t,
+int		register_mib_context	   (const char *,
+                                            const struct variable *,
+					    size_t, size_t, const oid *, size_t,
 					    int, int, oid, netsnmp_session *,
 					    const char *, int, int);
 
-int	netsnmp_register_mib_table_row	   (const char *, struct variable *,
-					    size_t, size_t, oid *, size_t, 
-					    int, int, netsnmp_session *,
+int	netsnmp_register_mib_table_row	   (const char *,
+                                            const struct variable *,
+					    size_t, size_t, oid *,
+					    size_t, int, int, netsnmp_session *,
 					    const char *, int, int);
 
 int		unregister_mib		   (oid *, size_t);
@@ -139,10 +149,12 @@
  *          (sizeof(theoid) *must* return the number of elements!) 
  */
 
-#define REGISTER_MIB(descr, var, vartype, theoid)                      \
-  if (register_mib(descr, (struct variable *) var, sizeof(struct vartype), \
-               sizeof(var)/sizeof(struct vartype),                     \
-               theoid, sizeof(theoid)/sizeof(oid)) != MIB_REGISTERED_OK ) \
+#define REGISTER_MIB(descr, var, vartype, theoid)                       \
+    if (register_mib(descr, (const struct variable *) var,              \
+                     sizeof(struct vartype),                            \
+                     sizeof(var)/sizeof(struct vartype),                \
+                     theoid, sizeof(theoid)/sizeof(oid)) !=             \
+        MIB_REGISTERED_OK)                                              \
 	DEBUGMSGTL(("register_mib", "%s registration failed\n", descr));
 
 
diff --git a/include/net-snmp/agent/baby_steps.h b/include/net-snmp/agent/baby_steps.h
index 6a1a8b9..d256550 100644
--- a/include/net-snmp/agent/baby_steps.h
+++ b/include/net-snmp/agent/baby_steps.h
@@ -16,6 +16,7 @@
 #define BABY_STEP_NONE                  0
 #define BABY_STEP_PRE_REQUEST           (0x1 <<  1)
 #define BABY_STEP_OBJECT_LOOKUP         (0x1 <<  2)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define BABY_STEP_CHECK_VALUE           (0x1 <<  3)
 #define BABY_STEP_ROW_CREATE            (0x1 <<  4)
 #define BABY_STEP_UNDO_SETUP            (0x1 <<  5)
@@ -26,14 +27,17 @@
 #define BABY_STEP_UNDO_COMMIT           (0x1 << 10)
 #define BABY_STEP_IRREVERSIBLE_COMMIT   (0x1 << 11)
 #define BABY_STEP_UNDO_CLEANUP          (0x1 << 12)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 #define BABY_STEP_POST_REQUEST          (0x1 << 13)
 
 #define BABY_STEP_ALL                   (0xffffffff)
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define BABY_STEP_CHECK_OBJECT          BABY_STEP_CHECK_VALUE
 #define BABY_STEP_SET_VALUES            BABY_STEP_SET_VALUE
 #define BABY_STEP_UNDO_SETS             BABY_STEP_UNDO_SET
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /** @name baby_steps
  *
@@ -43,6 +47,8 @@
  *  @{ */
 
     typedef struct netsnmp_baby_steps_modes_s {
+       /** Number of handlers whose myvoid pointer points at this object. */
+       int         refcnt;
        u_int       registered;
        u_int       completed;
     } netsnmp_baby_steps_modes;
@@ -74,6 +80,7 @@
    Netsnmp_Node_Handler *pre_request;
    Netsnmp_Node_Handler *object_lookup;
    Netsnmp_Node_Handler *get_values;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
    Netsnmp_Node_Handler *object_syntax_checks;
    Netsnmp_Node_Handler *row_creation;
    Netsnmp_Node_Handler *undo_setup;
@@ -84,6 +91,7 @@
    Netsnmp_Node_Handler *undo_cleanup;
    Netsnmp_Node_Handler *undo_commit;
    Netsnmp_Node_Handler *irreversible_commit;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
    Netsnmp_Node_Handler *post_request;
 
    void                 *my_access_void;
diff --git a/include/net-snmp/agent/cache_handler.h b/include/net-snmp/agent/cache_handler.h
index 7f4e74e..1e4751c 100644
--- a/include/net-snmp/agent/cache_handler.h
+++ b/include/net-snmp/agent/cache_handler.h
@@ -32,6 +32,8 @@
     typedef void (NetsnmpCacheFree)(netsnmp_cache *, void*);
 
     struct netsnmp_cache_s {
+	/** Number of handlers whose myvoid member points at this structure. */
+	int      refcnt;
         /*
 	 * For operation of the data caches
 	 */
@@ -40,7 +42,7 @@
         int      valid;
         char     expired;
         int      timeout;	/* Length of time the cache is valid (in s) */
-        marker_t timestamp;	/* When the cache was last loaded */
+        marker_t timestampM;	/* When the cache was last loaded */
         u_long   timer_id;      /* periodic timer id */
 
         NetsnmpCacheLoad *load_cache;
@@ -100,6 +102,7 @@
 
     netsnmp_mib_handler *
     netsnmp_cache_handler_get(netsnmp_cache* cache);
+    void netsnmp_cache_handler_owns_cache(netsnmp_mib_handler *handler);
 
     netsnmp_cache * netsnmp_cache_find_by_oid(const oid * rootoid,
                                               int rootoid_len);
@@ -116,6 +119,7 @@
 #define NETSNMP_CACHE_DONT_AUTO_RELEASE                     0x0008
 #define NETSNMP_CACHE_PRELOAD                               0x0010
 #define NETSNMP_CACHE_AUTO_RELOAD                           0x0020
+#define NETSNMP_CACHE_RESET_TIMER_ON_USE                    0x0040
 
 #define NETSNMP_CACHE_HINT_HANDLER_ARGS                     0x1000
 
diff --git a/include/net-snmp/agent/ds_agent.h b/include/net-snmp/agent/ds_agent.h
index 3ae759d..f6f639d 100644
--- a/include/net-snmp/agent/ds_agent.h
+++ b/include/net-snmp/agent/ds_agent.h
@@ -27,6 +27,7 @@
 #define NETSNMP_DS_AGENT_DONT_LOG_TCPWRAPPERS_CONNECTS 12   /* 1 = disable logging */
 #define NETSNMP_DS_APP_DONT_LOG         NETSNMP_DS_AGENT_DONT_RETAIN_NOTIFICATIONS /* compat */
 #define NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES    13   /* 1 = don't store NFS entries in hrStorageTable */
+#define NETSNMP_DS_AGENT_REALSTORAGEUNITS 14    /* 1 = use real allocation units in hrStorageTable, 0 = recalculate it to fit 32bits */
 
    /* Repeated from "apps/snmptrapd_ds.h" */
 #define NETSNMP_DS_APP_NUMERIC_IP       16
diff --git a/include/net-snmp/agent/hardware/cpu.h b/include/net-snmp/agent/hardware/cpu.h
index 6268897..f6e43e5 100644
--- a/include/net-snmp/agent/hardware/cpu.h
+++ b/include/net-snmp/agent/hardware/cpu.h
@@ -33,6 +33,9 @@
      unsigned long long kern_ticks;
      unsigned long long intrpt_ticks;
      unsigned long long sirq_ticks;
+     unsigned long long steal_ticks;
+     unsigned long long guest_ticks;
+     unsigned long long guestnice_ticks;
 
      unsigned long long total_ticks;
      unsigned long long sys2_ticks;  /* For non-atomic system counts */
diff --git a/include/net-snmp/agent/hardware/fsys.h b/include/net-snmp/agent/hardware/fsys.h
index 5a1e5ef..91e8e17 100644
--- a/include/net-snmp/agent/hardware/fsys.h
+++ b/include/net-snmp/agent/hardware/fsys.h
@@ -60,13 +60,19 @@
      char device[SNMP_MAXPATH+1];
      int  type;
 
-     long size;
-     long used;
-     long avail;
-     long units;
+     unsigned long long size;
+     unsigned long long used;
+     unsigned long long avail;
+     unsigned long long units;
 
-     long inums_total;
-     long inums_avail;
+     /* artificially computed values, both 'size_32' and 'units_32' fit INT32 */
+     unsigned long size_32;
+     unsigned long used_32;
+     unsigned long avail_32;
+     unsigned long units_32;
+
+     unsigned long long inums_total;
+     unsigned long long inums_avail;
 
      int  minspace;
      int  minpercent;
@@ -99,3 +105,5 @@
 unsigned long long netsnmp_fsys_size_ull( netsnmp_fsys_info* );
 unsigned long long netsnmp_fsys_used_ull( netsnmp_fsys_info* );
 unsigned long long netsnmp_fsys_avail_ull(netsnmp_fsys_info* );
+
+void netsnmp_fsys_calculate32( netsnmp_fsys_info *f);
diff --git a/include/net-snmp/agent/instance.h b/include/net-snmp/agent/instance.h
index efc8dd3..82f2edd 100644
--- a/include/net-snmp/agent/instance.h
+++ b/include/net-snmp/agent/instance.h
@@ -136,13 +136,6 @@
                                    const char *contextName);
 
 Netsnmp_Node_Handler netsnmp_instance_helper_handler;
-#ifndef NETSNMP_NO_DEPRECATED_FUNCTIONS
-Netsnmp_Node_Handler netsnmp_instance_ulong_handler;
-Netsnmp_Node_Handler netsnmp_instance_long_handler;
-Netsnmp_Node_Handler netsnmp_instance_int_handler;
-Netsnmp_Node_Handler netsnmp_instance_uint_handler;
-Netsnmp_Node_Handler netsnmp_instance_counter32_handler;
-#endif
 Netsnmp_Node_Handler netsnmp_instance_num_file_handler;
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/agent/old_api.h b/include/net-snmp/agent/old_api.h
index 06ec449..2bd3cd1 100644
--- a/include/net-snmp/agent/old_api.h
+++ b/include/net-snmp/agent/old_api.h
@@ -25,10 +25,10 @@
 } netsnmp_old_api_cache;
 
 int             netsnmp_register_old_api(const char *moduleName,
-                                         struct variable *var,
+                                         const struct variable *var,
                                          size_t varsize,
                                          size_t numvars,
-                                         oid * mibloc,
+                                         const oid * mibloc,
                                          size_t mibloclen,
                                          int priority,
                                          int range_subid,
diff --git a/include/net-snmp/agent/snmp_agent.h b/include/net-snmp/agent/snmp_agent.h
index 7995a5b..aad8837 100644
--- a/include/net-snmp/agent/snmp_agent.h
+++ b/include/net-snmp/agent/snmp_agent.h
@@ -118,9 +118,15 @@
 #define MODE_GETNEXT          SNMP_MSG_GETNEXT
 #define MODE_GETBULK          SNMP_MSG_GETBULK
 #define MODE_GET_STASH        SNMP_MSG_INTERNAL_GET_STASH
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define MODE_IS_GET(x)        ((x >= 128) && (x != -1)  && (x != SNMP_MSG_SET))
+#else /* NETSNMP_NO_WRITE_SUPPORT */
+#define MODE_IS_GET(x)        ((x >= 128) && (x != -1))
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
     /* #define MODE_IS_GET(x)        ((x == SNMP_MSG_GET) || (x == SNMP_MSG_GETNEXT) || (x == SNMP_MSG_GETBULK) || (x == SNMP_MSG_INTERNAL_GET_STASH)) */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define MODE_SET_BEGIN        SNMP_MSG_INTERNAL_SET_BEGIN
 #define MODE_SET_RESERVE1     SNMP_MSG_INTERNAL_SET_RESERVE1
 #define MODE_SET_RESERVE2     SNMP_MSG_INTERNAL_SET_RESERVE2
@@ -130,11 +136,13 @@
 #define MODE_SET_UNDO         SNMP_MSG_INTERNAL_SET_UNDO
 #define MODE_IS_SET(x)         ((x < 128) || (x == -1) || (x == SNMP_MSG_SET))
     /* #define MODE_IS_SET(x)         (!MODE_IS_GET(x)) */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 #define MODE_BSTEP_PRE_REQUEST   SNMP_MSG_INTERNAL_PRE_REQUEST
 #define MODE_BSTEP_POST_REQUEST  SNMP_MSG_INTERNAL_POST_REQUEST
 
 #define MODE_BSTEP_OBJECT_LOOKUP       SNMP_MSG_INTERNAL_OBJECT_LOOKUP
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define MODE_BSTEP_CHECK_VALUE         SNMP_MSG_INTERNAL_CHECK_VALUE
 #define MODE_BSTEP_ROW_CREATE          SNMP_MSG_INTERNAL_ROW_CREATE
 #define MODE_BSTEP_UNDO_SETUP          SNMP_MSG_INTERNAL_UNDO_SETUP
@@ -145,7 +153,7 @@
 #define MODE_BSTEP_UNDO_COMMIT         SNMP_MSG_INTERNAL_UNDO_COMMIT
 #define MODE_BSTEP_IRREVERSIBLE_COMMIT SNMP_MSG_INTERNAL_IRREVERSIBLE_COMMIT
 #define MODE_BSTEP_UNDO_CLEANUP        SNMP_MSG_INTERNAL_UNDO_CLEANUP
-
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /** @typedef struct netsnmp_agent_request_info_s netsnmp_agent_request_info
  * Typedefs the netsnmp_agent_request_info_s struct into
diff --git a/include/net-snmp/agent/snmp_vars.h b/include/net-snmp/agent/snmp_vars.h
index d280a9a..77dbd70 100644
--- a/include/net-snmp/agent/snmp_vars.h
+++ b/include/net-snmp/agent/snmp_vars.h
@@ -45,6 +45,23 @@
 
     struct variable;
 
+    /**
+     * Duplicates a variable.
+     *
+     * @return Pointer to the duplicate variable upon success; NULL upon
+     *   failure.
+     *
+     * @see struct variable
+     * @see struct variable1
+     * @see struct variable2
+     * @see struct variable3
+     * @see struct variable4
+     * @see struct variable7
+     * @see struct variable8
+     * @see struct variable13
+     */
+    struct variable *netsnmp_duplicate_variable(const struct variable *var);
+
     /*
      * Function pointer called by the master agent for writes. 
      */
diff --git a/include/net-snmp/agent/table.h b/include/net-snmp/agent/table.h
index 82495ec..79e588c 100644
--- a/include/net-snmp/agent/table.h
+++ b/include/net-snmp/agent/table.h
@@ -121,6 +121,8 @@
     netsnmp_mib_handler
         *netsnmp_get_table_handler(netsnmp_table_registration_info
                                    *tabreq);
+    void  netsnmp_handler_owns_table_info(netsnmp_mib_handler *handler);
+    void  netsnmp_registration_owns_table_info(netsnmp_handler_registration *reg);
     int   netsnmp_register_table(  netsnmp_handler_registration    *reginfo,
                                    netsnmp_table_registration_info *tabreq);
     int   netsnmp_unregister_table(netsnmp_handler_registration    *reginfo);
@@ -150,6 +152,8 @@
     netsnmp_table_registration_info
         *netsnmp_find_table_registration_info(netsnmp_handler_registration
                                               *reginfo);
+    netsnmp_table_registration_info *
+        netsnmp_table_registration_info_clone(netsnmp_table_registration_info *tri);
     void netsnmp_table_registration_info_free(netsnmp_table_registration_info *);
 
     netsnmp_index * netsnmp_table_index_find_next_row(netsnmp_container *c,
diff --git a/include/net-snmp/agent/table_dataset.h b/include/net-snmp/agent/table_dataset.h
index 9b8a9a3..66e3b3c 100644
--- a/include/net-snmp/agent/table_dataset.h
+++ b/include/net-snmp/agent/table_dataset.h
@@ -150,6 +150,8 @@
 
     void netsnmp_register_auto_data_table(netsnmp_table_data_set *table_set,
                                           char *registration_name);
+    void netsnmp_unregister_auto_data_table(netsnmp_table_data_set *table_set,
+					    char *registration_name);
     void netsnmp_config_parse_table_set(const char *token, char *line);
     void netsnmp_config_parse_add_row(  const char *token, char *line);
 
diff --git a/include/net-snmp/agent/table_iterator.h b/include/net-snmp/agent/table_iterator.h
index 8cdb1e7..c71dd4e 100644
--- a/include/net-snmp/agent/table_iterator.h
+++ b/include/net-snmp/agent/table_iterator.h
@@ -51,6 +51,9 @@
        The netsnmp_iterator_info typedef can be used instead of directly calling this struct if you would prefer.
      */
     typedef struct netsnmp_iterator_info_s {
+       /** Number of handlers that own this data structure. */
+       int refcnt;
+
        /** Responsible for: returning the first set of "index" data, a
            loop-context pointer, and optionally a data context
            pointer */
@@ -94,6 +97,7 @@
         void           *myvoid;
         int             flags;
 #define NETSNMP_ITERATOR_FLAG_SORTED	0x01
+#define NETSNMP_HANDLER_OWNS_IINFO	0x02
 
        /** A pointer to the netsnmp_table_registration_info object
            this iterator is registered along with. */
@@ -116,11 +120,11 @@
  * Iterator API: MIB maintenance
  * ============================ */
 
+    void   netsnmp_handler_owns_iterator_info(netsnmp_mib_handler *h);
     netsnmp_mib_handler
           *netsnmp_get_table_iterator_handler(netsnmp_iterator_info *iinfo);
-    int    netsnmp_register_table_iterator(   netsnmp_handler_registration
-                                                                    *reginfo,
-                                              netsnmp_iterator_info *iinfo);
+    int netsnmp_register_table_iterator(netsnmp_handler_registration *reginfo,
+                                        netsnmp_iterator_info *iinfo);
     void  netsnmp_iterator_delete_table(netsnmp_iterator_info *iinfo);
 
     void *netsnmp_extract_iterator_context(netsnmp_request_info *);
@@ -128,6 +132,10 @@
 
     Netsnmp_Node_Handler netsnmp_table_iterator_helper_handler;
 
+#define netsnmp_register_table_iterator2(reginfo, iinfo)        \
+    (((iinfo)->flags |= NETSNMP_HANDLER_OWNS_IINFO),           \
+        netsnmp_register_table_iterator((reginfo), (iinfo)))
+
 
 /* ============================
  * Iterator API: Row operations
diff --git a/include/net-snmp/agent/watcher.h b/include/net-snmp/agent/watcher.h
index 3c6d605..67104ee 100644
--- a/include/net-snmp/agent/watcher.h
+++ b/include/net-snmp/agent/watcher.h
@@ -64,8 +64,12 @@
 
 int netsnmp_register_watched_instance( netsnmp_handler_registration *reginfo,
                                        netsnmp_watcher_info         *winfo);
+int netsnmp_register_watched_instance2(netsnmp_handler_registration *reginfo,
+                                       netsnmp_watcher_info         *winfo);
 int netsnmp_register_watched_scalar(   netsnmp_handler_registration *reginfo,
                                        netsnmp_watcher_info         *winfo);
+int netsnmp_register_watched_scalar2(  netsnmp_handler_registration *reginfo,
+                                       netsnmp_watcher_info         *winfo);
 int netsnmp_register_watched_timestamp(netsnmp_handler_registration *reginfo,
                                        marker_t timestamp);
 int netsnmp_watched_timestamp_register(netsnmp_mib_handler *whandler,
@@ -124,6 +128,11 @@
 netsnmp_watcher_info *
 netsnmp_create_watcher_info6(void *, size_t, u_char, int, size_t, size_t*);
 
+netsnmp_watcher_info *
+netsnmp_clone_watcher_info(netsnmp_watcher_info *winfo);
+void
+netsnmp_owns_watcher_info(netsnmp_mib_handler *handler);
+
 Netsnmp_Node_Handler  netsnmp_watcher_helper_handler;
 
 netsnmp_mib_handler  *netsnmp_get_watched_timestamp_handler(void);
diff --git a/include/net-snmp/data_access/arp.h b/include/net-snmp/data_access/arp.h
index 11e832c..ba4bb21 100644
--- a/include/net-snmp/data_access/arp.h
+++ b/include/net-snmp/data_access/arp.h
@@ -73,6 +73,7 @@
 
    int       flags; /* for net-snmp use */
 
+   unsigned  generation;
    oid       if_index;
 
    u_char    arp_physaddress[NETSNMP_ACCESS_ARP_PHYSADDR_BUF_SIZE];
@@ -86,31 +87,39 @@
    u_long    arp_last_updated;   /* timeticks of last update */
 } netsnmp_arp_entry;
 
+#define NETSNMP_ACCESS_ARP_ENTRY_FLAG_DELETE      0x00000001
 
 /**---------------------------------------------------------------------*/
 /*
  * ACCESS function prototypes
  */
-/*
- * ifcontainer init
- */
-netsnmp_container * netsnmp_access_arp_container_init(u_int init_flags);
-#define NETSNMP_ACCESS_ARP_INIT_NOFLAGS               0x0000
+struct netsnmp_arp_access_s;
+typedef struct netsnmp_arp_access_s netsnmp_arp_access;
 
-/*
- * ifcontainer load and free
- */
-netsnmp_container*
-netsnmp_access_arp_container_load(netsnmp_container* container,
-                                    u_int load_flags);
-#define NETSNMP_ACCESS_ARP_LOAD_NOFLAGS               0x0000
+typedef void (NetsnmpAccessArpUpdate)(netsnmp_arp_access *, netsnmp_arp_entry*);
+typedef void (NetsnmpAccessArpGC)    (netsnmp_arp_access *);
 
-void netsnmp_access_arp_container_free(netsnmp_container *container,
-                                         u_int free_flags);
-#define NETSNMP_ACCESS_ARP_FREE_NOFLAGS               0x0000
-#define NETSNMP_ACCESS_ARP_FREE_DONT_CLEAR            0x0001
-#define NETSNMP_ACCESS_ARP_FREE_KEEP_CONTAINER        0x0002
+struct netsnmp_arp_access_s {
+    void *magic;
+    void *arch_magic;
+    int synchronized;
+    unsigned generation;
+    NetsnmpAccessArpUpdate *update_hook;
+    NetsnmpAccessArpGC *gc_hook;
+    char *cache_expired;
+};
 
+netsnmp_arp_access *
+netsnmp_access_arp_create(u_int init_flags,
+                          NetsnmpAccessArpUpdate *update_hook,
+                          NetsnmpAccessArpGC *gc_hook,
+                          int *cache_timeout, int *cache_flags,
+                          char *cache_expired);
+#define NETSNMP_ACCESS_ARP_CREATE_NOFLAGS             0x0000
+
+int netsnmp_access_arp_delete(netsnmp_arp_access *access);
+int netsnmp_access_arp_load(netsnmp_arp_access *access);
+int netsnmp_access_arp_unload(netsnmp_arp_access *access);
 
 /*
  * create/free a arp+entry
diff --git a/include/net-snmp/data_access/ip_scalars.h b/include/net-snmp/data_access/ip_scalars.h
index f7b2e31..03601a0 100644
--- a/include/net-snmp/data_access/ip_scalars.h
+++ b/include/net-snmp/data_access/ip_scalars.h
@@ -8,9 +8,14 @@
 int netsnmp_arch_ip_scalars_ipForwarding_get(u_long *value);
 int netsnmp_arch_ip_scalars_ipForwarding_set(u_long value);
 
+int netsnmp_arch_ip_scalars_ipDefaultTTL_get(u_long *value);
+int netsnmp_arch_ip_scalars_ipDefaultTTL_set(u_long value);
+
 int netsnmp_arch_ip_scalars_ipv6IpForwarding_get(u_long *value);
 int netsnmp_arch_ip_scalars_ipv6IpForwarding_set(u_long value);
 
+int netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_get(u_long *value);
+int netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_set(u_long value);
 
 #ifdef __cplusplus
 }
diff --git a/include/net-snmp/data_access/ipaddress.h b/include/net-snmp/data_access/ipaddress.h
index 75056f2..0bff108 100644
--- a/include/net-snmp/data_access/ipaddress.h
+++ b/include/net-snmp/data_access/ipaddress.h
@@ -144,6 +144,8 @@
                                   int addr_len, int pfx_len);
 
 int netsnmp_ipaddress_ipv4_prefix_len(in_addr_t mask);
+in_addr_t netsnmp_ipaddress_ipv4_mask(int len);
+int netsnmp_ipaddress_ipv6_prefix_len(struct in6_addr mask);
 
 int netsnmp_ipaddress_flags_copy(u_long *ipAddressPrefixAdvPreferredLifetime,
                                  u_long *ipAddressPrefixAdvValidLifetime,
diff --git a/include/net-snmp/library/callback.h b/include/net-snmp/library/callback.h
index c25ad4b..56cdbae 100644
--- a/include/net-snmp/library/callback.h
+++ b/include/net-snmp/library/callback.h
@@ -54,6 +54,7 @@
     NETSNMP_IMPORT
     void            init_callbacks(void);
 
+    NETSNMP_IMPORT
     int             netsnmp_register_callback(int major, int minor,
                                               SNMPCallback * new_callback,
                                               void *arg, int priority);
diff --git a/include/net-snmp/library/cmu_compat.h b/include/net-snmp/library/cmu_compat.h
deleted file mode 100644
index 5475c6f..0000000
--- a/include/net-snmp/library/cmu_compat.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/* Portions of this file are subject to the following copyright(s).  See
- * the Net-SNMP's COPYING file for more details and other copyrights
- * that may apply:
- */
-/*
- * Portions of this file are copyrighted by:
- * Copyright © 2003 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms specified in the COPYING file
- * distributed with the Net-SNMP package.
- */
-
-/*
- *  CMU compatability definitions and structures.
- *
- *    (since the UCD package split from the CMU one
- *     about 8 years ago, that's probably enough time
- *     for people to convert any outstanding code!)
- */
-
-#ifndef NET_SNMP_CMU_COMPAT_H
-#define NET_SNMP_CMU_COMPAT_H
-
-#ifdef __cplusplus
-extern          "C" {
-#endif
-
-    /*
-     * ============================
-     * *
-     * * Enumerations and definitions
-     * *
-     * * ============================ 
-     */
-#include <net-snmp/definitions.h>
-    /*
-     * From parse.h 
-     */
-#define ACCESS_READONLY		MIB_ACCESS_READONLY
-#define ACCESS_READWRITE	MIB_ACCESS_READWRITE
-#define ACCESS_WRITEONLY	MIB_ACCESS_WRITEONLY
-#define ACCESS_NOACCESS		MIB_ACCESS_NOACCESS
-#define ACCESS_NOTIFY		MIB_ACCESS_NOTIFY
-#define ACCESS_CREATE		MIB_ACCESS_CREATE
-#define STATUS_MANDATORY	MIB_STATUS_MANDATORY
-#define STATUS_OPTIONAL		MIB_STATUS_OPTIONAL
-#define STATUS_OBSOLETE		MIB_STATUS_OBSOLETE
-#define STATUS_DEPRECATED	MIB_STATUS_DEPRECATED
-#define STATUS_CURRENT		MIB_STATUS_CURRENT
-    /*
-     * From smnp_impl.h 
-     */
-#define INTEGER	    ASN_INTEGER
-#define STRING	    ASN_OCTET_STR
-#define OBJID	    ASN_OBJECT_ID
-#define NULLOBJ	    ASN_NULL
-#define BITSTRING   ASN_BIT_STR /* HISTORIC - don't use */
-#define IPADDRESS   ASN_IPADDRESS
-#define COUNTER	    ASN_COUNTER
-#define GAUGE	    ASN_GAUGE
-#define UNSIGNED    ASN_UNSIGNED
-#define TIMETICKS   ASN_TIMETICKS
-#define ASNT_OPAQUE ASN_OPAQUE
-#define NSAP	    ASN_NSAP
-#define COUNTER64   ASN_COUNTER64
-#define UINTEGER    ASN_UINTEGER
-    /*
-     * From snmp.h 
-     */
-#define GET_REQ_MSG	    SNMP_MSG_GET
-#define GETNEXT_REQ_MSG	    SNMP_MSG_GETNEXT
-#define GET_RSP_MSG	    SNMP_MSG_RESPONSE
-#define SET_REQ_MSG	    SNMP_MSG_SET
-#define TRP_REQ_MSG	    SNMP_MSG_TRAP
-#define BULK_REQ_MSG	    SNMP_MSG_GETBULK
-#define INFORM_REQ_MSG	    SNMP_MSG_INFORM
-#define TRP2_REQ_MSG	    SNMP_MSG_TRAP2
-#define REPORT_RSP_MSG	    SNMP_MSG_REPORT
-    /*
-     * since CMU V1.5 
-     */
-#define SNMP_PDU_GET	    SNMP_MSG_GET
-#define SNMP_PDU_GETNEXT    SNMP_MSG_GETNEXT
-#define SNMP_PDU_RESPONSE   SNMP_MSG_RESPONSE
-#define SNMP_PDU_SET        SNMP_MSG_SET
-#define SNMP_PDU_GETBULK    SNMP_MSG_GETBULK
-#define SNMP_PDU_INFORM     SNMP_MSG_INFORM
-#define SNMP_PDU_V2TRAP     SNMP_MSG_TRAP2
-#define SNMP_PDU_REPORT     SNMP_MSG_REPORT
-#define SNMP_TRAP_AUTHENTICATIONFAILURE SNMP_TRAP_AUTHFAIL
-#define SMI_INTEGER     ASN_INTEGER
-#define SMI_STRING      ASN_OCTET_STR
-#define SMI_OBJID       ASN_OBJECT_ID
-#define SMI_NULLOBJ     ASN_NULL
-#define SMI_IPADDRESS   ASN_IPADDRESS
-#define SMI_COUNTER32	ASN_COUNTER
-#define SMI_GAUGE32	ASN_GAUGE
-#define SMI_UNSIGNED32  SMI_GAUGE32
-#define SMI_TIMETICKS   ASN_TIMETICKS
-#define SMI_OPAQUE      ASN_OPAQUE
-#define SMI_COUNTER64   ASN_COUNTER64
-    /*
-     * ============================
-     * *
-     * *     Function declarations
-     * *     and global variables
-     * *
-     * * ============================ 
-     */
-extern int      snmp_dump_packet;       /* from snmp_api.h */
-extern int      quick_print;    /* from snmp_api.h */
-
-#include <net-snmp/types.h>     /* for snmp_pdu & snmp_session */
-
-int             mib_TxtToOid(char *, oid **, size_t *); /* from snmp.h */
-int             mib_OidToTxt(oid *, size_t, char *, size_t);    /* from snmp.h */
-u_char         *cmu_snmp_parse(netsnmp_session * session, netsnmp_pdu *pdu, u_char * data, size_t length);      /* from snmp.h */
-
-
-
-
-        /*
-         * ============================
-         * *
-         * * MIB-II data structures
-         * *    (from mib.h) 
-         * *
-         * * ============================ 
-         */
-
-
-struct mib_system {
-    char            sysDescr[32];       /* textual description */
-    u_char          sysObjectID[16];    /* OBJECT IDENTIFIER of system */
-    u_char          ObjIDLen;   /* length of sysObjectID */
-    u_int           sysUpTime;  /* Uptime in 100/s of a second */
-};
-
-struct mib_interface {
-    int             ifNumber;   /* number of interfaces */
-};
-
-struct mib_ifEntry {
-    int             ifIndex;    /* index of this interface  */
-    char            ifDescr[32];        /* english description of interface */
-    int             ifType;     /* network type of device   */
-    int             ifMtu;      /* size of largest packet in bytes  */
-    u_int           ifSpeed;    /* bandwidth in bits/sec    */
-    u_char          ifPhysAddress[11];  /* interface's address */
-    u_char          PhysAddrLen;        /* length of physAddr */
-    int             ifAdminStatus;      /* desired state of interface */
-    int             ifOperStatus;       /* current operational status */
-    u_int           ifLastChange;       /* value of sysUpTime when current state entered */
-    u_int           ifInOctets; /* number of octets received on interface */
-    u_int           ifInUcastPkts;      /* number of unicast packets delivered */
-    u_int           ifInNUcastPkts;     /* number of broadcasts or multicasts */
-    u_int           ifInDiscards;       /* number of packets discarded with no error */
-    u_int           ifInErrors; /* number of packets containing errors */
-    u_int           ifInUnknownProtos;  /* number of packets with unknown protocol */
-    u_int           ifOutOctets;        /* number of octets transmitted */
-    u_int           ifOutUcastPkts;     /* number of unicast packets sent */
-    u_int           ifOutNUcastPkts;    /* number of broadcast or multicast pkts */
-    u_int           ifOutDiscards;      /* number of packets discarded with no error */
-    u_int           ifOutErrors;        /* number of pkts discarded with an error */
-    u_int           ifOutQLen;  /* number of packets in output queue */
-};
-
-struct mib_atEntry {
-    int             atIfIndex;  /* interface on which this entry maps */
-    u_char          atPhysAddress[11];  /* physical address of destination */
-    u_char          PhysAddressLen;     /* length of atPhysAddress */
-    u_int           atNetAddress;       /* IP address of physical address */
-};
-
-struct mib_ip {
-    int             ipForwarding;       /* 1 if gateway, 2 if host */
-    int             ipDefaultTTL;       /* default TTL for pkts originating here */
-    u_int           ipInReceives;       /* no. of IP packets received from interfaces */
-    u_int           ipInHdrErrors;      /* number of pkts discarded due to header errors */
-    u_int           ipInAddrErrors;     /* no. of pkts discarded due to bad address */
-    u_int           ipForwDatagrams;    /* number pf pkts forwarded through this entity */
-    u_int           ipInUnknownProtos;  /* no. of local-addressed pkts w/unknown proto */
-    u_int           ipInDiscards;       /* number of error-free packets discarded */
-    u_int           ipInDelivers;       /* number of datagrams delivered to upper level */
-    u_int           ipOutRequests;      /* number of IP datagrams originating locally */
-    u_int           ipOutDiscards;      /* number of error-free output IP pkts discarded */
-    u_int           ipOutNoRoutes;      /* number of IP pkts discarded due to no route */
-    int             ipReasmTimeout;     /* seconds fragment is held awaiting reassembly */
-    u_int           ipReasmReqds;       /* no. of fragments needing reassembly (here) */
-    u_int           ipReasmOKs; /* number of fragments reassembled */
-    u_int           ipReasmFails;       /* number of failures in IP reassembly */
-    u_int           ipFragOKs;  /* number of datagrams fragmented here */
-    u_int           ipFragFails;        /* no. pkts unable to be fragmented here */
-    u_int           ipFragCreates;      /* number of IP fragments created here */
-};
-
-struct mib_ipAddrEntry {
-    u_int           ipAdEntAddr;        /* IP address of this entry */
-    int             ipAdEntIfIndex;     /* IF for this entry */
-    u_int           ipAdEntNetMask;     /* subnet mask of this entry */
-    int             ipAdEntBcastAddr;   /* read the MIB for this one */
-    int 	    ipAdEntReasmMaxSize;
-		/* max size for dg reassembly   {ipAddrEntry 5} */
-};
-
-struct mib_ipRouteEntry {
-    u_int           ipRouteDest;        /* destination IP addr for this route */
-    int             ipRouteIfIndex;     /* index of local IF for this route */
-    int             ipRouteMetric1;     /* Primary routing metric */
-    int             ipRouteMetric2;     /* Alternate routing metric */
-    int             ipRouteMetric3;     /* Alternate routing metric */
-    int             ipRouteMetric4;     /* Alternate routing metric */
-    u_int           ipRouteNextHop;     /* IP addr of next hop */
-    int             ipRouteType;        /* Type of this route */
-    int             ipRouteProto;       /* How this route was learned */
-    int             ipRouteAge; /* No. of seconds since updating this route */
-};
-
-struct mib_icmp {
-    u_int           icmpInMsgs; /* Total of ICMP msgs received */
-    u_int           icmpInErrors;       /* Total of ICMP msgs received with errors */
-    u_int           icmpInDestUnreachs;
-    u_int           icmpInTimeExcds;
-    u_int           icmpInParmProbs;
-    u_int           icmpInSrcQuenchs;
-    u_int           icmpInRedirects;
-    u_int           icmpInEchos;
-    u_int           icmpInEchoReps;
-    u_int           icmpInTimestamps;
-    u_int           icmpInTimestampReps;
-    u_int           icmpInAddrMasks;
-    u_int           icmpInAddrMaskReps;
-    u_int           icmpOutMsgs;
-    u_int           icmpOutErrors;
-    u_int           icmpOutDestUnreachs;
-    u_int           icmpOutTimeExcds;
-    u_int           icmpOutParmProbs;
-    u_int           icmpOutSrcQuenchs;
-    u_int           icmpOutRedirects;
-    u_int           icmpOutEchos;
-    u_int           icmpOutEchoReps;
-    u_int           icmpOutTimestamps;
-    u_int           icmpOutTimestampReps;
-    u_int           icmpOutAddrMasks;
-    u_int           icmpOutAddrMaskReps;
-};
-
-struct mib_tcp {
-    int             tcpRtoAlgorithm;    /* retransmission timeout algorithm */
-    int             tcpRtoMin;  /* minimum retransmission timeout (mS) */
-    int             tcpRtoMax;  /* maximum retransmission timeout (mS) */
-    int             tcpMaxConn; /* maximum tcp connections possible */
-    u_int           tcpActiveOpens;     /* number of SYN-SENT -> CLOSED transitions */
-    u_int           tcpPassiveOpens;    /* number of SYN-RCVD -> LISTEN transitions */
-    u_int           tcpAttemptFails;    /*(SYN-SENT,SYN-RCVD)->CLOSED or SYN-RCVD->LISTEN */
-    u_int           tcpEstabResets;     /* (ESTABLISHED,CLOSE-WAIT) -> CLOSED */
-    u_int           tcpCurrEstab;       /* number in ESTABLISHED or CLOSE-WAIT state */
-    u_int           tcpInSegs;  /* number of segments received */
-    u_int           tcpOutSegs; /* number of segments sent */
-    u_int           tcpRetransSegs;     /* number of retransmitted segments */
-};
-
-struct mib_tcpConnEntry {
-    int             tcpConnState;       /* State of this connection */
-    u_int           tcpConnLocalAddress;        /* local IP address for this connection */
-    int             tcpConnLocalPort;   /* local port for this connection */
-    u_int           tcpConnRemAddress;  /* remote IP address for this connection */
-    int             tcpConnRemPort;     /* remote port for this connection */
-};
-
-struct mib_udp {
-    u_int           udpInDatagrams;     /* No. of UDP datagrams delivered to users */
-    u_int           udpNoPorts; /* No. of UDP datagrams to port with no listener */
-    u_int           udpInErrors;        /* No. of UDP datagrams unable to be delivered */
-    u_int           udpOutDatagrams;    /* No. of UDP datagrams sent from this entity */
-};
-
-struct mib_egp {
-    u_int           egpInMsgs;  /* No. of EGP msgs received without error */
-    u_int           egpInErrors;        /* No. of EGP msgs received with error */
-    u_int           egpOutMsgs; /* No. of EGP msgs sent */
-    u_int           egpOutErrors;       /* No. of (outgoing) EGP msgs dropped due to error */
-};
-
-struct mib_egpNeighEntry {
-    int             egpNeighState;      /* local EGP state with this entry's neighbor */
-    u_int           egpNeighAddr;       /* IP address of this entry's neighbor */
-};
-
-#ifdef __cplusplus
-}
-#endif
-#endif                          /* NET_SNMP_CMU_COMPAT_H */
diff --git a/include/net-snmp/library/container.h b/include/net-snmp/library/container.h
index 30b82f1..963289e 100644
--- a/include/net-snmp/library/container.h
+++ b/include/net-snmp/library/container.h
@@ -368,20 +368,22 @@
      * inline functions, you most likely have optimizations turned off.
      * Either turn them back on, or define NETSNMP_NO_INLINE
      */
-#ifndef NETSNMP_USE_INLINE /* default is to inline */
     /*
      * insert k into all containers
      */
+    NETSNMP_IMPORT
     int CONTAINER_INSERT(netsnmp_container *x, const void *k);
 
     /*
      * remove k from all containers
      */
+    NETSNMP_IMPORT
     int CONTAINER_REMOVE(netsnmp_container *x, const void *k);
 
     /*
      * duplicate container
      */
+    NETSNMP_IMPORT
     netsnmp_container *CONTAINER_DUP(netsnmp_container *x, void *ctx,
                                      u_int flags);
 
@@ -390,6 +392,7 @@
      * *only* the first container, call the function f for each item.
      * After calling this function, all containers should be empty.
      */
+    NETSNMP_IMPORT
     void CONTAINER_CLEAR(netsnmp_container *x, netsnmp_container_obj_func *f,
                         void *c);
 
@@ -398,186 +401,18 @@
      * *only* the first container, call the free_item function for each item.
      * After calling this function, all containers should be empty.
      */
+    NETSNMP_IMPORT
     void CONTAINER_FREE_ALL(netsnmp_container *x, void *c);
 
     /*
      * free all containers
      */
+    NETSNMP_IMPORT
     int CONTAINER_FREE(netsnmp_container *x);
 
+    NETSNMP_IMPORT
     netsnmp_container *SUBCONTAINER_FIND(netsnmp_container *x,
                                          const char* name);
-#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_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 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
-     * container.c. If you change one, change them both.
-     */
-    NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
-    int CONTAINER_REMOVE(netsnmp_container *x, const void *k)
-    {
-        int rc2, rc = 0;
-        
-        /** start at last container */
-        while(x->next)
-            x = x->next;
-        while(x) {
-            rc2 = x->remove(x,k);
-            /** ignore remove errors if there is a filter in place */
-            if ((rc2) && (NULL == x->insert_filter)) {
-                snmp_log(LOG_ERR,"error on subcontainer '%s' remove (%d)\n",
-                         x->container_name ? x->container_name : "", rc2);
-                rc = rc2;
-            }
-            x = x->prev;
-            
-        }
-        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 */
-    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;
-        
-        /** start at last container */
-        while(x->next)
-            x = x->next;
-        while(x) {
-            netsnmp_container *tmp;
-            char *name;
-            tmp = x->prev;
-            name = x->container_name;
-            x->container_name = NULL;
-            rc2 = x->cfree(x);
-            if (rc2) {
-                snmp_log(LOG_ERR,"error on subcontainer '%s' cfree (%d)\n",
-                         name ? name : "", rc2);
-                rc = rc2;
-            }
-            SNMP_FREE(name);
-            x = tmp;
-        }
-        return rc;
-    }
-
-    /*------------------------------------------------------------------
-     * These functions should EXACTLY match the function version in
-     * container.c. If you change one, change them both.
-     */
-    /*
-     * 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.
-     */
-    NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
-    void CONTAINER_CLEAR(netsnmp_container *x, netsnmp_container_obj_func *f,
-                        void *c)
-    {
-        /** start at last container */
-        while(x->next)
-            x = x->next;
-        while(x->prev) {
-            x->clear(x, NULL, c);
-            x = x->prev;
-        }
-        x->clear(x, f, c);
-    }
-
-    /*
-     * clear all containers. When clearing the *first* container, and
-     * *only* the first container, call the free_item function for each item.
-     * After calling this function, all containers should be empty.
-     */
-    NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
-    void CONTAINER_FREE_ALL(netsnmp_container *x, void *c)
-    {
-        CONTAINER_CLEAR(x, x->free_item, c);
-    }
-
-    /*------------------------------------------------------------------
-     * These functions should EXACTLY match the function version in
-     * container.c. If you change one, change them both.
-     */
-    /*
-     * Find a sub-container with the given name
-     */
-    NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
-    netsnmp_container *SUBCONTAINER_FIND(netsnmp_container *x,
-                                         const char* name)
-    {
-        if ((NULL == x) || (NULL == name))
-            return NULL;
-
-        /** start at first container */
-        while(x->prev)
-            x = x->prev;
-        while(x) {
-            if ((NULL != x->container_name) &&
-                (0 == strcmp(name,x->container_name)))
-                break;
-            x = x->next;
-        }
-        return x;
-    }
-
-#endif
 
     /*
      * INTERNAL utility routines for container implementations
diff --git a/include/net-snmp/library/default_store.h b/include/net-snmp/library/default_store.h
index fcb87e0..3c3c519 100644
--- a/include/net-snmp/library/default_store.h
+++ b/include/net-snmp/library/default_store.h
@@ -38,7 +38,7 @@
      */
 /**
  * @def NETSNMP_DS_LIBRARY_ID
- * These definitions correspond with the "storid" argument to the API 
+ * These definitions correspond with the "storid" argument to the API.
  */
 #define NETSNMP_DS_LIBRARY_ID     0
 #define NETSNMP_DS_APPLICATION_ID 1
@@ -93,6 +93,8 @@
 #define NETSNMP_DS_LIB_NO_DISCOVERY        38 /* don't support RFC5343 contextEngineID discovery */
 #define NETSNMP_DS_LIB_TSM_USE_PREFIX      39 /* TSM's simple security name mapping */
 #define NETSNMP_DS_LIB_DONT_LOAD_HOST_FILES 40 /* don't read host.conf files */
+#define NETSNMP_DS_LIB_DNSSEC_WARN_ONLY     41 /* tread DNSSEC errors as warnings */
+#define NETSNMP_DS_LIB_MAX_BOOL_ID          48 /* match NETSNMP_DS_MAX_SUBIDS */
 
     /*
      * library integers 
@@ -113,6 +115,9 @@
 #define NETSNMP_DS_SSHDOMAIN_DIR_PERM      12
 #define NETSNMP_DS_SSHDOMAIN_SOCK_USER     12
 #define NETSNMP_DS_SSHDOMAIN_SOCK_GROUP    13
+#define NETSNMP_DS_LIB_TIMEOUT             14
+#define NETSNMP_DS_LIB_RETRIES             15
+#define NETSNMP_DS_LIB_MAX_INT_ID          48 /* match NETSNMP_DS_MAX_SUBIDS */
     
     /*
      * special meanings for the default SNMP version slot (NETSNMP_DS_LIB_SNMPVERSION) 
@@ -159,6 +164,12 @@
 #define NETSNMP_DS_LIB_HOSTNAME          27
 #define NETSNMP_DS_LIB_X509_CRL_FILE     28
 #define NETSNMP_DS_LIB_TLS_ALGORITMS     29
+#define NETSNMP_DS_LIB_TLS_LOCAL_CERT    30
+#define NETSNMP_DS_LIB_TLS_PEER_CERT     31
+#define NETSNMP_DS_LIB_SSH_USERNAME      32
+#define NETSNMP_DS_LIB_SSH_PUBKEY        33
+#define NETSNMP_DS_LIB_SSH_PRIVKEY       34
+#define NETSNMP_DS_LIB_MAX_STR_ID        48 /* match NETSNMP_DS_MAX_SUBIDS */
 
     /*
      * end storage definitions 
diff --git a/include/net-snmp/library/large_fd_set.h b/include/net-snmp/library/large_fd_set.h
index 5077780..af3fa02 100644
--- a/include/net-snmp/library/large_fd_set.h
+++ b/include/net-snmp/library/large_fd_set.h
@@ -139,7 +139,7 @@
  * @see See also select(2) for more information.
  */
 NETSNMP_IMPORT
-int    net_snmp_large_fd_set_select(int numfds, netsnmp_large_fd_set *readfds,
+int    netsnmp_large_fd_set_select(int numfds, netsnmp_large_fd_set *readfds,
 			    netsnmp_large_fd_set *writefds,
 			    netsnmp_large_fd_set *exceptfds,
 			    struct timeval *timeout);
diff --git a/include/net-snmp/library/libsnmp.h b/include/net-snmp/library/libsnmp.h
index eaf2bbf..6a07300 100644
--- a/include/net-snmp/library/libsnmp.h
+++ b/include/net-snmp/library/libsnmp.h
@@ -76,8 +76,6 @@
 
 #ifdef UCD_SNMP_LIBRARY
 
-#define snmp_parse cmu_snmp_parse
-
 #include <ucd-snmp/asn1.h>
 #include <ucd-snmp/snmp_api.h>
 #include <ucd-snmp/snmp_impl.h>
@@ -135,7 +133,9 @@
 #define SNMP_MSG_GET GET_REQ_MSG
 #define SNMP_MSG_GETNEXT GETNEXT_REQ_MSG
 #define SNMP_MSG_RESPONSE GET_RSP_MSG
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define SNMP_MSG_SET SET_REQ_MSG
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #define SNMP_MSG_TRAP TRP_REQ_MSG
 #define SNMP_MSG_GETBULK    (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x5)
 #define SNMP_MSG_INFORM     (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x6)
diff --git a/include/net-snmp/library/parse.h b/include/net-snmp/library/parse.h
index 8726cc7..ce46ab9 100644
--- a/include/net-snmp/library/parse.h
+++ b/include/net-snmp/library/parse.h
@@ -32,10 +32,19 @@
 SOFTWARE.
 ******************************************************************/
 
-#define MAXLABEL        64      /* maximum characters in a label */
+#define NETSNMP_MAXLABEL 64      /* maximum characters in a label */
 #define MAXTOKEN        128     /* maximum characters in a token */
 #define MAXQUOTESTR     4096    /* maximum characters in a quoted string */
 
+/*
+ * MAXLABEL appears to be unused in code, and conflicts with
+ * <arpa/nameser.h>. Only define it if requested. This will
+ * cause problems if local DNSSEC validation is also enabled.
+ */
+#ifdef UCD_COMPATIBLE
+#define MAXLABEL        NETSNMP_MAXLABEL
+#endif
+
     struct variable_list;
 
     /*
@@ -105,6 +114,7 @@
         char           *reference;    /* references (a quoted string) */
         int             reported;       /* 1=report started in print_subtree... */
         char           *defaultValue;
+       char	       *parseErrorString; /* Contains the error string if there are errors in parsing MIBs */
     };
 
     /*
diff --git a/include/net-snmp/library/snmp.h b/include/net-snmp/library/snmp.h
index 5daf166..f5978c6 100644
--- a/include/net-snmp/library/snmp.h
+++ b/include/net-snmp/library/snmp.h
@@ -118,7 +118,9 @@
 #define SNMP_MSG_GET        (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x0) /* a0=160 */
 #define SNMP_MSG_GETNEXT    (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x1) /* a1=161 */
 #define SNMP_MSG_RESPONSE   (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x2) /* a2=162 */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define SNMP_MSG_SET        (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x3) /* a3=163 */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * PDU types in SNMPv1 and SNMPsec 
@@ -137,6 +139,7 @@
      */
 #define SNMP_MSG_REPORT     (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x8) /* a8=168 */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     /*
      * internal modes that should never be used by the protocol for the
      * pdu type.
@@ -162,6 +165,7 @@
 #define SNMP_MSG_INTERNAL_UNDO_COMMIT           24
 #define SNMP_MSG_INTERNAL_IRREVERSIBLE_COMMIT   25
 #define SNMP_MSG_INTERNAL_UNDO_CLEANUP          26
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * modes > 128 for non sets.
@@ -175,9 +179,14 @@
     /*
      * test for member of Confirmed Class i.e., reportable 
      */
+#ifdef NETSNMP_NO_WRITE_SUPPORT
+#define SNMP_CMD_CONFIRMED(c) (c == SNMP_MSG_INFORM || c == SNMP_MSG_GETBULK ||\
+                               c == SNMP_MSG_GETNEXT || c == SNMP_MSG_GET )
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
 #define SNMP_CMD_CONFIRMED(c) (c == SNMP_MSG_INFORM || c == SNMP_MSG_GETBULK ||\
                                c == SNMP_MSG_GETNEXT || c == SNMP_MSG_GET || \
-                               c == SNMP_MSG_SET)
+                               c == SNMP_MSG_SET )
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * Exception values for SNMPv2p, SNMPv2c, SNMPv2u, SNMPv2*, and SNMPv3 
diff --git a/include/net-snmp/library/snmpTLSBaseDomain.h b/include/net-snmp/library/snmpTLSBaseDomain.h
index ec77a73..bc21cb6 100644
--- a/include/net-snmp/library/snmpTLSBaseDomain.h
+++ b/include/net-snmp/library/snmpTLSBaseDomain.h
@@ -42,13 +42,12 @@
        BIO                       *accepted_bio;
        char                      *securityName;
        char                      *addr_string;
-       struct sockaddr_in         addr;
+       netsnmp_indexed_addr_pair *addr;
        char                      *our_identity;
        char                      *their_identity;
        char                      *their_fingerprint;
        char                      *their_hostname;
        char                      *trust_cert;
-       netsnmp_indexed_addr_pair *remote_addr;
     } _netsnmpTLSBaseData;
 
 #define VRFY_PARENT_WAS_OK 1
diff --git a/include/net-snmp/library/snmpUDPIPv6Domain.h b/include/net-snmp/library/snmpUDPIPv6Domain.h
index 16fd819..83eba2c 100644
--- a/include/net-snmp/library/snmpUDPIPv6Domain.h
+++ b/include/net-snmp/library/snmpUDPIPv6Domain.h
@@ -22,8 +22,8 @@
 #define TRANSPORT_DOMAIN_UDP_IPV6	1,3,6,1,2,1,100,1,2
 NETSNMP_IMPORT oid      netsnmp_UDPIPv6Domain[];
 
-netsnmp_transport *snmp_udp6_transport(struct sockaddr_in6 *addr,
-                                       int local);
+netsnmp_transport *netsnmp_udp6_transport(struct sockaddr_in6 *addr,
+                                          int local);
 
 
 /*
diff --git a/include/net-snmp/library/snmp_alarm.h b/include/net-snmp/library/snmp_alarm.h
index 1167e2c..d1bcbfa 100644
--- a/include/net-snmp/library/snmp_alarm.h
+++ b/include/net-snmp/library/snmp_alarm.h
@@ -15,11 +15,14 @@
 #define SA_FIRED 0x10          /* Being processed in run_alarms */
 
     struct snmp_alarm {
+        /** Alarm interval. Zero if single-shot. */
         struct timeval  t;
         unsigned int    flags;
         unsigned int    clientreg;
-        struct timeval  t_last;
-        struct timeval  t_next;
+        /** Last time the alarm fired [monotonic clock]. */
+        struct timeval  t_lastM;
+        /** Next time the alarm will fire [monotonic clock]. */
+        struct timeval  t_nextM;
         void           *clientarg;
         SNMPAlarmCallback *thecallback;
         struct snmp_alarm *next;
diff --git a/include/net-snmp/library/snmp_api.h b/include/net-snmp/library/snmp_api.h
index def02b9..6f658d5 100644
--- a/include/net-snmp/library/snmp_api.h
+++ b/include/net-snmp/library/snmp_api.h
@@ -30,6 +30,8 @@
 #include <net-snmp/pdu_api.h>
 #include <net-snmp/session_api.h>
 
+#include <net-snmp/net-snmp-features.h>
+
 #ifndef DONT_SHARE_ERROR_WITH_OTHER_THREADS
 #define SET_SNMP_ERROR(x) snmp_errno=(x)
 #else
@@ -76,8 +78,8 @@
     void           *cb_data;        /* user callback data per request (NULL if unused) */
     int             retries;        /* Number of retries */
     u_long          timeout;        /* length to wait for timeout */
-    struct timeval  time;   /* Time this request was made */
-    struct timeval  expire; /* time this request is due to expire */
+    struct timeval  timeM;   /* Time this request was made [monotonic clock] */
+    struct timeval  expireM; /* Time this request is due to expire [monotonic clock]. */
     struct snmp_session *session;
     netsnmp_pdu    *pdu;    /* The pdu for this request
 			     * (saved so it can be retransmitted */
@@ -398,14 +400,24 @@
     NETSNMP_IMPORT
     oid            *snmp_duplicate_objid(const oid * objToCopy, size_t);
     NETSNMP_IMPORT
+
+#ifndef NETSNMP_FEATURE_REMOVE_STATISTICS
     u_int           snmp_increment_statistic(int which);
     NETSNMP_IMPORT
     u_int           snmp_increment_statistic_by(int which, int count);
     NETSNMP_IMPORT
     u_int           snmp_get_statistic(int which);
     void            snmp_init_statistics(void);
+#else /* NETSNMP_FEATURE_REMOVE_STATISTICS */
+
+/* allow code to continue referencing API even if statistics are removed */
+#define snmp_increment_statistic(X)
+#define snmp_increment_statistic_by(X,Y)
+#define snmp_init_statistics()
+
+#endif
+
     int             create_user_from_session(netsnmp_session * session);
-    int snmp_get_fd_for_session(struct snmp_session *sessp);
     int snmpv3_probe_contextEngineID_rfc5343(void *slp,
                                              netsnmp_session *session);
 
@@ -685,6 +697,16 @@
 /** backwards compatability */
 #define MAX_STATS NETSNMP_STAT_MAX_STATS
 
+    /*
+     * Internal: The list of active/open sessions.
+     */
+    struct session_list {
+       struct session_list *next;
+       netsnmp_session *session;
+       netsnmp_transport *transport;
+       struct snmp_internal_session *internal;
+    };
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/library/snmp_client.h b/include/net-snmp/library/snmp_client.h
index c023253..ea54e7d 100644
--- a/include/net-snmp/library/snmp_client.h
+++ b/include/net-snmp/library/snmp_client.h
@@ -100,8 +100,10 @@
 int netsnmp_query_getnext( netsnmp_variable_list *, netsnmp_session *);
 NETSNMP_IMPORT
 int netsnmp_query_walk(    netsnmp_variable_list *, netsnmp_session *);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 NETSNMP_IMPORT
 int netsnmp_query_set(     netsnmp_variable_list *, netsnmp_session *);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 /** **************************************************************************
  *
diff --git a/include/net-snmp/library/snmp_parse_args.h b/include/net-snmp/library/snmp_parse_args.h
index e468335..1ad63e0 100644
--- a/include/net-snmp/library/snmp_parse_args.h
+++ b/include/net-snmp/library/snmp_parse_args.h
@@ -1,8 +1,5 @@
 #ifndef SNMP_PARSE_ARGS_H
 #define SNMP_PARSE_ARGS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
 
 /**
  * @file snmp_parse_args.h
@@ -11,6 +8,10 @@
  * line arguments
  */
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Don't enable any logging even if there is no -L argument */
 #define NETSNMP_PARSE_ARGS_NOLOGGING    0x0001
 /** Don't zero out sensitive arguments as they are not on the command line
diff --git a/include/net-snmp/library/snmp_secmod.h b/include/net-snmp/library/snmp_secmod.h
index 5bacad7..aabb7ed 100644
--- a/include/net-snmp/library/snmp_secmod.h
+++ b/include/net-snmp/library/snmp_secmod.h
@@ -91,8 +91,8 @@
                                       netsnmp_session *,
                                       int result,
                                       netsnmp_pdu *origpdu);
-typedef int     (SecmodDiscoveryMethod) (void *slp,
-                                         netsnmp_session *session);
+typedef int     (SecmodDiscoveryMethod) (void *slp, netsnmp_session *session);
+typedef int     (SecmodPostDiscovery) (void *slp, netsnmp_session *session);
 
 typedef int     (SecmodSessionSetup) (netsnmp_session *in_session,
                                       netsnmp_session *out_session);
@@ -136,6 +136,7 @@
     * default engineID discovery mechanism
     */
    SecmodDiscoveryMethod *probe_engineid;
+   SecmodPostDiscovery   *post_probe_engineid;
 };
 
 
@@ -164,6 +165,8 @@
  */
 int             unregister_sec_mod(int);        /* register a security service */
 void            init_secmod(void);
+NETSNMP_IMPORT
+void            shutdown_secmod(void);
 
 /*
  * clears the sec_mod list
diff --git a/include/net-snmp/library/snmp_transport.h b/include/net-snmp/library/snmp_transport.h
index d89f9c0..4162897 100644
--- a/include/net-snmp/library/snmp_transport.h
+++ b/include/net-snmp/library/snmp_transport.h
@@ -1,12 +1,32 @@
 #ifndef _SNMP_TRANSPORT_H
 #define _SNMP_TRANSPORT_H
 
+#include <sys/types.h>
+
+#if HAVE_SYS_SOCKET_H
+#ifdef solaris2
+#define _XPG4_2
+#endif
+
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
+#define _LINUX_SOURCE_COMPAT
+#endif
+
+#include <sys/socket.h>
+
+#ifdef solaris2
+# ifndef CMSG_SPACE
+#  define CMSG_SPACE(l) \
+            ((unsigned int)_CMSG_HDR_ALIGN(sizeof (struct cmsghdr) + (l)))
+#  define CMSG_LEN(l)   (_CMSG_HDR_ALIGN(sizeof(struct cmsghdr)) + (l))
+# endif
+#endif
+#endif /* HAVE_SYS_SOCKET_H */
+
 #ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
 
-#include <sys/types.h>
-
 #include <net-snmp/library/asn1.h>
 
 #ifdef __cplusplus
@@ -51,14 +71,22 @@
 /* note: VACM only allows <= 32 so this is overkill till another ACM comes */
 #define NETSNMP_TM_MAX_SECNAME 256
 
+typedef union netsnmp_sockaddr_storage_u {
+    struct sockaddr     sa;
+    struct sockaddr_in  sin;
+#ifdef NETSNMP_ENABLE_IPV6
+    struct sockaddr_in6 sin6;
+#endif
+} netsnmp_sockaddr_storage;
+
 typedef struct netsnmp_addr_pair_s {
-   struct sockaddr_in remote_addr;
-   struct sockaddr_in local_addr;
+   netsnmp_sockaddr_storage remote_addr;
+   netsnmp_sockaddr_storage local_addr;
 } netsnmp_addr_pair;
 
 typedef struct netsnmp_indexed_addr_pair_s {
-   struct sockaddr_in remote_addr;
-   struct sockaddr_in local_addr;
+   netsnmp_sockaddr_storage remote_addr;
+   netsnmp_sockaddr_storage local_addr;
     int if_index;
 } netsnmp_indexed_addr_pair;
 
@@ -115,8 +143,13 @@
 
     size_t          msgMaxSize;
 
+#ifdef FOR_STANDARDS_COMPLIANCE_OR_FUTURE_USE
     /* TM state reference per ISMS WG solution */
     netsnmp_tmStateReference *tmStateRef;
+#endif
+
+    /* tunneled transports */
+    struct netsnmp_transport_s * base_transport;
 
     /*  Callbacks.  Arguments are:
      *		
@@ -199,6 +232,7 @@
 				  netsnmp_transport *transport);
 int netsnmp_transport_remove_from_list(netsnmp_transport_list **transport_list,
 				       netsnmp_transport *transport);
+int netsnmp_sockaddr_size(struct sockaddr *sa);
 
 
 /*
diff --git a/include/net-snmp/library/snmpksm.h b/include/net-snmp/library/snmpksm.h
index c75e5ef..1b563f0 100644
--- a/include/net-snmp/library/snmpksm.h
+++ b/include/net-snmp/library/snmpksm.h
@@ -15,6 +15,8 @@
                                        *);
     void            init_ksm(void);
 
+    void            shutdown_ksm(void);
+
     /*
      * This is the "key usage" that is used by the new crypto API.  It's used
      * generally only if you are using derived keys.  The specifical says that
@@ -25,6 +27,8 @@
 #define KSM_KEY_USAGE_ENCRYPTION	1030
 #define KSM_KEY_USAGE_CHECKSUM		1031
 
+#define KSM_SEC_MODEL_NUMBER            SNMP_SEC_MODEL_KSM
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/library/snmptsm.h b/include/net-snmp/library/snmptsm.h
index a7c8d93..264a928 100644
--- a/include/net-snmp/library/snmptsm.h
+++ b/include/net-snmp/library/snmptsm.h
@@ -5,6 +5,8 @@
 #ifndef SNMPTSM_H
 #define SNMPTSM_H
 
+#define TSM_SEC_MODEL_NUMBER            SNMP_SEC_MODEL_TSM
+
 #ifdef __cplusplus
 extern          "C" {
 #endif
@@ -15,6 +17,8 @@
                                        *);
     void            init_tsm(void);
 
+    void            shutdown_tsm(void);
+
     #define NETSNMP_TM_SAME_SECURITY_NOT_REQUIRED 0
     #define NETSNMP_TM_USE_SAME_SECURITY          1
 
diff --git a/include/net-snmp/library/snmpusm.h b/include/net-snmp/library/snmpusm.h
index d1ced90..9d673cc 100644
--- a/include/net-snmp/library/snmpusm.h
+++ b/include/net-snmp/library/snmpusm.h
@@ -259,6 +259,21 @@
 					   void *clientarg);
     NETSNMP_IMPORT
     void            clear_user_list(void);
+    NETSNMP_IMPORT
+    void            shutdown_usm(void);
+
+    NETSNMP_IMPORT
+    int             usm_create_user_from_session(netsnmp_session * session);
+    SecmodPostDiscovery usm_create_user_from_session_hook;
+    NETSNMP_IMPORT
+    void            usm_parse_create_usmUser(const char *token,
+                                             char *line);
+    NETSNMP_IMPORT
+    const oid      *get_default_authtype(size_t *);
+    NETSNMP_IMPORT
+    const oid      *get_default_privtype(size_t *);
+    void            snmpv3_authtype_conf(const char *word, char *cptr);
+    void            snmpv3_privtype_conf(const char *word, char *cptr);
 
 #ifdef __cplusplus
 }
diff --git a/include/net-snmp/library/snmpv3.h b/include/net-snmp/library/snmpv3.h
index 633ea57..a958809 100644
--- a/include/net-snmp/library/snmpv3.h
+++ b/include/net-snmp/library/snmpv3.h
@@ -26,11 +26,6 @@
     void            engineBoots_conf(const char *, char *);
     void            engineIDType_conf(const char *, char *);
     void            engineIDNic_conf(const char *, char *);
-    void            snmpv3_authtype_conf(const char *word, char *cptr);
-    void            snmpv3_privtype_conf(const char *word, char *cptr);
-    NETSNMP_IMPORT
-    void            usm_parse_create_usmUser(const char *token,
-                                             char *line);
     NETSNMP_IMPORT
     void            init_snmpv3(const char *);
     int             init_snmpv3_post_config(int majorid, int minorid,
@@ -54,10 +49,6 @@
     NETSNMP_IMPORT
     u_long          snmpv3_local_snmpEngineTime(void);
     int             get_default_secLevel(void);
-    NETSNMP_IMPORT
-    const oid      *get_default_authtype(size_t *);
-    NETSNMP_IMPORT
-    const oid      *get_default_privtype(size_t *);
     void            snmpv3_set_engineBootsAndTime(int boots, int ttime);
     int             free_engineID(int majorid, int minorid, void *serverarg,
 				  void *clientarg);
diff --git a/include/net-snmp/library/system.h b/include/net-snmp/library/system.h
index f3ec24c..ac5052e 100644
--- a/include/net-snmp/library/system.h
+++ b/include/net-snmp/library/system.h
@@ -131,6 +131,20 @@
     int             netsnmp_gethostbyname_v4(const char* name,
                                              in_addr_t *addr_out);
 
+    /** netsnmp versions of dns resoloution.. may include DNSSEC validation. */
+    struct addrinfo; /* forward declare */
+    NETSNMP_IMPORT
+    struct hostent *netsnmp_gethostbyname(const char *name);
+
+    NETSNMP_IMPORT
+    struct hostent *netsnmp_gethostbyaddr(const void *addr, socklen_t len,
+                                          int type);
+
+    NETSNMP_IMPORT
+    int             netsnmp_getaddrinfo(const char *name, const char *service,
+                                        const struct addrinfo *hints,
+                                        struct addrinfo **res);
+
     NETSNMP_IMPORT
     in_addr_t       get_myaddr(void);
     NETSNMP_IMPORT
diff --git a/include/net-snmp/library/testing.h b/include/net-snmp/library/testing.h
index aabe52f..ec6135a 100644
--- a/include/net-snmp/library/testing.h
+++ b/include/net-snmp/library/testing.h
@@ -7,10 +7,10 @@
 static int __test_counter = 0;
 static int __did_plan = 0;
 
-#define OK(isok, description) { printf("%s %d - %s\n", ((isok) ? "ok" : "not ok"), ++__test_counter, description); }
+#define OK(isok, description) do { printf("%s %d - %s\n", ((isok) ? "ok" : "not ok"), ++__test_counter, description); } while (0)
 
-#define OKF(isok, description) { printf("%s %d - \n", ((isok) ? "ok" : "not ok"), ++__test_counter); printf description; printf("\n"); }
+#define OKF(isok, description) do { printf("%s %d - ", ((isok) ? "ok" : "not ok"), ++__test_counter); printf description; printf("\n"); } while (0)
 
-#define PLAN(number) { printf("1..%d\n", number); __did_plan = 1;}
+#define PLAN(number) do { printf("1..%d\n", number); __did_plan = 1; } while (0)
 
 #endif /* NETSNMP_LIBRARY_TESTING_H */
diff --git a/include/net-snmp/library/tools.h b/include/net-snmp/library/tools.h
index 9ac4fa5..2634b34 100644
--- a/include/net-snmp/library/tools.h
+++ b/include/net-snmp/library/tools.h
@@ -209,6 +209,9 @@
     NETSNMP_IMPORT
     void           *netsnmp_memdup(const void * from, size_t size);
 
+    void            netsnmp_check_definedness(const void *packet,
+                                              size_t length);
+
     NETSNMP_IMPORT
     u_int           netsnmp_binary_to_hex(u_char ** dest, size_t *dest_len,
                                           int allow_realloc,
@@ -259,12 +262,18 @@
     NETSNMP_IMPORT
     void            atime_setMarker(marker_t pm);
     NETSNMP_IMPORT
+    void            netsnmp_get_monotonic_clock(struct timeval* tv);
+    NETSNMP_IMPORT
+    void            netsnmp_set_monotonic_marker(marker_t *pm);
+    NETSNMP_IMPORT
     long            atime_diff(const_marker_t first, const_marker_t second);
     u_long          uatime_diff(const_marker_t first, const_marker_t second);       /* 1/1000th sec */
     NETSNMP_IMPORT
     u_long          uatime_hdiff(const_marker_t first, const_marker_t second);      /* 1/100th sec */
     NETSNMP_IMPORT
     int             atime_ready(const_marker_t pm, int delta_ms);
+    NETSNMP_IMPORT
+    int             netsnmp_ready_monotonic(const_marker_t pm, int delta_ms);
     int             uatime_ready(const_marker_t pm, unsigned int delta_ms);
 
     int             marker_tticks(const_marker_t pm);
@@ -277,6 +286,9 @@
 
     int             netsnmp_addrstr_hton(char *ptr, size_t len);
 
+    NETSNMP_IMPORT
+    int             netsnmp_string_time_to_secs(const char *time_string);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/net-snmp-config.h.in b/include/net-snmp/net-snmp-config.h.in
index 2a22c00..1db0237 100644
--- a/include/net-snmp/net-snmp-config.h.in
+++ b/include/net-snmp/net-snmp-config.h.in
@@ -28,15 +28,6 @@
  */
 #ifndef NETSNMP_NO_AUTOCONF_DEFINITIONS
 
-
-#if defined (WIN32) || defined (mingw32) || defined (cygwin)
-#define ENV_SEPARATOR ";"
-#define ENV_SEPARATOR_CHAR ';'
-#else
-#define ENV_SEPARATOR ":"
-#define ENV_SEPARATOR_CHAR ':'
-#endif
-
 /* definitions added by configure on-the-fly */
 
 #define config_belongs_in(x)
@@ -71,6 +62,15 @@
 /* location of swap device */
 #undef DMEM_LOC
 
+/* Define if you want local DNSSEC validation support */
+#undef DNSSEC_LOCAL_VALIDATION
+
+/* Environment separator character surrounded by double quotes. */
+#undef ENV_SEPARATOR
+
+/* Environment separator character surrounded by single quotes. */
+#undef ENV_SEPARATOR_CHAR
+
 /* location of mount table list */
 #undef ETC_MNTTAB
 
@@ -102,9 +102,15 @@
 /* Define to 1 if you have the `chown' function. */
 #undef HAVE_CHOWN
 
+/* Define to 1 if you have the `clock_gettime' library */
+#undef HAVE_CLOCK_GETTIME
+
 /* Define to 1 if you have the `closedir' function. */
 #undef HAVE_CLOSEDIR
 
+/* Define to 1 if you have the <com_err.h> header file. */
+#undef HAVE_COM_ERR_H
+
 /* Define to 1 if the system has the type `Counter64'. */
 #undef HAVE_COUNTER64
 
@@ -137,6 +143,9 @@
 /* Define to 1 if you have the <err.h> header file. */
 #undef HAVE_ERR_H
 
+/* Define to 1 if you have the <et/com_err.h> header file. */
+#undef HAVE_ET_COM_ERR_H
+
 /* Define to 1 if you have the `eval_pv' function. */
 #undef HAVE_EVAL_PV
 
@@ -146,18 +155,33 @@
 /* Define to 1 if you have the `EVP_MD_CTX_destroy' function. */
 #undef HAVE_EVP_MD_CTX_DESTROY
 
+/* Define if you have EVP_sha224/256 in openssl */
+#undef HAVE_EVP_SHA224
+
+/* Define if you have EVP_sha384/256 in openssl */
+#undef HAVE_EVP_SHA384
+
 /* Define to 1 if you have the `execv' function. */
 #undef HAVE_EXECV
 
 /* Define to 1 if you have the <fcntl.h> header file. */
 #undef HAVE_FCNTL_H
 
+/* Define to 1 if you have the `fgetc_unlocked' function. */
+#undef HAVE_FGETC_UNLOCKED
+
+/* Define to 1 if you have the `flockfile' function. */
+#undef HAVE_FLOCKFILE
+
 /* Define to 1 if you have the `fork' function. */
 #undef HAVE_FORK
 
 /* Define to 1 if you have the <fstab.h> header file. */
 #undef HAVE_FSTAB_H
 
+/* Define to 1 if you have the `funlockfile' function. */
+#undef HAVE_FUNLOCKFILE
+
 /* Define to 1 if you have the `gai_strerror' function. */
 #undef HAVE_GAI_STRERROR
 
@@ -176,6 +200,9 @@
 /* Define to 1 if you have the `getgrnam' function. */
 #undef HAVE_GETGRNAM
 
+/* Define to 1 if you have the `gethostbyaddr' function. */
+#undef HAVE_GETHOSTBYADDR
+
 /* Define to 1 if you have the `gethostbyname' function. */
 #undef HAVE_GETHOSTBYNAME
 
@@ -278,12 +305,12 @@
 /* Set if IP_RECVDSTADDR is usable */
 #undef HAVE_IP_RECVDSTADDR
 
-/* kern.cp_times displays multi cpu load on FreeBSD... */
-#undef HAVE_KERN_CP_TIMES
-
 /* Define to 1 if you have the `kinfo_get_cpus' function. */
 #undef HAVE_KINFO_GET_CPUS
 
+/* Define if you have /dev/kmem */
+#undef HAVE_KMEM
+
 /* Define to 1 if you have the `knlist' function. */
 #undef HAVE_KNLIST
 
@@ -335,6 +362,12 @@
 /* Define to 1 if you have the `pkcs11' library (-lpkcs11). */
 #undef HAVE_LIBPKCS11
 
+/* define if you have BSD pkg-ng */
+#undef HAVE_LIBPKG
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#undef HAVE_LIBPTHREAD
+
 /* Define to 1 if you have the `rpm' library (-lrpm). */
 #undef HAVE_LIBRPM
 
@@ -344,6 +377,9 @@
 /* Define to 1 if you have the `rsaref' library (-lrsaref). */
 #undef HAVE_LIBRSAREF
 
+/* Define to 1 if you have the `sres' library (-lsres). */
+#undef HAVE_LIBSRES
+
 /* Define to 1 if you have the `ssh2' library (-lssh2). */
 #undef HAVE_LIBSSH2
 
@@ -569,6 +605,9 @@
 /* Define to 1 if you have the <osreldate.h> header file. */
 #undef HAVE_OSRELDATE_H
 
+/* define if you have pci_lookup_name() */
+#undef HAVE_PCI_LOOKUP_NAME
+
 /* Define to 1 if you have the <pci/pci.h> header file. */
 #undef HAVE_PCI_PCI_H
 
@@ -593,6 +632,9 @@
 /* Define to 1 if you have the <pkglocs.h> header file. */
 #undef HAVE_PKGLOCS_H
 
+/* Define to 1 if you have the <pkg.h> header file. */
+#undef HAVE_PKG_H
+
 /* Define to 1 if you have the `poll' function. */
 #undef HAVE_POLL
 
@@ -764,206 +806,212 @@
 /* Define to 1 if you have the `strtoull' function. */
 #undef HAVE_STRTOULL
 
-/* Define to 1 if `at_next' is member of `struct arphd'. */
+/* Define to 1 if `at_next' is a member of `struct arphd'. */
 #undef HAVE_STRUCT_ARPHD_AT_NEXT
 
-/* Define to 1 if `weak_key' is member of `struct des_ks_struct'. */
+/* Define to 1 if `weak_key' is a member of `struct des_ks_struct'. */
 #undef HAVE_STRUCT_DES_KS_STRUCT_WEAK_KEY
 
-/* Define to 1 if `d_type' is member of `struct dirent'. */
+/* Define to 1 if `d_type' is a member of `struct dirent'. */
 #undef HAVE_STRUCT_DIRENT_D_TYPE
 
-/* Define to 1 if `speed_hi' is member of `struct ethtool_cmd'. */
+/* Define to 1 if `speed_hi' is a member of `struct ethtool_cmd'. */
 #undef HAVE_STRUCT_ETHTOOL_CMD_SPEED_HI
 
-/* Define to 1 if `ifa_next' is member of `struct ifaddr'. */
+/* Define to 1 if `ifa_next' is a member of `struct ifaddr'. */
 #undef HAVE_STRUCT_IFADDR_IFA_NEXT
 
-/* Define to 1 if `if_addrhead.tqh_first' is member of `struct ifnet'. */
+/* Define to 1 if `if_addrhead.tqh_first' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_ADDRHEAD_TQH_FIRST
 
-/* Define to 1 if `if_addrlist' is member of `struct ifnet'. */
+/* Define to 1 if `if_addrlist' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_ADDRLIST
 
-/* Define to 1 if `if_baudrate' is member of `struct ifnet'. */
+/* Define to 1 if `if_baudrate' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_BAUDRATE
 
-/* Define to 1 if `if_baudrate.ifs_value' is member of `struct ifnet'. */
+/* Define to 1 if `if_baudrate.ifs_value' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_BAUDRATE_IFS_VALUE
 
-/* Define to 1 if `if_ibytes' is member of `struct ifnet'. */
+/* Define to 1 if `if_ibytes' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_IBYTES
 
-/* Define to 1 if `if_imcasts' is member of `struct ifnet'. */
+/* Define to 1 if `if_imcasts' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_IMCASTS
 
-/* Define to 1 if `if_iqdrops' is member of `struct ifnet'. */
+/* Define to 1 if `if_iqdrops' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_IQDROPS
 
-/* Define to 1 if `if_lastchange.tv_nsec' is member of `struct ifnet'. */
+/* Define to 1 if `if_lastchange.tv_nsec' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_NSEC
 
-/* Define to 1 if `if_lastchange.tv_sec' is member of `struct ifnet'. */
+/* Define to 1 if `if_lastchange.tv_sec' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC
 
-/* Define to 1 if `if_mtu' is member of `struct ifnet'. */
+/* Define to 1 if `if_mtu' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_MTU
 
-/* Define to 1 if `if_noproto' is member of `struct ifnet'. */
+/* Define to 1 if `if_noproto' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_NOPROTO
 
-/* Define to 1 if `if_obytes' is member of `struct ifnet'. */
+/* Define to 1 if `if_obytes' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_OBYTES
 
-/* Define to 1 if `if_omcasts' is member of `struct ifnet'. */
+/* Define to 1 if `if_omcasts' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_OMCASTS
 
-/* Define to 1 if `if_speed' is member of `struct ifnet'. */
+/* Define to 1 if `if_speed' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_SPEED
 
-/* Define to 1 if `if_type' is member of `struct ifnet'. */
+/* Define to 1 if `if_type' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_TYPE
 
-/* Define to 1 if `if_xname' is member of `struct ifnet'. */
+/* Define to 1 if `if_xname' is a member of `struct ifnet'. */
 #undef HAVE_STRUCT_IFNET_IF_XNAME
 
-/* Define to 1 if `ips_cantforward' is member of `struct ipstat'. */
+/* Define to 1 if `ip6s_exthdrtoolong ' is a member of `struct ip6stat'. */
+#undef HAVE_STRUCT_IP6STAT_IP6S_EXTHDRTOOLONG_
+
+/* Define to 1 if `ips_cantforward' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_CANTFORWARD
 
-/* Define to 1 if `ips_cantfrag' is member of `struct ipstat'. */
+/* Define to 1 if `ips_cantfrag' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_CANTFRAG
 
-/* Define to 1 if `ips_delivered' is member of `struct ipstat'. */
+/* Define to 1 if `ips_delivered' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_DELIVERED
 
-/* Define to 1 if `ips_fragdropped' is member of `struct ipstat'. */
+/* Define to 1 if `ips_fragdropped' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_FRAGDROPPED
 
-/* Define to 1 if `ips_fragmented' is member of `struct ipstat'. */
+/* Define to 1 if `ips_fragmented' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_FRAGMENTED
 
-/* Define to 1 if `ips_fragtimeout' is member of `struct ipstat'. */
+/* Define to 1 if `ips_fragtimeout' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_FRAGTIMEOUT
 
-/* Define to 1 if `ips_localout' is member of `struct ipstat'. */
+/* Define to 1 if `ips_localout' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_LOCALOUT
 
-/* Define to 1 if `ips_noproto' is member of `struct ipstat'. */
+/* Define to 1 if `ips_noproto' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_NOPROTO
 
-/* Define to 1 if `ips_noroute' is member of `struct ipstat'. */
+/* Define to 1 if `ips_noroute' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_NOROUTE
 
-/* Define to 1 if `ips_odropped' is member of `struct ipstat'. */
+/* Define to 1 if `ips_odropped' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_ODROPPED
 
-/* Define to 1 if `ips_ofragments' is member of `struct ipstat'. */
+/* Define to 1 if `ips_ofragments' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_OFRAGMENTS
 
-/* Define to 1 if `ips_reassembled' is member of `struct ipstat'. */
+/* Define to 1 if `ips_reassembled' is a member of `struct ipstat'. */
 #undef HAVE_STRUCT_IPSTAT_IPS_REASSEMBLED
 
-/* Define to 1 if `m_clfree' is member of `struct mbstat'. */
+/* Define to 1 if `m_clfree' is a member of `struct mbstat'. */
 #undef HAVE_STRUCT_MBSTAT_M_CLFREE
 
-/* Define to 1 if `m_clusters' is member of `struct mbstat'. */
+/* Define to 1 if `m_clusters' is a member of `struct mbstat'. */
 #undef HAVE_STRUCT_MBSTAT_M_CLUSTERS
 
-/* Define to 1 if `m_mbufs' is member of `struct mbstat'. */
+/* Define to 1 if `m_mbufs' is a member of `struct mbstat'. */
 #undef HAVE_STRUCT_MBSTAT_M_MBUFS
 
-/* Define to 1 if `n_value' is member of `struct nlist64'. */
+/* Define to 1 if `n_value' is a member of `struct nlist64'. */
 #undef HAVE_STRUCT_NLIST64_N_VALUE
 
-/* Define to 1 if `n_value' is member of `struct nlist'. */
+/* Define to 1 if `n_value' is a member of `struct nlist'. */
 #undef HAVE_STRUCT_NLIST_N_VALUE
 
-/* Define to 1 if `rt_dst' is member of `struct rtentry'. */
+/* Define to 1 if `rt_dst' is a member of `struct rtentry'. */
 #undef HAVE_STRUCT_RTENTRY_RT_DST
 
-/* Define to 1 if `rt_hash' is member of `struct rtentry'. */
+/* Define to 1 if `rt_hash' is a member of `struct rtentry'. */
 #undef HAVE_STRUCT_RTENTRY_RT_HASH
 
-/* Define to 1 if `rt_next' is member of `struct rtentry'. */
+/* Define to 1 if `rt_next' is a member of `struct rtentry'. */
 #undef HAVE_STRUCT_RTENTRY_RT_NEXT
 
-/* Define to 1 if `rt_refcnt' is member of `struct rtentry'. */
+/* Define to 1 if `rt_refcnt' is a member of `struct rtentry'. */
 #undef HAVE_STRUCT_RTENTRY_RT_REFCNT
 
-/* Define to 1 if `rt_unit' is member of `struct rtentry'. */
+/* Define to 1 if `rt_unit' is a member of `struct rtentry'. */
 #undef HAVE_STRUCT_RTENTRY_RT_UNIT
 
-/* Define to 1 if `rt_use' is member of `struct rtentry'. */
+/* Define to 1 if `rt_use' is a member of `struct rtentry'. */
 #undef HAVE_STRUCT_RTENTRY_RT_USE
 
-/* Define to 1 if `sa_sigaction' is member of `struct sigaction'. */
+/* Define to 1 if `sa_sigaction' is a member of `struct sigaction'. */
 #undef HAVE_STRUCT_SIGACTION_SA_SIGACTION
 
-/* Define to 1 if `sin6_scope_id' is member of `struct sockaddr_in6'. */
+/* Define to 1 if `sin6_scope_id' is a member of `struct sockaddr_in6'. */
 #undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID
 
-/* Define to 1 if `sa_len' is member of `struct sockaddr'. */
+/* Define to 1 if `sa_len' is a member of `struct sockaddr'. */
 #undef HAVE_STRUCT_SOCKADDR_SA_LEN
 
-/* Define to 1 if `sa_union.sa_generic.sa_family2' is member of `struct
+/* Define to 1 if `sa_union.sa_generic.sa_family2' is a member of `struct
    sockaddr'. */
 #undef HAVE_STRUCT_SOCKADDR_SA_UNION_SA_GENERIC_SA_FAMILY2
 
-/* Define to 1 if `ss_family' is member of `struct sockaddr_storage'. */
+/* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */
 #undef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
 
-/* Define to 1 if `__ss_family' is member of `struct sockaddr_storage'. */
+/* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */
 #undef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
 
-/* Define to 1 if `f_favail' is member of `struct statfs'. */
+/* Define to 1 if `f_favail' is a member of `struct statfs'. */
 #undef HAVE_STRUCT_STATFS_F_FAVAIL
 
-/* Define to 1 if `f_ffree' is member of `struct statfs'. */
+/* Define to 1 if `f_ffree' is a member of `struct statfs'. */
 #undef HAVE_STRUCT_STATFS_F_FFREE
 
-/* Define to 1 if `f_files' is member of `struct statfs'. */
+/* Define to 1 if `f_files' is a member of `struct statfs'. */
 #undef HAVE_STRUCT_STATFS_F_FILES
 
-/* Define to 1 if `f_flags' is member of `struct statfs'. */
+/* Define to 1 if `f_flags' is a member of `struct statfs'. */
 #undef HAVE_STRUCT_STATFS_F_FLAGS
 
-/* Define to 1 if `f_frsize' is member of `struct statfs'. */
+/* Define to 1 if `f_frsize' is a member of `struct statfs'. */
 #undef HAVE_STRUCT_STATFS_F_FRSIZE
 
-/* Define to 1 if `f_files' is member of `struct statvfs'. */
+/* Define to 1 if `f_files' is a member of `struct statvfs'. */
 #undef HAVE_STRUCT_STATVFS_F_FILES
 
-/* Define to 1 if `f_frsize' is member of `struct statvfs'. */
+/* Define to 1 if `f_frsize' is a member of `struct statvfs'. */
 #undef HAVE_STRUCT_STATVFS_F_FRSIZE
 
-/* Define to 1 if `mnt_dir' is member of `struct statvfs'. */
+/* Define to 1 if `mnt_dir' is a member of `struct statvfs'. */
 #undef HAVE_STRUCT_STATVFS_MNT_DIR
 
-/* Define to 1 if `sw_nblksenabled' is member of `struct swdevt'. */
+/* Define to 1 if `sw_nblksenabled' is a member of `struct swdevt'. */
 #undef HAVE_STRUCT_SWDEVT_SW_NBLKSENABLED
 
-/* Define to 1 if `tcp_rcvmemdrop' is member of `struct tcpstat'. */
+/* Define to 1 if `tcp_rcvmemdrop' is a member of `struct tcpstat'. */
 #undef HAVE_STRUCT_TCPSTAT_TCP_RCVMEMDROP
 
-/* Define to 1 if `tz_dsttime' is member of `struct timezone'. */
+/* Define to 1 if `tz_dsttime' is a member of `struct timezone'. */
 #undef HAVE_STRUCT_TIMEZONE_TZ_DSTTIME
 
-/* Define to 1 if `tm_gmtoff' is member of `struct tm'. */
+/* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */
 #undef HAVE_STRUCT_TM_TM_GMTOFF
 
-/* Define to 1 if `udps_discard' is member of `struct udpstat'. */
+/* Define to 1 if `udps_discard' is a member of `struct udpstat'. */
 #undef HAVE_STRUCT_UDPSTAT_UDPS_DISCARD
 
-/* Define to 1 if `udps_fullsock' is member of `struct udpstat'. */
+/* Define to 1 if `udps_fullsock' is a member of `struct udpstat'. */
 #undef HAVE_STRUCT_UDPSTAT_UDPS_FULLSOCK
 
-/* Define to 1 if `udps_noport' is member of `struct udpstat'. */
+/* Define to 1 if `udps_ipackets' is a member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_IPACKETS
+
+/* Define to 1 if `udps_noport' is a member of `struct udpstat'. */
 #undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORT
 
-/* Define to 1 if `udps_noportbcast' is member of `struct udpstat'. */
+/* Define to 1 if `udps_noportbcast' is a member of `struct udpstat'. */
 #undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORTBCAST
 
-/* Define to 1 if `udps_opackets' is member of `struct udpstat'. */
+/* Define to 1 if `udps_opackets' is a member of `struct udpstat'. */
 #undef HAVE_STRUCT_UDPSTAT_UDPS_OPACKETS
 
 /* Define to 1 if `pgswapin' is a member of `struct uvmexp'. */
@@ -1214,6 +1262,15 @@
 /* Define to 1 if you have the <uvm/uvm_param.h> header file. */
 #undef HAVE_UVM_UVM_PARAM_H
 
+/* Define to 1 if you have the <valgrind/memcheck.h> header file. */
+#undef HAVE_VALGRIND_MEMCHECK_H
+
+/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
+#undef HAVE_VALGRIND_VALGRIND_H
+
+/* Define to 1 if you have the <validator/validator-config.h> header file. */
+#undef HAVE_VALIDATOR_VALIDATOR_CONFIG_H
+
 /* Define to 1 if you have the <vm/swap_pager.h> header file. */
 #undef HAVE_VM_SWAP_PAGER_H
 
@@ -1279,6 +1336,12 @@
 /* default mib files to load, specified by path. */
 #undef NETSNMP_DEFAULT_MIBFILES
 
+/* Define if no agent is built */
+#undef NETSNMP_DISABLE_AGENT
+
+/* Define if no apps are built */
+#undef NETSNMP_DISABLE_APPS
+
 /* Define if DES encryption should not be supported */
 #undef NETSNMP_DISABLE_DES
 
@@ -1325,6 +1388,12 @@
 /* ifnet needs to have _KERNEL_STRUCTURES defined */
 #undef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
 
+/* Define if you want to remove all non-essential code features. */
+#undef NETSNMP_MINIMAL_CODE
+
+/* Define if you want to only support sending notifications */
+#undef NETSNMP_NOTIFY_ONLY
+
 /* Define to suppress inclusion of deprecated functions */
 #undef NETSNMP_NO_DEPRECATED_FUNCTIONS
 
@@ -1335,9 +1404,15 @@
 /* If we don't want to use kmem. */
 #undef NETSNMP_NO_KMEM_USAGE
 
+/* Define if you want to remove all listening support from the code */
+#undef NETSNMP_NO_LISTEN_SUPPORT
+
 /* If you don't have root access don't exit upon kmem errors */
 #undef NETSNMP_NO_ROOT_ACCESS
 
+/* Define if you want to remove all SET/write access from the code */
+#undef NETSNMP_NO_WRITE_SUPPORT
+
 /* umask permissions to set up persistent files with */
 #undef NETSNMP_PERSISTENT_MASK
 
@@ -1402,6 +1477,9 @@
 #undef PACKAGE_TARNAME
 #endif
 
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
 /* Define to the version of this package. */
 #ifndef PACKAGE_VERSION
 #undef PACKAGE_VERSION
@@ -1567,6 +1645,9 @@
 /* Define to `int' if <sys/types.h> does not define. */
 #undef pid_t
 
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
 /* Define to the type of an unsigned integer type of width exactly 16 bits if
    such a type exists and the standard includes do not define it. */
 #undef uint16_t
@@ -2045,11 +2126,8 @@
    and are not using the UC-Davis SNMP library. */
 #define UCD_SNMP_LIBRARY 1
 
-/* add in recent CMU library extensions (not complete) */
-#undef CMU_COMPATIBLE
-
 /* final conclusion on nlist usage */
-#if defined(HAVE_NLIST) && defined(HAVE_STRUCT_NLIST_N_VALUE) && !defined(NETSNMP_DONT_USE_NLIST) && !defined(NETSNMP_NO_KMEM_USAGE)
+#if defined(HAVE_NLIST) && defined(HAVE_STRUCT_NLIST_N_VALUE) && !defined(NETSNMP_DONT_USE_NLIST) && defined(HAVE_KMEM) && !defined(NETSNMP_NO_KMEM_USAGE)
 #define NETSNMP_CAN_USE_NLIST
 #endif
 
diff --git a/include/net-snmp/net-snmp-features.h b/include/net-snmp/net-snmp-features.h
new file mode 100644
index 0000000..f37e6c5
--- /dev/null
+++ b/include/net-snmp/net-snmp-features.h
@@ -0,0 +1,32 @@
+#ifndef NETSNMP_FEATURES_H
+#define NETSNMP_FEATURES_H
+
+/* include files that are only needed if --enable-minimalist is on */
+#ifdef NETSNMP_MINIMAL_CODE
+#ifdef NETSNMP_FEATURE_CHECKING
+#include <net-snmp/feature-details.h>
+#else /* ! NETSNMP_FEATURE_CHECKING */
+#include <net-snmp/library/features.h>
+#ifndef NETSNMP_DISABLE_AGENT
+#include <net-snmp/agent/features.h>
+#include <net-snmp/agent/features-mibgroups.h>
+#endif
+#ifndef NETSNMP_DISABLE_APPS
+#include <net-snmp/features-snmpnetstat.h>
+#include <net-snmp/features-apps.h>
+#endif
+#endif /* ! NETSNMP_FEATURE_CHECKING */
+#endif /* NETSNMP_MINIMAL_CODE */
+
+
+/* prototypes always needed */
+#ifndef NETSNMP_FEATURE_CHECKING
+#define netsnmp_feature_provide(X)
+#define netsnmp_feature_require(X)
+#define netsnmp_feature_want(X)
+#define netsnmp_feature_child_of(X, Y)
+#endif
+
+#define netsnmp_feature_unused(X) char netsnmp_feature_unused_ ## X
+
+#endif /* NETSNMP_FEATURES_H */
diff --git a/include/net-snmp/net-snmp-includes.h b/include/net-snmp/net-snmp-includes.h
index cd37407..3ee62ae 100644
--- a/include/net-snmp/net-snmp-includes.h
+++ b/include/net-snmp/net-snmp-includes.h
@@ -77,8 +77,4 @@
 #include <net-snmp/output_api.h>
 #include <net-snmp/snmpv3_api.h>
 
-#ifdef CMU_COMPATIBLE
-#include <net-snmp/library/cmu_compat.h>
-#endif
-
 #endif                          /* NET_SNMP_INCLUDES_H */
diff --git a/include/net-snmp/system/darwin.h b/include/net-snmp/system/darwin.h
index 6eaf09f..5a065b7 100644
--- a/include/net-snmp/system/darwin.h
+++ b/include/net-snmp/system/darwin.h
@@ -6,8 +6,3 @@
  */
 #undef HAVE_FSTAB_H
 
-/*
- * as of 7/2010, openssl on darwin does not have sha256
- */
-#define OPENSSL_NO_SHA256 1
-#define OPENSSL_NO_SHA512 1
diff --git a/include/net-snmp/system/darwin10.h b/include/net-snmp/system/darwin10.h
index 2333015..3037324 100644
--- a/include/net-snmp/system/darwin10.h
+++ b/include/net-snmp/system/darwin10.h
@@ -65,6 +65,7 @@
 /*
  * use new host resources files as well
  */
+#define NETSNMP_INCLUDE_HOST_RESOURCES
 #define NETSNMP_INCLUDE_HRSWINST_REWRITES
 #define NETSNMP_INCLUDE_HRSWRUN_REWRITES
 #undef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
@@ -92,25 +93,6 @@
 #endif
 
 /*
- * Darwin's tools are capable of building multiple architectures in one pass.
- * As a result, platform definitions should be deferred until compile time.
- */
-#ifdef BYTE_ORDER
-# undef WORDS_BIGENDIAN
-# if BYTE_ORDER == BIG_ENDIAN
-#  define WORDS_BIGENDIAN 1
-# endif
-#endif
-
-/*
- * Although Darwin does have a kvm.h file, kvm_openfiles etc. always
- * return null because /dev/kmem was removed completely in OS X 10.5.
- */
-#undef HAVE_KVM_H
-#undef HAVE_KVM_GETPROCS
-#undef HAVE_KVM_OPENFILES
-
-/*
  * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
  * At least, as of 5.3.
  */
@@ -154,8 +136,3 @@
 #define UDP_ADDRESSES_IN_HOST_ORDER 1
 #endif
 
-/*
- * as of 7/2010, openssl on darwin does not have sha256
- */
-#define OPENSSL_NO_SHA256 1
-#define OPENSSL_NO_SHA512 1
diff --git a/include/net-snmp/system/darwin11.h b/include/net-snmp/system/darwin11.h
index 24fed93..9d6f03d 100644
--- a/include/net-snmp/system/darwin11.h
+++ b/include/net-snmp/system/darwin11.h
@@ -65,6 +65,7 @@
 /*
  * use new host resources files as well
  */
+#define NETSNMP_INCLUDE_HOST_RESOURCES
 #define NETSNMP_INCLUDE_HRSWINST_REWRITES
 #define NETSNMP_INCLUDE_HRSWRUN_REWRITES
 #undef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
@@ -92,25 +93,6 @@
 #endif
 
 /*
- * Darwin's tools are capable of building multiple architectures in one pass.
- * As a result, platform definitions should be deferred until compile time.
- */
-#ifdef BYTE_ORDER
-# undef WORDS_BIGENDIAN
-# if BYTE_ORDER == BIG_ENDIAN
-#  define WORDS_BIGENDIAN 1
-# endif
-#endif
-
-/*
- * Although Darwin does have a kvm.h file, kvm_openfiles etc. always
- * return null because /dev/kmem was removed completely in OS X 10.5.
- */
-#undef HAVE_KVM_H
-#undef HAVE_KVM_GETPROCS
-#undef HAVE_KVM_OPENFILES
-
-/*
  * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
  * At least, as of 5.3.
  */
diff --git a/include/net-snmp/system/darwin12.h b/include/net-snmp/system/darwin12.h
index fd66147..3031d04 100644
--- a/include/net-snmp/system/darwin12.h
+++ b/include/net-snmp/system/darwin12.h
@@ -65,6 +65,7 @@
 /*
  * use new host resources files as well
  */
+#define NETSNMP_INCLUDE_HOST_RESOURCES
 #define NETSNMP_INCLUDE_HRSWINST_REWRITES
 #define NETSNMP_INCLUDE_HRSWRUN_REWRITES
 #undef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
@@ -92,25 +93,6 @@
 #endif
 
 /*
- * Darwin's tools are capable of building multiple architectures in one pass.
- * As a result, platform definitions should be deferred until compile time.
- */
-#ifdef BYTE_ORDER
-# undef WORDS_BIGENDIAN
-# if BYTE_ORDER == BIG_ENDIAN
-#  define WORDS_BIGENDIAN 1
-# endif
-#endif
-
-/*
- * Although Darwin does have a kvm.h file, kvm_openfiles etc. always
- * return null because /dev/kmem was removed completely in OS X 10.5.
- */
-#undef HAVE_KVM_H
-#undef HAVE_KVM_GETPROCS
-#undef HAVE_KVM_OPENFILES
-
-/*
  * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
  * At least, as of 5.3.
  */
diff --git a/include/net-snmp/system/darwin13.h b/include/net-snmp/system/darwin13.h
new file mode 100644
index 0000000..cb1870b
--- /dev/null
+++ b/include/net-snmp/system/darwin13.h
@@ -0,0 +1,143 @@
+/*
+ * While Darwin 10 (aka, Mac OS X 10.6 Snow Leopard) is "BSD-like", it differs
+ * substantially enough to not warrant pretending it is a BSD flavor.
+ * This first section are the vestigal BSD remnants.
+ */
+/* Portions of this file are subject to the following copyright(s).  See
+ * the Net-SNMP's COPYING file for more details and other copyrights
+ * that may apply:
+ */
+/*
+ * Portions of this file are copyrighted by:
+ * Copyright (C) 2007 Apple, Inc. All rights reserved.
+ * Use is subject to license terms specified in the COPYING file
+ * distributed with the Net-SNMP package.
+ */
+
+/*
+ * BSD systems use a different method of looking up sockaddr_in values 
+ */
+/* #define NEED_KLGETSA 1 */
+
+/*
+ * ARP_Scan_Next needs a 4th ifIndex argument 
+ */
+#define ARP_SCAN_FOUR_ARGUMENTS 1
+
+#define CHECK_RT_FLAGS 1
+
+/*
+ * this is not good enough before freebsd3! 
+ */
+/* #undef HAVE_NET_IF_MIB_H */
+
+/*
+ * This section adds the relevant definitions from generic.h
+ * (a file we don't include here)
+ */
+
+/*
+ * udp_inpcb list symbol, e.g. for mibII/udpTable.c
+ */
+#define INP_NEXT_SYMBOL inp_next
+
+/*
+ * This section defines Mac OS X 10.5 (and later) specific additions.
+ */
+#define darwin 13
+#ifndef darwin13
+#   define darwin13 darwin
+#endif
+
+/*
+ * Mac OS X should only use the modern API and definitions.
+ */
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
+#define NETSNMP_NO_LEGACY_DEFINITIONS 1
+#endif
+
+/*
+ * looks like the IFTable stuff works better than the mibII versions
+ */
+ 
+#define NETSNMP_INCLUDE_IFTABLE_REWRITES
+
+/*
+ * use new host resources files as well
+ */
+#define NETSNMP_INCLUDE_HOST_RESOURCES
+#define NETSNMP_INCLUDE_HRSWINST_REWRITES
+#define NETSNMP_INCLUDE_HRSWRUN_REWRITES
+#undef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
+#define NETSNMP_CAN_GET_DISK_LABEL 1
+
+/*
+ * Enabling this restricts the compiler to mostly public APIs.
+ */
+#ifndef __APPLE_API_STRICT_CONFORMANCE
+#define __APPLE_API_STRICT_CONFORMANCE 1
+#endif
+#ifndef __APPLE_API_UNSTABLE
+#define __APPLE_API_UNSTABLE 1
+#endif
+
+/*
+ * Darwin's tools are capable of building multiple architectures in one pass.
+ * As a result, platform definitions should be deferred until compile time.
+ */
+#ifdef BYTE_ORDER
+# undef WORDS_BIGENDIAN
+# if BYTE_ORDER == BIG_ENDIAN
+#  define WORDS_BIGENDIAN 1
+# endif
+#endif
+
+/*
+ * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
+ * At least, as of 5.3.
+ */
+#undef HAVE_FSTAB_H
+
+#define SWAPFILE_DIR "/private/var/vm"
+#define SWAPFILE_PREFIX "swapfile"
+
+/*
+ * These apparently used to be in netinet/tcp_timers.h, but went away in
+ * 10.4.2. Define them here til we find out a way to get the real values.
+ */
+#define TCPTV_MIN       (  1*PR_SLOWHZ)         /* minimum allowable value */
+#define TCPTV_REXMTMAX  ( 64*PR_SLOWHZ)         /* max allowable REXMT value */
+
+/*
+ * Because Mac OS X is built on Mach, it does not provide a BSD-compatible
+ * VM statistics API.
+ */
+#define USE_MACH_HOST_STATISTICS 1
+
+/*
+ * This tells code that manipulates IPv6 that the structures are unified,
+ * i.e., IPv4 and IPv6 use the same structs.
+ * This should eventually be replaced with a configure directive.
+ */
+/* #define USE_UNIFIED_IPV6_STRUCTS 1 */
+#undef STRUCT_in6pcb_HAS_inp_vflag
+
+/*
+ * utility macro used in several darwin specific files
+ */
+#define SNMP_CFRelease(x) do { if (x) { CFRelease(x); x = NULL; } } while(0)
+
+/*
+ * Mac OS X runs on both PPC and Intel hardware,
+ *   which handle udpTable index values differently
+ */
+#include <TargetConditionals.h>
+#ifdef TARGET_RT_LITTLE_ENDIAN
+#define UDP_ADDRESSES_IN_HOST_ORDER 1
+#endif
+
+/*
+ * as of 7/2010, openssl on darwin does not have sha256
+ */
+#define OPENSSL_NO_SHA256 1
+#define OPENSSL_NO_SHA512 1
diff --git a/include/net-snmp/system/darwin7.h b/include/net-snmp/system/darwin7.h
index f8f521e..8d4554d 100644
--- a/include/net-snmp/system/darwin7.h
+++ b/include/net-snmp/system/darwin7.h
@@ -13,8 +13,3 @@
 #define SWAPFILE_DIR "/private/var/vm"
 #define SWAPFILE_PREFIX "swapfile"
 
-/*
- * as of 7/2010, openssl on darwin does not have sha256
- */
-#define OPENSSL_NO_SHA256 1
-#define OPENSSL_NO_SHA512 1
diff --git a/include/net-snmp/system/darwin8.h b/include/net-snmp/system/darwin8.h
index c38283e..1e6d7d3 100644
--- a/include/net-snmp/system/darwin8.h
+++ b/include/net-snmp/system/darwin8.h
@@ -63,14 +63,6 @@
 #endif
 
 /*
- * Although Darwin does have a kvm.h file, kvm_openfiles etc. always
- * return null because /dev/kmem was removed in OS X 10.4 for Intel.
- */
-#undef HAVE_KVM_H
-#undef HAVE_KVM_GETPROCS
-#undef HAVE_KVM_OPENFILES
-
-/*
  * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
  * At least, as of 5.3.
  */
@@ -100,8 +92,3 @@
 /* #define USE_UNIFIED_IPV6_STRUCTS 1 */
 #undef STRUCT_in6pcb_HAS_inp_vflag
 
-/*
- * as of 7/2010, openssl on darwin does not have sha256
- */
-#define OPENSSL_NO_SHA256 1
-#define OPENSSL_NO_SHA512 1
diff --git a/include/net-snmp/system/darwin9.h b/include/net-snmp/system/darwin9.h
index bcbd067..bf3d2dc 100644
--- a/include/net-snmp/system/darwin9.h
+++ b/include/net-snmp/system/darwin9.h
@@ -92,25 +92,6 @@
 #endif
 
 /*
- * Darwin's tools are capable of building multiple architectures in one pass.
- * As a result, platform definitions should be deferred until compile time.
- */
-#ifdef BYTE_ORDER
-# undef WORDS_BIGENDIAN
-# if BYTE_ORDER == BIG_ENDIAN
-#  define WORDS_BIGENDIAN 1
-# endif
-#endif
-
-/*
- * Although Darwin does have a kvm.h file, kvm_openfiles etc. always
- * return null because /dev/kmem was removed completely in OS X 10.5.
- */
-#undef HAVE_KVM_H
-#undef HAVE_KVM_GETPROCS
-#undef HAVE_KVM_OPENFILES
-
-/*
  * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
  * At least, as of 5.3.
  */
@@ -154,8 +135,3 @@
 #define UDP_ADDRESSES_IN_HOST_ORDER 1
 #endif
 
-/*
- * as of 7/2010, openssl on darwin does not have sha256
- */
-#define OPENSSL_NO_SHA256 1
-#define OPENSSL_NO_SHA512 1
diff --git a/include/net-snmp/types.h b/include/net-snmp/types.h
index 1862e99..5e80a45 100644
--- a/include/net-snmp/types.h
+++ b/include/net-snmp/types.h
@@ -54,6 +54,19 @@
 # endif
 #endif
 
+#if defined(WIN32) && !defined(cygwin)
+typedef HANDLE netsnmp_pid_t;
+#define NETSNMP_NO_SUCH_PROCESS INVALID_HANDLE_VALUE
+#else
+/*
+ * Note: on POSIX-compliant systems, pid_t is defined in <sys/types.h>.
+ * And if pid_t has not been defined in <sys/types.h>, AC_TYPE_PID_T ensures
+ * that a pid_t definition is present in net-snmp-config.h.
+ */
+typedef pid_t netsnmp_pid_t;
+#define NETSNMP_NO_SUCH_PROCESS -1
+#endif
+
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>		/* For definition of in_addr_t */
 #endif
diff --git a/install-sh b/install-sh
index a5897de..3f83ce9 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2006-12-25.00
+scriptversion=2010-02-06.18; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -200,7 +200,11 @@
 fi
 
 if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
 
   # Set umask so as not to create temps with too-generous modes.
   # However, 'strip' requires both read and write access to temps.
@@ -515,5 +519,6 @@
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
diff --git a/local/Makefile.in b/local/Makefile.in
index df81db0..cb84afc 100644
--- a/local/Makefile.in
+++ b/local/Makefile.in
@@ -130,9 +130,9 @@
 	  touch fixproc.made; \
         fi
 
-snmpconf.made: $(srcdir)/snmpconf
+snmpconf.made: snmpconf
 	if test "x$(PERL)" != "x" ; then \
-	  $(PERL) -p -e 's%^#!.*/perl.*%#!$(PERL)%; s#/usr/local/share#$(datadir)#g; s#/usr/local/etc/snmp#$(SNMPCONFPATH)#g; s#/var/net-snmp#$(PERSISTENT_DIRECTORY)#g' ${srcdir}/snmpconf > snmpconf.made; \
+	  $(PERL) -p -e 's%^#!.*/perl.*%#!$(PERL)%; s#/usr/local/share#$(datadir)#g; s#/usr/local/etc/snmp#$(SNMPCONFPATH)#g; s#/var/net-snmp#$(PERSISTENT_DIRECTORY)#g' snmpconf > snmpconf.made; \
 	else \
 	  touch snmpconf.made; \
         fi
diff --git a/local/mib2c-conf.d/generic-source-includes.m2i b/local/mib2c-conf.d/generic-source-includes.m2i
index b2b425e..9341cf9 100644
--- a/local/mib2c-conf.d/generic-source-includes.m2i
+++ b/local/mib2c-conf.d/generic-source-includes.m2i
@@ -10,6 +10,7 @@
 ##
 /* standard Net-SNMP includes */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
diff --git a/local/mib2c-conf.d/mfd-interface.m2c b/local/mib2c-conf.d/mfd-interface.m2c
index 42351c9..d666c9a 100644
--- a/local/mib2c-conf.d/mfd-interface.m2c
+++ b/local/mib2c-conf.d/mfd-interface.m2c
@@ -118,6 +118,10 @@
 
 #include "${name}_interface.h"
 
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(check_all_requests_error)
+
 #include <ctype.h>
 
 @eval $m2c_processing_type = 'i'@
@@ -328,7 +332,7 @@
                                                   ${context}_oid,
                                                   ${context}_oid_size,
                                                   HANDLER_CAN_BABY_STEP |
-#ifdef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
                                                   HANDLER_CAN_RONLY
 #else
 @if $m2c_table_settable == 1@
@@ -336,7 +340,7 @@
 @else@
                                                   HANDLER_CAN_RONLY
 @end@
-#endif /* NETSNMP_DISABLE_SET_SUPPORT */
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
                                                   );
     if(NULL == reginfo) {
         snmp_log(LOG_ERR,"error registering table ${context}\n");
@@ -355,7 +359,7 @@
     if( access_multiplexer->post_request )
         mfd_modes |= BABY_STEP_POST_REQUEST;
     
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if( access_multiplexer->set_values )
         mfd_modes |= BABY_STEP_SET_VALUES;
     if( access_multiplexer->irreversible_commit )
@@ -378,7 +382,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if( access_multiplexer->undo_commit )
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
     
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
diff --git a/local/mib2c-conf.d/subagent.m2c b/local/mib2c-conf.d/subagent.m2c
index 52a8258..61fc26d 100644
--- a/local/mib2c-conf.d/subagent.m2c
+++ b/local/mib2c-conf.d/subagent.m2c
@@ -27,6 +27,18 @@
 @include generic-source-includes.m2i@
 #include <signal.h>
 
+/*
+ * If compiling within the net-snmp source code, this will trigger the feature
+ * detection mechansim to ensure the agent_check_and_process() function
+ * is left available even if --enable-minimialist is turned on.  If you
+ * have configured net-snmp using --enable-minimialist and want to compile
+ * this code externally to the Net-SNMP code base, then please add
+ * --with-features="agent_check_and_process enable_stderrlog" to your
+ * configure line.
+ */
+netsnmp_feature_require(agent_check_and_process)
+netsnmp_feature_require(enable_stderrlog)
+
 static int keep_running;
 
 static RETSIGTYPE
diff --git a/local/minimalist/feature-check b/local/minimalist/feature-check
new file mode 100755
index 0000000..aa4987e
--- /dev/null
+++ b/local/minimalist/feature-check
@@ -0,0 +1,126 @@
+#!/bin/sh
+
+#
+# feature-check: This script looks for feature statements in a file by
+# executing a compiler under CPP and extracting lines of the following
+# form:
+#
+# netsnmp_feature_provides(foo): used to indicate it provides feature "foo"
+# netsnmp_feature_require(bar): used to indicate it requires feature "bar"
+# netsnmp_feature_want(bar): used to indicate it wants feature "bar"
+#                    (but can live without it)
+#
+# Using these lines it then generates a list of feature requirement
+# defines in "include/net-snmp/net-snmp-features.h" which can then be
+# loaded in later passes at compile time.
+#
+# Defines produced when netsnmp_featre_require(bar) is present:
+#   #define NETSNMP_FEATURE_REQUIRE_BAR 1
+#
+# Defines produced when netsnmp_feature_want(bar) is present:
+#   #define NETSNMP_FEATURE_WANT_BAR 1
+#
+# And when all the features have been collected, they are also inverted via
+# the feature-post-check script:
+#
+#   #define NETSNMP_FEATURE_REMOVE_BARX 1  /* never required */
+#   #undef  NETSNMP_FEATURE_REMOVE_BAR      /* required */
+
+# Usage:
+
+# feature-check NORMAL-COMPILE-LINE
+
+SED=sed
+GREP=grep
+CC=gcc
+RM=rm
+
+if test "x$1" = "x--feature-global" ; then
+    # a global file should be included
+    shift
+    global=$1
+    shift
+fi
+
+sourcedir=$1
+shift
+
+source=$1
+shift
+
+destination=$1
+shift
+
+tmpf="$destination.1"
+
+compileline="$@"
+$compileline '-DNETSNMP_FEATURE_CHECKING=1' \
+             '-DNETSNMP_MINIMAL_CODE=1' \
+             '-Dnetsnmp_feature_require(X)=X NSF_RR' \
+             '-Dnetsnmp_feature_provide(X)=X NSF_PP' \
+             '-Dnetsnmp_feature_child_of(X,Y)=X,Y NSF_CO' \
+             '-Dnetsnmp_feature_want(X)=X NSF_WW' $source | \
+    $GREP NSF_ | $GREP -v '^#define' > $tmpf
+
+$RM -f $destination;
+touch $destination;
+
+# process requires
+firstrequire=1
+for i in `grep NSF_RR $tmpf | sed 's/ NSF_RR//'` ; do
+    if test $firstrequire = 1 ; then
+	echo "" >> $destination
+	echo "/* required by $sourcedir/$source */" >> $destination
+	firstrequire=0
+    fi
+    upper=`echo $i | tr a-z A-Z`
+    echo "#define NETSNMP_FEATURE_REQUIRE_$upper 1" >> $destination
+done
+
+# process provides
+firstfeature=1
+for i in `grep NSF_PP $tmpf | sed 's/ NSF_PP//'` ; do
+    if test $firstfeature = 1 ; then
+	echo "" >> $destination
+	echo "/* features provided by $sourcedir/$source */" >> $destination
+	firstfeature=0
+    fi
+    upper=`echo $i | tr a-z A-Z`
+    echo "#define NETSNMP_FEATURE_PROVIDE_$upper 1" >> $destination
+done
+
+# process children
+firstfeature=1
+for i in `grep NSF_CO $tmpf | sed 's/ NSF_CO//'` ; do
+    parent=`echo $i | sed 's/.*,//'`
+    child=`echo $i | sed 's/,.*//'`
+    if test $firstfeature = 1 ; then
+	echo "" >> $destination
+	echo "/* features provided by $sourcedir/$source */" >> $destination
+	firstfeature=0
+    fi
+    upperchild=`echo $child | tr a-z A-Z`
+    upperparent=`echo $parent | tr a-z A-Z`
+    echo "#define NETSNMP_FEATURE_${upperchild}_CHILD_OF_${upperparent} 1" >> $destination
+    echo "#define NETSNMP_FEATURE_PROVIDE_$upperchild 1" >> $destination
+done
+
+# process wants
+firstfeature=1
+for i in `grep NSF_WW $tmpf | sed 's/ NSF_WW//'` ; do
+    if test $firstfeature = 1 ; then
+	echo "" >> $destination
+	echo "/* features wanted by $sourcedir/$source */" >> $destination
+	firstfeature=0
+    fi
+    upper=`echo $i | tr a-z A-Z`
+    echo "#define NETSNMP_FEATURE_WANT_$upper 1" >> $destination
+done
+
+if test "x$global" != "x" ; then
+    cat $destination >> $global
+fi
+
+
+# clean up
+#$RM -f $tmpf
diff --git a/local/minimalist/feature-makedocs b/local/minimalist/feature-makedocs
new file mode 100644
index 0000000..f960191
--- /dev/null
+++ b/local/minimalist/feature-makedocs
@@ -0,0 +1,221 @@
+#!/usr/bin/perl
+
+use strict;
+use IO::File;
+use Getopt::Std;
+our %opts = (W => 2);
+
+getopts('ohwW:', \%opts) || usage();
+
+usage() if ($opts{'h'});
+
+usage() if ($#ARGV != 1);
+
+# should be the feature-details.h file
+my $inputfile = shift @ARGV;
+my $outputfile = shift @ARGV;
+
+my %features;
+my %top;
+my %files;
+my $reqfile;
+
+gather_data($inputfile);
+if ($opts{'w'}) {
+    print_wiki_mode($outputfile);
+} else {
+    print_org_mode($outputfile);
+}
+
+sub gather_data {
+    my ($inputfile) = @_;
+
+    open(I, $inputfile);
+    while(<I>) {
+	if (/(required|provided|wanted) by (.*) \*/) {
+	    $reqfile = $2;
+	} elsif (/define NETSNMP_FEATURE_PROVIDE_(.*) 1/) {
+	    my $lc = lc($1);
+	    die "no reqfile currently set; bug!" if (!defined($reqfile));
+
+	    add($lc);
+
+	    push @{$files{$reqfile}{'provides'}}, $lc;
+	    push @{$features{$lc}{'providedby'}}, $reqfile;
+
+	} elsif (/define NETSNMP_FEATURE_REQUIRE_(.*) 1/) {
+	    my $lc = lc($1);
+	    die "no reqfile currently set; bug!" if (!defined($reqfile));
+
+	    add($lc);
+
+	    push @{$files{$reqfile}{'requires'}}, $lc;
+	    push @{$features{$lc}{'requiredby'}}, $reqfile;
+
+	} elsif (/define NETSNMP_FEATURE_WANT_(.*) 1/) {
+	    my $lc = lc($1);
+	    die "no reqfile currently set; bug!" if (!defined($reqfile));
+
+	    add($lc);
+
+	    push @{$files{$reqfile}{'wants'}}, $lc;
+	    push @{$features{$lc}{'wantedby'}}, $reqfile;
+	} elsif (/define NETSNMP_FEATURE_(.*)_CHILD_OF_(.*) 1/) {
+	    my $child = lc($1);
+	    my $parent = lc($2);
+
+	    add_child($child, $parent);
+	}
+    }
+}
+
+sub add {
+    my ($name) = @_;
+    if (!exists($features{$name})) {
+	# new feature entirely, mark it as a top node
+	$top{$name} = 1;
+    }
+}
+
+sub add_child {
+    my ($child, $parent) = @_;
+
+    add($parent);
+
+    if (exists($top{$child})) {
+	# it's no longer a top node if it's a child of something else
+	delete $top{$child};
+    }
+    $features{$parent}{'children'}{$child}++;
+
+    $features{$child}{'providedby'}, $reqfile;
+}
+
+######################################################################
+# org-mode output
+#
+sub print_org_mode {
+    my ($outputfile) = @_;
+
+    my $fh = new IO::File;
+
+    if (!$fh->open("> $outputfile")) {
+	die "error!\n";
+    }
+
+    foreach my $node (sort keys(%top)) {
+	print_org_node($fh, $node, "*");
+    }
+}
+
+sub print_org_node {
+    my ($fh, $node, $prefix) = @_;
+
+    my $spaces = $prefix;
+    $spaces =~ s/./ /g;
+
+    print $fh "$prefix $node\n";
+    if (exists($features{$node}{'providedby'})) {
+	print $fh "$spaces + provided in file: " .
+	    join(", ", org_link_files(@{$features{$node}{'providedby'}})) . "\n";
+    }
+    if (exists($features{$node}{'requiredby'})) {
+	print $fh "$spaces + required in file: " .
+	    join(", ", org_link_files(@{$features{$node}{'requiredby'}})) . "\n";
+    }
+    if (exists($features{$node}{'wantedby'})) {
+	print $fh "$spaces + wanted in file: " .
+	    join(", ", org_link_files(@{$features{$node}{'wantedby'}})) . "\n";
+    }
+    if (exists($features{$node}{'children'})) {
+	foreach my $child (sort keys(%{$features{$node}{'children'}})) {
+	    print_org_node($fh, $child, $prefix . "*");
+	}
+    }
+}
+
+sub org_link_files {
+    my @files = @_;
+    map { $_ = "[[file:$_][$_]]"; } @files;
+    return @files;
+}
+
+######################################################################
+# wiki output
+#
+sub print_wiki_mode {
+    my ($outputfile) = @_;
+
+    my $fh = new IO::File;
+    my $depth = 0;
+
+    if (!$fh->open("> $outputfile")) {
+	die "error!\n";
+    }
+
+    print $fh "'''The contents of this page is auto-generated from local/minimalist/feature-makedocs; do not edit by hand (changes will be lost)'''\n\n";
+    print $fh "Details of the feature marking system and how it is used can be found at [[Feature Marking and Selection]]\n\n";
+
+    foreach my $node (sort keys(%top)) {
+	print_wiki_node($fh, $node, $depth+1);
+    }
+}
+
+sub print_wiki_node {
+    my ($fh, $node, $depth) = @_;
+
+    my $dataheader;
+    my $depthincrease = 1;
+
+    if ($depth > $opts{'W'}) {
+	print $fh "*" x ($depth - $opts{'W'} + 1) . " $node\n";
+	$dataheader = "*" x ($depth - $opts{'W'} + 2);
+	$depthincrease++;
+    } else {
+	print $fh "=" x $depth . " $node " . "=" x $depth . "\n";
+	$dataheader = "*";
+    }
+
+    if (exists($features{$node}{'providedby'})) {
+	print $fh "$dataheader provided in file: " .
+	    join(", ", wiki_link_files(@{$features{$node}{'providedby'}})) ."\n";
+    }
+    if (exists($features{$node}{'requiredby'})) {
+	print $fh "$dataheader required in file: " .
+	    join(", ", wiki_link_files(@{$features{$node}{'requiredby'}})) ."\n";
+    }
+    if (exists($features{$node}{'wantedby'})) {
+	print $fh "$dataheader wanted in file: " .
+	    join(", ", wiki_link_files(@{$features{$node}{'wantedby'}})) . "\n";
+    }
+    if (exists($features{$node}{'children'})) {
+	if ($depth >= $opts{'W'}) {
+	    print $fh "$dataheader Children:\n";
+	}
+	foreach my $child (sort keys(%{$features{$node}{'children'}})) {
+	    print_wiki_node($fh, $child, $depth + $depthincrease);
+	}
+    }
+}
+
+sub wiki_link_files {
+    my @files = @_;
+    map { $_ = "[http://net-snmp.svn.sourceforge.net/viewvc/net-snmp/trunk/net-snmp/$_?view=markup $_]"; } @files;
+    return @files;
+}
+
+######################################################################
+# help output
+#
+sub usage {
+    print "Usage: $0 [FLAGS] INPUTFILE OUTPUTFILE\n\n";
+    print "FLAGS:\n";
+    print "\t-h\thelp\n";
+    print "\t-o\tOutput style: Org-Mode [default]\n";
+    print "\t-w\tOutput style: wiki\n";
+    print "\t-W DEPTH\tWiki header to bullet list depth (default 2)\n";
+    print "\nINPUT/OUTPUT\n";
+    print "\tINPUTFILE:\tlocation of the include/net-snmp/feature-details.h file\n";
+    print "\tOUTPUTFILE:\tthe file to write the results to\n";
+    exit;
+}
diff --git a/local/minimalist/feature-remove b/local/minimalist/feature-remove
new file mode 100755
index 0000000..aae340d
--- /dev/null
+++ b/local/minimalist/feature-remove
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+#
+# feature-remove: removes features by defining special variables
+# indicating particular code segments are unneeded.  This is done by
+# examining the list of provided features and defining a REMOVE
+# equivalent if no other module required it.
+#
+# Arguments:
+#   feature-remove mainheader.h globalheader.h THEREST
+#
+# Where THEREST are a list of features to remove (default) or add.
+#
+#   --add switches to "adding" and --remove switches back.
+#
+# E.G.
+#   feature-remove mainheader.h globalheader.h oid_stash --add container_null
+#
+CP=cp
+
+featureheader="$1"
+featureheaderin="$1.in"
+featureheaderglobal="$2"
+shift
+shift
+
+argumenttype="--remove"
+removethese=""
+addthese=""
+
+while test "x$1" != "x" ; do
+    uc=`echo $1 | tr a-z A-Z`
+    case $1 in
+	--*)
+	    argumenttype="$1"
+	    ;;
+
+	*)
+	    if test "x$argumenttype" = "x--remove" ; then
+		removethese="$removethese $uc"
+	    else
+		addthese="$addthese $uc"
+	    fi
+	    ;;
+    esac
+    shift
+done
+
+echo "" > $featureheader
+echo "/* The following defines features that Net-SNMP HAS or has REMOVEd */" >> $featureheader
+
+haslist=" "
+
+for i in `grep NETSNMP_FEATURE_PROVIDE_ $featureheaderin | sed 's/.*FEATURE_PROVIDE_//;s/ .*//'` ; do
+    #
+    # If we were specifically asked to include it, then do so
+    #
+    if echo " $addthese " | grep " ${i} " > /dev/null ; then
+       # The user required it ; report we're using it
+	echo "#define NETSNMP_FEATURE_HAS_$i 1" >> $featureheader
+	haslist="${haslist}${i} "
+
+    #
+    # check to see if something requried it
+    #
+    elif grep "NETSNMP_FEATURE_REQUIRE_${i} " $featureheaderglobal > /dev/null ; then
+	# if so, make sure we weren't asked to remove it
+       	if echo  " $removethese "| grep " $i " > /dev/null ; then
+       	   # Uh oh; they specifically wanted it removed but it was required
+	   echo "Feature Error:"
+       	   echo " Feature '$i' was asked to be removed but something required it"
+       	   echo " See the $featureheaderglobal file for dependency details"
+	   echo ""
+           rm -f $featureheader
+       	   exit 1
+       	fi
+
+       	# something required it ; report we're using it
+       	echo "#define NETSNMP_FEATURE_HAS_$i 1" >> $featureheader
+	haslist="${haslist}${i} "
+
+    #
+    # check to see if something "wanted" it
+    #
+    elif grep "NETSNMP_FEATURE_WANT_${i} " $featureheaderglobal > /dev/null ; then
+	   # nothing required it, but something "wanted" it
+
+	   # check to make sure we weren't asked to exclude it
+           if echo " $removethese " | grep " $i " > /dev/null ; then
+               # we were specifically asked *not* to use this feature
+               echo "#define NETSNMP_FEATURE_REMOVE_$i 1" >> $featureheader
+           else
+	       # something wanted it, so we'll include it
+	       echo "#define NETSNMP_FEATURE_HAS_$i 1" >> $featureheader
+	       haslist="${haslist}${i} "
+           fi
+
+
+    #
+    # check to see if something required a parent
+    #
+    elif egrep NETSNMP_FEATURE_${i}_CHILD_OF $featureheaderglobal > /dev/null ; then
+	parentnames=`egrep NETSNMP_FEATURE_${i}_CHILD_OF $featureheaderglobal | sed 's/.*CHILD_OF_//;s/ .*//;'`
+
+	foundone=0
+	for parentname in $parentnames ; do
+   	    # if the parent was desired, then we are too:
+	    
+	    if test $foundone = 0 ; then
+		if egrep "NETSNMP_FEATURE_HAS_${parentname} " $featureheader > /dev/null ; then
+       		    echo "#define NETSNMP_FEATURE_HAS_$i 1" >> $featureheader
+		    haslist="${haslist}${i} "
+		    foundone=1
+		fi
+	    fi
+        done
+	if test $foundone = 0 ; then
+    	    echo "#define NETSNMP_FEATURE_REMOVE_$i 1" >> $featureheader
+	fi
+
+    #
+    # no one required or wanted it -- it is safe to remove it
+    #
+    else
+    	 echo "#define NETSNMP_FEATURE_REMOVE_$i 1" >> $featureheader
+    fi
+done
+
diff --git a/local/minimalist/find-unused-code b/local/minimalist/find-unused-code
new file mode 100755
index 0000000..89e3c8c
--- /dev/null
+++ b/local/minimalist/find-unused-code
@@ -0,0 +1,117 @@
+#!/usr/bin/perl
+
+# searches for .o files in the current directory and examines each for
+# defined functions (T) and undefined references (U) and lists
+# anything that isn't required by something else or itself
+
+# useful calling sorted by file:
+#   perl minimal/find-unused-code | sort 
+
+use File::Find;
+use Data::Dumper;
+use strict;
+use Getopt::GUI::Long;
+
+my %opts;
+
+LocalGetOptions(\%opts,
+		['g|grep',      "run find/grep to look for string usages"],
+    );
+
+my (@files, %defined, %lookingfor);
+
+find(\&dot_os, ".");
+
+foreach my $file (@files) {
+    collect_from_file($file);
+}
+
+
+if ($#ARGV > -1) {
+    print "Dumping found symbol usages:\n\n";
+    foreach my $arg (@ARGV) {
+	print "$arg:\n";
+	print "  ", join("\n  ", @{$defined{$arg}{'usages'}}),"\n\n";
+    }
+    exit;
+}
+
+foreach my $function (sort { $defined{$a}{'source'} cmp $defined{$b}{'source'} } keys(%defined)) {
+    if (exists($defined{$function}{'source'}) &&
+	!exists($defined{$function}{'usages'})) {
+	if (check_for_once_only($defined{$function}{'source'}, $function)) {
+	    printf("%-38s %-38s\n", $defined{$function}{'source'}, $function);
+	    if ($opts{'g'}) {
+		open(P,"find . -regex '.*.\\(c\\|xs\\)' | xargs grep -n $function|");
+		while(<P>) {
+		    print "  $_";
+		}
+		close(P);
+		print "\n";
+	    }
+	}
+    }
+}
+
+sub dot_os {
+    return if (!/\.o$/);
+    return if ($File::Find::name =~ /\/.libs\//);
+#    return if ($File::Find::name =~ /\/(perl|python)\//);
+    push @files, $File::Find::name;
+}
+
+sub collect_from_file {
+    my $file = shift;
+#    print "searching $file\n";
+    open(I,"nm $file|");
+    while(<I>) {
+	$defined{$1}{'source'} = $file if (/ T (.*)/);
+	push @{$defined{$1}{'usages'}}, $file if (/ U (.*)/);
+    }
+    close(I);
+}
+	
+sub check_for_once_only {
+    my ($file, $function) = @_;
+    $file =~ s/\.o/.c/;
+    open(I, $file);
+    my $usages = 0;
+    while(<I>) {
+	if (/$function/) {
+	    $usages++;
+	}
+	if ($usages > 1) {
+	    close(I);
+	    return 0;
+	}
+    }
+    return 1;
+}
+
+
+sub LocalGetOptions {
+    if (eval {require Getopt::GUI::Long;}) {
+        import Getopt::GUI::Long;
+        # optional configure call
+        Getopt::GUI::Long::Configure(qw(display_help no_ignore_case capture_output no_gui allow_zero));
+        return GetOptions(@_);
+    }
+    require Getopt::Long;
+    import Getopt::Long;
+    # optional configure call
+    Getopt::Long::Configure(qw(display_help no_ignore_case capture_output));
+    GetOptions(LocalOptionsMap(@_));
+}
+
+sub LocalOptionsMap {
+    my ($st, $cb, @opts) = ((ref($_[0]) eq 'HASH') 
+                            ? (1, 1, $_[0]) : (0, 2));
+    for (my $i = $st; $i <= $#_; $i += $cb) {
+        if ($_[$i]) {
+            next if (ref($_[$i]) eq 'ARRAY' && $_[$i][0] =~ /^GUI:/);
+            push @opts, ((ref($_[$i]) eq 'ARRAY') ? $_[$i][0] : $_[$i]);
+            push @opts, $_[$i+1] if ($cb == 2);
+        }
+    }
+    return @opts;
+}
diff --git a/local/minimalist/ignore.regexp b/local/minimalist/ignore.regexp
new file mode 100644
index 0000000..e09b99c
--- /dev/null
+++ b/local/minimalist/ignore.regexp
@@ -0,0 +1,4 @@
+~$
+#$
+\/.#
+\/.svn\/
diff --git a/local/minimalist/remove-unneeded-modules b/local/minimalist/remove-unneeded-modules
new file mode 100755
index 0000000..ad45954
--- /dev/null
+++ b/local/minimalist/remove-unneeded-modules
@@ -0,0 +1,130 @@
+#!/bin/perl
+
+# steps:
+# 1) run configure
+# 2) perl local/minimalist/remove-unneeded-modules
+# 3) make depend
+# 4) make
+
+use File::Find;
+use Data::Dumper;
+use strict;
+
+my %exceptions = qw(
+   agent/mibgroup/mibdefs.h              	              1
+   agent/mibgroup/struct.h               	              1
+   agent/mibgroup/agentx/protocol.h      	              1
+   agent/mibgroup/agentx/agentx_config.h 	              1
+   agent/mibgroup/agentx/subagent.h      	              1
+   agent/mibgroup/mib_module_includes.h  	              1
+   agent/mibgroup/mib_module_inits.h     	              1
+   agent/mibgroup/mib_module_dot_conf.h  	              1
+   agent/mibgroup/mib_module_shutdown.h  	              1
+   agent/mibgroup/agent_module_includes.h	              1
+   agent/mibgroup/agent_module_inits.h   	              1
+   agent/mibgroup/agent_module_dot_conf.h	              1
+   agent/mibgroup/agent_module_shutdown.h	              1
+   agent/mibgroup/mibII/vacm_conf.c      	              1
+   agent/mibgroup/snmpv3/usmConf.c       	              1
+   agent/mibgroup/utilities/iquery.c     	              1
+   agent/mibgroup/mibII/vacm_conf.h      	              1
+   agent/mibgroup/snmpv3/usmConf.h       	              1
+   agent/mibgroup/utilities/iquery.h     	              1
+   agent/mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h        1
+   agent/mibgroup/host_res.h                                  1
+   agent/mibgroup/hr_filesys.h                                1
+   agent/mibgroup/if-mib/ifTable/ifTable_defs.h               1
+   agent/mibgroup/ifTable_defs.h                              1
+   agent/mibgroup/mibII/mibII_common.h                        1
+   agent/mibgroup/mnttypes.h                                  1
+   agent/mibgroup/utilities/execute.h                         1
+);
+
+my %opts;
+
+LocalGetOptions(\%opts,
+		['n|dry-run',      "Dry-run, just say what you would do"],
+		['v|verbose',      "Show what files are being left too"],
+    );
+
+my $inputMakefile = $ARGV[0] || "agent/mibgroup/Makefile";
+my $inputDir = $ARGV[1] || "agent/mibgroup";
+
+my $collecting = 0;
+my (%files, @files);
+
+open(I, $inputMakefile);
+while(<I>) {
+    if (/mib_module_list_c=/) {
+	$collecting = 1;
+    } elsif ($collecting) {
+	if (! /\\\s*$/) {
+	    $collecting = 0;
+	}
+	chomp();
+	s/\\//;
+	s/\s*//g;
+	s/\.c//;
+	push @files, "agent/mibgroup/$_";
+	$files{"agent/mibgroup/$_.c"} = 1;
+	$files{"agent/mibgroup/$_.h"} = 1;
+    }
+}
+
+find(\&remove_files, $inputDir);
+
+sub remove_files {
+    return if (!/\.[ch]$/);
+    return if (/\.h$/); # XXX: we need to delete headers eventually too
+    return if (/_constants.h/);
+    return if (exists($exceptions{$File::Find::name}));
+
+    if (!exists($files{$File::Find::name})) {
+	Unlink($_, $File::Find::name);
+    } elsif ($opts{'v'}) {
+	print "Leaving $File::Find::name\n";
+    }
+}
+
+sub Unlink {
+    my ($file, $fullfile) = @_;
+    print "Removing $fullfile\n";
+    if (!$opts{'n'}) {
+	unlink($file);
+	if (-f "$file") {
+	    print "*** FAILED to remove $file\n"; 
+	}
+    }
+}
+
+
+sub LocalGetOptions {
+    if (eval {require Getopt::GUI::Long;}) {
+        import Getopt::GUI::Long;
+        # optional configure call
+	my @gopts = qw(no_ignore_case no_gui allow_zero);
+	if ($Getopt::GUI::Long::VERSION > 0.2) {
+	    push @gopts, qw(display_help capture_output);
+	}
+        Getopt::GUI::Long::Configure(@gopts);
+        return GetOptions(@_);
+    }
+    require Getopt::Long;
+    import Getopt::Long;
+    # optional configure call
+    Getopt::Long::Configure(qw(display_help no_ignore_case capture_output));
+    GetOptions(LocalOptionsMap(@_));
+}
+
+sub LocalOptionsMap {
+    my ($st, $cb, @opts) = ((ref($_[0]) eq 'HASH') 
+                            ? (1, 1, $_[0]) : (0, 2));
+    for (my $i = $st; $i <= $#_; $i += $cb) {
+        if ($_[$i]) {
+            next if (ref($_[$i]) eq 'ARRAY' && $_[$i][0] =~ /^GUI:/);
+            push @opts, ((ref($_[$i]) eq 'ARRAY') ? $_[$i][0] : $_[$i]);
+            push @opts, $_[$i+1] if ($cb == 2);
+        }
+    }
+    return @opts;
+}
diff --git a/local/minimalist/removeifdefcode.pl b/local/minimalist/removeifdefcode.pl
new file mode 100755
index 0000000..5a64c05
--- /dev/null
+++ b/local/minimalist/removeifdefcode.pl
@@ -0,0 +1,333 @@
+#! /usr/bin/perl
+
+use strict;
+use File::Copy;
+use File::Basename;
+use IO::File;
+use Getopt::Std;
+
+my $ID_NOREAD  = "NETSNMP_NO_READ_SUPPORT";
+my $ID_NOWRITE = "NETSNMP_NO_WRITE_SUPPORT";
+# my $ID_MIN     = "NETSNMP_MINIMAL_CODE";
+
+my($ST_OFF, $ST_IF, $ST_ELSE, $ST_IFN, $ST_ELSEN) =
+  ("off", "if", "else", "ifnot", "elsenot");
+
+my %opts    = ();
+my %thash   = ();
+my $canwrite = 1; # current write state
+
+my($appname,$apppath) = fileparse($0);
+
+my $minimal_include_path = "include/net-snmp/net-snmp-features.h";
+
+
+if ( (!getopts("rwmi:v",\%opts)) || (1 != $#ARGV) ) {
+  print "$appname [options] from-directory to-direpctory\n";
+  print "-r     parse out code unneeded by $ID_NOREAD ifdef\n";
+  print "-w     parse out code unneeded by $ID_NOWRITE ifdef (DEFAULT)\n";
+  print "-m     parse out code unneeded according minimalist ifdefs\n";
+  print "       requires from-directory to be the top of the net-snmp tree\n";
+  print "       (This is multiple ifdefs auto selected depending\n";
+  print "        on the net-snmp source configuration)\n\n";
+  print "-i 'ignore-file'  file of files to ignore (not copy)\n";
+  print "-v     print verbose info to standard out\n";
+  die "Error: two command line arguments required\n";
+}
+
+#default to everything
+if ( (!exists $opts{r}) && (!exists $opts{w}) && (!exists $opts{m}) ) {
+  $thash{"$ID_NOWRITE"} = "$ST_OFF";
+}
+else {
+  $thash{"$ID_NOREAD"}  = "$ST_OFF" if ( exists $opts{r} );
+  $thash{"$ID_NOWRITE"} = "$ST_OFF" if ( exists $opts{w} );
+}
+
+my $fromdir = $ARGV[0];
+my $todir   = $ARGV[1];
+
+if ( !(-e $fromdir) ) {
+  die "Error: $appname: from directory does not exist: '$fromdir'\n";
+}
+if ( !(-d $fromdir) ) {
+    die "Error: $appname: from directory, '$fromdir', must be a directory\n";
+}
+
+if ( exists $opts{m} ) {
+    load_minamal_ifdefs();
+}
+
+# create search string from tags
+# minimal must be done before this
+my $search = join "|", (keys %thash);
+
+
+# check for and load ignore file
+my $igstring = "";
+if ( exists $opts{i} ) {
+  open my($IH), "< $opts{i}" or
+    die "Could not open ignore-file '$opts{i}': $!";
+  my @iglist = <$IH>;
+  $IH->close();
+  chomp @iglist;
+  $igstring = join "|", @iglist;
+  $igstring = "(" . $igstring . ")";
+  print "ignore string: \'$igstring\'\n" if (exists $opts{v});
+}
+
+
+
+if ( -e $todir ) {
+  if ( ((-d $fromdir) && !(-d $todir)) ||
+	   (!(-d $fromdir) && (-d $todir)) ) {
+	die "Error: $appname: from-directory and to-directory must both either be a file or both be a directory\n";
+  }
+}
+else {
+  if (-d $fromdir) {
+	print "Warning: $appname: '$todir' does not exist, creating\n";
+	mkdir "$todir" or
+      die "Error: $appname: Unable to create to-directory '$todir': $!\n";
+  }
+}
+
+if (-d $fromdir) {
+  parsedirectory($fromdir, $todir);
+}
+else {
+  parsefile($fromdir, $todir);
+}
+
+
+
+exit(0);
+
+
+# PROCEDURES  PROCEDURES  PROCEDURES  PROCEDURES  PROCEDURES
+
+
+sub parsedirectory {
+  my($fdir, $tdir) = @_;
+
+  my @ldirs = ();
+  my $DH;
+  opendir my($DH), $fdir or die "Could not open directory '$fdir': $!";
+  if ( !(-e $tdir) || !(-d $tdir) ) {
+    mkdir $tdir or die "Could not create directory '$tdir': $!";
+  }
+  my @flist = readdir $DH;
+  closedir $DH;
+  # remove . and ..
+  @flist = grep (! /(^\.$|^\.\.$)/ , @flist);
+
+  while (my $name = shift @flist) {
+    if (-d "$fdir/$name") {
+      push @ldirs, "$name";
+    }
+    else {
+      parsefile("$fdir/$name", "$tdir/$name");
+    }
+  }
+
+  while (my $name = shift @ldirs) {
+    parsedirectory("$fdir/$name", "$tdir/$name")
+  }
+
+} # parsedirectory
+
+
+# returns 1 if current state for tag is write, 0 otherwise
+sub iswritestate {
+  my $tag = "";
+
+  foreach $tag (keys %thash) {
+	if ( ($thash{$tag} eq "$ST_ELSE") ||
+		 ($thash{$tag} eq "$ST_IFN") ) {
+	  return(0);
+    }
+  }
+
+  return(1);
+} # iswritestate
+
+
+# Check $line for ifdef state changes for all of the tags and change
+# state.
+# If there is a state change error return 0, otherwise return 1;
+
+sub checkifdef {
+  my($TF, $line, $fromfilename) = @_;
+
+  if ( $line =~ /(#ifdef|#ifndef|#else|#endif).*($search)(\s|$|\*)/ ) {
+    my $copt = $1;
+    my $tag  = $2;
+
+	if ( $copt eq "#ifdef" ) {
+      if ($thash{"$tag"} eq "$ST_OFF") {
+        $thash{"$tag"} = "$ST_IF";
+        print "state change $tag: $ST_OFF -> $ST_IF\n" if (exists $opts{v});
+        $canwrite = iswritestate();
+      }
+      else {
+        print "Error: $fromfilename: Found '#ifdef $tag' with state $thash{$tag}\n";
+        return 0;
+      }
+    }
+    elsif ( $copt eq "#ifndef" ) {
+      if ($thash{"$tag"} eq "$ST_OFF") {
+        # before changing to a non-write state (ifn) print #IFNDEF
+        # line, if current state is a write state.
+        print $TF "$line"  if ( $canwrite );
+        $thash{"$tag"} = "$ST_IFN";
+        print "state change $tag: $ST_OFF -> $ST_IFN\n" if (exists $opts{v});
+        $canwrite = iswritestate();
+      }
+      else {
+        print "Error: $fromfilename: Found '#ifndef $tag' with state $thash{$tag}\n";
+        return 0;
+      }
+    }
+    elsif ( $copt eq "#else" ) {
+      if ($thash{"$tag"} eq "$ST_IF") {
+        # before changing to a non-write state (else) print #else
+        # line, if current state is a write state.
+        print $TF "$line"  if ( $canwrite );
+        $thash{"$tag"} = "$ST_ELSE";
+        print "state change $tag: $ST_IF -> $ST_ELSE\n" if (exists $opts{v});
+        $canwrite = iswritestate();
+      }
+      elsif ($thash{"$tag"} eq "$ST_IFN") {
+        $thash{"$tag"} = "$ST_ELSEN";
+        print "state change $tag: $ST_IFN -> $ST_ELSEN\n" if (exists $opts{v});
+        $canwrite = iswritestate();
+      }
+      else {
+        print "Error: $fromfilename: Found '#else (...) $tag' with state $thash{$tag}\n";
+        return 0;
+      }
+    }
+    elsif ( $copt eq "#endif" ) {
+      if (($thash{"$tag"} eq "$ST_ELSE")  || ($thash{"$tag"} eq "$ST_IF") ||
+          ($thash{"$tag"} eq "$ST_ELSEN") || ($thash{"$tag"} eq "$ST_IFN"))
+      {
+        print "state change $tag: $thash{$tag} -> $ST_OFF\n"
+          if (exists $opts{v});
+        $thash{"$tag"} = "$ST_OFF";
+        $canwrite = iswritestate();
+      }
+      else {
+        print "Error: Found '#endif (...) $tag' with state $thash{$tag}\n";
+        return 0;
+      }
+    }
+
+  } # foreach tag
+
+  return 1;
+} # checkifdef
+
+
+sub parsefile {
+  my($fname, $tname) = @_;
+  my $FF; my $TF;
+  my @fromfile = ();
+  $canwrite = 1;
+
+  # ignore file for file names
+  if ( (exists $opts{i}) && ("$fname" =~  /$igstring/) ) {
+    print "IGNORING $fname\n"  if ( exists $opts{v} );
+    return 1;
+  }
+
+  print "Info: Opening '$fname'\n" if ( exists $opts{v} );
+  if ( !(open($FF, "< $fname")) ) {
+	print "Warning: unable to open input file, skipping: '$fname': $!\n";
+	return 0;
+  }
+
+  my @fromfile = <$FF>;
+  $FF->close();
+
+  if ( !(open($TF, "> $tname")) ) {
+	print "Warning: unable to open output file, skipping: '$tname': $!\n";
+	return 0;
+  }
+  my $mode = (stat("$fname"))[2];
+  if ($mode) { my $resp = chmod $mode, "$tname"; }
+
+  my $line   = "";
+  my @tout  = ();
+  my $retval = 1;
+
+  while ( $line = shift @fromfile ) {
+    # check for any ifdef state changes
+	if ( ! checkifdef($TF, $line, $fname) ) {
+      $FF->close();
+      $TF->close();
+      die "Error: tag error in file \'$fname\', exiting\n";
+    }
+
+    if ( $canwrite ) {
+	  print $TF "$line";
+	}
+	else {
+	  print "Info: not copying: $fname: $line" if ( exists $opts{v} );
+    }
+
+  }
+
+  if (! $canwrite) {
+      print "End of $fname reached and we're not reset into 'canwrite' state\n";
+  }
+  $TF->close();
+
+  return $retval;
+} # parsefile
+
+
+# note, fromdir should have already been checked to exist and be a
+# directory
+sub load_minamal_ifdefs {
+    my @filelist = ();
+    my $MF;
+    
+    if ( !(open($MF, "< $fromdir/$minimal_include_path")) ) {
+        die "Unable to open main minimal feature file: '$fromdir/$minimal_include_path'\n";
+    }
+    my $line;
+    # skip preceding lines
+    while ( ($line = <$MF>) &&
+            ($line !~ /^#else.*NETSNMP_FEATURE_CHECKING/ ) ) {
+    }
+    # grab the fetaure .h files
+    while ( ($line = <$MF>) &&
+            ($line !~ /^#endif.*NET_SNMP_FEATURE_CHECKING/) ) {
+        if ($line =~ /include.*<(.*.h)>/) {
+            push @filelist, $1;
+        }
+    }
+
+    close($MF);
+
+    while (my $fname = shift @filelist) {
+        if ( !( -e "$fromdir/include/$fname" ) )  {
+            print "Warn: feature file does not exist, skipping: '$fromdir/include/$fname'";
+            next;
+        }
+        if ( !(open($MF, "< $fromdir/include/$fname")) ) {
+            die "Unable to open minimal feature file: '$fromdir/include/$fname'\n";
+        }
+        while ( ($line = <$MF>) ) {
+            if ( $line =~ /^#define.*(NETSNMP_FEATURE_REMOVE[^ ]+) / ) {
+                $thash{"$1"} = $ST_OFF;
+            }
+        }
+        close($MF);
+    }
+        
+} # load_minamal_ifdefs
+
+
+
+
diff --git a/local/minimalist/sizetests b/local/minimalist/sizetests
new file mode 100644
index 0000000..4ecd654
--- /dev/null
+++ b/local/minimalist/sizetests
@@ -0,0 +1,359 @@
+#!/usr/bin/perl
+
+use strict;
+use Data::Dumper;
+use Getopt::Std;
+use IO::File;
+our %opts = (d => 'size-tests');
+
+# default arguments go here
+my @sets =
+    ({
+	"with-defaults" => '',
+     });
+
+my %base_args = %{$sets[0]};
+my ($basename, $basenum);
+
+getopts('t:hlcD:nj:o:eb:T', \%opts) || usage();
+
+$opts{'j'} = "-j$opts{j}" if (exists($opts{'j'}));
+
+usage() if ($opts{'h'});
+
+my @argumentsets =
+    (
+     {
+	 title => 'security-types',
+	 arguments =>
+	 {
+	     usm => {
+		 'with-security-modules' => 'usm',
+	     },
+	     dtlsandtls => {
+		 'with-security-modules'     => 'tsm',
+		 'with-out-security-modules' => 'usm',
+		 'with-transports'           => 'DTLSUDP TLSTCP',
+		 'with-mib-modules'          => 'tlstm-mib tsm-mib'
+	     },
+	     usmanddtlsandtls => {
+		 'with-security-modules'     => 'tsm usm',
+		 'with-transports'           => 'DTLSUDP TLSTCP',
+		 'with-mib-modules'          => 'tlstm-mib tsm-mib'
+	     }
+	 }
+     },
+     {
+	 title => 'minimalist',
+	 arguments =>
+	 { 
+	     minimal => {
+		 'enable-minimalist'    => '',
+	     },
+	     'not-minimal' => {
+	     }
+	 }
+     },
+     {
+	 title => 'mib-loading',
+	 arguments =>
+	 { 
+	     'without-mib-loading' => {
+		 'disable-mib-loading'    => '',
+	     },
+	     'with-mib-loading' => {
+	     }
+	 }
+     },
+     {
+	 title => 'debugging',
+	 arguments =>
+	 { 
+	     'without-debugging' => {
+		 'disable-debugging'    => '',
+	     },
+	     'with-debugging' => {
+	     }
+	 }
+     },
+     {
+	 title => 'logging',
+	 arguments =>
+	 { 
+	     'without-logging' => {
+		 'with-out-features'    => 'logging',
+	     },
+	     'with-logging' => {
+	     }
+	 }
+     },
+     {
+	 title => 'agent-mibs',
+	 arguments =>
+	 { 
+	     'full-agent' => {
+	     },
+	     'mini-agent' => {
+		 'enable-mini-agent' => '',
+	     }
+	 }
+     },
+     {
+	 title => 'protocol-support',
+	 arguments =>
+	 {
+	     'everything' => {
+	     },
+	     'read-only' => {
+		 'enable-read-only' => '',
+	     },
+	     'notify-only' => {
+		 'enable-notify-only' => '',
+	     }
+	 }
+     },
+     {
+	 title => 'perl',
+	 arguments =>
+	 { 
+	     'without-perl-modules' => {
+		 'without-perl-modules'    => '',
+		 'disable-embedded-perl' => '',
+	     },
+	     'with-perl-no-embedding' => {
+		 'with-perl-modules'    => '',
+		 'disable-embedded-perl' => '',
+	     },
+	     'with-perl-and-embedding' => {
+		 'with-perl-modules'    => '',
+		 'enable-embedded-perl' => '',
+	     }
+	 }
+     },
+    );
+
+# map these to a referencable lookup hash
+my %argumentsets;
+foreach my $set (@argumentsets) {
+    $argumentsets{$set->{'title'}} = $set;
+}
+
+if ($opts{'l'}) {
+    print "Types available:\n";
+    printf("  %-40.40s %s\n", "Test Title", "Number of subtests");
+    printf("  %-40.40s %s\n", "-" x 39, "-" x length("Number of subtests"));
+    foreach my $type (@argumentsets) {
+	my @keys = keys(%{$type->{'arguments'}});
+	printf("  %-40.40s %s\n", $type->{'title'}, $#keys+1);
+    }
+    exit;
+}
+
+my %types;
+if ($opts{'t'}) {
+    my @types = split(/,\s*/, $opts{'t'});
+    foreach my $type (@types) {
+	$types{$type} = 1;
+    }
+}
+
+if ($opts{'b'}) {
+    # use this set as the base default set of arguments
+    ($basename, $basenum) = ($opts{'b'} =~ /(.*):(\d+)/);
+    if (!exists($argumentsets{$basename})) {
+	printf STDERR "failed to find set for -b argument: %s\n", $basename;
+	exit(1);
+    }
+    @sets = add_in_flags($argumentsets{$basename}, \%base_args, ());
+    @sets = @sets[$basenum];
+    %base_args = %{$sets[0]};
+}
+
+foreach my $set (@argumentsets) {
+    if (!$opts{'t'} || exists($types{$set->{'title'}})) {
+        if ($basename && $set->{'title'} eq $basename) {
+            next;
+        }
+	@sets = add_in_flags($set, \%base_args, @sets);
+    }
+}
+
+if ($opts{'c'}) {
+    # print the configure flags
+    foreach my $set (@sets) {
+	print "$set->{'title'}:\n";
+	print " ", generate_configure_flags($set), "\n";
+    }
+    exit;
+}
+
+my $summaryfile;
+if ($opts{'o'} && !$opts{'n'}) {
+    $summaryfile = new IO::File;
+    $summaryfile->open(">$opts{o}");
+}
+
+my $count = 0;
+foreach my $set (@sets) {
+    $count++;
+    build_set($count, $set);
+}
+
+sub add_in_flags {
+    my ($argumentset, $base_flags, @current_flags) = @_;
+
+    my @new_flags;
+
+    # do a linear search of the options
+    if (! $opts{'e'}) {
+	@new_flags = @current_flags;
+	foreach my $newargs (keys(%{$argumentset->{'arguments'}})) {
+	    my %flags = %$base_flags;
+
+	    $flags{'title'} = "$flags{'title'}:$newargs";
+
+	    foreach my $newflag (keys(%{$argumentset->{'arguments'}{$newargs}})) {
+
+		$flags{$newflag} .= " $argumentset->{'arguments'}{$newargs}{$newflag}";
+	    }
+	    push @new_flags, \%flags;
+	}
+	return @new_flags;
+    }
+
+    # or an exponential search
+    foreach my $flags (@current_flags) {
+	foreach my $newargs (keys(%{$argumentset->{'arguments'}})) {
+	    my %flags = %{$flags};  # copy the existing hash-set of flags
+	    
+	    if (exists($flags{'title'})) {
+		$flags{'title'} .= ", $newargs";
+	    } else {
+		$flags{'title'} .= "$newargs";
+	    }
+	    foreach my $newflag (keys(%{$argumentset->{'arguments'}{$newargs}})) {
+
+		$flags{$newflag} .= " $argumentset->{'arguments'}{$newargs}{$newflag}";
+	    }
+
+	    push @new_flags, \%flags;
+	}
+    }
+
+    return @new_flags;
+}
+
+sub generate_configure_flags {
+    my ($arguments) = @_;
+    my $line = "";
+    foreach my $arg (keys(%$arguments)) {
+	next if ($arg eq 'title');
+	if ($arguments->{$arg} =~ /^\s*$/) {
+	    $line .= " --$arg";
+	} else {
+	    $line .= " --$arg=\"$arguments->{$arg}\"";
+	}
+    }
+    return $line;
+}
+
+sub build_set {
+    my ($num, $arguments) = @_;
+
+    $num = sprintf("%03d", $num);
+
+    my $file;
+
+    if (!$opts{'n'}) {
+	mkdir $opts{'d'} if (! -d $opts{'d'});
+	die "failed to create the $opts{'d'} directory" if (! -d $opts{'d'});
+
+	$file = new IO::File;
+	$file->open(">$opts{'d'}/$num-0-cmd-summary");
+	$file->print("Creating output for: $arguments->{'title'}\n");
+    }
+
+    print "==================== $arguments->{'title'}\n";
+
+
+    System ($file, $num, "1-distclean", "make distclean");
+    System ($file, $num, "2-configure",
+	    "./configure " . generate_configure_flags($arguments));
+    System ($file, $num, "3-features", "make features");
+    System ($file, $num, "4-make", "make $opts{'j'}");
+    System ($file, $num, "5-unused-code", "perl local/minimalist/find-unused-code -g");
+    System ($file, $num, "6-testing", "make -C testing test") if ($opts{'T'});
+
+    if (!$opts{'n'}) {
+	analyze_size($arguments->{'title'}, "$opts{'d'}/$num-9-results");
+    }
+}
+
+sub analyze_size {
+    my ($title, $filename) = @_;
+
+    my $outfile = new IO::File;
+    $outfile->open(">$filename");
+
+    print "Results for: $title\n";
+    printf $outfile "Results for: $title\n";
+    printf ("%-50.50s %10s\n", "-" x 49, "-" x 10);
+    printf $outfile ("%-50.50s %10s\n", "-" x 49, "-" x 10);
+
+    my $totalsize = 0;
+    foreach my $buildfile (glob("snmplib/.libs/lib*.so.*.0.0"),
+			   glob("agent/.libs/lib*.so.*.0.0"),
+			   "agent/.libs/snmpd") {
+
+	my @info = stat($buildfile);
+	printf $outfile ("%-50.50s %10s\n", $buildfile, $info[7]);
+	printf("%-50.50s %10s\n", $buildfile, $info[7]);
+	$totalsize += $info[7];
+    }
+    printf $outfile ("%-50.50s %10s\n", "-" x 49, "-" x 10);
+    printf $outfile ("%-50.50s %10s bytes\n", "TOTAL", $totalsize);
+
+    printf("%-50.50s %10s\n", "-" x 49, "-" x 10);
+    printf("%-50.50s %10s bytes\n", "TOTAL", $totalsize);
+
+    if (defined($summaryfile)) {
+	my $restricted_title = $title;
+	$restricted_title =~ s/[^a-zA-Z]/_/g;
+	printf $summaryfile "%10s %s \n", $totalsize, $title;
+    }
+
+    return $totalsize;
+}
+
+sub usage {
+    print "Usage: $0 [FLAGS]\n\n";
+    print "FLAGS:\n";
+    print "  -h\t\thelp\n";
+    print "  -t TYPES\tSelect types to analyze (default = all)\n";
+    print "  -l\t\tList available types\n";
+    print "  -c\t\tPrint the configuration flags that would be used\n";
+    print "  -D DIR\tSave data results to this directory\n";
+    print "  -o FILE\tSave a complete summary chart to FILE\n"; 
+    print "  -n\t\tDry run -- only show the commands to execute\n";
+    print "  -j NUM\tExecute make with parallel building (-jNUM)\n";
+    print "  -e\t\tUse exponential expansion (all combos) of the requested options\n";
+    print "  -b NAME:NUM\tUse NAME and the NUM'th set as the base arguments to start from\n";
+    print "  -T\t\tRun 'make test' at each step as well\n";
+    exit;
+}
+
+sub System {
+    my $file  = shift;
+    my $num   = shift;
+    my $title = shift;
+    my $pipe = " 2>&1 | tee $opts{'d'}/$num-$title.out\n";
+
+    print "### ", join(" ", @_), $pipe;
+    if (!$opts{'n'} && $file) {
+	print $file "### ", join(" ", @_), "\n";
+    }
+
+    if (!$opts{'n'}) {
+	system(join(" ", @_) . $pipe);
+    }
+}
diff --git a/local/net-snmp-cert b/local/net-snmp-cert
index 852a47f..a45dc57 100755
--- a/local/net-snmp-cert
+++ b/local/net-snmp-cert
@@ -1519,7 +1519,7 @@
 
   # Existing openssl.conf tmpl will be preserved
   if (-f $ssl_cfg_in) {
-    NetSNMP::Cert::dwarn("OpenSSL template exists: preserving...", $opts);
+    NetSNMP::Cert::dwarn("OpenSSL template exists ($ssl_cfg_in): preserving...", $opts);
   }
 
   if (not -f $ssl_cfg_in) {
diff --git a/local/snmpconf b/local/snmpconf.in
similarity index 99%
rename from local/snmpconf
rename to local/snmpconf.in
index 37a5136..bff8025 100755
--- a/local/snmpconf
+++ b/local/snmpconf.in
@@ -92,13 +92,9 @@
 }
 
 #
-# Expand the search path in case it contains multiple directories
-# separated by : (Unix) or ; (Win32)
+# Expand the search path in case it contains multiple directories.
 #
-my $ENV_SEPARATOR = ':';
-if ($^O eq 'MSWin32') {
-  $ENV_SEPARATOR = ';';
-}
+my $ENV_SEPARATOR = '@ENV_SEPARATOR@';
 my @searchpath = split(/$ENV_SEPARATOR/, $confpath);
 push @searchpath, "/usr/local/etc/snmp";
 push @searchpath, ".";
diff --git a/ltmain.sh b/ltmain.sh
index 1e3b146..ed1814f 100755
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,9 +1,9 @@
-# Generated from ltmain.m4sh.
 
-# ltmain.sh (GNU libtool) 2.2.6
+# libtool (GNU libtool) 2.4
 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
@@ -32,50 +32,56 @@
 #
 # Provide generalized library-building support services.
 #
-#     --config             show all configuration variables
-#     --debug              enable verbose shell tracing
-# -n, --dry-run            display commands without modifying any files
-#     --features           display basic configuration information and exit
-#     --mode=MODE          use operation mode MODE
-#     --preserve-dup-deps  don't remove duplicate dependency libraries
-#     --quiet, --silent    don't print informational messages
-#     --tag=TAG            use configuration variables from tag TAG
-# -v, --verbose            print informational messages (default)
-#     --version            print version information
-# -h, --help               print short or long help message
+#       --config             show all configuration variables
+#       --debug              enable verbose shell tracing
+#   -n, --dry-run            display commands without modifying any files
+#       --features           display basic configuration information and exit
+#       --mode=MODE          use operation mode MODE
+#       --preserve-dup-deps  don't remove duplicate dependency libraries
+#       --quiet, --silent    don't print informational messages
+#       --no-quiet, --no-silent
+#                            print informational messages (default)
+#       --tag=TAG            use configuration variables from tag TAG
+#   -v, --verbose            print more informational messages than default
+#       --no-verbose         don't print the extra informational messages
+#       --version            print version information
+#   -h, --help, --help-all   print short, long, or detailed help message
 #
 # MODE must be one of the following:
 #
-#       clean              remove files from the build directory
-#       compile            compile a source file into a libtool object
-#       execute            automatically set library path, then run a program
-#       finish             complete the installation of libtool libraries
-#       install            install libraries or executables
-#       link               create a library or an executable
-#       uninstall          remove libraries from an installed directory
+#         clean              remove files from the build directory
+#         compile            compile a source file into a libtool object
+#         execute            automatically set library path, then run a program
+#         finish             complete the installation of libtool libraries
+#         install            install libraries or executables
+#         link               create a library or an executable
+#         uninstall          remove libraries from an installed directory
 #
-# MODE-ARGS vary depending on the MODE.
+# MODE-ARGS vary depending on the MODE.  When passed as first option,
+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
 # Try `$progname --help --mode=MODE' for a more detailed description of MODE.
 #
 # When reporting a bug, please describe a test case to reproduce it and
 # include the following information:
 #
-#       host-triplet:	$host
-#       shell:		$SHELL
-#       compiler:		$LTCC
-#       compiler flags:		$LTCFLAGS
-#       linker:		$LD (gnu? $with_gnu_ld)
-#       $progname:		(GNU libtool) 2.2.6
-#       automake:		$automake_version
-#       autoconf:		$autoconf_version
+#         host-triplet:	$host
+#         shell:		$SHELL
+#         compiler:		$LTCC
+#         compiler flags:		$LTCFLAGS
+#         linker:		$LD (gnu? $with_gnu_ld)
+#         $progname:	(GNU libtool) 2.4
+#         automake:	$automake_version
+#         autoconf:	$autoconf_version
 #
 # Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
 
-PROGRAM=ltmain.sh
+PROGRAM=libtool
 PACKAGE=libtool
-VERSION=2.2.6
+VERSION=2.4
 TIMESTAMP=""
-package_revision=1.3012
+package_revision=1.3293
 
 # Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -91,10 +97,15 @@
 BIN_SH=xpg4; export BIN_SH # for Tru64
 DUALCASE=1; export DUALCASE # for MKS sh
 
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
 # NLS nuisances: We save the old values to restore during execute mode.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
 lt_user_locale=
 lt_safe_locale=
 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
@@ -107,24 +118,33 @@
 	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
 	fi"
 done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
 
 $lt_unset CDPATH
 
 
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
 
 
 
 : ${CP="cp -f"}
-: ${ECHO="echo"}
-: ${EGREP="/usr/bin/grep -E"}
-: ${FGREP="/usr/bin/grep -F"}
-: ${GREP="/usr/bin/grep"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${EGREP="grep -E"}
+: ${FGREP="grep -F"}
+: ${GREP="grep"}
 : ${LN_S="ln -s"}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
-: ${SED="/opt/local/bin/gsed"}
+: ${SED="sed"}
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
 : ${Xsed="$SED -e 1s/^X//"}
 
@@ -144,6 +164,27 @@
 dirname="s,/[^/]*$,,"
 basename="s,^.*/,,"
 
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+} # func_dirname may be replaced by extended shell implementation
+
+
+# func_basename file
+func_basename ()
+{
+    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
 # func_dirname_and_basename file append nondir_replacement
 # perform func_basename and func_dirname in a single function
 # call:
@@ -158,33 +199,183 @@
 # those functions but instead duplicate the functionality here.
 func_dirname_and_basename ()
 {
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+    # Extract subdirectory from the argument.
+    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+    case ${2} in
+      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+    esac
+} # func_stripname may be replaced by extended shell implementation
+
+
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+		s@/\./@/@g
+		t dotsl
+		s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
+
+# func_normal_abspath PATH
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+#             value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+  # Start from root dir and reassemble the path.
+  func_normal_abspath_result=
+  func_normal_abspath_tpath=$1
+  func_normal_abspath_altnamespace=
+  case $func_normal_abspath_tpath in
+    "")
+      # Empty path, that just means $cwd.
+      func_stripname '' '/' "`pwd`"
+      func_normal_abspath_result=$func_stripname_result
+      return
+    ;;
+    # The next three entries are used to spot a run of precisely
+    # two leading slashes without using negated character classes;
+    # we take advantage of case's first-match behaviour.
+    ///*)
+      # Unusual form of absolute path, do nothing.
+    ;;
+    //*)
+      # Not necessarily an ordinary path; POSIX reserves leading '//'
+      # and for example Cygwin uses it to access remote file shares
+      # over CIFS/SMB, so we conserve a leading double slash if found.
+      func_normal_abspath_altnamespace=/
+    ;;
+    /*)
+      # Absolute path, do nothing.
+    ;;
+    *)
+      # Relative path, prepend $cwd.
+      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+    ;;
+  esac
+  # Cancel out all the simple stuff to save iterations.  We also want
+  # the path to end with a slash for ease of parsing, so make sure
+  # there is one (and only one) here.
+  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
+  while :; do
+    # Processed it all yet?
+    if test "$func_normal_abspath_tpath" = / ; then
+      # If we ascended to the root using ".." the result may be empty now.
+      if test -z "$func_normal_abspath_result" ; then
+        func_normal_abspath_result=/
+      fi
+      break
+    fi
+    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcar"`
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcdr"`
+    # Figure out what to do with it
+    case $func_normal_abspath_tcomponent in
+      "")
+        # Trailing empty path component, ignore it.
+      ;;
+      ..)
+        # Parent dir; strip last assembled component from result.
+        func_dirname "$func_normal_abspath_result"
+        func_normal_abspath_result=$func_dirname_result
+      ;;
+      *)
+        # Actual path component, append it.
+        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
+      ;;
+    esac
+  done
+  # Restore leading double-slash if one was found on entry.
+  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
 }
 
-# Generated shell functions inserted here.
+# func_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+#             value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+  func_relative_path_result=
+  func_normal_abspath "$1"
+  func_relative_path_tlibdir=$func_normal_abspath_result
+  func_normal_abspath "$2"
+  func_relative_path_tbindir=$func_normal_abspath_result
 
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
+  # Ascend the tree starting from libdir
+  while :; do
+    # check if we have found a prefix of bindir
+    case $func_relative_path_tbindir in
+      $func_relative_path_tlibdir)
+        # found an exact match
+        func_relative_path_tcancelled=
+        break
+        ;;
+      $func_relative_path_tlibdir*)
+        # found a matching prefix
+        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+        func_relative_path_tcancelled=$func_stripname_result
+        if test -z "$func_relative_path_result"; then
+          func_relative_path_result=.
+        fi
+        break
+        ;;
+      *)
+        func_dirname $func_relative_path_tlibdir
+        func_relative_path_tlibdir=${func_dirname_result}
+        if test "x$func_relative_path_tlibdir" = x ; then
+          # Have to descend all the way to the root!
+          func_relative_path_result=../$func_relative_path_result
+          func_relative_path_tcancelled=$func_relative_path_tbindir
+          break
+        fi
+        func_relative_path_result=../$func_relative_path_result
+        ;;
+    esac
+  done
+
+  # Now calculate path; take care to avoid doubling-up slashes.
+  func_stripname '' '/' "$func_relative_path_result"
+  func_relative_path_result=$func_stripname_result
+  func_stripname '/' '/' "$func_relative_path_tcancelled"
+  if test "x$func_stripname_result" != x ; then
+    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+  fi
+
+  # Normalisation. If bindir is libdir, return empty string,
+  # else relative path ending with a slash; either way, target
+  # file name can be directly appended.
+  if test ! -z "$func_relative_path_result"; then
+    func_stripname './' '' "$func_relative_path_result/"
+    func_relative_path_result=$func_stripname_result
+  fi
+}
 
 # The name of this program:
-# In the unlikely event $progname began with a '-', it would play havoc with
-# func_echo (imagine progname=-n), so we prepend ./ in that case:
 func_dirname_and_basename "$progpath"
 progname=$func_basename_result
-case $progname in
-  -*) progname=./$progname ;;
-esac
 
 # Make sure we have an absolute path for reexecution:
 case $progpath in
@@ -215,6 +406,15 @@
 # Same as above, but do not quote variable references.
 double_quote_subst='s/\(["`\\]\)/\\\1/g'
 
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+
+# Sed substitution that converts a w32 file name or path
+# which contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
 # Re-`\' parameter expansions in output of double_quote_subst that were
 # `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
 # in input to double_quote_subst, that '$' was protected from expansion.
@@ -243,7 +443,7 @@
 # name if it has been set yet.
 func_echo ()
 {
-    $ECHO "$progname${mode+: }$mode: $*"
+    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
 }
 
 # func_verbose arg...
@@ -258,18 +458,25 @@
     :
 }
 
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
 # func_error arg...
 # Echo program name prefixed message to standard error.
 func_error ()
 {
-    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
+    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
 }
 
 # func_warning arg...
 # Echo program name prefixed warning message to standard error.
 func_warning ()
 {
-    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
+    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
 
     # bash bug again:
     :
@@ -326,9 +533,9 @@
         case $my_directory_path in */*) ;; *) break ;; esac
 
         # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
+        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
       done
-      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
+      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
 
       save_mkdir_p_IFS="$IFS"; IFS=':'
       for my_dir in $my_dir_list; do
@@ -378,7 +585,7 @@
         func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
     fi
 
-    $ECHO "X$my_tmpdir" | $Xsed
+    $ECHO "$my_tmpdir"
 }
 
 
@@ -392,7 +599,7 @@
 {
     case $1 in
       *[\\\`\"\$]*)
-	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
+	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
       *)
         func_quote_for_eval_unquoted_result="$1" ;;
     esac
@@ -419,7 +626,7 @@
 {
     case $1 in
       *[\\\`\"]*)
-	my_arg=`$ECHO "X$1" | $Xsed \
+	my_arg=`$ECHO "$1" | $SED \
 	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
       *)
         my_arg="$1" ;;
@@ -488,15 +695,39 @@
     fi
 }
 
-
-
+# func_tr_sh
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result.  All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+  case $1 in
+  [0-9]* | *[!a-zA-Z0-9_]*)
+    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+    ;;
+  * )
+    func_tr_sh_result=$1
+    ;;
+  esac
+}
 
 
 # func_version
 # Echo version message to standard output and exit.
 func_version ()
 {
-    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
+    $opt_debug
+
+    $SED -n '/(C)/!b go
+	:more
+	/\./!{
+	  N
+	  s/\n# / /
+	  b more
+	}
+	:go
+	/^# '$PROGRAM' (GNU /,/# warranty; / {
         s/^# //
 	s/^# *$//
         s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
@@ -509,22 +740,28 @@
 # Echo short help message to standard output and exit.
 func_usage ()
 {
-    $SED -n '/^# Usage:/,/# -h/ {
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/^#  *.*--help/ {
         s/^# //
 	s/^# *$//
 	s/\$progname/'$progname'/
 	p
     }' < "$progpath"
-    $ECHO
+    echo
     $ECHO "run \`$progname --help | more' for full usage"
     exit $?
 }
 
-# func_help
-# Echo long help message to standard output and exit.
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
 func_help ()
 {
+    $opt_debug
+
     $SED -n '/^# Usage:/,/# Report bugs to/ {
+	:print
         s/^# //
 	s/^# *$//
 	s*\$progname*'$progname'*
@@ -537,8 +774,15 @@
 	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
 	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
 	p
-     }' < "$progpath"
-    exit $?
+	d
+     }
+     /^# .* home page:/b print
+     /^# General help using/b print
+     ' < "$progpath"
+    ret=$?
+    if test -z "$1"; then
+      exit $ret
+    fi
 }
 
 # func_missing_arg argname
@@ -546,63 +790,106 @@
 # exit_cmd.
 func_missing_arg ()
 {
-    func_error "missing argument for $1"
+    $opt_debug
+
+    func_error "missing argument for $1."
     exit_cmd=exit
 }
 
+
+# func_split_short_opt shortopt
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+func_split_short_opt ()
+{
+    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
+
+
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
+{
+    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+    my_sed_long_arg='1s/^--[^=]*=//'
+
+    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
+
 exit_cmd=:
 
 
 
 
 
-# Check that we have a working $ECHO.
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell, and then maybe $ECHO will work.
-  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<EOF
-$*
-EOF
-  exit $EXIT_SUCCESS
-fi
-
 magic="%%%MAGIC variable%%%"
 magic_exe="%%%MAGIC EXE variable%%%"
 
 # Global variables.
-# $mode is unset
 nonopt=
-execute_dlfiles=
 preserve_args=
 lo2o="s/\\.lo\$/.${objext}/"
 o2lo="s/\\.${objext}\$/.lo/"
 extracted_archives=
 extracted_serial=0
 
-opt_dry_run=false
-opt_duplicate_deps=false
-opt_silent=false
-opt_debug=:
-
 # If this variable is set in any of the actions, the command in it
 # will be execed at the end.  This prevents here-documents from being
 # left over by shells.
 exec_cmd=
 
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+    eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+    func_quote_for_eval "${2}"
+    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+    func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
+# func_lo2o object
+func_lo2o ()
+{
+    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
 # func_fatal_configuration arg...
 # Echo program name prefixed message to standard error, followed by
 # a configuration failure hint, and exit.
@@ -636,16 +923,16 @@
 # Display the features supported by this script.
 func_features ()
 {
-    $ECHO "host: $host"
+    echo "host: $host"
     if test "$build_libtool_libs" = yes; then
-      $ECHO "enable shared libraries"
+      echo "enable shared libraries"
     else
-      $ECHO "disable shared libraries"
+      echo "disable shared libraries"
     fi
     if test "$build_old_libs" = yes; then
-      $ECHO "enable static libraries"
+      echo "enable static libraries"
     else
-      $ECHO "disable static libraries"
+      echo "disable static libraries"
     fi
 
     exit $?
@@ -692,133 +979,6 @@
   esac
 }
 
-# Parse options once, thoroughly.  This comes as soon as possible in
-# the script to make things like `libtool --version' happen quickly.
-{
-
-  # Shorthand for --mode=foo, only valid as the first argument
-  case $1 in
-  clean|clea|cle|cl)
-    shift; set dummy --mode clean ${1+"$@"}; shift
-    ;;
-  compile|compil|compi|comp|com|co|c)
-    shift; set dummy --mode compile ${1+"$@"}; shift
-    ;;
-  execute|execut|execu|exec|exe|ex|e)
-    shift; set dummy --mode execute ${1+"$@"}; shift
-    ;;
-  finish|finis|fini|fin|fi|f)
-    shift; set dummy --mode finish ${1+"$@"}; shift
-    ;;
-  install|instal|insta|inst|ins|in|i)
-    shift; set dummy --mode install ${1+"$@"}; shift
-    ;;
-  link|lin|li|l)
-    shift; set dummy --mode link ${1+"$@"}; shift
-    ;;
-  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-    shift; set dummy --mode uninstall ${1+"$@"}; shift
-    ;;
-  esac
-
-  # Parse non-mode specific arguments:
-  while test "$#" -gt 0; do
-    opt="$1"
-    shift
-
-    case $opt in
-      --config)		func_config					;;
-
-      --debug)		preserve_args="$preserve_args $opt"
-			func_echo "enabling shell trace mode"
-			opt_debug='set -x'
-			$opt_debug
-			;;
-
-      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			execute_dlfiles="$execute_dlfiles $1"
-			shift
-			;;
-
-      --dry-run | -n)	opt_dry_run=:					;;
-      --features)       func_features					;;
-      --finish)		mode="finish"					;;
-
-      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			case $1 in
-			  # Valid mode arguments:
-			  clean)	;;
-			  compile)	;;
-			  execute)	;;
-			  finish)	;;
-			  install)	;;
-			  link)		;;
-			  relink)	;;
-			  uninstall)	;;
-
-			  # Catch anything else as an error
-			  *) func_error "invalid argument for $opt"
-			     exit_cmd=exit
-			     break
-			     ;;
-		        esac
-
-			mode="$1"
-			shift
-			;;
-
-      --preserve-dup-deps)
-			opt_duplicate_deps=:				;;
-
-      --quiet|--silent)	preserve_args="$preserve_args $opt"
-			opt_silent=:
-			;;
-
-      --verbose| -v)	preserve_args="$preserve_args $opt"
-			opt_silent=false
-			;;
-
-      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			preserve_args="$preserve_args $opt $1"
-			func_enable_tag "$1"	# tagname is set here
-			shift
-			;;
-
-      # Separate optargs to long options:
-      -dlopen=*|--mode=*|--tag=*)
-			func_opt_split "$opt"
-			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
-			shift
-			;;
-
-      -\?|-h)		func_usage					;;
-      --help)		opt_help=:					;;
-      --version)	func_version					;;
-
-      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
-
-      *)		nonopt="$opt"
-			break
-			;;
-    esac
-  done
-
-
-  case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
-      # don't eliminate duplications in $postdeps and $predeps
-      opt_duplicate_compiler_generated_deps=:
-      ;;
-    *)
-      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
-      ;;
-  esac
-
-  # Having warned about all mis-specified options, bail out if
-  # anything was wrong.
-  $exit_cmd $EXIT_FAILURE
-}
-
 # func_check_version_match
 # Ensure that we are using m4 macros, and libtool script from the same
 # release of libtool.
@@ -855,38 +1015,214 @@
 }
 
 
+# Shorthand for --mode=foo, only valid as the first argument
+case $1 in
+clean|clea|cle|cl)
+  shift; set dummy --mode clean ${1+"$@"}; shift
+  ;;
+compile|compil|compi|comp|com|co|c)
+  shift; set dummy --mode compile ${1+"$@"}; shift
+  ;;
+execute|execut|execu|exec|exe|ex|e)
+  shift; set dummy --mode execute ${1+"$@"}; shift
+  ;;
+finish|finis|fini|fin|fi|f)
+  shift; set dummy --mode finish ${1+"$@"}; shift
+  ;;
+install|instal|insta|inst|ins|in|i)
+  shift; set dummy --mode install ${1+"$@"}; shift
+  ;;
+link|lin|li|l)
+  shift; set dummy --mode link ${1+"$@"}; shift
+  ;;
+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+  shift; set dummy --mode uninstall ${1+"$@"}; shift
+  ;;
+esac
+
+
+
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
+
+
+# Parse options once, thoroughly.  This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
+{
+  # this just eases exit handling
+  while test $# -gt 0; do
+    opt="$1"
+    shift
+    case $opt in
+      --debug|-x)	opt_debug='set -x'
+			func_echo "enabling shell trace mode"
+			$opt_debug
+			;;
+      --dry-run|--dryrun|-n)
+			opt_dry_run=:
+			;;
+      --config)
+			opt_config=:
+func_config
+			;;
+      --dlopen|-dlopen)
+			optarg="$1"
+			opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
+			shift
+			;;
+      --preserve-dup-deps)
+			opt_preserve_dup_deps=:
+			;;
+      --features)
+			opt_features=:
+func_features
+			;;
+      --finish)
+			opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+			;;
+      --help)
+			opt_help=:
+			;;
+      --help-all)
+			opt_help_all=:
+opt_help=': help-all'
+			;;
+      --mode)
+			test $# = 0 && func_missing_arg $opt && break
+			optarg="$1"
+			opt_mode="$optarg"
+case $optarg in
+  # Valid mode arguments:
+  clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+  # Catch anything else as an error
+  *) func_error "invalid argument for $opt"
+     exit_cmd=exit
+     break
+     ;;
+esac
+			shift
+			;;
+      --no-silent|--no-quiet)
+			opt_silent=false
+func_append preserve_args " $opt"
+			;;
+      --no-verbose)
+			opt_verbose=false
+func_append preserve_args " $opt"
+			;;
+      --silent|--quiet)
+			opt_silent=:
+func_append preserve_args " $opt"
+        opt_verbose=false
+			;;
+      --verbose|-v)
+			opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+			;;
+      --tag)
+			test $# = 0 && func_missing_arg $opt && break
+			optarg="$1"
+			opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
+			shift
+			;;
+
+      -\?|-h)		func_usage				;;
+      --help)		func_help				;;
+      --version)	func_version				;;
+
+      # Separate optargs to long options:
+      --*=*)
+			func_split_long_opt "$opt"
+			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+			shift
+			;;
+
+      # Separate non-argument short options:
+      -\?*|-h*|-n*|-v*)
+			func_split_short_opt "$opt"
+			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+			shift
+			;;
+
+      --)		break					;;
+      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
+      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
+    esac
+  done
+
+  # Validate options:
+
+  # save first non-option argument
+  if test "$#" -gt 0; then
+    nonopt="$opt"
+    shift
+  fi
+
+  # preserve --debug
+  test "$opt_debug" = : || func_append preserve_args " --debug"
+
+  case $host in
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
+      # don't eliminate duplications in $postdeps and $predeps
+      opt_duplicate_compiler_generated_deps=:
+      ;;
+    *)
+      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+      ;;
+  esac
+
+  $opt_help || {
+    # Sanity checks first:
+    func_check_version_match
+
+    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+      func_fatal_configuration "not configured to build any kind of library"
+    fi
+
+    # Darwin sucks
+    eval std_shrext=\"$shrext_cmds\"
+
+    # Only execute mode is allowed to have -dlopen flags.
+    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
+      func_error "unrecognized option \`-dlopen'"
+      $ECHO "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Change the help message to a mode-specific one.
+    generic_help="$help"
+    help="Try \`$progname --help --mode=$opt_mode' for more information."
+  }
+
+
+  # Bail if the options were screwed
+  $exit_cmd $EXIT_FAILURE
+}
+
+
+
+
 ## ----------- ##
 ##    Main.    ##
 ## ----------- ##
 
-$opt_help || {
-  # Sanity checks first:
-  func_check_version_match
-
-  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-    func_fatal_configuration "not configured to build any kind of library"
-  fi
-
-  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
-
-
-  # Darwin sucks
-  eval std_shrext=\"$shrext_cmds\"
-
-
-  # Only execute mode is allowed to have -dlopen flags.
-  if test -n "$execute_dlfiles" && test "$mode" != execute; then
-    func_error "unrecognized option \`-dlopen'"
-    $ECHO "$help" 1>&2
-    exit $EXIT_FAILURE
-  fi
-
-  # Change the help message to a mode-specific one.
-  generic_help="$help"
-  help="Try \`$progname --help --mode=$mode' for more information."
-}
-
-
 # func_lalib_p file
 # True iff FILE is a libtool `.la' library or `.lo' object file.
 # This function is only a basic sanity check; it will hardly flush out
@@ -950,12 +1286,9 @@
 # temporary ltwrapper_script.
 func_ltwrapper_scriptname ()
 {
-    func_ltwrapper_scriptname_result=""
-    if func_ltwrapper_executable_p "$1"; then
-	func_dirname_and_basename "$1" "" "."
-	func_stripname '' '.exe' "$func_basename_result"
-	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-    fi
+    func_dirname_and_basename "$1" "" "."
+    func_stripname '' '.exe' "$func_basename_result"
+    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
 }
 
 # func_ltwrapper_p file
@@ -1001,6 +1334,37 @@
 }
 
 
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot.  Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+  func_resolve_sysroot_result=$1
+  case $func_resolve_sysroot_result in
+  =*)
+    func_stripname '=' '' "$func_resolve_sysroot_result"
+    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+    ;;
+  esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+  case "$lt_sysroot:$1" in
+  ?*:"$lt_sysroot"*)
+    func_stripname "$lt_sysroot" '' "$1"
+    func_replace_sysroot_result="=$func_stripname_result"
+    ;;
+  *)
+    # Including no sysroot.
+    func_replace_sysroot_result=$1
+    ;;
+  esac
+}
+
 # func_infer_tag arg
 # Infer tagged configuration to use if any are available and
 # if one wasn't chosen via the "--tag" command line option.
@@ -1013,13 +1377,15 @@
     if test -n "$available_tags" && test -z "$tagname"; then
       CC_quoted=
       for arg in $CC; do
-        func_quote_for_eval "$arg"
-	CC_quoted="$CC_quoted $func_quote_for_eval_result"
+	func_append_quoted CC_quoted "$arg"
       done
+      CC_expanded=`func_echo_all $CC`
+      CC_quoted_expanded=`func_echo_all $CC_quoted`
       case $@ in
       # Blanks in the command may have been stripped by the calling shell,
       # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
+      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
       # Blanks at the start of $base_compile will cause this to fail
       # if we don't check for them as well.
       *)
@@ -1030,11 +1396,13 @@
 	    CC_quoted=
 	    for arg in $CC; do
 	      # Double-quote args containing other shell metacharacters.
-	      func_quote_for_eval "$arg"
-	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
+	      func_append_quoted CC_quoted "$arg"
 	    done
+	    CC_expanded=`func_echo_all $CC`
+	    CC_quoted_expanded=`func_echo_all $CC_quoted`
 	    case "$@ " in
-	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
+	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
 	      # The compiler in the base compile command matches
 	      # the one in the tagged configuration.
 	      # Assume this is the tagged configuration we want.
@@ -1097,6 +1465,486 @@
     }
 }
 
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $opt_debug
+  func_convert_core_file_wine_to_w32_result="$1"
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+        $SED -e "$lt_sed_naive_backslashify"`
+    else
+      func_convert_core_file_wine_to_w32_result=
+    fi
+  fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+  $opt_debug
+  # unfortunately, winepath doesn't convert paths, only file names
+  func_convert_core_path_wine_to_w32_result=""
+  if test -n "$1"; then
+    oldIFS=$IFS
+    IFS=:
+    for func_convert_core_path_wine_to_w32_f in $1; do
+      IFS=$oldIFS
+      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+        if test -z "$func_convert_core_path_wine_to_w32_result"; then
+          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+        else
+          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+        fi
+      fi
+    done
+    IFS=$oldIFS
+  fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+  $opt_debug
+  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+    if test "$?" -ne 0; then
+      # on failure, ensure result is empty
+      func_cygpath_result=
+    fi
+  else
+    func_cygpath_result=
+    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+  fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format.  Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+  $opt_debug
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+  $opt_debug
+  if test -z "$2" && test -n "$1" ; then
+    func_error "Could not determine host file name corresponding to"
+    func_error "  \`$1'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback:
+    func_to_host_file_result="$1"
+  fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+  $opt_debug
+  if test -z "$4" && test -n "$3"; then
+    func_error "Could not determine the host path corresponding to"
+    func_error "  \`$3'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback.  This is a deliberately simplistic "conversion" and
+    # should not be "improved".  See libtool.info.
+    if test "x$1" != "x$2"; then
+      lt_replace_pathsep_chars="s|$1|$2|g"
+      func_to_host_path_result=`echo "$3" |
+        $SED -e "$lt_replace_pathsep_chars"`
+    else
+      func_to_host_path_result="$3"
+    fi
+  fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+  $opt_debug
+  case $4 in
+  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+    ;;
+  esac
+  case $4 in
+  $2 ) func_append func_to_host_path_result "$3"
+    ;;
+  esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via `$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+  $opt_debug
+  $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result.  If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+  $opt_debug
+  case ,$2, in
+    *,"$to_tool_file_cmd",*)
+      func_to_tool_file_result=$1
+      ;;
+    *)
+      $to_tool_file_cmd "$1"
+      func_to_tool_file_result=$func_to_host_file_result
+      ;;
+  esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+  func_to_host_file_result="$1"
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+    # LT_CYGPATH in this case.
+    func_to_host_file_result=`cygpath -m "$1"`
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format.  Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_file_wine_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+    func_convert_core_file_wine_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via `$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format.  If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+#   file name conversion function    : func_convert_file_X_to_Y ()
+#   path conversion function         : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same.  If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+  $opt_debug
+  if test -z "$to_host_path_cmd"; then
+    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+    to_host_path_cmd="func_convert_path_${func_stripname_result}"
+  fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+  $opt_debug
+  func_init_to_host_path_cmd
+  $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+  func_to_host_path_result="$1"
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from ARG.  MSYS
+    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+    # and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format.  Requires a wine environment and
+# a working winepath.  Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from
+    # ARG. msys behavior is inconsistent here, cygpath turns them
+    # into '.;' and ';.', and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
 # func_mode_compile arg...
 func_mode_compile ()
 {
@@ -1137,12 +1985,12 @@
 	  ;;
 
 	-pie | -fpie | -fPIE)
-          pie_flag="$pie_flag $arg"
+          func_append pie_flag " $arg"
 	  continue
 	  ;;
 
 	-shared | -static | -prefer-pic | -prefer-non-pic)
-	  later="$later $arg"
+	  func_append later " $arg"
 	  continue
 	  ;;
 
@@ -1163,15 +2011,14 @@
 	  save_ifs="$IFS"; IFS=','
 	  for arg in $args; do
 	    IFS="$save_ifs"
-	    func_quote_for_eval "$arg"
-	    lastarg="$lastarg $func_quote_for_eval_result"
+	    func_append_quoted lastarg "$arg"
 	  done
 	  IFS="$save_ifs"
 	  func_stripname ' ' '' "$lastarg"
 	  lastarg=$func_stripname_result
 
 	  # Add the arguments to base_compile.
-	  base_compile="$base_compile $lastarg"
+	  func_append base_compile " $lastarg"
 	  continue
 	  ;;
 
@@ -1187,8 +2034,7 @@
       esac    #  case $arg_mode
 
       # Aesthetically quote the previous argument.
-      func_quote_for_eval "$lastarg"
-      base_compile="$base_compile $func_quote_for_eval_result"
+      func_append_quoted base_compile "$lastarg"
     done # for arg
 
     case $arg_mode in
@@ -1213,7 +2059,7 @@
     *.[cCFSifmso] | \
     *.ada | *.adb | *.ads | *.asm | \
     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
+    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
       func_xform "$libobj"
       libobj=$func_xform_result
       ;;
@@ -1288,7 +2134,7 @@
     # Calculate the filename of the output object if compiler does
     # not support -o with -c
     if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
       lockfile="$output_obj.lock"
     else
       output_obj=
@@ -1319,17 +2165,16 @@
 	$opt_dry_run || $RM $removelist
 	exit $EXIT_FAILURE
       fi
-      removelist="$removelist $output_obj"
+      func_append removelist " $output_obj"
       $ECHO "$srcfile" > "$lockfile"
     fi
 
     $opt_dry_run || $RM $removelist
-    removelist="$removelist $lockfile"
+    func_append removelist " $lockfile"
     trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
 
-    if test -n "$fix_srcfile_path"; then
-      eval srcfile=\"$fix_srcfile_path\"
-    fi
+    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+    srcfile=$func_to_tool_file_result
     func_quote_for_eval "$srcfile"
     qsrcfile=$func_quote_for_eval_result
 
@@ -1349,7 +2194,7 @@
 
       if test -z "$output_obj"; then
 	# Place PIC objects in $objdir
-	command="$command -o $lobj"
+	func_append command " -o $lobj"
       fi
 
       func_show_eval_locale "$command"	\
@@ -1396,11 +2241,11 @@
 	command="$base_compile $qsrcfile $pic_flag"
       fi
       if test "$compiler_c_o" = yes; then
-	command="$command -o $obj"
+	func_append command " -o $obj"
       fi
 
       # Suppress compiler output if we already did a PIC compilation.
-      command="$command$suppress_output"
+      func_append command "$suppress_output"
       func_show_eval_locale "$command" \
         '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
 
@@ -1445,13 +2290,13 @@
 }
 
 $opt_help || {
-test "$mode" = compile && func_mode_compile ${1+"$@"}
+  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
 }
 
 func_mode_help ()
 {
     # We need to display help for each of the modes.
-    case $mode in
+    case $opt_mode in
       "")
         # Generic help is extracted from the usage comments
         # at the start of this file.
@@ -1482,10 +2327,11 @@
 
   -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
   -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to building PIC objects only
-  -prefer-non-pic   try to building non-PIC objects only
+  -prefer-pic       try to build PIC objects only
+  -prefer-non-pic   try to build non-PIC objects only
   -shared           do not build a \`.o' file suitable for static linking
   -static           only build a \`.o' file suitable for static linking
+  -Wc,FLAG          pass FLAG directly to the compiler
 
 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
 from the given SOURCEFILE.
@@ -1538,7 +2384,7 @@
 
 The following components of INSTALL-COMMAND are treated specially:
 
-  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
 
 The rest of the components are interpreted as arguments to that command (only
 BSD-compatible install options are recognized)."
@@ -1558,6 +2404,8 @@
 
   -all-static       do not do any dynamic linking at all
   -avoid-version    do not add a version suffix if possible
+  -bindir BINDIR    specify path to binaries directory (for systems where
+                    libraries must be found in the PATH setting at runtime)
   -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
@@ -1586,6 +2434,11 @@
   -version-info CURRENT[:REVISION[:AGE]]
                     specify library version info [each variable defaults to 0]
   -weak LIBNAME     declare that the target provides the LIBNAME interface
+  -Wc,FLAG
+  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
+  -Wl,FLAG
+  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
+  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
 
 All other options (arguments beginning with \`-') are ignored.
 
@@ -1619,18 +2472,44 @@
         ;;
 
       *)
-        func_fatal_help "invalid operation mode \`$mode'"
+        func_fatal_help "invalid operation mode \`$opt_mode'"
         ;;
     esac
 
-    $ECHO
+    echo
     $ECHO "Try \`$progname --help' for more information about other modes."
-
-    exit $?
 }
 
-  # Now that we've collected a possible --mode arg, show help if necessary
-  $opt_help && func_mode_help
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+  if test "$opt_help" = :; then
+    func_mode_help
+  else
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	func_mode_help
+      done
+    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	echo
+	func_mode_help
+      done
+    } |
+    sed '1d
+      /^When reporting/,/^Report/{
+	H
+	d
+      }
+      $x
+      /information about other modes/d
+      /more detailed .*MODE/d
+      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+  fi
+  exit $?
+fi
 
 
 # func_mode_execute arg...
@@ -1643,13 +2522,16 @@
       func_fatal_help "you must specify a COMMAND"
 
     # Handle -dlopen flags immediately.
-    for file in $execute_dlfiles; do
+    for file in $opt_dlopen; do
       test -f "$file" \
 	|| func_fatal_help "\`$file' is not a file"
 
       dir=
       case $file in
       *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
 	# Check to see that this really is a libtool archive.
 	func_lalib_unsafe_p "$file" \
 	  || func_fatal_help "\`$lib' is not a valid libtool archive"
@@ -1671,7 +2553,7 @@
 	dir="$func_dirname_result"
 
 	if test -f "$dir/$objdir/$dlname"; then
-	  dir="$dir/$objdir"
+	  func_append dir "/$objdir"
 	else
 	  if test ! -f "$dir/$dlname"; then
 	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
@@ -1712,7 +2594,7 @@
     for file
     do
       case $file in
-      -*) ;;
+      -* | *.la | *.lo ) ;;
       *)
 	# Do a test to see if this is really a libtool program.
 	if func_ltwrapper_script_p "$file"; then
@@ -1728,8 +2610,7 @@
 	;;
       esac
       # Quote arguments (to preserve shell metacharacters).
-      func_quote_for_eval "$file"
-      args="$args $func_quote_for_eval_result"
+      func_append_quoted args "$file"
     done
 
     if test "X$opt_dry_run" = Xfalse; then
@@ -1754,29 +2635,66 @@
       # Display what would be done.
       if test -n "$shlibpath_var"; then
 	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-	$ECHO "export $shlibpath_var"
+	echo "export $shlibpath_var"
       fi
       $ECHO "$cmd$args"
       exit $EXIT_SUCCESS
     fi
 }
 
-test "$mode" = execute && func_mode_execute ${1+"$@"}
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
 
 
 # func_mode_finish arg...
 func_mode_finish ()
 {
     $opt_debug
-    libdirs="$nonopt"
+    libs=
+    libdirs=
     admincmds=
 
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for dir
-      do
-	libdirs="$libdirs $dir"
-      done
+    for opt in "$nonopt" ${1+"$@"}
+    do
+      if test -d "$opt"; then
+	func_append libdirs " $opt"
 
+      elif test -f "$opt"; then
+	if func_lalib_unsafe_p "$opt"; then
+	  func_append libs " $opt"
+	else
+	  func_warning "\`$opt' is not a valid libtool archive"
+	fi
+
+      else
+	func_fatal_error "invalid argument \`$opt'"
+      fi
+    done
+
+    if test -n "$libs"; then
+      if test -n "$lt_sysroot"; then
+        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+      else
+        sysroot_cmd=
+      fi
+
+      # Remove sysroot references
+      if $opt_dry_run; then
+        for lib in $libs; do
+          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+        done
+      else
+        tmpdir=`func_mktempdir`
+        for lib in $libs; do
+	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+	    > $tmpdir/tmp-la
+	  mv -f $tmpdir/tmp-la $lib
+	done
+        ${RM}r "$tmpdir"
+      fi
+    fi
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
       for libdir in $libdirs; do
 	if test -n "$finish_cmds"; then
 	  # Do each command in the finish commands.
@@ -1786,7 +2704,7 @@
 	if test -n "$finish_eval"; then
 	  # Do the single finish_eval.
 	  eval cmds=\"$finish_eval\"
-	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
+	  $opt_dry_run || eval "$cmds" || func_append admincmds "
        $cmds"
 	fi
       done
@@ -1795,53 +2713,55 @@
     # Exit here if they wanted silent mode.
     $opt_silent && exit $EXIT_SUCCESS
 
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
-    $ECHO "Libraries have been installed in:"
-    for libdir in $libdirs; do
-      $ECHO "   $libdir"
-    done
-    $ECHO
-    $ECHO "If you ever happen to want to link against installed libraries"
-    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
-    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
-    $ECHO "flag during linking and do at least one of the following:"
-    if test -n "$shlibpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-      $ECHO "     during execution"
-    fi
-    if test -n "$runpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
-      $ECHO "     during linking"
-    fi
-    if test -n "$hardcode_libdir_flag_spec"; then
-      libdir=LIBDIR
-      eval flag=\"$hardcode_libdir_flag_spec\"
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      echo "----------------------------------------------------------------------"
+      echo "Libraries have been installed in:"
+      for libdir in $libdirs; do
+	$ECHO "   $libdir"
+      done
+      echo
+      echo "If you ever happen to want to link against installed libraries"
+      echo "in a given directory, LIBDIR, you must either use libtool, and"
+      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+      echo "flag during linking and do at least one of the following:"
+      if test -n "$shlibpath_var"; then
+	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+	echo "     during execution"
+      fi
+      if test -n "$runpath_var"; then
+	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+	echo "     during linking"
+      fi
+      if test -n "$hardcode_libdir_flag_spec"; then
+	libdir=LIBDIR
+	eval flag=\"$hardcode_libdir_flag_spec\"
 
-      $ECHO "   - use the \`$flag' linker flag"
-    fi
-    if test -n "$admincmds"; then
-      $ECHO "   - have your system administrator run these commands:$admincmds"
-    fi
-    if test -f /etc/ld.so.conf; then
-      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-    fi
-    $ECHO
+	$ECHO "   - use the \`$flag' linker flag"
+      fi
+      if test -n "$admincmds"; then
+	$ECHO "   - have your system administrator run these commands:$admincmds"
+      fi
+      if test -f /etc/ld.so.conf; then
+	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+      fi
+      echo
 
-    $ECHO "See any operating system documentation about shared libraries for"
-    case $host in
-      solaris2.[6789]|solaris2.1[0-9])
-        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-	$ECHO "pages."
-	;;
-      *)
-        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
-        ;;
-    esac
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
+      echo "See any operating system documentation about shared libraries for"
+      case $host in
+	solaris2.[6789]|solaris2.1[0-9])
+	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+	  echo "pages."
+	  ;;
+	*)
+	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
+	  ;;
+      esac
+      echo "----------------------------------------------------------------------"
+    fi
     exit $EXIT_SUCCESS
 }
 
-test "$mode" = finish && func_mode_finish ${1+"$@"}
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
 
 
 # func_mode_install arg...
@@ -1852,7 +2772,7 @@
     # install_prog (especially on Windows NT).
     if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
        # Allow the use of GNU shtool's install command.
-       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
+       case $nonopt in *shtool*) :;; *) false;; esac; then
       # Aesthetically quote it.
       func_quote_for_eval "$nonopt"
       install_prog="$func_quote_for_eval_result "
@@ -1866,7 +2786,12 @@
     # The real first argument should be the name of the installation program.
     # Aesthetically quote it.
     func_quote_for_eval "$arg"
-    install_prog="$install_prog$func_quote_for_eval_result"
+    func_append install_prog "$func_quote_for_eval_result"
+    install_shared_prog=$install_prog
+    case " $install_prog " in
+      *[\\\ /]cp\ *) install_cp=: ;;
+      *) install_cp=false ;;
+    esac
 
     # We need to accept at least all the BSD install flags.
     dest=
@@ -1876,10 +2801,12 @@
     install_type=
     isdir=no
     stripme=
+    no_mode=:
     for arg
     do
+      arg2=
       if test -n "$dest"; then
-	files="$files $dest"
+	func_append files " $dest"
 	dest=$arg
 	continue
       fi
@@ -1887,10 +2814,9 @@
       case $arg in
       -d) isdir=yes ;;
       -f)
-	case " $install_prog " in
-	*[\\\ /]cp\ *) ;;
-	*) prev=$arg ;;
-	esac
+	if $install_cp; then :; else
+	  prev=$arg
+	fi
 	;;
       -g | -m | -o)
 	prev=$arg
@@ -1904,6 +2830,10 @@
       *)
 	# If the previous option needed an argument, then skip it.
 	if test -n "$prev"; then
+	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
+	    arg2=$install_override_mode
+	    no_mode=false
+	  fi
 	  prev=
 	else
 	  dest=$arg
@@ -1914,7 +2844,11 @@
 
       # Aesthetically quote the argument.
       func_quote_for_eval "$arg"
-      install_prog="$install_prog $func_quote_for_eval_result"
+      func_append install_prog " $func_quote_for_eval_result"
+      if test -n "$arg2"; then
+	func_quote_for_eval "$arg2"
+      fi
+      func_append install_shared_prog " $func_quote_for_eval_result"
     done
 
     test -z "$install_prog" && \
@@ -1923,6 +2857,13 @@
     test -n "$prev" && \
       func_fatal_help "the \`$prev' option requires an argument"
 
+    if test -n "$install_override_mode" && $no_mode; then
+      if $install_cp; then :; else
+	func_quote_for_eval "$install_override_mode"
+	func_append install_shared_prog " -m $func_quote_for_eval_result"
+      fi
+    fi
+
     if test -z "$files"; then
       if test -z "$dest"; then
 	func_fatal_help "no file or destination specified"
@@ -1977,10 +2918,13 @@
       case $file in
       *.$libext)
 	# Do the static libraries later.
-	staticlibs="$staticlibs $file"
+	func_append staticlibs " $file"
 	;;
 
       *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
 	# Check to see that this really is a libtool archive.
 	func_lalib_unsafe_p "$file" \
 	  || func_fatal_help "\`$file' is not a valid libtool archive"
@@ -1994,23 +2938,23 @@
 	if test "X$destdir" = "X$libdir"; then
 	  case "$current_libdirs " in
 	  *" $libdir "*) ;;
-	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  *) func_append current_libdirs " $libdir" ;;
 	  esac
 	else
 	  # Note the libdir as a future libdir.
 	  case "$future_libdirs " in
 	  *" $libdir "*) ;;
-	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  *) func_append future_libdirs " $libdir" ;;
 	  esac
 	fi
 
 	func_dirname "$file" "/" ""
 	dir="$func_dirname_result"
-	dir="$dir$objdir"
+	func_append dir "$objdir"
 
 	if test -n "$relink_command"; then
 	  # Determine the prefix the user has applied to our future dir.
-	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
+	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
 
 	  # Don't allow the user to place us outside of our expected
 	  # location b/c this prevents finding dependent libraries that
@@ -2023,9 +2967,9 @@
 
 	  if test -n "$inst_prefix_dir"; then
 	    # Stick the inst_prefix_dir data into the link command.
-	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
 	  else
-	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
 	  fi
 
 	  func_warning "relinking \`$file'"
@@ -2043,7 +2987,7 @@
 	  test -n "$relink_command" && srcname="$realname"T
 
 	  # Install the shared library and build the symlinks.
-	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
+	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
 	      'exit $?'
 	  tstripme="$stripme"
 	  case $host_os in
@@ -2083,7 +3027,7 @@
 	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
 
 	# Maybe install the static library, too.
-	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
 	;;
 
       *.lo)
@@ -2183,7 +3127,7 @@
 	    if test -f "$lib"; then
 	      func_source "$lib"
 	    fi
-	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
 	    if test -n "$libdir" && test ! -f "$libfile"; then
 	      func_warning "\`$lib' has not been installed in \`$libdir'"
 	      finalize=no
@@ -2202,7 +3146,7 @@
 		file="$func_basename_result"
 	        outputname="$tmpdir/$file"
 	        # Replace the output file specification.
-	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
 
 	        $opt_silent || {
 	          func_quote_for_expand "$relink_command"
@@ -2221,7 +3165,7 @@
 	    }
 	  else
 	    # Install the binary that we compiled earlier.
-	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
 	  fi
 	fi
 
@@ -2280,7 +3224,7 @@
     fi
 }
 
-test "$mode" = install && func_mode_install ${1+"$@"}
+test "$opt_mode" = install && func_mode_install ${1+"$@"}
 
 
 # func_generate_dlsyms outputname originator pic_p
@@ -2323,6 +3267,22 @@
 extern \"C\" {
 #endif
 
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
 /* External symbol declarations for the compiler. */\
 "
 
@@ -2332,10 +3292,11 @@
 	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
 
 	  # Add our own program objects to the symbol list.
-	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
 	  for progfile in $progfiles; do
-	    func_verbose "extracting global C symbols from \`$progfile'"
-	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
+	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
 	  done
 
 	  if test -n "$exclude_expsyms"; then
@@ -2371,7 +3332,7 @@
 	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
 	      eval '$MV "$nlist"T "$nlist"'
 	      case $host in
-	        *cygwin | *mingw* | *cegcc* )
+	        *cygwin* | *mingw* | *cegcc* )
 	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
 	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
 	          ;;
@@ -2384,10 +3345,52 @@
 	  func_verbose "extracting global C symbols from \`$dlprefile'"
 	  func_basename "$dlprefile"
 	  name="$func_basename_result"
-	  $opt_dry_run || {
-	    eval '$ECHO ": $name " >> "$nlist"'
-	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	  }
+          case $host in
+	    *cygwin* | *mingw* | *cegcc* )
+	      # if an import library, we need to obtain dlname
+	      if func_win32_import_lib_p "$dlprefile"; then
+	        func_tr_sh "$dlprefile"
+	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
+	        dlprefile_dlbasename=""
+	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+	          # Use subshell, to avoid clobbering current variable values
+	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+	          if test -n "$dlprefile_dlname" ; then
+	            func_basename "$dlprefile_dlname"
+	            dlprefile_dlbasename="$func_basename_result"
+	          else
+	            # no lafile. user explicitly requested -dlpreopen <import library>.
+	            $sharedlib_from_linklib_cmd "$dlprefile"
+	            dlprefile_dlbasename=$sharedlib_from_linklib_result
+	          fi
+	        fi
+	        $opt_dry_run || {
+	          if test -n "$dlprefile_dlbasename" ; then
+	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+	          else
+	            func_warning "Could not compute DLL name from $name"
+	            eval '$ECHO ": $name " >> "$nlist"'
+	          fi
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+	        }
+	      else # not an import lib
+	        $opt_dry_run || {
+	          eval '$ECHO ": $name " >> "$nlist"'
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	        }
+	      fi
+	    ;;
+	    *)
+	      $opt_dry_run || {
+	        eval '$ECHO ": $name " >> "$nlist"'
+	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	      }
+	    ;;
+          esac
 	done
 
 	$opt_dry_run || {
@@ -2415,36 +3418,19 @@
 	  if test -f "$nlist"S; then
 	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
 	  else
-	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
+	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
 	  fi
 
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
+	  echo >> "$output_objdir/$my_dlsyms" "\
 
 /* The mapping between symbol names and symbols.  */
 typedef struct {
   const char *name;
   void *address;
 } lt_dlsymlist;
-"
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc* )
-	    $ECHO >> "$output_objdir/$my_dlsyms" "\
-/* DATA imports from DLLs on WIN32 con't be const, because
-   runtime relocations are performed -- see ld's documentation
-   on pseudo-relocs.  */"
-	    lt_dlsym_const= ;;
-	  *osf5*)
-	    echo >> "$output_objdir/$my_dlsyms" "\
-/* This system does not cope well with relocations in const data */"
-	    lt_dlsym_const= ;;
-	  *)
-	    lt_dlsym_const=const ;;
-	  esac
-
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-extern $lt_dlsym_const lt_dlsymlist
+extern LT_DLSYM_CONST lt_dlsymlist
 lt_${my_prefix}_LTX_preloaded_symbols[];
-$lt_dlsym_const lt_dlsymlist
+LT_DLSYM_CONST lt_dlsymlist
 lt_${my_prefix}_LTX_preloaded_symbols[] =
 {\
   { \"$my_originator\", (void *) 0 },"
@@ -2457,7 +3443,7 @@
 	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
 	    ;;
 	  esac
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
+	  echo >> "$output_objdir/$my_dlsyms" "\
   {0, (void *) 0}
 };
 
@@ -2500,7 +3486,7 @@
 	for arg in $LTCFLAGS; do
 	  case $arg in
 	  -pie | -fpie | -fPIE) ;;
-	  *) symtab_cflags="$symtab_cflags $arg" ;;
+	  *) func_append symtab_cflags " $arg" ;;
 	  esac
 	done
 
@@ -2515,16 +3501,16 @@
 	case $host in
 	*cygwin* | *mingw* | *cegcc* )
 	  if test -f "$output_objdir/$my_outputname.def"; then
-	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
 	  else
-	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
 	  fi
 	  ;;
 	*)
-	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
 	  ;;
 	esac
 	;;
@@ -2538,8 +3524,8 @@
       # really was required.
 
       # Nullify the symbol file.
-      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
     fi
 }
 
@@ -2549,6 +3535,7 @@
 # Need a lot of goo to handle *both* DLLs and import libs
 # Has to be a shell function in order to 'eat' the argument
 # that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
 func_win32_libid ()
 {
   $opt_debug
@@ -2559,9 +3546,11 @@
     win32_libid_type="x86 archive import"
     ;;
   *ar\ archive*) # could be an import, or static
+    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
-      win32_nmres=`eval $NM -f posix -A $1 |
+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+      func_to_tool_file "$1" func_convert_file_msys_to_w32
+      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
 	$SED -n -e '
 	    1,100{
 		/ I /{
@@ -2590,6 +3579,131 @@
   $ECHO "$win32_libid_type"
 }
 
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+  $opt_debug
+  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+  $opt_debug
+  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+    $SED '/^Contents of section '"$match_literal"':/{
+      # Place marker at beginning of archive member dllname section
+      s/.*/====MARK====/
+      p
+      d
+    }
+    # These lines can sometimes be longer than 43 characters, but
+    # are always uninteresting
+    /:[	 ]*file format pe[i]\{,1\}-/d
+    /^In archive [^:]*:/d
+    # Ensure marker is printed
+    /^====MARK====/p
+    # Remove all lines with less than 43 characters
+    /^.\{43\}/!d
+    # From remaining lines, remove first 43 characters
+    s/^.\{43\}//' |
+    $SED -n '
+      # Join marker and all lines until next marker into a single line
+      /^====MARK====/ b para
+      H
+      $ b para
+      b
+      :para
+      x
+      s/\n//g
+      # Remove the marker
+      s/^====MARK====//
+      # Remove trailing dots and whitespace
+      s/[\. \t]*$//
+      # Print
+      /./p' |
+    # we now have a list, one entry per line, of the stringified
+    # contents of the appropriate section of all members of the
+    # archive which possess that section. Heuristic: eliminate
+    # all those which have a first or second character that is
+    # a '.' (that is, objdump's representation of an unprintable
+    # character.) This should work for all archives with less than
+    # 0x302f exports -- but will fail for DLLs whose name actually
+    # begins with a literal '.' or a single character followed by
+    # a '.'.
+    #
+    # Of those that remain, print the first one.
+    $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+  $opt_debug
+  if func_cygming_gnu_implib_p "$1" ; then
+    # binutils import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+  elif func_cygming_ms_implib_p "$1" ; then
+    # ms-generated import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+  else
+    # unknown
+    sharedlib_from_linklib_result=""
+  fi
+}
 
 
 # func_extract_an_archive dir oldlib
@@ -2598,7 +3712,18 @@
     $opt_debug
     f_ex_an_ar_dir="$1"; shift
     f_ex_an_ar_oldlib="$1"
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
+    if test "$lock_old_archive_extraction" = yes; then
+      lockfile=$f_ex_an_ar_oldlib.lock
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    fi
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+		   'stat=$?; rm -f "$lockfile"; exit $stat'
+    if test "$lock_old_archive_extraction" = yes; then
+      $opt_dry_run || rm -f "$lockfile"
+    fi
     if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
      :
     else
@@ -2669,7 +3794,7 @@
 	    darwin_file=
 	    darwin_files=
 	    for darwin_file in $darwin_filelist; do
-	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
 	      $LIPO -create -output "$darwin_file" $darwin_files
 	    done # $darwin_filelist
 	    $RM -rf unfat-$$
@@ -2684,25 +3809,30 @@
         func_extract_an_archive "$my_xdir" "$my_xabs"
 	;;
       esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
     done
 
     func_extract_archives_result="$my_oldobjs"
 }
 
 
-
-# func_emit_wrapper_part1 [arg=no]
+# func_emit_wrapper [arg=no]
 #
-# Emit the first part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part1 ()
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
 {
-	func_emit_wrapper_part1_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part1_arg1=$1
-	fi
+	func_emit_wrapper_arg1=${1-no}
 
 	$ECHO "\
 #! $SHELL
@@ -2718,7 +3848,6 @@
 
 # Sed substitution that helps us do robust quoting.  It backslashifies
 # metacharacters that are still active within double-quoted strings.
-Xsed='${SED} -e 1s/^X//'
 sed_quote_subst='$sed_quote_subst'
 
 # Be Bourne compatible
@@ -2749,31 +3878,132 @@
 else
   # When we are sourced in execute mode, \$file and \$ECHO are already set.
   if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    ECHO=\"$qecho\"
-    file=\"\$0\"
-    # Make sure echo works.
-    if test \"X\$1\" = X--no-reexec; then
-      # Discard the --no-reexec flag, and continue.
-      shift
-    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
-      # Yippee, \$ECHO works!
-      :
-    else
-      # Restart under the correct shell, and then maybe \$ECHO will work.
-      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
-    fi
-  fi\
+    file=\"\$0\""
+
+    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+    $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+    ECHO=\"$qECHO\"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ which is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options which match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=\$0
+  shift
+  for lt_opt
+  do
+    case \"\$lt_opt\" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+        cat \"\$lt_dump_D/\$lt_dump_F\"
+        exit 0
+      ;;
+    --lt-*)
+        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n \"\$lt_option_debug\"; then
+    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
 "
-	$ECHO "\
+  case $host in
+  # Backslashes separate directories on plain windows
+  *-*-mingw | *-*-os2* | *-cegcc*)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+    ;;
+
+  *)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+    ;;
+  esac
+  $ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  for lt_wr_arg
+  do
+    case \$lt_wr_arg in
+    --lt-*) ;;
+    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+    esac
+    shift
+  done
+  func_exec_program_core \${1+\"\$@\"}
+}
+
+  # Parse options
+  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
 
   # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
   test \"x\$thisdir\" = \"x\$file\" && thisdir=.
 
   # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
   while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
 
     # If there was a directory component, then change thisdir.
     if test \"x\$destdir\" != \"x\$file\"; then
@@ -2783,30 +4013,13 @@
       esac
     fi
 
-    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
   done
-"
-}
-# end: func_emit_wrapper_part1
-
-# func_emit_wrapper_part2 [arg=no]
-#
-# Emit the second part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part2 ()
-{
-	func_emit_wrapper_part2_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part2_arg1=$1
-	fi
-
-	$ECHO "\
 
   # Usually 'no', except on cygwin/mingw when embedded into
   # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
   if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
     # special case for '.'
     if test \"\$thisdir\" = \".\"; then
@@ -2814,7 +4027,7 @@
     fi
     # remove .libs from thisdir
     case \"\$thisdir\" in
-    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
     $objdir )   thisdir=. ;;
     esac
   fi
@@ -2869,6 +4082,18 @@
 
   if test -f \"\$progdir/\$program\"; then"
 
+	# fixup the dll searchpath if we need to.
+	#
+	# Fix the DLL searchpath if we need to.  Do this before prepending
+	# to shlibpath, because on Windows, both are PATH and uninstalled
+	# libraries must come first.
+	if test -n "$dllsearchpath"; then
+	  $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
 	# Export our shlibpath_var if we have one.
 	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
 	  $ECHO "\
@@ -2877,254 +4102,29 @@
 
     # Some systems cannot cope with colon-terminated $shlibpath_var
     # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
 
     export $shlibpath_var
 "
 	fi
 
-	# fixup the dll searchpath if we need to.
-	if test -n "$dllsearchpath"; then
-	  $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-	fi
-
 	$ECHO "\
     if test \"\$libtool_execute_magic\" != \"$magic\"; then
       # Run the actual program with our arguments.
-"
-	case $host in
-	# Backslashes separate directories on plain windows
-	*-*-mingw | *-*-os2* | *-cegcc*)
-	  $ECHO "\
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-	  ;;
-
-	*)
-	  $ECHO "\
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-	  ;;
-	esac
-	$ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 1
+      func_exec_program \${1+\"\$@\"}
     fi
   else
     # The program doesn't exist.
     \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
     \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
     exit 1
   fi
 fi\
 "
 }
-# end: func_emit_wrapper_part2
 
 
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable.  Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take.  If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
-# the $objdir directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
-	func_emit_wrapper_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_arg1=$1
-	fi
-
-	# split this up so that func_emit_cwrapperexe_src
-	# can call each part independently.
-	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
-	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
-}
-
-
-# func_to_host_path arg
-#
-# Convert paths to host format when used with build tools.
-# Intended for use with "native" mingw (where libtool itself
-# is running under the msys shell), or in the following cross-
-# build environments:
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-# where wine is equipped with the `winepath' executable.
-# In the native mingw case, the (msys) shell automatically
-# converts paths for any non-msys applications it launches,
-# but that facility isn't available from inside the cwrapper.
-# Similar accommodations are necessary for $host mingw and
-# $build cygwin.  Calling this function does no harm for other
-# $host/$build combinations not listed above.
-#
-# ARG is the path (on $build) that should be converted to
-# the proper representation for $host. The result is stored
-# in $func_to_host_path_result.
-func_to_host_path ()
-{
-  func_to_host_path_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        case $build in
-          *mingw* ) # actually, msys
-            # awkward: cmd appends spaces to result
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_path_tmp1=`cygpath -w "$1"`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # Unfortunately, winepath does not exit with a non-zero
-            # error code, so we are forced to check the contents of
-            # stdout. On the other hand, if the command is not
-            # found, the shell will set an exit code of 127 and print
-            # *an error message* to stdout. So we must check for both
-            # error code of zero AND non-empty stdout, which explains
-            # the odd construction:
-            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
-            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
-              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-                $SED -e "$lt_sed_naive_backslashify"`
-            else
-              # Allow warning below.
-              func_to_host_path_result=""
-            fi
-            ;;
-        esac
-        if test -z "$func_to_host_path_result" ; then
-          func_error "Could not determine host path corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback:
-          func_to_host_path_result="$1"
-        fi
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_path
-
-# func_to_host_pathlist arg
-#
-# Convert pathlists to host format when used with build tools.
-# See func_to_host_path(), above. This function supports the
-# following $build/$host combinations (but does no harm for
-# combinations not listed here):
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-#
-# Path separators are also converted from $build format to
-# $host format. If ARG begins or ends with a path separator
-# character, it is preserved (but converted to $host format)
-# on output.
-#
-# ARG is a pathlist (on $build) that should be converted to
-# the proper representation on $host. The result is stored
-# in $func_to_host_pathlist_result.
-func_to_host_pathlist ()
-{
-  func_to_host_pathlist_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        # Remove leading and trailing path separator characters from
-        # ARG. msys behavior is inconsistent here, cygpath turns them
-        # into '.;' and ';.', and winepath ignores them completely.
-        func_to_host_pathlist_tmp2="$1"
-        # Once set for this call, this variable should not be
-        # reassigned. It is used in tha fallback case.
-        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
-          $SED -e 's|^:*||' -e 's|:*$||'`
-        case $build in
-          *mingw* ) # Actually, msys.
-            # Awkward: cmd appends spaces to result.
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # unfortunately, winepath doesn't convert pathlists
-            func_to_host_pathlist_result=""
-            func_to_host_pathlist_oldIFS=$IFS
-            IFS=:
-            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
-              IFS=$func_to_host_pathlist_oldIFS
-              if test -n "$func_to_host_pathlist_f" ; then
-                func_to_host_path "$func_to_host_pathlist_f"
-                if test -n "$func_to_host_path_result" ; then
-                  if test -z "$func_to_host_pathlist_result" ; then
-                    func_to_host_pathlist_result="$func_to_host_path_result"
-                  else
-                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
-                  fi
-                fi
-              fi
-              IFS=:
-            done
-            IFS=$func_to_host_pathlist_oldIFS
-            ;;
-        esac
-        if test -z "$func_to_host_pathlist_result" ; then
-          func_error "Could not determine the host path(s) corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback. This may break if $1 contains DOS-style drive
-          # specifications. The fix is not to complicate the expression
-          # below, but for the user to provide a working wine installation
-          # with winepath so that path translation in the cross-to-mingw
-          # case works properly.
-          lt_replace_pathsep_nix_to_dos="s|:|;|g"
-          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
-            $SED -e "$lt_replace_pathsep_nix_to_dos"`
-        fi
-        # Now, add the leading and trailing path separators back
-        case "$1" in
-          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
-            ;;
-        esac
-        case "$1" in
-          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
-            ;;
-        esac
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_pathlist
-
 # func_emit_cwrapperexe_src
 # emit the source code for a wrapper executable on stdout
 # Must ONLY be called from within func_mode_link because
@@ -3141,31 +4141,23 @@
 
    This wrapper executable should never be moved out of the build directory.
    If it is, it will not operate correctly.
-
-   Currently, it simply execs the wrapper *script* "$SHELL $output",
-   but could eventually absorb all of the scripts functionality and
-   exec $objdir/$outputname directly.
 */
 EOF
 	    cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
 #include <stdio.h>
 #include <stdlib.h>
 #ifdef _MSC_VER
 # include <direct.h>
 # include <process.h>
 # include <io.h>
-# define setmode _setmode
 #else
 # include <unistd.h>
 # include <stdint.h>
 # ifdef __CYGWIN__
 #  include <io.h>
-#  define HAVE_SETENV
-#  ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-#  endif
 # endif
 #endif
 #include <malloc.h>
@@ -3177,6 +4169,44 @@
 #include <fcntl.h>
 #include <sys/stat.h>
 
+/* declarations of non-ANSI functions */
+#if defined(__MINGW32__)
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined(__CYGWIN__)
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined (other platforms) ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined(_MSC_VER)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+# define S_IXUSR _S_IEXEC
+# ifndef _INTPTR_T_DEFINED
+#  define _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#elif defined(__MINGW32__)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+#elif defined(__CYGWIN__)
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined (other platforms) ... */
+#endif
+
 #if defined(PATH_MAX)
 # define LT_PATHMAX PATH_MAX
 #elif defined(MAXPATHLEN)
@@ -3192,14 +4222,7 @@
 # define S_IXGRP 0
 #endif
 
-#ifdef _MSC_VER
-# define S_IXUSR _S_IEXEC
-# define stat _stat
-# ifndef _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#endif
-
+/* path handling portability macros */
 #ifndef DIR_SEPARATOR
 # define DIR_SEPARATOR '/'
 # define PATH_SEPARATOR ':'
@@ -3230,10 +4253,6 @@
 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
 #endif /* PATH_SEPARATOR_2 */
 
-#ifdef __CYGWIN__
-# define FOPEN_WB "wb"
-#endif
-
 #ifndef FOPEN_WB
 # define FOPEN_WB "w"
 #endif
@@ -3246,22 +4265,13 @@
   if (stale) { free ((void *) stale); stale = 0; } \
 } while (0)
 
-#undef LTWRAPPER_DEBUGPRINTF
-#if defined DEBUGWRAPPER
-# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
-static void
-ltwrapper_debugprintf (const char *fmt, ...)
-{
-    va_list args;
-    va_start (args, fmt);
-    (void) vfprintf (stderr, fmt, args);
-    va_end (args);
-}
+#if defined(LT_DEBUGWRAPPER)
+static int lt_debug = 1;
 #else
-# define LTWRAPPER_DEBUGPRINTF(args)
+static int lt_debug = 0;
 #endif
 
-const char *program_name = NULL;
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
 
 void *xmalloc (size_t num);
 char *xstrdup (const char *string);
@@ -3271,41 +4281,27 @@
 int make_executable (const char *path);
 int check_executable (const char *path);
 char *strendzap (char *str, const char *pat);
-void lt_fatal (const char *message, ...);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
 void lt_setenv (const char *name, const char *value);
 char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_opt_process_env_set (const char *arg);
-void lt_opt_process_env_prepend (const char *arg);
-void lt_opt_process_env_append (const char *arg);
-int lt_split_name_value (const char *arg, char** name, char** value);
 void lt_update_exe_path (const char *name, const char *value);
 void lt_update_lib_path (const char *name, const char *value);
-
-static const char *script_text_part1 =
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
 EOF
 
-	    func_emit_wrapper_part1 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
 	    cat <<EOF
-
-static const char *script_text_part2 =
-EOF
-	    func_emit_wrapper_part2 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
-
-	    cat <<EOF
-const char * MAGIC_EXE = "$magic_exe";
+volatile const char * MAGIC_EXE = "$magic_exe";
 const char * LIB_PATH_VARNAME = "$shlibpath_var";
 EOF
 
 	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-              func_to_host_pathlist "$temp_rpath"
+              func_to_host_path "$temp_rpath"
 	      cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
 EOF
 	    else
 	      cat <<"EOF"
@@ -3314,10 +4310,10 @@
 	    fi
 
 	    if test -n "$dllsearchpath"; then
-              func_to_host_pathlist "$dllsearchpath:"
+              func_to_host_path "$dllsearchpath:"
 	      cat <<EOF
 const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
 EOF
 	    else
 	      cat <<"EOF"
@@ -3340,24 +4336,10 @@
 	    cat <<"EOF"
 
 #define LTWRAPPER_OPTION_PREFIX         "--lt-"
-#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
 
-static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
 static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-
 static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-
-static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
-static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
-  /* argument is putenv-style "foo=bar", value of foo is set to bar */
-
-static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
-static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
-  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
-
-static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
-static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
-  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
 
 int
 main (int argc, char *argv[])
@@ -3374,10 +4356,13 @@
   int i;
 
   program_name = (char *) xstrdup (base_name (argv[0]));
-  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
-  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
+  newargz = XMALLOC (char *, argc + 1);
 
-  /* very simple arg parsing; don't want to rely on getopt */
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
   for (i = 1; i < argc; i++)
     {
       if (strcmp (argv[i], dumpscript_opt) == 0)
@@ -3391,25 +4376,57 @@
 	      esac
 
 	    cat <<"EOF"
-	  printf ("%s", script_text_part1);
-	  printf ("%s", script_text_part2);
+	  lt_dump_script (stdout);
 	  return 0;
 	}
+      if (strcmp (argv[i], debug_opt) == 0)
+	{
+          lt_debug = 1;
+          continue;
+	}
+      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+		    "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
     }
+  newargz[++newargc] = NULL;
 
-  newargz = XMALLOC (char *, argc + 1);
+EOF
+	    cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+EOF
+	    cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
   tmp_pathspec = find_executable (argv[0]);
   if (tmp_pathspec == NULL)
-    lt_fatal ("Couldn't find %s", argv[0]);
-  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
-			  tmp_pathspec));
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+		  tmp_pathspec);
 
   actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
-			  actual_cwrapper_path));
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+		  actual_cwrapper_path);
   XFREE (tmp_pathspec);
 
-  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
   strendzap (actual_cwrapper_path, actual_cwrapper_name);
 
   /* wrapper name transforms */
@@ -3427,8 +4444,9 @@
   target_name = tmp_pathspec;
   tmp_pathspec = 0;
 
-  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
-			  target_name));
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(main) libtool target name: %s\n",
+		  target_name);
 EOF
 
 	    cat <<EOF
@@ -3478,80 +4496,19 @@
 
   lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
   lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
   lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
 
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
-        {
-          if (argv[i][env_set_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_set_opt_len + 1;
-              lt_opt_process_env_set (p);
-            }
-          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_set (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_set_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
-        {
-          if (argv[i][env_prepend_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_prepend_opt_len + 1;
-              lt_opt_process_env_prepend (p);
-            }
-          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_prepend_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
-        {
-          if (argv[i][env_append_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_append_opt_len + 1;
-              lt_opt_process_env_append (p);
-            }
-          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_append (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_append_opt);
-          continue;
-        }
-      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
-        {
-          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-             namespace, but it is not one of the ones we know about and
-             have already dealt with, above (inluding dump-script), then
-             report an error. Otherwise, targets might begin to believe
-             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-             namespace. The first time any user complains about this, we'll
-             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-             or a configure.ac-settable value.
-           */
-          lt_fatal ("Unrecognized option in %s namespace: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+		  nonnull (lt_argv_zero));
   for (i = 0; i < newargc; i++)
     {
-      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+		      i, nonnull (newargz[i]));
     }
 
 EOF
@@ -3560,11 +4517,14 @@
 	      mingw*)
 		cat <<"EOF"
   /* execv doesn't actually work on mingw as expected on unix */
+  newargz = prepare_spawn (newargz);
   rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
   if (rval == -1)
     {
       /* failed to start process */
-      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
+      lt_debugprintf (__FILE__, __LINE__,
+		      "(main) failed to launch target \"%s\": %s\n",
+		      lt_argv_zero, nonnull (strerror (errno)));
       return 127;
     }
   return rval;
@@ -3586,7 +4546,7 @@
 {
   void *p = (void *) malloc (num);
   if (!p)
-    lt_fatal ("Memory exhausted");
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
 
   return p;
 }
@@ -3620,8 +4580,8 @@
 {
   struct stat st;
 
-  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
   if ((!path) || (!*path))
     return 0;
 
@@ -3638,8 +4598,8 @@
   int rval = 0;
   struct stat st;
 
-  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
+  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+                  nonempty (path));
   if ((!path) || (!*path))
     return 0;
 
@@ -3665,8 +4625,8 @@
   int tmp_len;
   char *concat_name;
 
-  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
-			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
+  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+                  nonempty (wrapper));
 
   if ((wrapper == NULL) || (*wrapper == '\0'))
     return NULL;
@@ -3719,7 +4679,8 @@
 		{
 		  /* empty path: current directory */
 		  if (getcwd (tmp, LT_PATHMAX) == NULL)
-		    lt_fatal ("getcwd failed");
+		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+                              nonnull (strerror (errno)));
 		  tmp_len = strlen (tmp);
 		  concat_name =
 		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
@@ -3744,7 +4705,8 @@
     }
   /* Relative path | not found in path: prepend cwd */
   if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal ("getcwd failed");
+    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+              nonnull (strerror (errno)));
   tmp_len = strlen (tmp);
   concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
   memcpy (concat_name, tmp, tmp_len);
@@ -3770,8 +4732,9 @@
   int has_symlinks = 0;
   while (strlen (tmp_pathspec) && !has_symlinks)
     {
-      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
-			      tmp_pathspec));
+      lt_debugprintf (__FILE__, __LINE__,
+		      "checking path component for symlinks: %s\n",
+		      tmp_pathspec);
       if (lstat (tmp_pathspec, &s) == 0)
 	{
 	  if (S_ISLNK (s.st_mode) != 0)
@@ -3793,8 +4756,9 @@
 	}
       else
 	{
-	  char *errstr = strerror (errno);
-	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
+	  lt_fatal (__FILE__, __LINE__,
+		    "error accessing file \"%s\": %s",
+		    tmp_pathspec, nonnull (strerror (errno)));
 	}
     }
   XFREE (tmp_pathspec);
@@ -3807,7 +4771,8 @@
   tmp_pathspec = realpath (pathspec, buf);
   if (tmp_pathspec == 0)
     {
-      lt_fatal ("Could not follow symlinks for %s", pathspec);
+      lt_fatal (__FILE__, __LINE__,
+		"could not follow symlinks for %s", pathspec);
     }
   return xstrdup (tmp_pathspec);
 #endif
@@ -3833,11 +4798,25 @@
   return str;
 }
 
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+  va_list args;
+  if (lt_debug)
+    {
+      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+      va_start (args, fmt);
+      (void) vfprintf (stderr, fmt, args);
+      va_end (args);
+    }
+}
+
 static void
-lt_error_core (int exit_status, const char *mode,
+lt_error_core (int exit_status, const char *file,
+	       int line, const char *mode,
 	       const char *message, va_list ap)
 {
-  fprintf (stderr, "%s: %s: ", program_name, mode);
+  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
   vfprintf (stderr, message, ap);
   fprintf (stderr, ".\n");
 
@@ -3846,20 +4825,32 @@
 }
 
 void
-lt_fatal (const char *message, ...)
+lt_fatal (const char *file, int line, const char *message, ...)
 {
   va_list ap;
   va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
   va_end (ap);
 }
 
+static const char *
+nonnull (const char *s)
+{
+  return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+  return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
 void
 lt_setenv (const char *name, const char *value)
 {
-  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_setenv) setting '%s' to '%s'\n",
+                  nonnull (name), nonnull (value));
   {
 #ifdef HAVE_SETENV
     /* always make a copy, for consistency with !HAVE_SETENV */
@@ -3904,95 +4895,12 @@
   return new_value;
 }
 
-int
-lt_split_name_value (const char *arg, char** name, char** value)
-{
-  const char *p;
-  int len;
-  if (!arg || !*arg)
-    return 1;
-
-  p = strchr (arg, (int)'=');
-
-  if (!p)
-    return 1;
-
-  *value = xstrdup (++p);
-
-  len = strlen (arg) - strlen (*value);
-  *name = XMALLOC (char, len);
-  strncpy (*name, arg, len-1);
-  (*name)[len - 1] = '\0';
-
-  return 0;
-}
-
-void
-lt_opt_process_env_set (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
-    }
-
-  lt_setenv (name, value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_prepend (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 0);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_append (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 1);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
 void
 lt_update_exe_path (const char *name, const char *value)
 {
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
 
   if (name && *name && value && *value)
     {
@@ -4011,9 +4919,9 @@
 void
 lt_update_lib_path (const char *name, const char *value)
 {
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
 
   if (name && *name && value && *value)
     {
@@ -4023,11 +4931,152 @@
     }
 }
 
+EOF
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
 
+/* Prepares an argument vector before calling spawn().
+   Note that spawn() does not by itself call the command interpreter
+     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+         GetVersionEx(&v);
+         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+      }) ? "cmd.exe" : "command.com").
+   Instead it simply concatenates the arguments, separated by ' ', and calls
+   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
+   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+   special way:
+   - Space and tab are interpreted as delimiters. They are not treated as
+     delimiters if they are surrounded by double quotes: "...".
+   - Unescaped double quotes are removed from the input. Their only effect is
+     that within double quotes, space and tab are treated like normal
+     characters.
+   - Backslashes not followed by double quotes are not special.
+   - But 2*n+1 backslashes followed by a double quote become
+     n backslashes followed by a double quote (n >= 0):
+       \" -> "
+       \\\" -> \"
+       \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+  size_t argc;
+  char **new_argv;
+  size_t i;
+
+  /* Count number of arguments.  */
+  for (argc = 0; argv[argc] != NULL; argc++)
+    ;
+
+  /* Allocate new argument vector.  */
+  new_argv = XMALLOC (char *, argc + 1);
+
+  /* Put quoted arguments into the new argument vector.  */
+  for (i = 0; i < argc; i++)
+    {
+      const char *string = argv[i];
+
+      if (string[0] == '\0')
+	new_argv[i] = xstrdup ("\"\"");
+      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+	{
+	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+	  size_t length;
+	  unsigned int backslashes;
+	  const char *s;
+	  char *quoted_string;
+	  char *p;
+
+	  length = 0;
+	  backslashes = 0;
+	  if (quote_around)
+	    length++;
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		length += backslashes + 1;
+	      length++;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    length += backslashes + 1;
+
+	  quoted_string = XMALLOC (char, length + 1);
+
+	  p = quoted_string;
+	  backslashes = 0;
+	  if (quote_around)
+	    *p++ = '"';
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		{
+		  unsigned int j;
+		  for (j = backslashes + 1; j > 0; j--)
+		    *p++ = '\\';
+		}
+	      *p++ = c;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    {
+	      unsigned int j;
+	      for (j = backslashes; j > 0; j--)
+		*p++ = '\\';
+	      *p++ = '"';
+	    }
+	  *p = '\0';
+
+	  new_argv[i] = quoted_string;
+	}
+      else
+	new_argv[i] = (char *) string;
+    }
+  new_argv[argc] = NULL;
+
+  return new_argv;
+}
+EOF
+		;;
+	    esac
+
+            cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+	    func_emit_wrapper yes |
+              $SED -e 's/\([\\"]\)/\\\1/g' \
+	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
+
+            cat <<"EOF"
+}
 EOF
 }
 # end: func_emit_cwrapperexe_src
 
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+    $opt_debug
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
+
 # func_mode_link arg...
 func_mode_link ()
 {
@@ -4072,6 +5121,7 @@
     new_inherited_linker_flags=
 
     avoid_version=no
+    bindir=
     dlfiles=
     dlprefiles=
     dlself=no
@@ -4164,6 +5214,11 @@
 	esac
 
 	case $prev in
+	bindir)
+	  bindir="$arg"
+	  prev=
+	  continue
+	  ;;
 	dlfiles|dlprefiles)
 	  if test "$preload" = no; then
 	    # Add the symbol object into the linking commands.
@@ -4195,9 +5250,9 @@
 	    ;;
 	  *)
 	    if test "$prev" = dlfiles; then
-	      dlfiles="$dlfiles $arg"
+	      func_append dlfiles " $arg"
 	    else
-	      dlprefiles="$dlprefiles $arg"
+	      func_append dlprefiles " $arg"
 	    fi
 	    prev=
 	    continue
@@ -4221,7 +5276,7 @@
 	    *-*-darwin*)
 	      case "$deplibs " in
 		*" $qarg.ltframework "*) ;;
-		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
+		*) func_append deplibs " $qarg.ltframework" # this is fixed later
 		   ;;
 	      esac
 	      ;;
@@ -4240,7 +5295,7 @@
 	    moreargs=
 	    for fil in `cat "$save_arg"`
 	    do
-#	      moreargs="$moreargs $fil"
+#	      func_append moreargs " $fil"
 	      arg=$fil
 	      # A libtool-controlled object.
 
@@ -4269,7 +5324,7 @@
 
 		  if test "$prev" = dlfiles; then
 		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		      dlfiles="$dlfiles $pic_object"
+		      func_append dlfiles " $pic_object"
 		      prev=
 		      continue
 		    else
@@ -4281,7 +5336,7 @@
 		  # CHECK ME:  I think I busted this.  -Ossama
 		  if test "$prev" = dlprefiles; then
 		    # Preload the old-style object.
-		    dlprefiles="$dlprefiles $pic_object"
+		    func_append dlprefiles " $pic_object"
 		    prev=
 		  fi
 
@@ -4351,12 +5406,12 @@
 	  if test "$prev" = rpath; then
 	    case "$rpath " in
 	    *" $arg "*) ;;
-	    *) rpath="$rpath $arg" ;;
+	    *) func_append rpath " $arg" ;;
 	    esac
 	  else
 	    case "$xrpath " in
 	    *" $arg "*) ;;
-	    *) xrpath="$xrpath $arg" ;;
+	    *) func_append xrpath " $arg" ;;
 	    esac
 	  fi
 	  prev=
@@ -4368,28 +5423,28 @@
 	  continue
 	  ;;
 	weak)
-	  weak_libs="$weak_libs $arg"
+	  func_append weak_libs " $arg"
 	  prev=
 	  continue
 	  ;;
 	xcclinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $qarg"
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $qarg"
 	  prev=
 	  func_append compile_command " $qarg"
 	  func_append finalize_command " $qarg"
 	  continue
 	  ;;
 	xcompiler)
-	  compiler_flags="$compiler_flags $qarg"
+	  func_append compiler_flags " $qarg"
 	  prev=
 	  func_append compile_command " $qarg"
 	  func_append finalize_command " $qarg"
 	  continue
 	  ;;
 	xlinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $wl$qarg"
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $wl$qarg"
 	  prev=
 	  func_append compile_command " $wl$qarg"
 	  func_append finalize_command " $wl$qarg"
@@ -4425,6 +5480,11 @@
 	continue
 	;;
 
+      -bindir)
+	prev=bindir
+	continue
+	;;
+
       -dlopen)
 	prev=dlfiles
 	continue
@@ -4475,15 +5535,16 @@
 	;;
 
       -L*)
-	func_stripname '-L' '' "$arg"
-	dir=$func_stripname_result
-	if test -z "$dir"; then
+	func_stripname "-L" '' "$arg"
+	if test -z "$func_stripname_result"; then
 	  if test "$#" -gt 0; then
 	    func_fatal_error "require no space between \`-L' and \`$1'"
 	  else
 	    func_fatal_error "need path for \`-L' option"
 	  fi
 	fi
+	func_resolve_sysroot "$func_stripname_result"
+	dir=$func_resolve_sysroot_result
 	# We need an absolute path.
 	case $dir in
 	[\\/]* | [A-Za-z]:[\\/]*) ;;
@@ -4495,24 +5556,30 @@
 	  ;;
 	esac
 	case "$deplibs " in
-	*" -L$dir "*) ;;
+	*" -L$dir "* | *" $arg "*)
+	  # Will only happen for absolute or sysroot arguments
+	  ;;
 	*)
-	  deplibs="$deplibs -L$dir"
-	  lib_search_path="$lib_search_path $dir"
+	  # Preserve sysroot, but never include relative directories
+	  case $dir in
+	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+	    *) func_append deplibs " -L$dir" ;;
+	  esac
+	  func_append lib_search_path " $dir"
 	  ;;
 	esac
 	case $host in
 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
 	  case :$dllsearchpath: in
 	  *":$dir:"*) ;;
 	  ::) dllsearchpath=$dir;;
-	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  *) func_append dllsearchpath ":$dir";;
 	  esac
 	  case :$dllsearchpath: in
 	  *":$testbindir:"*) ;;
 	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  *) func_append dllsearchpath ":$testbindir";;
 	  esac
 	  ;;
 	esac
@@ -4522,7 +5589,7 @@
       -l*)
 	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
 	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
 	    # These systems don't actually have a C or math library (as such)
 	    continue
 	    ;;
@@ -4536,7 +5603,7 @@
 	    ;;
 	  *-*-rhapsody* | *-*-darwin1.[012])
 	    # Rhapsody C and math libraries are in the System framework
-	    deplibs="$deplibs System.ltframework"
+	    func_append deplibs " System.ltframework"
 	    continue
 	    ;;
 	  *-*-sco3.2v5* | *-*-sco5v6*)
@@ -4556,7 +5623,7 @@
 	   ;;
 	 esac
 	fi
-	deplibs="$deplibs $arg"
+	func_append deplibs " $arg"
 	continue
 	;;
 
@@ -4568,21 +5635,21 @@
       # Tru64 UNIX uses -model [arg] to determine the layout of C++
       # classes, name mangling, and exception handling.
       # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot)
-	compiler_flags="$compiler_flags $arg"
+      -model|-arch|-isysroot|--sysroot)
+	func_append compiler_flags " $arg"
 	func_append compile_command " $arg"
 	func_append finalize_command " $arg"
 	prev=xcompiler
 	continue
 	;;
 
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads|-fstack-protector*)
-	compiler_flags="$compiler_flags $arg"
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+	func_append compiler_flags " $arg"
 	func_append compile_command " $arg"
 	func_append finalize_command " $arg"
 	case "$new_inherited_linker_flags " in
 	    *" $arg "*) ;;
-	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
+	    * ) func_append new_inherited_linker_flags " $arg" ;;
 	esac
 	continue
 	;;
@@ -4649,13 +5716,17 @@
 	# We need an absolute path.
 	case $dir in
 	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	=*)
+	  func_stripname '=' '' "$dir"
+	  dir=$lt_sysroot$func_stripname_result
+	  ;;
 	*)
 	  func_fatal_error "only absolute run-paths are allowed"
 	  ;;
 	esac
 	case "$xrpath " in
 	*" $dir "*) ;;
-	*) xrpath="$xrpath $dir" ;;
+	*) func_append xrpath " $dir" ;;
 	esac
 	continue
 	;;
@@ -4708,8 +5779,8 @@
 	for flag in $args; do
 	  IFS="$save_ifs"
           func_quote_for_eval "$flag"
-	  arg="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
+	  func_append arg " $func_quote_for_eval_result"
+	  func_append compiler_flags " $func_quote_for_eval_result"
 	done
 	IFS="$save_ifs"
 	func_stripname ' ' '' "$arg"
@@ -4724,9 +5795,9 @@
 	for flag in $args; do
 	  IFS="$save_ifs"
           func_quote_for_eval "$flag"
-	  arg="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
-	  linker_flags="$linker_flags $func_quote_for_eval_result"
+	  func_append arg " $wl$func_quote_for_eval_result"
+	  func_append compiler_flags " $wl$func_quote_for_eval_result"
+	  func_append linker_flags " $func_quote_for_eval_result"
 	done
 	IFS="$save_ifs"
 	func_stripname ' ' '' "$arg"
@@ -4754,23 +5825,28 @@
 	arg="$func_quote_for_eval_result"
 	;;
 
-      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
-      # -r[0-9][0-9]* specifies the processor on the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
-      # +DA*, +DD* enable 64-bit mode on the HP compiler
-      # -q* pass through compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* pass through architecture-specific
-      # compiler args for GCC
-      # -F/path gives path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
-      # @file GCC response files
+      # Flags to be passed through unchanged, with rationale:
+      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
+      # -r[0-9][0-9]*        specify processor for the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+      # +DA*, +DD*           enable 64-bit mode for the HP compiler
+      # -q*                  compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+      # -F/path              path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # -fstack-protector*   stack protector flags for GCC
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+      -O*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*)
         func_quote_for_eval "$arg"
 	arg="$func_quote_for_eval_result"
         func_append compile_command " $arg"
         func_append finalize_command " $arg"
-        compiler_flags="$compiler_flags $arg"
+        func_append compiler_flags " $arg"
         continue
         ;;
 
@@ -4782,7 +5858,7 @@
 
       *.$objext)
 	# A standard object.
-	objs="$objs $arg"
+	func_append objs " $arg"
 	;;
 
       *.lo)
@@ -4813,7 +5889,7 @@
 
 	    if test "$prev" = dlfiles; then
 	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		dlfiles="$dlfiles $pic_object"
+		func_append dlfiles " $pic_object"
 		prev=
 		continue
 	      else
@@ -4825,7 +5901,7 @@
 	    # CHECK ME:  I think I busted this.  -Ossama
 	    if test "$prev" = dlprefiles; then
 	      # Preload the old-style object.
-	      dlprefiles="$dlprefiles $pic_object"
+	      func_append dlprefiles " $pic_object"
 	      prev=
 	    fi
 
@@ -4870,24 +5946,25 @@
 
       *.$libext)
 	# An archive.
-	deplibs="$deplibs $arg"
-	old_deplibs="$old_deplibs $arg"
+	func_append deplibs " $arg"
+	func_append old_deplibs " $arg"
 	continue
 	;;
 
       *.la)
 	# A libtool-controlled library.
 
+	func_resolve_sysroot "$arg"
 	if test "$prev" = dlfiles; then
 	  # This library was specified with -dlopen.
-	  dlfiles="$dlfiles $arg"
+	  func_append dlfiles " $func_resolve_sysroot_result"
 	  prev=
 	elif test "$prev" = dlprefiles; then
 	  # The library was specified with -dlpreopen.
-	  dlprefiles="$dlprefiles $arg"
+	  func_append dlprefiles " $func_resolve_sysroot_result"
 	  prev=
 	else
-	  deplibs="$deplibs $arg"
+	  func_append deplibs " $func_resolve_sysroot_result"
 	fi
 	continue
 	;;
@@ -4925,7 +6002,7 @@
 
     if test -n "$shlibpath_var"; then
       # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
     else
       shlib_search_path=
     fi
@@ -4934,6 +6011,8 @@
 
     func_dirname "$output" "/" ""
     output_objdir="$func_dirname_result$objdir"
+    func_to_tool_file "$output_objdir/"
+    tool_output_objdir=$func_to_tool_file_result
     # Create the object directory.
     func_mkdir_p "$output_objdir"
 
@@ -4954,12 +6033,12 @@
     # Find all interdependent deplibs by searching for libraries
     # that are linked more than once (e.g. -la -lb -la)
     for deplib in $deplibs; do
-      if $opt_duplicate_deps ; then
+      if $opt_preserve_dup_deps ; then
 	case "$libs " in
-	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	esac
       fi
-      libs="$libs $deplib"
+      func_append libs " $deplib"
     done
 
     if test "$linkmode" = lib; then
@@ -4972,9 +6051,9 @@
       if $opt_duplicate_compiler_generated_deps; then
 	for pre_post_dep in $predeps $postdeps; do
 	  case "$pre_post_deps " in
-	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
 	  esac
-	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	  func_append pre_post_deps " $pre_post_dep"
 	done
       fi
       pre_post_deps=
@@ -5041,17 +6120,19 @@
 	for lib in $dlprefiles; do
 	  # Ignore non-libtool-libs
 	  dependency_libs=
+	  func_resolve_sysroot "$lib"
 	  case $lib in
-	  *.la)	func_source "$lib" ;;
+	  *.la)	func_source "$func_resolve_sysroot_result" ;;
 	  esac
 
 	  # Collect preopened libtool deplibs, except any this library
 	  # has declared as weak libs
 	  for deplib in $dependency_libs; do
-            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
+	    func_basename "$deplib"
+            deplib_base=$func_basename_result
 	    case " $weak_libs " in
 	    *" $deplib_base "*) ;;
-	    *) deplibs="$deplibs $deplib" ;;
+	    *) func_append deplibs " $deplib" ;;
 	    esac
 	  done
 	done
@@ -5072,11 +6153,11 @@
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
 	  else
-	    compiler_flags="$compiler_flags $deplib"
+	    func_append compiler_flags " $deplib"
 	    if test "$linkmode" = lib ; then
 		case "$new_inherited_linker_flags " in
 		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
 		esac
 	    fi
 	  fi
@@ -5161,7 +6242,7 @@
 	    if test "$linkmode" = lib ; then
 		case "$new_inherited_linker_flags " in
 		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
 		esac
 	    fi
 	  fi
@@ -5174,7 +6255,8 @@
 	    test "$pass" = conv && continue
 	    newdependency_libs="$deplib $newdependency_libs"
 	    func_stripname '-L' '' "$deplib"
-	    newlib_search_path="$newlib_search_path $func_stripname_result"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
 	    ;;
 	  prog)
 	    if test "$pass" = conv; then
@@ -5188,7 +6270,8 @@
 	      finalize_deplibs="$deplib $finalize_deplibs"
 	    fi
 	    func_stripname '-L' '' "$deplib"
-	    newlib_search_path="$newlib_search_path $func_stripname_result"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
 	    ;;
 	  *)
 	    func_warning "\`-L' is ignored for archives/objects"
@@ -5199,17 +6282,21 @@
 	-R*)
 	  if test "$pass" = link; then
 	    func_stripname '-R' '' "$deplib"
-	    dir=$func_stripname_result
+	    func_resolve_sysroot "$func_stripname_result"
+	    dir=$func_resolve_sysroot_result
 	    # Make sure the xrpath contains only unique directories.
 	    case "$xrpath " in
 	    *" $dir "*) ;;
-	    *) xrpath="$xrpath $dir" ;;
+	    *) func_append xrpath " $dir" ;;
 	    esac
 	  fi
 	  deplibs="$deplib $deplibs"
 	  continue
 	  ;;
-	*.la) lib="$deplib" ;;
+	*.la)
+	  func_resolve_sysroot "$deplib"
+	  lib=$func_resolve_sysroot_result
+	  ;;
 	*.$libext)
 	  if test "$pass" = conv; then
 	    deplibs="$deplib $deplibs"
@@ -5227,7 +6314,7 @@
 		match_pattern*)
 		  set dummy $deplibs_check_method; shift
 		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
+		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
 		    | $EGREP "$match_pattern_regex" > /dev/null; then
 		    valid_a_lib=yes
 		  fi
@@ -5237,15 +6324,15 @@
 		;;
 	      esac
 	      if test "$valid_a_lib" != yes; then
-		$ECHO
+		echo
 		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
-		$ECHO "*** that it is just a static archive that I should not use here."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because the file extensions .$libext of this argument makes me believe"
+		echo "*** that it is just a static archive that I should not use here."
 	      else
-		$ECHO
+		echo
 		$ECHO "*** Warning: Linking the shared library $output against the"
 		$ECHO "*** static library $deplib is not portable!"
 		deplibs="$deplib $deplibs"
@@ -5272,11 +6359,11 @@
 	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
 	      # If there is no dlopen support or we're linking statically,
 	      # we need to preload.
-	      newdlprefiles="$newdlprefiles $deplib"
+	      func_append newdlprefiles " $deplib"
 	      compile_deplibs="$deplib $compile_deplibs"
 	      finalize_deplibs="$deplib $finalize_deplibs"
 	    else
-	      newdlfiles="$newdlfiles $deplib"
+	      func_append newdlfiles " $deplib"
 	    fi
 	  fi
 	  continue
@@ -5318,20 +6405,20 @@
 
 	# Convert "-framework foo" to "foo.ltframework"
 	if test -n "$inherited_linker_flags"; then
-	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
+	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
 	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
 	    case " $new_inherited_linker_flags " in
 	      *" $tmp_inherited_linker_flag "*) ;;
-	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
+	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
 	    esac
 	  done
 	fi
-	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
 	if test "$linkmode,$pass" = "lib,link" ||
 	   test "$linkmode,$pass" = "prog,scan" ||
 	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
-	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	  test -n "$dlopen" && func_append dlfiles " $dlopen"
+	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
 	fi
 
 	if test "$pass" = conv; then
@@ -5342,20 +6429,20 @@
 	      func_fatal_error "cannot find name of link library for \`$lib'"
 	    fi
 	    # It is a libtool convenience library, so add in its objects.
-	    convenience="$convenience $ladir/$objdir/$old_library"
-	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    func_append convenience " $ladir/$objdir/$old_library"
+	    func_append old_convenience " $ladir/$objdir/$old_library"
 	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
 	    func_fatal_error "\`$lib' is not a convenience library"
 	  fi
 	  tmp_libs=
 	  for deplib in $dependency_libs; do
 	    deplibs="$deplib $deplibs"
-	    if $opt_duplicate_deps ; then
+	    if $opt_preserve_dup_deps ; then
 	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	      esac
 	    fi
-	    tmp_libs="$tmp_libs $deplib"
+	    func_append tmp_libs " $deplib"
 	  done
 	  continue
 	fi # $pass = conv
@@ -5363,9 +6450,15 @@
 
 	# Get the name of the library we link against.
 	linklib=
-	for l in $old_library $library_names; do
-	  linklib="$l"
-	done
+	if test -n "$old_library" &&
+	   { test "$prefer_static_libs" = yes ||
+	     test "$prefer_static_libs,$installed" = "built,no"; }; then
+	  linklib=$old_library
+	else
+	  for l in $old_library $library_names; do
+	    linklib="$l"
+	  done
+	fi
 	if test -z "$linklib"; then
 	  func_fatal_error "cannot find name of link library for \`$lib'"
 	fi
@@ -5382,9 +6475,9 @@
 	    # statically, we need to preload.  We also need to preload any
 	    # dependent libraries so libltdl's deplib preloader doesn't
 	    # bomb out in the load deplibs phase.
-	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	    func_append dlprefiles " $lib $dependency_libs"
 	  else
-	    newdlfiles="$newdlfiles $lib"
+	    func_append newdlfiles " $lib"
 	  fi
 	  continue
 	fi # $pass = dlopen
@@ -5406,14 +6499,14 @@
 
 	# Find the relevant object directory and library name.
 	if test "X$installed" = Xyes; then
-	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
 	    func_warning "library \`$lib' was moved."
 	    dir="$ladir"
 	    absdir="$abs_ladir"
 	    libdir="$abs_ladir"
 	  else
-	    dir="$libdir"
-	    absdir="$libdir"
+	    dir="$lt_sysroot$libdir"
+	    absdir="$lt_sysroot$libdir"
 	  fi
 	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
 	else
@@ -5421,12 +6514,12 @@
 	    dir="$ladir"
 	    absdir="$abs_ladir"
 	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
+	    func_append notinst_path " $abs_ladir"
 	  else
 	    dir="$ladir/$objdir"
 	    absdir="$abs_ladir/$objdir"
 	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
+	    func_append notinst_path " $abs_ladir"
 	  fi
 	fi # $installed = yes
 	func_stripname 'lib' '.la' "$laname"
@@ -5437,20 +6530,46 @@
 	  if test -z "$libdir" && test "$linkmode" = prog; then
 	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
 	  fi
-	  # Prefer using a static library (so that no silly _DYNAMIC symbols
-	  # are required to link).
-	  if test -n "$old_library"; then
-	    newdlprefiles="$newdlprefiles $dir/$old_library"
-	    # Keep a list of preopened convenience libraries to check
-	    # that they are being used correctly in the link pass.
-	    test -z "$libdir" && \
-		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
-	  # Otherwise, use the dlname, so that lt_dlopen finds it.
-	  elif test -n "$dlname"; then
-	    newdlprefiles="$newdlprefiles $dir/$dlname"
-	  else
-	    newdlprefiles="$newdlprefiles $dir/$linklib"
-	  fi
+	  case "$host" in
+	    # special handling for platforms with PE-DLLs.
+	    *cygwin* | *mingw* | *cegcc* )
+	      # Linker will automatically link against shared library if both
+	      # static and shared are present.  Therefore, ensure we extract
+	      # symbols from the import library if a shared library is present
+	      # (otherwise, the dlopen module name will be incorrect).  We do
+	      # this by putting the import library name into $newdlprefiles.
+	      # We recover the dlopen module name by 'saving' the la file
+	      # name in a special purpose variable, and (later) extracting the
+	      # dlname from the la file.
+	      if test -n "$dlname"; then
+	        func_tr_sh "$dir/$linklib"
+	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+	        func_append newdlprefiles " $dir/$linklib"
+	      else
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      fi
+	    ;;
+	    * )
+	      # Prefer using a static library (so that no silly _DYNAMIC symbols
+	      # are required to link).
+	      if test -n "$old_library"; then
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      # Otherwise, use the dlname, so that lt_dlopen finds it.
+	      elif test -n "$dlname"; then
+	        func_append newdlprefiles " $dir/$dlname"
+	      else
+	        func_append newdlprefiles " $dir/$linklib"
+	      fi
+	    ;;
+	  esac
 	fi # $pass = dlpreopen
 
 	if test -z "$libdir"; then
@@ -5468,7 +6587,7 @@
 
 
 	if test "$linkmode" = prog && test "$pass" != link; then
-	  newlib_search_path="$newlib_search_path $ladir"
+	  func_append newlib_search_path " $ladir"
 	  deplibs="$lib $deplibs"
 
 	  linkalldeplibs=no
@@ -5481,7 +6600,8 @@
 	  for deplib in $dependency_libs; do
 	    case $deplib in
 	    -L*) func_stripname '-L' '' "$deplib"
-	         newlib_search_path="$newlib_search_path $func_stripname_result"
+	         func_resolve_sysroot "$func_stripname_result"
+	         func_append newlib_search_path " $func_resolve_sysroot_result"
 		 ;;
 	    esac
 	    # Need to link against all dependency_libs?
@@ -5492,12 +6612,12 @@
 	      # or/and link against static libraries
 	      newdependency_libs="$deplib $newdependency_libs"
 	    fi
-	    if $opt_duplicate_deps ; then
+	    if $opt_preserve_dup_deps ; then
 	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	      esac
 	    fi
-	    tmp_libs="$tmp_libs $deplib"
+	    func_append tmp_libs " $deplib"
 	  done # for deplib
 	  continue
 	fi # $linkmode = prog...
@@ -5512,7 +6632,7 @@
 	      # Make sure the rpath contains only unique directories.
 	      case "$temp_rpath:" in
 	      *"$absdir:"*) ;;
-	      *) temp_rpath="$temp_rpath$absdir:" ;;
+	      *) func_append temp_rpath "$absdir:" ;;
 	      esac
 	    fi
 
@@ -5524,7 +6644,7 @@
 	    *)
 	      case "$compile_rpath " in
 	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
+	      *) func_append compile_rpath " $absdir" ;;
 	      esac
 	      ;;
 	    esac
@@ -5533,7 +6653,7 @@
 	    *)
 	      case "$finalize_rpath " in
 	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
+	      *) func_append finalize_rpath " $libdir" ;;
 	      esac
 	      ;;
 	    esac
@@ -5558,12 +6678,12 @@
 	  case $host in
 	  *cygwin* | *mingw* | *cegcc*)
 	      # No point in relinking DLLs because paths are not encoded
-	      notinst_deplibs="$notinst_deplibs $lib"
+	      func_append notinst_deplibs " $lib"
 	      need_relink=no
 	    ;;
 	  *)
 	    if test "$installed" = no; then
-	      notinst_deplibs="$notinst_deplibs $lib"
+	      func_append notinst_deplibs " $lib"
 	      need_relink=yes
 	    fi
 	    ;;
@@ -5580,7 +6700,7 @@
 	    fi
 	  done
 	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
-	    $ECHO
+	    echo
 	    if test "$linkmode" = prog; then
 	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
 	    else
@@ -5598,7 +6718,7 @@
 	    *)
 	      case "$compile_rpath " in
 	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
+	      *) func_append compile_rpath " $absdir" ;;
 	      esac
 	      ;;
 	    esac
@@ -5607,7 +6727,7 @@
 	    *)
 	      case "$finalize_rpath " in
 	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
+	      *) func_append finalize_rpath " $libdir" ;;
 	      esac
 	      ;;
 	    esac
@@ -5661,7 +6781,7 @@
 	    linklib=$newlib
 	  fi # test -n "$old_archive_from_expsyms_cmds"
 
-	  if test "$linkmode" = prog || test "$mode" != relink; then
+	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
 	    add_shlibpath=
 	    add_dir=
 	    add=
@@ -5683,9 +6803,9 @@
 		      if test "X$dlopenmodule" != "X$lib"; then
 			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
 			if test -z "$old_library" ; then
-			  $ECHO
-			  $ECHO "*** And there doesn't seem to be a static archive available"
-			  $ECHO "*** The link will probably fail, sorry"
+			  echo
+			  echo "*** And there doesn't seem to be a static archive available"
+			  echo "*** The link will probably fail, sorry"
 			else
 			  add="$dir/$old_library"
 			fi
@@ -5717,7 +6837,7 @@
 		if test -n "$inst_prefix_dir"; then
 		  case $libdir in
 		    [\\/]*)
-		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      func_append add_dir " -L$inst_prefix_dir$libdir"
 		      ;;
 		  esac
 		fi
@@ -5739,7 +6859,7 @@
 	    if test -n "$add_shlibpath"; then
 	      case :$compile_shlibpath: in
 	      *":$add_shlibpath:"*) ;;
-	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
 	      esac
 	    fi
 	    if test "$linkmode" = prog; then
@@ -5753,13 +6873,13 @@
 		 test "$hardcode_shlibpath_var" = yes; then
 		case :$finalize_shlibpath: in
 		*":$libdir:"*) ;;
-		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		*) func_append finalize_shlibpath "$libdir:" ;;
 		esac
 	      fi
 	    fi
 	  fi
 
-	  if test "$linkmode" = prog || test "$mode" = relink; then
+	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
 	    add_shlibpath=
 	    add_dir=
 	    add=
@@ -5773,7 +6893,7 @@
 	    elif test "$hardcode_shlibpath_var" = yes; then
 	      case :$finalize_shlibpath: in
 	      *":$libdir:"*) ;;
-	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      *) func_append finalize_shlibpath "$libdir:" ;;
 	      esac
 	      add="-l$name"
 	    elif test "$hardcode_automatic" = yes; then
@@ -5790,7 +6910,7 @@
 	      if test -n "$inst_prefix_dir"; then
 		case $libdir in
 		  [\\/]*)
-		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    func_append add_dir " -L$inst_prefix_dir$libdir"
 		    ;;
 		esac
 	      fi
@@ -5825,21 +6945,21 @@
 
 	    # Just print a warning and add the library to dependency_libs so
 	    # that the program can be linked against the static library.
-	    $ECHO
+	    echo
 	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
-	    $ECHO "*** I have the capability to make that library automatically link in when"
-	    $ECHO "*** you link to this library.  But I can only do this if you have a"
-	    $ECHO "*** shared version of the library, which you do not appear to have."
+	    echo "*** I have the capability to make that library automatically link in when"
+	    echo "*** you link to this library.  But I can only do this if you have a"
+	    echo "*** shared version of the library, which you do not appear to have."
 	    if test "$module" = yes; then
-	      $ECHO "*** But as you try to build a module library, libtool will still create "
-	      $ECHO "*** a static module, that should work as long as the dlopening application"
-	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      echo "*** But as you try to build a module library, libtool will still create "
+	      echo "*** a static module, that should work as long as the dlopening application"
+	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
 	      if test -z "$global_symbol_pipe"; then
-		$ECHO
-		$ECHO "*** However, this would only work if libtool was able to extract symbol"
-		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-		$ECHO "*** not find such a program.  So, this module is probably useless."
-		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+		echo
+		echo "*** However, this would only work if libtool was able to extract symbol"
+		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		echo "*** not find such a program.  So, this module is probably useless."
+		echo "*** \`nm' from GNU binutils and a full rebuild may help."
 	      fi
 	      if test "$build_old_libs" = no; then
 		build_libtool_libs=module
@@ -5867,37 +6987,46 @@
 	           temp_xrpath=$func_stripname_result
 		   case " $xrpath " in
 		   *" $temp_xrpath "*) ;;
-		   *) xrpath="$xrpath $temp_xrpath";;
+		   *) func_append xrpath " $temp_xrpath";;
 		   esac;;
-	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      *) func_append temp_deplibs " $libdir";;
 	      esac
 	    done
 	    dependency_libs="$temp_deplibs"
 	  fi
 
-	  newlib_search_path="$newlib_search_path $absdir"
+	  func_append newlib_search_path " $absdir"
 	  # Link against this library
 	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
 	  # ... and its dependency_libs
 	  tmp_libs=
 	  for deplib in $dependency_libs; do
 	    newdependency_libs="$deplib $newdependency_libs"
-	    if $opt_duplicate_deps ; then
+	    case $deplib in
+              -L*) func_stripname '-L' '' "$deplib"
+                   func_resolve_sysroot "$func_stripname_result";;
+              *) func_resolve_sysroot "$deplib" ;;
+            esac
+	    if $opt_preserve_dup_deps ; then
 	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      *" $func_resolve_sysroot_result "*)
+                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
 	      esac
 	    fi
-	    tmp_libs="$tmp_libs $deplib"
+	    func_append tmp_libs " $func_resolve_sysroot_result"
 	  done
 
 	  if test "$link_all_deplibs" != no; then
 	    # Add the search paths of all dependency libraries
 	    for deplib in $dependency_libs; do
+	      path=
 	      case $deplib in
 	      -L*) path="$deplib" ;;
 	      *.la)
+	        func_resolve_sysroot "$deplib"
+	        deplib=$func_resolve_sysroot_result
 	        func_dirname "$deplib" "" "."
-		dir="$func_dirname_result"
+		dir=$func_dirname_result
 		# We need an absolute path.
 		case $dir in
 		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
@@ -5924,8 +7053,8 @@
                       if test -z "$darwin_install_name"; then
                           darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
                       fi
-		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
+		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
 		      path=
 		    fi
 		  fi
@@ -5958,7 +7087,7 @@
 	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
 	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
 	else
-	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
 	fi
       fi
       dependency_libs="$newdependency_libs"
@@ -5975,7 +7104,7 @@
 	  for dir in $newlib_search_path; do
 	    case "$lib_search_path " in
 	    *" $dir "*) ;;
-	    *) lib_search_path="$lib_search_path $dir" ;;
+	    *) func_append lib_search_path " $dir" ;;
 	    esac
 	  done
 	  newlib_search_path=
@@ -6033,10 +7162,10 @@
 	    -L*)
 	      case " $tmp_libs " in
 	      *" $deplib "*) ;;
-	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      *) func_append tmp_libs " $deplib" ;;
 	      esac
 	      ;;
-	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    *) func_append tmp_libs " $deplib" ;;
 	    esac
 	  done
 	  eval $var=\"$tmp_libs\"
@@ -6052,7 +7181,7 @@
 	  ;;
 	esac
 	if test -n "$i" ; then
-	  tmp_libs="$tmp_libs $i"
+	  func_append tmp_libs " $i"
 	fi
       done
       dependency_libs=$tmp_libs
@@ -6093,7 +7222,7 @@
       # Now set the variables for building old libraries.
       build_libtool_libs=no
       oldlibs="$output"
-      objs="$objs$old_deplibs"
+      func_append objs "$old_deplibs"
       ;;
 
     lib)
@@ -6126,10 +7255,10 @@
 	if test "$deplibs_check_method" != pass_all; then
 	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
 	else
-	  $ECHO
+	  echo
 	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
 	  $ECHO "*** objects $objs is not portable!"
-	  libobjs="$libobjs $objs"
+	  func_append libobjs " $objs"
 	fi
       fi
 
@@ -6194,7 +7323,7 @@
 	    age="$number_minor"
 	    revision="$number_revision"
 	    ;;
-	  freebsd-aout|freebsd-elf|sunos)
+	  freebsd-aout|freebsd-elf|qnx|sunos)
 	    current="$number_major"
 	    revision="$number_minor"
 	    age="0"
@@ -6327,7 +7456,7 @@
 	  done
 
 	  # Make executables depend on our current version.
-	  verstring="$verstring:${current}.0"
+	  func_append verstring ":${current}.0"
 	  ;;
 
 	qnx)
@@ -6395,10 +7524,10 @@
       fi
 
       func_generate_dlsyms "$libname" "$libname" "yes"
-      libobjs="$libobjs $symfileobj"
+      func_append libobjs " $symfileobj"
       test "X$libobjs" = "X " && libobjs=
 
-      if test "$mode" != relink; then
+      if test "$opt_mode" != relink; then
 	# Remove our outputs, but don't remove object files since they
 	# may have been created when compiling PIC objects.
 	removelist=
@@ -6414,7 +7543,7 @@
 		   continue
 		 fi
 	       fi
-	       removelist="$removelist $p"
+	       func_append removelist " $p"
 	       ;;
 	    *) ;;
 	  esac
@@ -6425,27 +7554,28 @@
 
       # Now set the variables for building old libraries.
       if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+	func_append oldlibs " $output_objdir/$libname.$libext"
 
 	# Transform .lo files to .o files.
-	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
       fi
 
       # Eliminate all temporary directories.
       #for path in $notinst_path; do
-      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
-      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
-      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
+      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
       #done
 
       if test -n "$xrpath"; then
 	# If the user specified any rpath flags, then add them.
 	temp_xrpath=
 	for libdir in $xrpath; do
-	  temp_xrpath="$temp_xrpath -R$libdir"
+	  func_replace_sysroot "$libdir"
+	  func_append temp_xrpath " -R$func_replace_sysroot_result"
 	  case "$finalize_rpath " in
 	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  *) func_append finalize_rpath " $libdir" ;;
 	  esac
 	done
 	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
@@ -6459,7 +7589,7 @@
       for lib in $old_dlfiles; do
 	case " $dlprefiles $dlfiles " in
 	*" $lib "*) ;;
-	*) dlfiles="$dlfiles $lib" ;;
+	*) func_append dlfiles " $lib" ;;
 	esac
       done
 
@@ -6469,19 +7599,19 @@
       for lib in $old_dlprefiles; do
 	case "$dlprefiles " in
 	*" $lib "*) ;;
-	*) dlprefiles="$dlprefiles $lib" ;;
+	*) func_append dlprefiles " $lib" ;;
 	esac
       done
 
       if test "$build_libtool_libs" = yes; then
 	if test -n "$rpath"; then
 	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
 	    # these systems don't actually have a c library (as such)!
 	    ;;
 	  *-*-rhapsody* | *-*-darwin1.[012])
 	    # Rhapsody C library is in the System framework
-	    deplibs="$deplibs System.ltframework"
+	    func_append deplibs " System.ltframework"
 	    ;;
 	  *-*-netbsd*)
 	    # Don't link with libc until the a.out ld.so is fixed.
@@ -6498,7 +7628,7 @@
 	  *)
 	    # Add libc to deplibs on all other systems if necessary.
 	    if test "$build_libtool_need_lc" = "yes"; then
-	      deplibs="$deplibs -lc"
+	      func_append deplibs " -lc"
 	    fi
 	    ;;
 	  esac
@@ -6547,7 +7677,7 @@
 		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 		  case " $predeps $postdeps " in
 		  *" $i "*)
-		    newdeplibs="$newdeplibs $i"
+		    func_append newdeplibs " $i"
 		    i=""
 		    ;;
 		  esac
@@ -6558,21 +7688,21 @@
 		  set dummy $deplib_matches; shift
 		  deplib_match=$1
 		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		    newdeplibs="$newdeplibs $i"
+		    func_append newdeplibs " $i"
 		  else
 		    droppeddeps=yes
-		    $ECHO
+		    echo
 		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		    $ECHO "*** I have the capability to make that library automatically link in when"
-		    $ECHO "*** you link to this library.  But I can only do this if you have a"
-		    $ECHO "*** shared version of the library, which I believe you do not have"
-		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
-		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
+		    echo "*** I have the capability to make that library automatically link in when"
+		    echo "*** you link to this library.  But I can only do this if you have a"
+		    echo "*** shared version of the library, which I believe you do not have"
+		    echo "*** because a test_compile did reveal that the linker did not use it for"
+		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
 		  fi
 		fi
 		;;
 	      *)
-		newdeplibs="$newdeplibs $i"
+		func_append newdeplibs " $i"
 		;;
 	      esac
 	    done
@@ -6590,7 +7720,7 @@
 		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 		    case " $predeps $postdeps " in
 		    *" $i "*)
-		      newdeplibs="$newdeplibs $i"
+		      func_append newdeplibs " $i"
 		      i=""
 		      ;;
 		    esac
@@ -6601,29 +7731,29 @@
 		    set dummy $deplib_matches; shift
 		    deplib_match=$1
 		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		      newdeplibs="$newdeplibs $i"
+		      func_append newdeplibs " $i"
 		    else
 		      droppeddeps=yes
-		      $ECHO
+		      echo
 		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		      $ECHO "*** I have the capability to make that library automatically link in when"
-		      $ECHO "*** you link to this library.  But I can only do this if you have a"
-		      $ECHO "*** shared version of the library, which you do not appear to have"
-		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
-		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
+		      echo "*** I have the capability to make that library automatically link in when"
+		      echo "*** you link to this library.  But I can only do this if you have a"
+		      echo "*** shared version of the library, which you do not appear to have"
+		      echo "*** because a test_compile did reveal that the linker did not use this one"
+		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
 		    fi
 		  fi
 		else
 		  droppeddeps=yes
-		  $ECHO
+		  echo
 		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-		  $ECHO "*** make it link in!  You will probably need to install it or some"
-		  $ECHO "*** library that it depends on before this library will be fully"
-		  $ECHO "*** functional.  Installing it before continuing would be even better."
+		  echo "*** make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
 		fi
 		;;
 	      *)
-		newdeplibs="$newdeplibs $i"
+		func_append newdeplibs " $i"
 		;;
 	      esac
 	    done
@@ -6640,15 +7770,27 @@
 	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 		case " $predeps $postdeps " in
 		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
+		  func_append newdeplibs " $a_deplib"
 		  a_deplib=""
 		  ;;
 		esac
 	      fi
 	      if test -n "$a_deplib" ; then
 		libname=`eval "\\$ECHO \"$libname_spec\""`
+		if test -n "$file_magic_glob"; then
+		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+		else
+		  libnameglob=$libname
+		fi
+		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  if test "$want_nocaseglob" = yes; then
+		    shopt -s nocaseglob
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		    $nocaseglob
+		  else
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		  fi
 		  for potent_lib in $potential_libs; do
 		      # Follow soft links.
 		      if ls -lLd "$potent_lib" 2>/dev/null |
@@ -6665,13 +7807,13 @@
 			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
 			case $potliblink in
 			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
 			esac
 		      done
 		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
 			 $SED -e 10q |
 			 $EGREP "$file_magic_regex" > /dev/null; then
-			newdeplibs="$newdeplibs $a_deplib"
+			func_append newdeplibs " $a_deplib"
 			a_deplib=""
 			break 2
 		      fi
@@ -6680,12 +7822,12 @@
 	      fi
 	      if test -n "$a_deplib" ; then
 		droppeddeps=yes
-		$ECHO
+		echo
 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because I did check the linker path looking for a file starting"
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
 		if test -z "$potlib" ; then
 		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
 		else
@@ -6696,7 +7838,7 @@
 	      ;;
 	    *)
 	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
+	      func_append newdeplibs " $a_deplib"
 	      ;;
 	    esac
 	  done # Gone through all deplibs.
@@ -6712,7 +7854,7 @@
 	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 		case " $predeps $postdeps " in
 		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
+		  func_append newdeplibs " $a_deplib"
 		  a_deplib=""
 		  ;;
 		esac
@@ -6723,9 +7865,9 @@
 		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
 		  for potent_lib in $potential_libs; do
 		    potlib="$potent_lib" # see symlink-check above in file_magic test
-		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
+		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
 		       $EGREP "$match_pattern_regex" > /dev/null; then
-		      newdeplibs="$newdeplibs $a_deplib"
+		      func_append newdeplibs " $a_deplib"
 		      a_deplib=""
 		      break 2
 		    fi
@@ -6734,12 +7876,12 @@
 	      fi
 	      if test -n "$a_deplib" ; then
 		droppeddeps=yes
-		$ECHO
+		echo
 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because I did check the linker path looking for a file starting"
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
 		if test -z "$potlib" ; then
 		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
 		else
@@ -6750,32 +7892,32 @@
 	      ;;
 	    *)
 	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
+	      func_append newdeplibs " $a_deplib"
 	      ;;
 	    esac
 	  done # Gone through all deplibs.
 	  ;;
 	none | unknown | *)
 	  newdeplibs=""
-	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
-	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
+	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
 	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 	    for i in $predeps $postdeps ; do
 	      # can't use Xsed below, because $i might contain '/'
-	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
+	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
 	    done
 	  fi
-	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
-	     $GREP . >/dev/null; then
-	    $ECHO
+	  case $tmp_deplibs in
+	  *[!\	\ ]*)
+	    echo
 	    if test "X$deplibs_check_method" = "Xnone"; then
-	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
 	    else
-	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
+	      echo "*** Warning: inter-library dependencies are not known to be supported."
 	    fi
-	    $ECHO "*** All declared inter-library dependencies are being dropped."
+	    echo "*** All declared inter-library dependencies are being dropped."
 	    droppeddeps=yes
-	  fi
+	    ;;
+	  esac
 	  ;;
 	esac
 	versuffix=$versuffix_save
@@ -6787,23 +7929,23 @@
 	case $host in
 	*-*-rhapsody* | *-*-darwin1.[012])
 	  # On Rhapsody replace the C library with the System framework
-	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
 	  ;;
 	esac
 
 	if test "$droppeddeps" = yes; then
 	  if test "$module" = yes; then
-	    $ECHO
-	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
+	    echo
+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
 	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-	    $ECHO "*** a static module, that should work as long as the dlopening"
-	    $ECHO "*** application is linked with the -dlopen flag."
+	    echo "*** a static module, that should work as long as the dlopening"
+	    echo "*** application is linked with the -dlopen flag."
 	    if test -z "$global_symbol_pipe"; then
-	      $ECHO
-	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
-	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-	      $ECHO "*** not find such a program.  So, this module is probably useless."
-	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+	      echo
+	      echo "*** However, this would only work if libtool was able to extract symbol"
+	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      echo "*** not find such a program.  So, this module is probably useless."
+	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
 	    fi
 	    if test "$build_old_libs" = no; then
 	      oldlibs="$output_objdir/$libname.$libext"
@@ -6813,16 +7955,16 @@
 	      build_libtool_libs=no
 	    fi
 	  else
-	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
-	    $ECHO "*** automatically added whenever a program is linked with this library"
-	    $ECHO "*** or is declared to -dlopen it."
+	    echo "*** The inter-library dependencies that have been dropped here will be"
+	    echo "*** automatically added whenever a program is linked with this library"
+	    echo "*** or is declared to -dlopen it."
 
 	    if test "$allow_undefined" = no; then
-	      $ECHO
-	      $ECHO "*** Since this library must not contain undefined symbols,"
-	      $ECHO "*** because either the platform does not support them or"
-	      $ECHO "*** it was explicitly requested with -no-undefined,"
-	      $ECHO "*** libtool will only create a static version of it."
+	      echo
+	      echo "*** Since this library must not contain undefined symbols,"
+	      echo "*** because either the platform does not support them or"
+	      echo "*** it was explicitly requested with -no-undefined,"
+	      echo "*** libtool will only create a static version of it."
 	      if test "$build_old_libs" = no; then
 		oldlibs="$output_objdir/$libname.$libext"
 		build_libtool_libs=module
@@ -6839,9 +7981,9 @@
       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
       case $host in
 	*-*-darwin*)
-	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
 	  ;;
       esac
 
@@ -6854,7 +7996,7 @@
 	*)
 	  case " $deplibs " in
 	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
+	    func_append new_libs " -L$path/$objdir" ;;
 	  esac
 	  ;;
 	esac
@@ -6864,10 +8006,10 @@
 	-L*)
 	  case " $new_libs " in
 	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
+	  *) func_append new_libs " $deplib" ;;
 	  esac
 	  ;;
-	*) new_libs="$new_libs $deplib" ;;
+	*) func_append new_libs " $deplib" ;;
 	esac
       done
       deplibs="$new_libs"
@@ -6884,10 +8026,12 @@
 	  hardcode_libdirs=
 	  dep_rpath=
 	  rpath="$finalize_rpath"
-	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
 	  for libdir in $rpath; do
 	    if test -n "$hardcode_libdir_flag_spec"; then
 	      if test -n "$hardcode_libdir_separator"; then
+		func_replace_sysroot "$libdir"
+		libdir=$func_replace_sysroot_result
 		if test -z "$hardcode_libdirs"; then
 		  hardcode_libdirs="$libdir"
 		else
@@ -6896,18 +8040,18 @@
 		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
 		    ;;
 		  *)
-		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
 		    ;;
 		  esac
 		fi
 	      else
 		eval flag=\"$hardcode_libdir_flag_spec\"
-		dep_rpath="$dep_rpath $flag"
+		func_append dep_rpath " $flag"
 	      fi
 	    elif test -n "$runpath_var"; then
 	      case "$perm_rpath " in
 	      *" $libdir "*) ;;
-	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      *) func_append perm_rpath " $libdir" ;;
 	      esac
 	    fi
 	  done
@@ -6925,7 +8069,7 @@
 	    # We should set the runpath_var.
 	    rpath=
 	    for dir in $perm_rpath; do
-	      rpath="$rpath$dir:"
+	      func_append rpath "$dir:"
 	    done
 	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
 	  fi
@@ -6933,7 +8077,7 @@
 	fi
 
 	shlibpath="$finalize_shlibpath"
-	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
 	if test -n "$shlibpath"; then
 	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
 	fi
@@ -6959,18 +8103,18 @@
 	linknames=
 	for link
 	do
-	  linknames="$linknames $link"
+	  func_append linknames " $link"
 	done
 
 	# Use standard objects if they are pic
-	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
 	test "X$libobjs" = "X " && libobjs=
 
 	delfiles=
 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
 	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
 	  export_symbols="$output_objdir/$libname.uexp"
-	  delfiles="$delfiles $export_symbols"
+	  func_append delfiles " $export_symbols"
 	fi
 
 	orig_export_symbols=
@@ -7001,14 +8145,46 @@
 	    $opt_dry_run || $RM $export_symbols
 	    cmds=$export_symbols_cmds
 	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $cmds; do
+	    for cmd1 in $cmds; do
 	      IFS="$save_ifs"
-	      eval cmd=\"$cmd\"
-	      func_len " $cmd"
-	      len=$func_len_result
-	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	      # Take the normal branch if the nm_file_list_spec branch
+	      # doesn't work or if tool conversion is not needed.
+	      case $nm_file_list_spec~$to_tool_file_cmd in
+		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+		  try_normal_branch=yes
+		  eval cmd=\"$cmd1\"
+		  func_len " $cmd"
+		  len=$func_len_result
+		  ;;
+		*)
+		  try_normal_branch=no
+		  ;;
+	      esac
+	      if test "$try_normal_branch" = yes \
+		 && { test "$len" -lt "$max_cmd_len" \
+		      || test "$max_cmd_len" -le -1; }
+	      then
 		func_show_eval "$cmd" 'exit $?'
 		skipped_export=false
+	      elif test -n "$nm_file_list_spec"; then
+		func_basename "$output"
+		output_la=$func_basename_result
+		save_libobjs=$libobjs
+		save_output=$output
+		output=${output_objdir}/${output_la}.nm
+		func_to_tool_file "$output"
+		libobjs=$nm_file_list_spec$func_to_tool_file_result
+		func_append delfiles " $output"
+		func_verbose "creating $NM input file list: $output"
+		for obj in $save_libobjs; do
+		  func_to_tool_file "$obj"
+		  $ECHO "$func_to_tool_file_result"
+		done > "$output"
+		eval cmd=\"$cmd1\"
+		func_show_eval "$cmd" 'exit $?'
+		output=$save_output
+		libobjs=$save_libobjs
+		skipped_export=false
 	      else
 		# The command line is too long to execute in one step.
 		func_verbose "using reloadable object file for export list..."
@@ -7029,7 +8205,7 @@
 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
 	  tmp_export_symbols="$export_symbols"
 	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
 	fi
 
 	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
@@ -7041,7 +8217,7 @@
 	  # global variables. join(1) would be nice here, but unfortunately
 	  # isn't a blessed tool.
 	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
 	  export_symbols=$output_objdir/$libname.def
 	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
 	fi
@@ -7051,7 +8227,7 @@
 	  case " $convenience " in
 	  *" $test_deplib "*) ;;
 	  *)
-	    tmp_deplibs="$tmp_deplibs $test_deplib"
+	    func_append tmp_deplibs " $test_deplib"
 	    ;;
 	  esac
 	done
@@ -7071,21 +8247,21 @@
 	    test "X$libobjs" = "X " && libobjs=
 	  else
 	    gentop="$output_objdir/${outputname}x"
-	    generated="$generated $gentop"
+	    func_append generated " $gentop"
 
 	    func_extract_archives $gentop $convenience
-	    libobjs="$libobjs $func_extract_archives_result"
+	    func_append libobjs " $func_extract_archives_result"
 	    test "X$libobjs" = "X " && libobjs=
 	  fi
 	fi
 
 	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
 	  eval flag=\"$thread_safe_flag_spec\"
-	  linker_flags="$linker_flags $flag"
+	  func_append linker_flags " $flag"
 	fi
 
 	# Make a backup of the uninstalled library when relinking
-	if test "$mode" = relink; then
+	if test "$opt_mode" = relink; then
 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
 	fi
 
@@ -7130,7 +8306,8 @@
 	    save_libobjs=$libobjs
 	  fi
 	  save_output=$output
-	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
+	  func_basename "$output"
+	  output_la=$func_basename_result
 
 	  # Clear the reloadable object creation command queue and
 	  # initialize k to one.
@@ -7143,13 +8320,16 @@
 	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
 	    output=${output_objdir}/${output_la}.lnkscript
 	    func_verbose "creating GNU ld script: $output"
-	    $ECHO 'INPUT (' > $output
+	    echo 'INPUT (' > $output
 	    for obj in $save_libobjs
 	    do
-	      $ECHO "$obj" >> $output
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
 	    done
-	    $ECHO ')' >> $output
-	    delfiles="$delfiles $output"
+	    echo ')' >> $output
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$func_to_tool_file_result
 	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
 	    output=${output_objdir}/${output_la}.lnk
 	    func_verbose "creating linker input file list: $output"
@@ -7163,10 +8343,12 @@
 	    fi
 	    for obj
 	    do
-	      $ECHO "$obj" >> $output
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
 	    done
-	    delfiles="$delfiles $output"
-	    output=$firstobj\"$file_list_spec$output\"
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
 	  else
 	    if test -n "$save_libobjs"; then
 	      func_verbose "creating reloadable object files..."
@@ -7190,17 +8372,19 @@
 		  # command to the queue.
 		  if test "$k" -eq 1 ; then
 		    # The first file doesn't have a previous command to add.
-		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+		    reload_objs=$objlist
+		    eval concat_cmds=\"$reload_cmds\"
 		  else
 		    # All subsequent reloadable object files will link in
 		    # the last one created.
-		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
+		    reload_objs="$objlist $last_robj"
+		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
 		  fi
 		  last_robj=$output_objdir/$output_la-${k}.$objext
 		  func_arith $k + 1
 		  k=$func_arith_result
 		  output=$output_objdir/$output_la-${k}.$objext
-		  objlist=$obj
+		  objlist=" $obj"
 		  func_len " $last_robj"
 		  func_arith $len0 + $func_len_result
 		  len=$func_arith_result
@@ -7210,11 +8394,12 @@
 	      # reloadable object file.  All subsequent reloadable object
 	      # files will link in the last one created.
 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+	      reload_objs="$objlist $last_robj"
+	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
 	      if test -n "$last_robj"; then
 	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
 	      fi
-	      delfiles="$delfiles $output"
+	      func_append delfiles " $output"
 
 	    else
 	      output=
@@ -7248,7 +8433,7 @@
 		lt_exit=$?
 
 		# Restore the uninstalled library and exit
-		if test "$mode" = relink; then
+		if test "$opt_mode" = relink; then
 		  ( cd "$output_objdir" && \
 		    $RM "${realname}T" && \
 		    $MV "${realname}U" "$realname" )
@@ -7269,7 +8454,7 @@
 	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
 	      tmp_export_symbols="$export_symbols"
 	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
 	    fi
 
 	    if test -n "$orig_export_symbols"; then
@@ -7281,7 +8466,7 @@
 	      # global variables. join(1) would be nice here, but unfortunately
 	      # isn't a blessed tool.
 	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
 	      export_symbols=$output_objdir/$libname.def
 	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
 	    fi
@@ -7322,10 +8507,10 @@
 	# Add any objects from preloaded convenience libraries
 	if test -n "$dlprefiles"; then
 	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
+	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $dlprefiles
-	  libobjs="$libobjs $func_extract_archives_result"
+	  func_append libobjs " $func_extract_archives_result"
 	  test "X$libobjs" = "X " && libobjs=
 	fi
 
@@ -7341,7 +8526,7 @@
 	    lt_exit=$?
 
 	    # Restore the uninstalled library and exit
-	    if test "$mode" = relink; then
+	    if test "$opt_mode" = relink; then
 	      ( cd "$output_objdir" && \
 	        $RM "${realname}T" && \
 		$MV "${realname}U" "$realname" )
@@ -7353,7 +8538,7 @@
 	IFS="$save_ifs"
 
 	# Restore the uninstalled library and exit
-	if test "$mode" = relink; then
+	if test "$opt_mode" = relink; then
 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
 
 	  if test -n "$convenience"; then
@@ -7434,18 +8619,21 @@
       if test -n "$convenience"; then
 	if test -n "$whole_archive_flag_spec"; then
 	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
 	else
 	  gentop="$output_objdir/${obj}x"
-	  generated="$generated $gentop"
+	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $convenience
 	  reload_conv_objs="$reload_objs $func_extract_archives_result"
 	fi
       fi
 
+      # If we're not building shared, we need to use non_pic_objs
+      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+
       # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
 
       output="$obj"
       func_execute_cmds "$reload_cmds" 'exit $?'
@@ -7505,8 +8693,8 @@
       case $host in
       *-*-rhapsody* | *-*-darwin1.[012])
 	# On Rhapsody replace the C library is the System framework
-	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
 	;;
       esac
 
@@ -7517,14 +8705,14 @@
 	if test "$tagname" = CXX ; then
 	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
 	    10.[0123])
-	      compile_command="$compile_command ${wl}-bind_at_load"
-	      finalize_command="$finalize_command ${wl}-bind_at_load"
+	      func_append compile_command " ${wl}-bind_at_load"
+	      func_append finalize_command " ${wl}-bind_at_load"
 	    ;;
 	  esac
 	fi
 	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
-	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
 	;;
       esac
 
@@ -7538,7 +8726,7 @@
 	*)
 	  case " $compile_deplibs " in
 	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
+	    func_append new_libs " -L$path/$objdir" ;;
 	  esac
 	  ;;
 	esac
@@ -7548,17 +8736,17 @@
 	-L*)
 	  case " $new_libs " in
 	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
+	  *) func_append new_libs " $deplib" ;;
 	  esac
 	  ;;
-	*) new_libs="$new_libs $deplib" ;;
+	*) func_append new_libs " $deplib" ;;
 	esac
       done
       compile_deplibs="$new_libs"
 
 
-      compile_command="$compile_command $compile_deplibs"
-      finalize_command="$finalize_command $finalize_deplibs"
+      func_append compile_command " $compile_deplibs"
+      func_append finalize_command " $finalize_deplibs"
 
       if test -n "$rpath$xrpath"; then
 	# If the user specified any rpath flags, then add them.
@@ -7566,7 +8754,7 @@
 	  # This is the magic to use -rpath.
 	  case "$finalize_rpath " in
 	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  *) func_append finalize_rpath " $libdir" ;;
 	  esac
 	done
       fi
@@ -7585,18 +8773,18 @@
 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
 		;;
 	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
 		;;
 	      esac
 	    fi
 	  else
 	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
+	    func_append rpath " $flag"
 	  fi
 	elif test -n "$runpath_var"; then
 	  case "$perm_rpath " in
 	  *" $libdir "*) ;;
-	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  *) func_append perm_rpath " $libdir" ;;
 	  esac
 	fi
 	case $host in
@@ -7605,12 +8793,12 @@
 	  case :$dllsearchpath: in
 	  *":$libdir:"*) ;;
 	  ::) dllsearchpath=$libdir;;
-	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  *) func_append dllsearchpath ":$libdir";;
 	  esac
 	  case :$dllsearchpath: in
 	  *":$testbindir:"*) ;;
 	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  *) func_append dllsearchpath ":$testbindir";;
 	  esac
 	  ;;
 	esac
@@ -7636,18 +8824,18 @@
 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
 		;;
 	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
 		;;
 	      esac
 	    fi
 	  else
 	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
+	    func_append rpath " $flag"
 	  fi
 	elif test -n "$runpath_var"; then
 	  case "$finalize_perm_rpath " in
 	  *" $libdir "*) ;;
-	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  *) func_append finalize_perm_rpath " $libdir" ;;
 	  esac
 	fi
       done
@@ -7661,8 +8849,8 @@
 
       if test -n "$libobjs" && test "$build_old_libs" = yes; then
 	# Transform all the library objects into standard objects.
-	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
       fi
 
       func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
@@ -7674,15 +8862,15 @@
 
       wrappers_required=yes
       case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=no
+        ;;
       *cygwin* | *mingw* )
         if test "$build_libtool_libs" != yes; then
           wrappers_required=no
         fi
         ;;
-      *cegcc)
-        # Disable wrappers for cegcc, we are cross compiling anyway.
-        wrappers_required=no
-        ;;
       *)
         if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
           wrappers_required=no
@@ -7691,13 +8879,19 @@
       esac
       if test "$wrappers_required" = no; then
 	# Replace the output file specification.
-	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
 	link_command="$compile_command$compile_rpath"
 
 	# We have no uninstalled library dependencies, so finalize right now.
 	exit_status=0
 	func_show_eval "$link_command" 'exit_status=$?'
 
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
 	# Delete the generated files.
 	if test -f "$output_objdir/${outputname}S.${objext}"; then
 	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
@@ -7720,7 +8914,7 @@
 	  # We should set the runpath_var.
 	  rpath=
 	  for dir in $perm_rpath; do
-	    rpath="$rpath$dir:"
+	    func_append rpath "$dir:"
 	  done
 	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
 	fi
@@ -7728,7 +8922,7 @@
 	  # We should set the runpath_var.
 	  rpath=
 	  for dir in $finalize_perm_rpath; do
-	    rpath="$rpath$dir:"
+	    func_append rpath "$dir:"
 	  done
 	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
 	fi
@@ -7738,11 +8932,18 @@
 	# We don't need to create a wrapper script.
 	link_command="$compile_var$compile_command$compile_rpath"
 	# Replace the output file specification.
-	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
 	# Delete the old output file.
 	$opt_dry_run || $RM $output
 	# Link the executable and exit
 	func_show_eval "$link_command" 'exit $?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
 	exit $EXIT_SUCCESS
       fi
 
@@ -7757,7 +8958,7 @@
 	if test "$fast_install" != no; then
 	  link_command="$finalize_var$compile_command$finalize_rpath"
 	  if test "$fast_install" = yes; then
-	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
 	  else
 	    # fast_install is set to needless
 	    relink_command=
@@ -7769,13 +8970,19 @@
       fi
 
       # Replace the output file specification.
-      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
 
       # Delete the old output files.
       $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
 
       func_show_eval "$link_command" 'exit $?'
 
+      if test -n "$postlink_cmds"; then
+	func_to_tool_file "$output_objdir/$outputname"
+	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	func_execute_cmds "$postlink_cmds" 'exit $?'
+      fi
+
       # Now create the wrapper script.
       func_verbose "creating $output"
 
@@ -7793,18 +9000,7 @@
 	  fi
 	done
 	relink_command="(cd `pwd`; $relink_command)"
-	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-      fi
-
-      # Quote $ECHO for shipping.
-      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
-	case $progpath in
-	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
-	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
-	esac
-	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
-      else
-	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
+	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
       fi
 
       # Only actually do things if not in dry run mode.
@@ -7884,7 +9080,7 @@
 	else
 	  oldobjs="$old_deplibs $non_pic_objects"
 	  if test "$preload" = yes && test -f "$symfileobj"; then
-	    oldobjs="$oldobjs $symfileobj"
+	    func_append oldobjs " $symfileobj"
 	  fi
 	fi
 	addlibs="$old_convenience"
@@ -7892,10 +9088,10 @@
 
       if test -n "$addlibs"; then
 	gentop="$output_objdir/${outputname}x"
-	generated="$generated $gentop"
+	func_append generated " $gentop"
 
 	func_extract_archives $gentop $addlibs
-	oldobjs="$oldobjs $func_extract_archives_result"
+	func_append oldobjs " $func_extract_archives_result"
       fi
 
       # Do each command in the archive commands.
@@ -7906,10 +9102,10 @@
 	# Add any objects from preloaded convenience libraries
 	if test -n "$dlprefiles"; then
 	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
+	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $dlprefiles
-	  oldobjs="$oldobjs $func_extract_archives_result"
+	  func_append oldobjs " $func_extract_archives_result"
 	fi
 
 	# POSIX demands no paths to be encoded in archives.  We have
@@ -7925,9 +9121,9 @@
 	    done | sort | sort -uc >/dev/null 2>&1); then
 	  :
 	else
-	  $ECHO "copying selected object files to avoid basename conflicts..."
+	  echo "copying selected object files to avoid basename conflicts..."
 	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
+	  func_append generated " $gentop"
 	  func_mkdir_p "$gentop"
 	  save_oldobjs=$oldobjs
 	  oldobjs=
@@ -7951,9 +9147,9 @@
 		esac
 	      done
 	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-	      oldobjs="$oldobjs $gentop/$newobj"
+	      func_append oldobjs " $gentop/$newobj"
 	      ;;
-	    *) oldobjs="$oldobjs $obj" ;;
+	    *) func_append oldobjs " $obj" ;;
 	    esac
 	  done
 	fi
@@ -7963,6 +9159,16 @@
 	len=$func_len_result
 	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
 	  cmds=$old_archive_cmds
+	elif test -n "$archiver_list_spec"; then
+	  func_verbose "using command file archive linking..."
+	  for obj in $oldobjs
+	  do
+	    func_to_tool_file "$obj"
+	    $ECHO "$func_to_tool_file_result"
+	  done > $output_objdir/$libname.libcmd
+	  func_to_tool_file "$output_objdir/$libname.libcmd"
+	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+	  cmds=$old_archive_cmds
 	else
 	  # the command line is too long to link in one step, link in parts
 	  func_verbose "using piecewise archive linking..."
@@ -8036,7 +9242,7 @@
       done
       # Quote the link command for shipping.
       relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
       if test "$hardcode_automatic" = yes ; then
 	relink_command=
       fi
@@ -8059,9 +9265,19 @@
 		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
 		test -z "$libdir" && \
 		  func_fatal_error "\`$deplib' is not a valid libtool archive"
-		newdependency_libs="$newdependency_libs $libdir/$name"
+		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
 		;;
-	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      -L*)
+		func_stripname -L '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -L$func_replace_sysroot_result"
+		;;
+	      -R*)
+		func_stripname -R '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -R$func_replace_sysroot_result"
+		;;
+	      *) func_append newdependency_libs " $deplib" ;;
 	      esac
 	    done
 	    dependency_libs="$newdependency_libs"
@@ -8075,9 +9291,9 @@
 		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
 		test -z "$libdir" && \
 		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlfiles="$newdlfiles $libdir/$name"
+		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
 		;;
-	      *) newdlfiles="$newdlfiles $lib" ;;
+	      *) func_append newdlfiles " $lib" ;;
 	      esac
 	    done
 	    dlfiles="$newdlfiles"
@@ -8094,7 +9310,7 @@
 		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
 		test -z "$libdir" && \
 		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlprefiles="$newdlprefiles $libdir/$name"
+		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
 		;;
 	      esac
 	    done
@@ -8106,7 +9322,7 @@
 		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
 		*) abs=`pwd`"/$lib" ;;
 	      esac
-	      newdlfiles="$newdlfiles $abs"
+	      func_append newdlfiles " $abs"
 	    done
 	    dlfiles="$newdlfiles"
 	    newdlprefiles=
@@ -8115,15 +9331,33 @@
 		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
 		*) abs=`pwd`"/$lib" ;;
 	      esac
-	      newdlprefiles="$newdlprefiles $abs"
+	      func_append newdlprefiles " $abs"
 	    done
 	    dlprefiles="$newdlprefiles"
 	  fi
 	  $RM $output
 	  # place dlname in correct position for cygwin
+	  # In fact, it would be nice if we could use this code for all target
+	  # systems that can't hard-code library paths into their executables
+	  # and that have no shared library path variable independent of PATH,
+	  # but it turns out we can't easily determine that from inspecting
+	  # libtool variables, so we have to hard-code the OSs to which it
+	  # applies here; at the moment, that means platforms that use the PE
+	  # object format with DLL files.  See the long comment at the top of
+	  # tests/bindir.at for full details.
 	  tdlname=$dlname
 	  case $host,$output,$installed,$module,$dlname in
-	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+	      # If a -bindir argument was supplied, place the dll there.
+	      if test "x$bindir" != x ;
+	      then
+		func_relative_path "$install_libdir" "$bindir"
+		tdlname=$func_relative_path_result$dlname
+	      else
+		# Otherwise fall back on heuristic.
+		tdlname=../bin/$dlname
+	      fi
+	      ;;
 	  esac
 	  $ECHO > $output "\
 # $outputname - a libtool library file
@@ -8182,7 +9416,7 @@
     exit $EXIT_SUCCESS
 }
 
-{ test "$mode" = link || test "$mode" = relink; } &&
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
     func_mode_link ${1+"$@"}
 
 
@@ -8202,9 +9436,9 @@
     for arg
     do
       case $arg in
-      -f) RM="$RM $arg"; rmforce=yes ;;
-      -*) RM="$RM $arg" ;;
-      *) files="$files $arg" ;;
+      -f) func_append RM " $arg"; rmforce=yes ;;
+      -*) func_append RM " $arg" ;;
+      *) func_append files " $arg" ;;
       esac
     done
 
@@ -8213,24 +9447,23 @@
 
     rmdirs=
 
-    origobjdir="$objdir"
     for file in $files; do
       func_dirname "$file" "" "."
       dir="$func_dirname_result"
       if test "X$dir" = X.; then
-	objdir="$origobjdir"
+	odir="$objdir"
       else
-	objdir="$dir/$origobjdir"
+	odir="$dir/$objdir"
       fi
       func_basename "$file"
       name="$func_basename_result"
-      test "$mode" = uninstall && objdir="$dir"
+      test "$opt_mode" = uninstall && odir="$dir"
 
-      # Remember objdir for removal later, being careful to avoid duplicates
-      if test "$mode" = clean; then
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test "$opt_mode" = clean; then
 	case " $rmdirs " in
-	  *" $objdir "*) ;;
-	  *) rmdirs="$rmdirs $objdir" ;;
+	  *" $odir "*) ;;
+	  *) func_append rmdirs " $odir" ;;
 	esac
       fi
 
@@ -8256,18 +9489,17 @@
 
 	  # Delete the libtool libraries and symlinks.
 	  for n in $library_names; do
-	    rmfiles="$rmfiles $objdir/$n"
+	    func_append rmfiles " $odir/$n"
 	  done
-	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
 
-	  case "$mode" in
+	  case "$opt_mode" in
 	  clean)
-	    case "  $library_names " in
-	    # "  " in the beginning catches empty $dlname
+	    case " $library_names " in
 	    *" $dlname "*) ;;
-	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
+	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
 	    esac
-	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
 	    ;;
 	  uninstall)
 	    if test -n "$library_names"; then
@@ -8295,19 +9527,19 @@
 	  # Add PIC object to the list of files to remove.
 	  if test -n "$pic_object" &&
 	     test "$pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$pic_object"
+	    func_append rmfiles " $dir/$pic_object"
 	  fi
 
 	  # Add non-PIC object to the list of files to remove.
 	  if test -n "$non_pic_object" &&
 	     test "$non_pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$non_pic_object"
+	    func_append rmfiles " $dir/$non_pic_object"
 	  fi
 	fi
 	;;
 
       *)
-	if test "$mode" = clean ; then
+	if test "$opt_mode" = clean ; then
 	  noexename=$name
 	  case $file in
 	  *.exe)
@@ -8317,7 +9549,7 @@
 	    noexename=$func_stripname_result
 	    # $file with .exe has already been added to rmfiles,
 	    # add $file without .exe
-	    rmfiles="$rmfiles $file"
+	    func_append rmfiles " $file"
 	    ;;
 	  esac
 	  # Do a test to see if this is a libtool program.
@@ -8326,7 +9558,7 @@
 	      func_ltwrapper_scriptname "$file"
 	      relink_command=
 	      func_source $func_ltwrapper_scriptname_result
-	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
+	      func_append rmfiles " $func_ltwrapper_scriptname_result"
 	    else
 	      relink_command=
 	      func_source $dir/$noexename
@@ -8334,12 +9566,12 @@
 
 	    # note $name still contains .exe if it was in $file originally
 	    # as does the version of $file that was added into $rmfiles
-	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
 	    if test "$fast_install" = yes && test -n "$relink_command"; then
-	      rmfiles="$rmfiles $objdir/lt-$name"
+	      func_append rmfiles " $odir/lt-$name"
 	    fi
 	    if test "X$noexename" != "X$name" ; then
-	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	      func_append rmfiles " $odir/lt-${noexename}.c"
 	    fi
 	  fi
 	fi
@@ -8347,7 +9579,6 @@
       esac
       func_show_eval "$RM $rmfiles" 'exit_status=1'
     done
-    objdir="$origobjdir"
 
     # Try to remove the ${objdir}s in the directories where we deleted files
     for dir in $rmdirs; do
@@ -8359,16 +9590,16 @@
     exit $exit_status
 }
 
-{ test "$mode" = uninstall || test "$mode" = clean; } &&
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
     func_mode_uninstall ${1+"$@"}
 
-test -z "$mode" && {
+test -z "$opt_mode" && {
   help="$generic_help"
   func_fatal_help "you must specify a MODE"
 }
 
 test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$mode'"
+  func_fatal_help "invalid operation mode \`$opt_mode'"
 
 if test -n "$exec_cmd"; then
   eval exec "$exec_cmd"
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 39ba996..d812584 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1,7 +1,8 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+#                 Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -10,7 +11,8 @@
 
 m4_define([_LT_COPYING], [dnl
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+#                 Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -37,7 +39,7 @@
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 ])
 
-# serial 56 LT_INIT
+# serial 57 LT_INIT
 
 
 # LT_PREREQ(VERSION)
@@ -66,6 +68,7 @@
 # ------------------
 AC_DEFUN([LT_INIT],
 [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
 AC_BEFORE([$0], [LT_LANG])dnl
 AC_BEFORE([$0], [LT_OUTPUT])dnl
 AC_BEFORE([$0], [LTDL_INIT])dnl
@@ -82,6 +85,8 @@
 AC_REQUIRE([LTOBSOLETE_VERSION])dnl
 m4_require([_LT_PROG_LTMAIN])dnl
 
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
 dnl Parse OPTIONS
 _LT_SET_OPTIONS([$0], [$1])
 
@@ -118,7 +123,7 @@
     *) break;;
   esac
 done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
 ])
 
 
@@ -138,6 +143,9 @@
 m4_defun([_LT_SETUP],
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
 _LT_DECL([], [host_alias], [0], [The host system])dnl
 _LT_DECL([], [host], [0])dnl
 _LT_DECL([], [host_os], [0])dnl
@@ -160,10 +168,13 @@
 dnl
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
 m4_require([_LT_CMD_RELOAD])dnl
 m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
 m4_require([_LT_CMD_OLD_ARCHIVE])dnl
 m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
 
 _LT_CONFIG_LIBTOOL_INIT([
 # See if we are running on zsh, and set the options which allow our
@@ -179,7 +190,6 @@
 _LT_CHECK_OBJDIR
 
 m4_require([_LT_TAG_COMPILER])dnl
-_LT_PROG_ECHO_BACKSLASH
 
 case $host_os in
 aix3*)
@@ -193,23 +203,6 @@
   ;;
 esac
 
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
 # Global variables:
 ofile=libtool
 can_build_shared=yes
@@ -250,6 +243,28 @@
 ])# _LT_SETUP
 
 
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
 # _LT_PROG_LTMAIN
 # ---------------
 # Note that this code is called both from `configure', and `config.status'
@@ -408,7 +423,7 @@
 # declaration there will have the same value as in `configure'.  VARNAME
 # must have a single quote delimited value for this to work.
 m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
 
 
 # _LT_CONFIG_STATUS_DECLARATIONS
@@ -418,7 +433,7 @@
 # embedded single quotes properly.  In configure, this macro expands
 # each variable declared with _LT_DECL (and _LT_TAGDECL) into:
 #
-#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
 m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
 [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
     [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
@@ -517,12 +532,20 @@
 LTCFLAGS='$LTCFLAGS'
 compiler='$compiler_DEFAULT'
 
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
 # Quote evaled strings.
 for var in lt_decl_all_varnames([[ \
 ]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -533,9 +556,9 @@
 # Double-quote double-evaled strings.
 for var in lt_decl_all_varnames([[ \
 ]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -543,16 +566,38 @@
     esac
 done
 
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\[$]0 --fallback-echo"')dnl "
-  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
-  ;;
-esac
-
 _LT_OUTPUT_LIBTOOL_INIT
 ])
 
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable.  If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins.  After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script.  The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test $lt_write_fail = 0 && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
 
 # LT_OUTPUT
 # ---------
@@ -562,20 +607,11 @@
 AC_DEFUN([LT_OUTPUT],
 [: ${CONFIG_LT=./config.lt}
 AC_MSG_NOTICE([creating $CONFIG_LT])
-cat >"$CONFIG_LT" <<_LTEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate a libtool stub with the current configuration.
-
-lt_cl_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_LTEOF
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
 
 cat >>"$CONFIG_LT" <<\_LTEOF
-AS_SHELL_SANITIZE
-_AS_PREPARE
-
-exec AS_MESSAGE_FD>&1
+lt_cl_silent=false
 exec AS_MESSAGE_LOG_FD>>config.log
 {
   echo
@@ -601,7 +637,7 @@
 m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
 configured by $[0], generated by m4_PACKAGE_STRING.
 
-Copyright (C) 2008 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
@@ -646,15 +682,13 @@
 # appending to config.log, which fails on DOS, as config.log is still kept
 # open by configure.  Here we exec the FD to /dev/null, effectively closing
 # config.log, so it can be properly (re)opened and appended to by config.lt.
-if test "$no_create" != yes; then
-  lt_cl_success=:
-  test "$silent" = yes &&
-    lt_config_lt_args="$lt_config_lt_args --quiet"
-  exec AS_MESSAGE_LOG_FD>/dev/null
-  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-  exec AS_MESSAGE_LOG_FD>>config.log
-  $lt_cl_success || AS_EXIT(1)
-fi
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
 ])# LT_OUTPUT
 
 
@@ -717,15 +751,12 @@
   # if finds mixed CR/LF and LF-only lines.  Since sed operates in
   # text mode, it properly converts lines to CR/LF.  This bash problem
   # is reportedly fixed, but why not run on old versions too?
-  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
 
-  _LT_PROG_XSI_SHELLFNS
+  _LT_PROG_REPLACE_SHELLFNS
 
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" ||
+   mv -f "$cfgfile" "$ofile" ||
     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
   chmod +x "$ofile"
 ],
@@ -831,11 +862,13 @@
 AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
 AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
 AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
 dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
 dnl AC_DEFUN([AC_LIBTOOL_F77], [])
 dnl AC_DEFUN([AC_LIBTOOL_FC], [])
 dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
 
 
 # _LT_TAG_COMPILER
@@ -940,6 +973,31 @@
 	[lt_cv_ld_exported_symbols_list=no])
 	LDFLAGS="$save_LDFLAGS"
     ])
+    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+      [lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+    ])
     case $host_os in
     rhapsody* | darwin1.[[012]])
       _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
@@ -967,7 +1025,7 @@
     else
       _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
     fi
-    if test "$DSYMUTIL" != ":"; then
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
       _lt_dsymutil='~$DSYMUTIL $lib || :'
     else
       _lt_dsymutil=
@@ -987,7 +1045,11 @@
   _LT_TAGVAR(hardcode_direct, $1)=no
   _LT_TAGVAR(hardcode_automatic, $1)=yes
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  fi
   _LT_TAGVAR(link_all_deplibs, $1)=yes
   _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
   case $cc_basename in
@@ -995,7 +1057,7 @@
      *) _lt_dar_can_shared=$GCC ;;
   esac
   if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=echo
+    output_verbose_link_cmd=func_echo_all
     _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
     _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
     _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
@@ -1011,203 +1073,142 @@
   fi
 ])
 
-# _LT_SYS_MODULE_PATH_AIX
-# -----------------------
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
 # Links a minimal program and checks the executable
 # for the system default hardcoded library path. In most cases,
 # this is /usr/lib:/lib, but when the MPI compilers are used
 # the location of the communication and MPI libs are included too.
 # If we don't find anything, use the default library path according
 # to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
 m4_defun([_LT_SYS_MODULE_PATH_AIX],
 [m4_require([_LT_DECL_SED])dnl
-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+  lt_aix_libpath_sed='[
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }]'
+  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi],[])
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+  fi
+  ])
+  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
 ])# _LT_SYS_MODULE_PATH_AIX
 
 
 # _LT_SHELL_INIT(ARG)
 # -------------------
 m4_define([_LT_SHELL_INIT],
-[ifdef([AC_DIVERSION_NOTICE],
-	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-	 [AC_DIVERT_PUSH(NOTICE)])
-$1
-AC_DIVERT_POP
-])# _LT_SHELL_INIT
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
 
 
 # _LT_PROG_ECHO_BACKSLASH
 # -----------------------
-# Add some code to the start of the generated configure script which
-# will find an echo command which doesn't interpret backslashes.
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
 m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[_LT_SHELL_INIT([
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
 
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-  ;;
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*" 
+}
+
+case "$ECHO" in
+  printf*) AC_MSG_RESULT([printf]) ;;
+  print*) AC_MSG_RESULT([print -r]) ;;
+  *) AC_MSG_RESULT([cat]) ;;
 esac
 
-ECHO=${lt_ECHO-echo}
-if test "X[$]1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X[$]1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-fi
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test "X`printf %s $ECHO`" = "X$ECHO" \
+      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
 
-if test "X[$]1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<_LT_EOF
-[$]*
-_LT_EOF
-  exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
-      then
-        break
-      fi
-    done
-  fi
-
-  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-     test "X$echo_testing_string" = "X$echo_test_string"; then
-    :
-  else
-    # The Solaris, AIX, and Digital Unix default echo programs unquote
-    # backslashes.  This makes it impossible to quote backslashes using
-    #   echo "$something" | sed 's/\\/\\\\/g'
-    #
-    # So, first we look for a working echo in the user's PATH.
-
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for dir in $PATH /usr/ucb; do
-      IFS="$lt_save_ifs"
-      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        ECHO="$dir/echo"
-        break
-      fi
-    done
-    IFS="$lt_save_ifs"
-
-    if test "X$ECHO" = Xecho; then
-      # We didn't find a better echo, so look for alternatives.
-      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        # This shell has a builtin print -r that does the trick.
-        ECHO='print -r'
-      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
-	   test "X$CONFIG_SHELL" != X/bin/ksh; then
-        # If we have ksh, try running configure again with it.
-        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-        export ORIGINAL_CONFIG_SHELL
-        CONFIG_SHELL=/bin/ksh
-        export CONFIG_SHELL
-        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
-      else
-        # Try using printf.
-        ECHO='printf %s\n'
-        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	  # Cool, printf works
-	  :
-        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	  export CONFIG_SHELL
-	  SHELL="$CONFIG_SHELL"
-	  export SHELL
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        else
-	  # maybe with a smaller string...
-	  prev=:
-
-	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
-	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
-	    then
-	      break
-	    fi
-	    prev="$cmd"
-	  done
-
-	  if test "$prev" != 'sed 50q "[$]0"'; then
-	    echo_test_string=`eval $prev`
-	    export echo_test_string
-	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
-	  else
-	    # Oops.  We lost completely, so just stick with echo.
-	    ECHO=echo
-	  fi
-        fi
-      fi
-    fi
-  fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
-
-AC_SUBST(lt_ECHO)
-])
 _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1],
-    [An echo program that does not interpret backslashes])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
 ])# _LT_PROG_ECHO_BACKSLASH
 
 
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+
 # _LT_ENABLE_LOCK
 # ---------------
 m4_defun([_LT_ENABLE_LOCK],
@@ -1236,7 +1237,7 @@
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     if test "$lt_cv_prog_gnu_ld" = yes; then
       case `/usr/bin/file conftest.$ac_objext` in
@@ -1354,14 +1355,47 @@
 ])# _LT_ENABLE_LOCK
 
 
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+  [lt_cv_ar_at_file=no
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+     [echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([lt_ar_try])
+      if test "$ac_status" -eq 0; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	AC_TRY_EVAL([lt_ar_try])
+	if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+     ])
+  ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+  [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
 # _LT_CMD_OLD_ARCHIVE
 # -------------------
 m4_defun([_LT_CMD_OLD_ARCHIVE],
-[AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
+[_LT_PROG_AR
 
 AC_CHECK_TOOL(STRIP, strip, :)
 test -z "$STRIP" && STRIP=:
@@ -1388,10 +1422,19 @@
   esac
   old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
 fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
 _LT_DECL([], [old_postinstall_cmds], [2])
 _LT_DECL([], [old_postuninstall_cmds], [2])
 _LT_TAGDECL([], [old_archive_cmds], [2],
     [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+    [Whether to use a lock for old archive extraction])
 ])# _LT_CMD_OLD_ARCHIVE
 
 
@@ -1416,15 +1459,15 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        $2=yes
@@ -1464,7 +1507,7 @@
      if test -s conftest.err; then
        # Append any errors to the config.log.
        cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
          $2=yes
@@ -1527,6 +1570,11 @@
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
   amigaos*)
     # On AmigaOS with pdksh, this test takes hours, literally.
     # So we just punt and use a minimum line length of 8192.
@@ -1591,8 +1639,8 @@
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i != 17 # 1/2 MB should be enough
       do
         i=`expr $i + 1`
@@ -1643,7 +1691,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-[#line __oline__ "configure"
+[#line $LINENO "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -1684,7 +1732,13 @@
 #  endif
 #endif
 
-void fnord() { int i=42;}
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
 int main ()
 {
   void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
@@ -1693,7 +1747,11 @@
   if (self)
     {
       if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
       /* dlclose (self); */
     }
   else
@@ -1869,16 +1927,16 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
@@ -2037,6 +2095,7 @@
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_OBJDUMP])dnl
 m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
 AC_MSG_CHECKING([dynamic linker characteristics])
 m4_if([$1],
 	[], [
@@ -2045,16 +2104,23 @@
     darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
     *) lt_awk_arg="/^libraries:/" ;;
   esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
     # if the path contains ";" then we assume it to be the separator
     # otherwise default to the standard path separator (i.e. ":") - it is
     # assumed that no part of a normal pathname contains ";" but that should
     # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
   # Ok, now we have the path, separated by spaces, we can step through it
   # and add multilib dir if necessary.
   lt_tmp_lt_search_path_spec=
@@ -2067,7 +2133,7 @@
 	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
     fi
   done
-  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
 BEGIN {RS=" "; FS="/|\n";} {
   lt_foo="";
   lt_count=0;
@@ -2087,7 +2153,13 @@
   if (lt_foo != "") { lt_freq[[lt_foo]]++; }
   if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
 }'`
-  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
 else
   sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
 fi])
@@ -2175,7 +2247,7 @@
   m68k)
     library_names_spec='$libname.ixlibrary $libname.a'
     # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
     ;;
   esac
   ;;
@@ -2206,8 +2278,9 @@
   need_version=no
   need_lib_prefix=no
 
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
     postinstall_cmds='base_file=`basename \${file}`~
@@ -2228,36 +2301,83 @@
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
       soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+m4_if([$1], [],[
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
       ;;
     mingw* | cegcc*)
       # MinGW DLLs use traditional 'lib' prefix
       soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
       ;;
     pw32*)
       # pw32 DLLs use 'pw' prefix rather than 'lib'
       library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       ;;
     esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
     ;;
 
   *)
+    # Assume MSVC wrapper
     library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
     ;;
   esac
-  dynamic_linker='Win32 ld.exe'
   # FIXME: first we should search . and the directory the executable is in
   shlibpath_var=PATH
   ;;
@@ -2344,6 +2464,19 @@
   hardcode_into_libs=yes
   ;;
 
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
 hpux9* | hpux10* | hpux11*)
   # Give a soname corresponding to the major version so that dld.sl refuses to
   # link against other versions.
@@ -2386,8 +2519,10 @@
     soname_spec='${libname}${release}${shared_ext}$major'
     ;;
   esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
   postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
   ;;
 
 interix[[3-9]]*)
@@ -2445,7 +2580,7 @@
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -2454,16 +2589,21 @@
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
+
   # Some binutils ld are patched to set DT_RUNPATH
-  save_LDFLAGS=$LDFLAGS
-  save_libdir=$libdir
-  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-       [shlibpath_overrides_runpath=yes])])
-  LDFLAGS=$save_LDFLAGS
-  libdir=$save_libdir
+  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+    [lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+	 [lt_cv_shlibpath_overrides_runpath=yes])])
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+    ])
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
 
   # This implies no fast_install, which is unacceptable.
   # Some rework will be needed to allow for fast_install
@@ -2472,7 +2612,7 @@
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
@@ -2705,6 +2845,8 @@
     The last name is the one that the linker finds with -lNAME]])
 _LT_DECL([], [soname_spec], [1],
     [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+    [Permission mode override for installation of shared libraries])
 _LT_DECL([], [postinstall_cmds], [2],
     [Command to use after installation of a shared archive])
 _LT_DECL([], [postuninstall_cmds], [2],
@@ -2817,6 +2959,7 @@
 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
 m4_require([_LT_DECL_SED])dnl
 m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
 
 AC_ARG_WITH([gnu-ld],
     [AS_HELP_STRING([--with-gnu-ld],
@@ -2938,6 +3081,11 @@
 esac
 reload_cmds='$LD$reload_flag -o $output$reload_objs'
 case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
   darwin*)
     if test "$GCC" = yes; then
       reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
@@ -2946,8 +3094,8 @@
     fi
     ;;
 esac
-_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_DECL([], [reload_cmds], [2])dnl
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
 ])# _LT_CMD_RELOAD
 
 
@@ -2999,16 +3147,18 @@
   # Base MSYS/MinGW do not provide the 'file' command needed by
   # func_win32_libid shell function, so use a weaker test based on 'objdump',
   # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
     lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
     lt_cv_file_magic_cmd='func_win32_libid'
   else
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
     lt_cv_file_magic_cmd='$OBJDUMP -f'
   fi
   ;;
 
-cegcc)
+cegcc*)
   # use the weaker test based on 'objdump'. See mingw*.
   lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
   lt_cv_file_magic_cmd='$OBJDUMP -f'
@@ -3038,6 +3188,10 @@
   lt_cv_deplibs_check_method=pass_all
   ;;
 
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
 hpux10.20* | hpux11*)
   lt_cv_file_magic_cmd=/usr/bin/file
   case $host_cpu in
@@ -3046,11 +3200,11 @@
     lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
     ;;
   hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
     lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
     ;;
   *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
     lt_cv_file_magic_test_file=/usr/lib/libc.sl
     ;;
   esac
@@ -3072,7 +3226,7 @@
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -3150,6 +3304,21 @@
   ;;
 esac
 ])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
 file_magic_cmd=$lt_cv_file_magic_cmd
 deplibs_check_method=$lt_cv_deplibs_check_method
 test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -3157,7 +3326,11 @@
 _LT_DECL([], [deplibs_check_method], [1],
     [Method to check whether dependent libraries are shared objects])
 _LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method == "file_magic"])
+    [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+    [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
 ])# _LT_CHECK_MAGIC_METHOD
 
 
@@ -3214,7 +3387,19 @@
   NM="$lt_cv_path_NM"
 else
   # Didn't find any BSD compatible name lister, look for dumpbin.
-  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
   AC_SUBST([DUMPBIN])
   if test "$DUMPBIN" != ":"; then
     NM="$DUMPBIN"
@@ -3227,13 +3412,13 @@
 AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
   [lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
   cat conftest.out >&AS_MESSAGE_LOG_FD
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -3248,6 +3433,67 @@
 dnl AC_DEFUN([AM_PROG_NM], [])
 dnl AC_DEFUN([AC_PROG_NM], [])
 
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+    [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+  [lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*])
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
 
 # LT_LIB_M
 # --------
@@ -3256,7 +3502,7 @@
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 LIBM=
 case $host in
-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
   # These system don't have libm, or don't need it
   ;;
 *-ncr-sysv4.3*)
@@ -3284,7 +3530,12 @@
 _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
 
 if test "$GCC" = yes; then
-  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+  case $cc_basename in
+  nvcc*)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+  esac
 
   _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
     lt_cv_prog_compiler_rtti_exceptions,
@@ -3301,6 +3552,7 @@
 m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([LT_PATH_NM])dnl
 AC_REQUIRE([LT_PATH_LD])dnl
 m4_require([_LT_DECL_SED])dnl
@@ -3368,8 +3620,8 @@
 lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
 
 # Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
 
 # Handle CRLF in mingw tool chain
 opt_cr=
@@ -3405,6 +3657,7 @@
   else
     lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
   fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
 
   # Check to see that the pipe works correctly.
   pipe_works=no
@@ -3426,7 +3679,7 @@
   if AC_TRY_EVAL(ac_compile); then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
 	mv -f "$nlist"T "$nlist"
@@ -3438,6 +3691,18 @@
       if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
 	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
 	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT@&t@_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT@&t@_DLSYM_CONST
+#else
+# define LT@&t@_DLSYM_CONST const
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -3449,7 +3714,7 @@
 	  cat <<_LT_EOF >> conftest.$ac_ext
 
 /* The mapping between symbol names and symbols.  */
-const struct {
+LT@&t@_DLSYM_CONST struct {
   const char *name;
   void       *address;
 }
@@ -3475,15 +3740,15 @@
 _LT_EOF
 	  # Now try linking the two files.
 	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_save_LIBS="$LIBS"
-	  lt_save_CFLAGS="$CFLAGS"
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
 	  LIBS="conftstm.$ac_objext"
 	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
 	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
 	    pipe_works=yes
 	  fi
-	  LIBS="$lt_save_LIBS"
-	  CFLAGS="$lt_save_CFLAGS"
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
 	else
 	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
 	fi
@@ -3516,6 +3781,13 @@
   AC_MSG_RESULT(ok)
 fi
 
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
 _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
     [Take the output of nm and produce a listing of raw symbols and C names])
 _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
@@ -3526,6 +3798,8 @@
 _LT_DECL([global_symbol_to_c_name_address_lib_prefix],
     [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
     [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([], [nm_file_list_spec], [1],
+    [Specify filename containing input files for $NM])
 ]) # _LT_CMD_GLOBAL_SYMBOLS
 
 
@@ -3537,7 +3811,6 @@
 _LT_TAGVAR(lt_prog_compiler_pic, $1)=
 _LT_TAGVAR(lt_prog_compiler_static, $1)=
 
-AC_MSG_CHECKING([for $compiler option to produce PIC])
 m4_if([$1], [CXX], [
   # C++ specific cases for pic, static, wl, etc.
   if test "$GXX" = yes; then
@@ -3588,6 +3861,11 @@
       # DJGPP does not support shared libraries at all
       _LT_TAGVAR(lt_prog_compiler_pic, $1)=
       ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
     interix[[3-9]]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
@@ -3637,6 +3915,12 @@
 	  ;;
 	esac
 	;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+	# This hack is so that the source file can tell whether it is being
+	# built for inclusion in a dll (and should export symbols for example).
+	m4_if([$1], [GCJ], [],
+	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+	;;
       dgux*)
 	case $cc_basename in
 	  ec++*)
@@ -3693,7 +3977,7 @@
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -3726,8 +4010,8 @@
 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
 	    ;;
-	  xlc* | xlC*)
-	    # IBM XL 8.0 on PPC
+	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
@@ -3789,7 +4073,7 @@
 	;;
       solaris*)
 	case $cc_basename in
-	  CC*)
+	  CC* | sunCC*)
 	    # Sun C++ 4.2, 5.x and Centerline C++
 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
@@ -3893,6 +4177,12 @@
       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
       ;;
 
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+
     hpux*)
       # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
       # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
@@ -3935,6 +4225,13 @@
       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       ;;
     esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+      ;;
+    esac
   else
     # PORTME Check for flag to pass linker flags through the system compiler.
     case $host_os in
@@ -3977,7 +4274,7 @@
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -3998,7 +4295,13 @@
 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
 	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
+      nagfor*)
+	# NAG Fortran compiler
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
 	# which looks to be a dead project)
 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
@@ -4010,26 +4313,26 @@
         # All Alpha code is PIC.
         _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         ;;
-      xl*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ F* | *Sun*Fortran*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
-	  ;;
 	esac
 	;;
       esac
@@ -4060,7 +4363,7 @@
       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       case $cc_basename in
-      f77* | f90* | f95*)
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
       *)
 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
@@ -4117,9 +4420,11 @@
     _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
     ;;
 esac
-AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-	[How to pass a linker flag through the compiler])
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
 
 #
 # Check to make sure the PIC flag actually works.
@@ -4138,6 +4443,8 @@
 _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
 	[Additional compiler flags for building library objects])
 
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+	[How to pass a linker flag through the compiler])
 #
 # Check to make sure the static flag actually works.
 #
@@ -4158,6 +4465,7 @@
 m4_defun([_LT_LINKER_SHLIBS],
 [AC_REQUIRE([LT_PATH_LD])dnl
 AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_EGREP])dnl
 m4_require([_LT_DECL_SED])dnl
@@ -4166,27 +4474,35 @@
 AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
 m4_if([$1], [CXX], [
   _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
   case $host_os in
   aix[[4-9]]*)
     # If we're using GNU nm, then we don't want the "-C" option.
     # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
     if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
     else
       _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
     fi
     ;;
   pw32*)
     _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-  ;;
+    ;;
   cygwin* | mingw* | cegcc*)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
+    case $cc_basename in
+    cl*) ;;
+    *)
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+      ;;
+    esac
+    ;;
   *)
     _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
+    ;;
   esac
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
 ], [
   runpath_var=
   _LT_TAGVAR(allow_undefined_flag, $1)=
@@ -4249,7 +4565,33 @@
   esac
 
   _LT_TAGVAR(ld_shlibs, $1)=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
   if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
     wlarc='${wl}'
 
@@ -4267,6 +4609,7 @@
     fi
     supports_anon_versioning=no
     case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
       *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
@@ -4282,11 +4625,12 @@
 	_LT_TAGVAR(ld_shlibs, $1)=no
 	cat <<_LT_EOF 1>&2
 
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** Warning: the GNU linker, at least up to release 2.19, is reported
 *** to be unable to reliably create shared libraries on AIX.
 *** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
 
 _LT_EOF
       fi
@@ -4322,10 +4666,12 @@
       # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
       # as there is no search path for DLLs.
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       _LT_TAGVAR(always_export_symbols, $1)=no
       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
 
       if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
@@ -4343,6 +4689,11 @@
       fi
       ;;
 
+    haiku*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
     interix[[3-9]]*)
       _LT_TAGVAR(hardcode_direct, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -4358,7 +4709,7 @@
       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    gnu* | linux* | tpf* | k*bsd*-gnu)
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
       tmp_diet=no
       if test "$host_os" = linux-dietlibc; then
 	case $cc_basename in
@@ -4368,15 +4719,16 @@
       if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
 	 && test "$tmp_diet" = no
       then
-	tmp_addflag=
+	tmp_addflag=' $pic_flag'
 	tmp_sharedflag='-shared'
 	case $cc_basename,$host_cpu in
         pgcc*)				# Portland Group C compiler
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
 	  tmp_addflag=' $pic_flag'
 	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
 	  tmp_addflag=' $pic_flag -Mnomain' ;;
 	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
 	  tmp_addflag=' -i_dynamic' ;;
@@ -4387,13 +4739,17 @@
 	lf95*)				# Lahey Fortran 8.1
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
 	  tmp_sharedflag='--shared' ;;
-	xl[[cC]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
+	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
 	  tmp_sharedflag='-qmkshrobj'
 	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
+	  ;;
 	esac
 	case `$CC -V 2>&1 | sed 5q` in
 	*Sun\ C*)			# Sun C 5.9
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
 	  _LT_TAGVAR(compiler_needs_object, $1)=yes
 	  tmp_sharedflag='-G' ;;
 	*Sun\ F*)			# Sun Fortran 8.3
@@ -4409,17 +4765,17 @@
         fi
 
 	case $cc_basename in
-	xlf*)
+	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
 	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
 	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
 	  if test "x$supports_anon_versioning" = xyes; then
 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
 	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
 	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
 	  fi
 	  ;;
 	esac
@@ -4433,8 +4789,8 @@
 	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
       else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       fi
       ;;
 
@@ -4452,8 +4808,8 @@
 
 _LT_EOF
       elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
       fi
@@ -4499,8 +4855,8 @@
 
     *)
       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
       fi
@@ -4540,8 +4896,10 @@
       else
 	# If we're using GNU nm, then we don't want the "-C" option.
 	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	# Also, AIX nm treats weak defined symbols like other global
+	# defined symbols, whereas GNU nm marks them as "W".
 	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
 	else
 	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
 	fi
@@ -4628,9 +4986,9 @@
 	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        _LT_SYS_MODULE_PATH_AIX
+        _LT_SYS_MODULE_PATH_AIX([$1])
         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
       else
 	if test "$host_cpu" = ia64; then
 	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
@@ -4639,14 +4997,19 @@
 	else
 	 # Determine the default libpath from the value encoded in an
 	 # empty executable.
-	 _LT_SYS_MODULE_PATH_AIX
+	 _LT_SYS_MODULE_PATH_AIX([$1])
 	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
 	  # Warning - without using the other run time loading flags,
 	  # -berok will link without error, but may produce a broken library.
 	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
 	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  if test "$with_gnu_ld" = yes; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  fi
 	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
 	  # This is similar to how AIX traditionally builds its shared libraries.
 	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
@@ -4678,20 +5041,63 @@
       # Microsoft Visual C++.
       # hardcode_libdir_flag_spec is actually meaningless, as there is
       # no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-      # FIXME: Should let the user specify the lib program.
-      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	_LT_TAGVAR(always_export_symbols, $1)=yes
+	_LT_TAGVAR(file_list_spec, $1)='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+	  else
+	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+	  fi~
+	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+	  linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+	  lt_tool_outputfile="@TOOL_OUTPUT@"~
+	  case $lt_outputfile in
+	    *.exe|*.EXE) ;;
+	    *)
+	      lt_outputfile="$lt_outputfile.exe"
+	      lt_tool_outputfile="$lt_tool_outputfile.exe"
+	      ;;
+	  esac~
+	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+	    $RM "$lt_outputfile.manifest";
+	  fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	# FIXME: Should let the user specify the lib program.
+	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	;;
+      esac
       ;;
 
     darwin* | rhapsody*)
@@ -4729,7 +5135,7 @@
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
     freebsd* | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       _LT_TAGVAR(hardcode_direct, $1)=yes
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -4737,7 +5143,7 @@
 
     hpux9*)
       if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
       else
 	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
       fi
@@ -4752,8 +5158,8 @@
       ;;
 
     hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       else
 	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       fi
@@ -4771,16 +5177,16 @@
       ;;
 
     hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
 	case $host_cpu in
 	hppa*64*)
 	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       else
@@ -4792,7 +5198,14 @@
 	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	m4_if($1, [], [
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  _LT_LINKER_OPTION([if $CC understands -b],
+	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
 	  ;;
 	esac
       fi
@@ -4820,19 +5233,34 @@
 
     irix5* | irix6* | nonstopux*)
       if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
 	# Try to use the -exported_symbol ld option, if it does not
 	# work, assume that -exports_file does not work either and
 	# implicitly export all symbols.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        AC_LINK_IFELSE(int foo(void) {},
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-        )
-        LDFLAGS="$save_LDFLAGS"
+	# This should be the same for all languages, so no per-tag cache variable.
+	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+	  [lt_cv_irix_exported_symbol],
+	  [save_LDFLAGS="$LDFLAGS"
+	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+	   AC_LINK_IFELSE(
+	     [AC_LANG_SOURCE(
+	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+			      [C++], [[int foo (void) { return 0; }]],
+			      [Fortran 77], [[
+      subroutine foo
+      end]],
+			      [Fortran], [[
+      subroutine foo
+      end]])])],
+	      [lt_cv_irix_exported_symbol=yes],
+	      [lt_cv_irix_exported_symbol=no])
+           LDFLAGS="$save_LDFLAGS"])
+	if test "$lt_cv_irix_exported_symbol" = yes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+	fi
       else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
       fi
       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
@@ -4894,17 +5322,17 @@
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
       _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
       ;;
 
     osf3*)
       if test "$GCC" = yes; then
 	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
       else
 	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
       fi
       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
@@ -4914,13 +5342,13 @@
     osf4* | osf5*)	# as osf3* with the addition of -msym flag
       if test "$GCC" = yes; then
 	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       else
 	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
 	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
 
 	# Both c and cxx compiler support -rpath directly
 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -4933,9 +5361,9 @@
       _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
       if test "$GCC" = yes; then
 	wlarc='${wl}'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
 	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       else
 	case `$CC -V 2>&1` in
 	*"Compilers 5.0"*)
@@ -5111,36 +5539,38 @@
       # Test whether the compiler implicitly links with -lc since on some
       # systems, -lgcc has to come before -lc. If gcc already passes -lc
       # to ld, don't add -lc before -lgcc.
-      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
-      $RM conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+	[$RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-	pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-        _LT_TAGVAR(allow_undefined_flag, $1)=
-        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-        then
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        else
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-        fi
-        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
+	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+	  _LT_TAGVAR(allow_undefined_flag, $1)=
+	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+	  then
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	  else
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  fi
+	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	])
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
       ;;
     esac
   fi
@@ -5205,8 +5635,6 @@
     to runtime path list])
 _LT_TAGDECL([], [link_all_deplibs], [0],
     [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [fix_srcfile_path], [1],
-    [Fix the shell variable $srcfile for the compiler])
 _LT_TAGDECL([], [always_export_symbols], [0],
     [Set to "yes" if exported symbols are required])
 _LT_TAGDECL([], [export_symbols_cmds], [2],
@@ -5217,6 +5645,8 @@
     [Symbols that must always be exported])
 _LT_TAGDECL([], [prelink_cmds], [2],
     [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+    [Commands necessary for finishing linking programs])
 _LT_TAGDECL([], [file_list_spec], [1],
     [Specify filename containing input files])
 dnl FIXME: Not yet implemented
@@ -5310,14 +5740,15 @@
 ])# _LT_LANG_C_CONFIG
 
 
-# _LT_PROG_CXX
-# ------------
-# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
-# compiler, we have our own version here.
-m4_defun([_LT_PROG_CXX],
-[
-pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
-AC_PROG_CXX
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
 if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
     ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
     (test "X$CXX" != "Xg++"))) ; then
@@ -5325,22 +5756,6 @@
 else
   _lt_caught_CXX_error=yes
 fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_CXX
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_CXX], [])
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[AC_REQUIRE([_LT_PROG_CXX])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
 
 AC_LANG_PUSH(C++)
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
@@ -5362,6 +5777,8 @@
 _LT_TAGVAR(module_expsym_cmds, $1)=
 _LT_TAGVAR(link_all_deplibs, $1)=unknown
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 _LT_TAGVAR(no_undefined_flag, $1)=
 _LT_TAGVAR(whole_archive_flag_spec, $1)=
 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
@@ -5393,6 +5810,7 @@
 
   # Allow CC to be a program name with arguments.
   lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
   lt_save_LD=$LD
   lt_save_GCC=$GCC
   GCC=$GXX
@@ -5410,6 +5828,7 @@
   fi
   test -z "${LDCXX+set}" || LD=$LDCXX
   CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
   compiler=$CC
   _LT_TAGVAR(compiler, $1)=$CC
   _LT_CC_BASENAME([$compiler])
@@ -5431,8 +5850,8 @@
       # Check if GNU C++ uses GNU ld as the underlying linker, since the
       # archiving commands below assume that GNU ld is being used.
       if test "$with_gnu_ld" = yes; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
 
         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
@@ -5464,7 +5883,7 @@
       # Commands to make compiler produce verbose output that lists
       # what "hidden" libraries, object files and flags are used when
       # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
     else
       GXX=no
@@ -5573,10 +5992,10 @@
           _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
           # Determine the default libpath from the value encoded in an empty
           # executable.
-          _LT_SYS_MODULE_PATH_AIX
+          _LT_SYS_MODULE_PATH_AIX([$1])
           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
 
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
         else
           if test "$host_cpu" = ia64; then
 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
@@ -5585,14 +6004,19 @@
           else
 	    # Determine the default libpath from the value encoded in an
 	    # empty executable.
-	    _LT_SYS_MODULE_PATH_AIX
+	    _LT_SYS_MODULE_PATH_AIX([$1])
 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
 	    # Warning - without using the other run time loading flags,
 	    # -berok will link without error, but may produce a broken library.
 	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
 	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	    # Exported symbols can be pulled into shared objects from archives
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	    if test "$with_gnu_ld" = yes; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	    fi
 	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
 	    # This is similar to how AIX traditionally builds its shared
 	    # libraries.
@@ -5622,28 +6046,75 @@
         ;;
 
       cygwin* | mingw* | pw32* | cegcc*)
-        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-        # as there is no search path for DLLs.
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-        _LT_TAGVAR(always_export_symbols, $1)=no
-        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	case $GXX,$cc_basename in
+	,cl* | no,cl*)
+	  # Native MSVC
+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
+	  # no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=yes
+	  _LT_TAGVAR(file_list_spec, $1)='@'
+	  # Tell ltmain to make .lib files, not .a files.
+	  libext=lib
+	  # Tell ltmain to make .dll files, not .so files.
+	  shrext_cmds=".dll"
+	  # FIXME: Setting linknames here is a bad hack.
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+	    else
+	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+	    fi~
+	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+	    linknames='
+	  # The linker will not automatically build a static lib if we build a DLL.
+	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	  # Don't use ranlib
+	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+	    lt_tool_outputfile="@TOOL_OUTPUT@"~
+	    case $lt_outputfile in
+	      *.exe|*.EXE) ;;
+	      *)
+		lt_outputfile="$lt_outputfile.exe"
+		lt_tool_outputfile="$lt_tool_outputfile.exe"
+		;;
+	    esac~
+	    func_to_tool_file "$lt_outputfile"~
+	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+	      $RM "$lt_outputfile.manifest";
+	    fi'
+	  ;;
+	*)
+	  # g++
+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=no
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
 
-        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-          # If the export-symbols file already is a .def file (1st line
-          # is EXPORTS), use it as is; otherwise, prepend...
-          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    cp $export_symbols $output_objdir/$soname.def;
-          else
-	    echo EXPORTS > $output_objdir/$soname.def;
-	    cat $export_symbols >> $output_objdir/$soname.def;
-          fi~
-          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-        else
-          _LT_TAGVAR(ld_shlibs, $1)=no
-        fi
-        ;;
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file (1st line
+	    # is EXPORTS), use it as is; otherwise, prepend...
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	      cp $export_symbols $output_objdir/$soname.def;
+	    else
+	      echo EXPORTS > $output_objdir/$soname.def;
+	      cat $export_symbols >> $output_objdir/$soname.def;
+	    fi~
+	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	  else
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	  ;;
+	esac
+	;;
       darwin* | rhapsody*)
         _LT_DARWIN_LINKER_FEATURES($1)
 	;;
@@ -5685,6 +6156,11 @@
       gnu*)
         ;;
 
+      haiku*)
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        ;;
+
       hpux9*)
         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
@@ -5709,11 +6185,11 @@
             # explicitly linking system object files so we need to strip them
             # from the output so that they don't get included in the library
             # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
             ;;
           *)
             if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
             else
               # FIXME: insert proper C++ library support
               _LT_TAGVAR(ld_shlibs, $1)=no
@@ -5774,7 +6250,7 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 	    ;;
           *)
 	    if test "$GXX" = yes; then
@@ -5784,10 +6260,10 @@
 	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	          ia64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	          *)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	        esac
 	      fi
@@ -5817,7 +6293,7 @@
         case $cc_basename in
           CC*)
 	    # SGI C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
@@ -5828,9 +6304,9 @@
           *)
 	    if test "$GXX" = yes; then
 	      if test "$with_gnu_ld" = no; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
 	      else
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
 	      fi
 	    fi
 	    _LT_TAGVAR(link_all_deplibs, $1)=yes
@@ -5841,7 +6317,7 @@
         _LT_TAGVAR(inherit_rpath, $1)=yes
         ;;
 
-      linux* | k*bsd*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -5859,7 +6335,7 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 
 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
 	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
@@ -5896,26 +6372,26 @@
           pgCC* | pgcpp*)
             # Portland Group C++ compiler
 	    case `$CC -V` in
-	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
+	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
 	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
 	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
 		$RANLIB $oldlib'
 	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
 	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
 	      ;;
-	    *) # Version 6 will use weak symbols
+	    *) # Version 6 and above use weak symbols
 	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
 	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
 	      ;;
@@ -5923,7 +6399,7 @@
 
 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
 	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
             ;;
 	  cxx*)
 	    # Compaq C++
@@ -5942,9 +6418,9 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
 	    ;;
-	  xl*)
+	  xl* | mpixl* | bgxl*)
 	    # IBM XL 8.0 on PPC, with GNU ld
 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
 	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
@@ -5964,13 +6440,13 @@
 	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
 	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
 	      _LT_TAGVAR(compiler_needs_object, $1)=yes
 
 	      # Not sure whether something based on
 	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
 	      # would be better.
-	      output_verbose_link_cmd='echo'
+	      output_verbose_link_cmd='func_echo_all'
 
 	      # Archives containing C++ object files must be created using
 	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
@@ -6039,7 +6515,7 @@
 	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
 	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
 	  fi
-	  output_verbose_link_cmd=echo
+	  output_verbose_link_cmd=func_echo_all
 	else
 	  _LT_TAGVAR(ld_shlibs, $1)=no
 	fi
@@ -6074,15 +6550,15 @@
 	    case $host in
 	      osf3*)
 	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
 	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
 		;;
 	      *)
 	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
 	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
 	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
+	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
 	          $RM $lib.exp'
 	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
 		;;
@@ -6098,17 +6574,17 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 	    ;;
 	  *)
 	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
 	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
 	      case $host in
 	        osf3*)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
 		  ;;
 	        *)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
 		  ;;
 	      esac
 
@@ -6118,7 +6594,7 @@
 	      # Commands to make compiler produce verbose output that lists
 	      # what "hidden" libraries, object files and flags are used when
 	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
 	    else
 	      # FIXME: insert proper C++ library support
@@ -6154,7 +6630,7 @@
 
       solaris*)
         case $cc_basename in
-          CC*)
+          CC* | sunCC*)
 	    # Sun C++ 4.2, 5.x and Centerline C++
             _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
 	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
@@ -6175,7 +6651,7 @@
 	    esac
 	    _LT_TAGVAR(link_all_deplibs, $1)=yes
 
-	    output_verbose_link_cmd='echo'
+	    output_verbose_link_cmd='func_echo_all'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
@@ -6195,14 +6671,14 @@
 	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
 	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
 	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
 	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	        # Commands to make compiler produce verbose output that lists
 	        # what "hidden" libraries, object files and flags are used when
 	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 	      else
 	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
 	        # platform.
@@ -6213,7 +6689,7 @@
 	        # Commands to make compiler produce verbose output that lists
 	        # what "hidden" libraries, object files and flags are used when
 	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 	      fi
 
 	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
@@ -6267,6 +6743,10 @@
           CC*)
 	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
+	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+	      '"$_LT_TAGVAR(reload_cmds, $1)"
 	    ;;
 	  *)
 	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
@@ -6322,6 +6802,7 @@
   fi # test -n "$compiler"
 
   CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
   LDCXX=$LD
   LD=$lt_save_LD
   GCC=$lt_save_GCC
@@ -6336,6 +6817,29 @@
 ])# _LT_LANG_CXX_CONFIG
 
 
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+  case ${2} in
+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
 # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
 # ---------------------------------
 # Figure out "hidden" library dependencies from verbose
@@ -6344,6 +6848,7 @@
 # objects, libraries and library flags.
 m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
 [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
 # Dependencies to place before and after the object being linked:
 _LT_TAGVAR(predep_objects, $1)=
 _LT_TAGVAR(postdep_objects, $1)=
@@ -6394,6 +6899,13 @@
 };
 _LT_EOF
 ])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+esac
+
 dnl Parse the compiler output and extract the necessary
 dnl objects, libraries and library flags.
 if AC_TRY_EVAL(ac_compile); then
@@ -6405,7 +6917,7 @@
   pre_test_object_deps_done=no
 
   for p in `eval "$output_verbose_link_cmd"`; do
-    case $p in
+    case ${prev}${p} in
 
     -L* | -R* | -l*)
        # Some compilers place space between "-{L,R}" and the path.
@@ -6414,13 +6926,22 @@
           test $p = "-R"; then
 	 prev=$p
 	 continue
-       else
-	 prev=
        fi
 
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
        if test "$pre_test_object_deps_done" = no; then
-	 case $p in
-	 -L* | -R*)
+	 case ${prev} in
+	 -L | -R)
 	   # Internal compiler library paths should come after those
 	   # provided the user.  The postdeps already come after the
 	   # user supplied libs so there is no need to process them.
@@ -6440,8 +6961,10 @@
 	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
 	 fi
        fi
+       prev=
        ;;
 
+    *.lto.$objext) ;; # Ignore GCC LTO objects
     *.$objext)
        # This assumes that the test object file only shows up
        # once in the compiler output.
@@ -6477,6 +7000,7 @@
 fi
 
 $RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
 
 # PORTME: override above test on systems where it is broken
 m4_if([$1], [CXX],
@@ -6513,7 +7037,7 @@
 
 solaris*)
   case $cc_basename in
-  CC*)
+  CC* | sunCC*)
     # The more standards-conforming stlport4 library is
     # incompatible with the Cstd library. Avoid specifying
     # it if it's in CXXFLAGS. Ignore libCrun as
@@ -6557,32 +7081,16 @@
 ])# _LT_SYS_HIDDEN_LIBDEPS
 
 
-# _LT_PROG_F77
-# ------------
-# Since AC_PROG_F77 is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_F77],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
-AC_PROG_F77
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_F77
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_F77], [])
-
-
 # _LT_LANG_F77_CONFIG([TAG])
 # --------------------------
 # Ensure that the configuration variables for a Fortran 77 compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
 # to write the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_F77_CONFIG],
-[AC_REQUIRE([_LT_PROG_F77])dnl
-AC_LANG_PUSH(Fortran 77)
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
 
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 _LT_TAGVAR(allow_undefined_flag, $1)=
@@ -6601,6 +7109,8 @@
 _LT_TAGVAR(module_expsym_cmds, $1)=
 _LT_TAGVAR(link_all_deplibs, $1)=unknown
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 _LT_TAGVAR(no_undefined_flag, $1)=
 _LT_TAGVAR(whole_archive_flag_spec, $1)=
 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
@@ -6640,7 +7150,9 @@
   # Allow CC to be a program name with arguments.
   lt_save_CC="$CC"
   lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
   CC=${F77-"f77"}
+  CFLAGS=$FFLAGS
   compiler=$CC
   _LT_TAGVAR(compiler, $1)=$CC
   _LT_CC_BASENAME([$compiler])
@@ -6694,38 +7206,24 @@
 
   GCC=$lt_save_GCC
   CC="$lt_save_CC"
+  CFLAGS="$lt_save_CFLAGS"
 fi # test "$_lt_disable_F77" != yes
 
 AC_LANG_POP
 ])# _LT_LANG_F77_CONFIG
 
 
-# _LT_PROG_FC
-# -----------
-# Since AC_PROG_FC is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_FC],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
-AC_PROG_FC
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_FC
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_FC], [])
-
-
 # _LT_LANG_FC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for a Fortran compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
 # to write the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_FC_CONFIG],
-[AC_REQUIRE([_LT_PROG_FC])dnl
-AC_LANG_PUSH(Fortran)
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test "X$FC" = "Xno"; then
+  _lt_disable_FC=yes
+fi
 
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 _LT_TAGVAR(allow_undefined_flag, $1)=
@@ -6744,6 +7242,8 @@
 _LT_TAGVAR(module_expsym_cmds, $1)=
 _LT_TAGVAR(link_all_deplibs, $1)=unknown
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 _LT_TAGVAR(no_undefined_flag, $1)=
 _LT_TAGVAR(whole_archive_flag_spec, $1)=
 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
@@ -6783,7 +7283,9 @@
   # Allow CC to be a program name with arguments.
   lt_save_CC="$CC"
   lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
   CC=${FC-"f95"}
+  CFLAGS=$FCFLAGS
   compiler=$CC
   GCC=$ac_cv_fc_compiler_gnu
 
@@ -6839,7 +7341,8 @@
   fi # test -n "$compiler"
 
   GCC=$lt_save_GCC
-  CC="$lt_save_CC"
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
 fi # test "$_lt_disable_FC" != yes
 
 AC_LANG_POP
@@ -6876,10 +7379,12 @@
 _LT_LINKER_BOILERPLATE
 
 # Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
 lt_save_GCC=$GCC
 GCC=yes
 CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
 compiler=$CC
 _LT_TAGVAR(compiler, $1)=$CC
 _LT_TAGVAR(LD, $1)="$LD"
@@ -6889,6 +7394,8 @@
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 
 ## CAVEAT EMPTOR:
 ## There is no encapsulation within the following macros, do not change
@@ -6908,7 +7415,8 @@
 AC_LANG_RESTORE
 
 GCC=$lt_save_GCC
-CC="$lt_save_CC"
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
 ])# _LT_LANG_GCJ_CONFIG
 
 
@@ -6943,9 +7451,11 @@
 
 # Allow CC to be a program name with arguments.
 lt_save_CC="$CC"
+lt_save_CFLAGS=$CFLAGS
 lt_save_GCC=$GCC
 GCC=
 CC=${RC-"windres"}
+CFLAGS=
 compiler=$CC
 _LT_TAGVAR(compiler, $1)=$CC
 _LT_CC_BASENAME([$compiler])
@@ -6958,7 +7468,8 @@
 
 GCC=$lt_save_GCC
 AC_LANG_RESTORE
-CC="$lt_save_CC"
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
 ])# _LT_LANG_RC_CONFIG
 
 
@@ -7017,6 +7528,15 @@
 AC_SUBST([OBJDUMP])
 ])
 
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
 
 # _LT_DECL_SED
 # ------------
@@ -7110,8 +7630,8 @@
 # Try some XSI features
 xsi_shell=no
 ( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,, \
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
     && eval 'test $(( 1 + 1 )) -eq 2 \
     && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
   && xsi_shell=yes
@@ -7150,208 +7670,162 @@
 ])# _LT_CHECK_SHELL_FEATURES
 
 
-# _LT_PROG_XSI_SHELLFNS
-# ---------------------
-# Bourne and XSI compatible variants of some useful shell functions.
-m4_defun([_LT_PROG_XSI_SHELLFNS],
-[case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-  func_basename_result="${1##*/}"
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
-  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-  # positional parameters, so assign one to ordinary parameter first.
-  func_stripname_result=${3}
-  func_stripname_result=${func_stripname_result#"${1}"}
-  func_stripname_result=${func_stripname_result%"${2}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=${1%%=*}
-  func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  case ${1} in
-    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-    *)    func_lo2o_result=${1} ;;
-  esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=$(( $[*] ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=${#1}
-}
-
-_LT_EOF
-    ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-dnl func_dirname_and_basename
-dnl A portable version of this function is already defined in general.m4sh
-dnl so there is no need for it here.
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-  case ${2} in
-    .*) func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[[^=]]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
-  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=`expr "$[@]"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]+=\$[2]"
-}
-_LT_EOF
-    ;;
-  *)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]=\$$[1]\$[2]"
-}
-
-_LT_EOF
-    ;;
-  esac
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
+m4_defun([_LT_PROG_FUNCTION_REPLACE],
+[dnl {
+sed -e '/^$1 ()$/,/^} # $1 /c\
+$1 ()\
+{\
+m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
 ])
+
+
+# _LT_PROG_REPLACE_SHELLFNS
+# -------------------------
+# Replace existing portable implementations of several shell functions with
+# equivalent extended shell implementations where those features are available..
+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
+[if test x"$xsi_shell" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary parameter first.
+    func_stripname_result=${3}
+    func_stripname_result=${func_stripname_result#"${1}"}
+    func_stripname_result=${func_stripname_result%"${2}"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
+    func_split_long_opt_name=${1%%=*}
+    func_split_long_opt_arg=${1#*=}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
+    func_split_short_opt_arg=${1#??}
+    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
+    case ${1} in
+      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+      *)    func_lo2o_result=${1} ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
+
+  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
+
+  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
+    func_quote_for_eval "${2}"
+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
+    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine which file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+         [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+         [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
index 34151a3..17cfd51 100644
--- a/m4/ltoptions.m4
+++ b/m4/ltoptions.m4
@@ -1,13 +1,14 @@
 # Helper functions for option handling.                    -*- Autoconf -*-
 #
-#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+#   Inc.
 #   Written by Gary V. Vaughan, 2004
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
 # modifications, as long as this notice is preserved.
 
-# serial 6 ltoptions.m4
+# serial 7 ltoptions.m4
 
 # This is to help aclocal find these macros, as it can't see m4_define.
 AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
@@ -125,7 +126,7 @@
 [enable_win32_dll=yes
 
 case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
   AC_CHECK_TOOL(AS, as, false)
   AC_CHECK_TOOL(DLLTOOL, dlltool, false)
   AC_CHECK_TOOL(OBJDUMP, objdump, false)
@@ -133,13 +134,13 @@
 esac
 
 test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [0], [Assembler program])dnl
+_LT_DECL([], [AS],      [1], [Assembler program])dnl
 
 test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
 
 test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
 ])# win32-dll
 
 AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
index b8e154f..9c7b5d4 100644
--- a/m4/ltversion.m4
+++ b/m4/ltversion.m4
@@ -7,17 +7,17 @@
 # unlimited permission to copy and/or distribute it, with or without
 # modifications, as long as this notice is preserved.
 
-# Generated from ltversion.in.
+# @configure_input@
 
-# serial 3012 ltversion.m4
+# serial 3293 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.2.6])
-m4_define([LT_PACKAGE_REVISION], [1.3012])
+m4_define([LT_PACKAGE_VERSION], [2.4])
+m4_define([LT_PACKAGE_REVISION], [1.3293])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6'
-macro_revision='1.3012'
+[macro_version='2.4'
+macro_revision='1.3293'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
index 637bb20..c573da9 100644
--- a/m4/lt~obsolete.m4
+++ b/m4/lt~obsolete.m4
@@ -1,13 +1,13 @@
 # lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
 #
-#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
 #   Written by Scott James Remnant, 2004.
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
 # modifications, as long as this notice is preserved.
 
-# serial 4 lt~obsolete.m4
+# serial 5 lt~obsolete.m4
 
 # These exist entirely to fool aclocal when bootstrapping libtool.
 #
@@ -77,7 +77,6 @@
 m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
 m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
 m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
 m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
 m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
 m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
@@ -90,3 +89,10 @@
 m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
 m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
 m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
diff --git a/man/Makefile.in b/man/Makefile.in
index 79f236b..01fe852 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -54,11 +54,13 @@
 ALARM_ALIASES   = snmp_alarm_register.3 snmp_alarm_register_hr.3 snmp_alarm_unregister.3
 SESSION_ALIASES = snmp_api_errstring.3 snmp_close.3 snmp_error.3    \
 	snmp_open.3 snmp_perror.3 snmp_read.3 snmp_select_info.3    \
-	snmp_send.3 snmp_sess_perror.3 snmp_timeout.3
+	snmp_send.3 snmp_sess_perror.3 snmp_timeout.3               \
+	snmp_async_send.3 snmp_synch_response.3
 SSESS_ALIASES   = snmp_sess_async_send.3 snmp_sess_close.3 snmp_sess_error.3 \
 	snmp_sess_init.3 snmp_sess_open.3 snmp_sess_read.3		     \
 	snmp_sess_select_info.3 snmp_sess_send.3			     \
-	snmp_sess_session.3 snmp_sess_timeout.3
+	snmp_sess_session.3 snmp_sess_timeout.3                              \
+	snmp_sess_synch_response.3
 TRAP_ALIASES    = send_easy_trap.3 send_trap_vars.3 send_v2trap.3 
 VARBIND_ALIASES = fprint_value.3 fprint_variable.3	\
 	print_value.3 print_variable.3			\
@@ -81,14 +83,26 @@
 
 all: $(TARGETS) standardall manaliases
 
-manaliases: Makefile
+manaliases: Makefile $(MAN3_API)
 	touch manaliases
-	@for i in $(MAN3_API) ; do				  \
-            for j in `sed -n '/^.SH NAME/,/^.SH SYNOPSIS/p' $$i  | sed -e 's/.- .*//' | sed 's/,.*//'  | @EGREP@ -v '^.SH ' `; do \
+	@result=0 ; \
+        for i in $(MAN3_API) ; do				  \
+            for j in `$(SED) -n '/^.SH NAME/,/^.SH SYNOPSIS/p' $$i  | $(SED) -e 's/.- .*//' | $(SED) 's/,.*//'  | $(EGREP) -v '^.SH ' `; do \
 		echo "making man page alias $$j -> $$i APIs" ;    \
 		echo ".so man3/$$i" > $$j.3 ; 		  \
+		if expr "$(MANALIASES)" : ".*$$j\\.3" > /dev/null ; \
+		then \
+		  : ; \
+		else \
+		    var=`echo $$i | $(SED) -e 's/^netsnmp_//' -e 's/_api.3//' | tr '[a-z]' '[A-Z]'` ; \
+		    echo "You must add $$j.3 to the $${var}_ALIASES variable in the Makefile.in" ; \
+		    result=1 ; \
+	        fi; \
 	    done                                                  \
-	done
+	done ; \
+	exit $$result
+
+$(MANALIASES): manaliases
 
 agentxtrap.1: $(srcdir)/agentxtrap.1.def ../sedscript
 	$(SED) -f ../sedscript < $(srcdir)/agentxtrap.1.def > agentxtrap.1
@@ -239,7 +253,7 @@
 	  touch mib2c.conf.5 ; \
 	fi
 
-maninstall:  maninstalldirs $(MAN1) $(MAN1G) $(MAN3) $(MAN5G) $(MAN8) $(MANALIASES)
+maninstall:  maninstalldirs $(MAN1) $(MAN1G) $(MAN3) $(MAN3_API) $(MAN3G) $(MAN5G) $(MAN8G) $(MANALIASES)
 	@for i in $(MAN1) ; do $(INSTALL_DATA) $(srcdir)/`basename $$i` $(INSTALL_PREFIX)$(man1dir) ; echo "install:  installed $$i in $(INSTALL_PREFIX)$(man1dir)" ; done
 	@$(INSTALL_DATA) $(MAN1G) $(INSTALL_PREFIX)$(man1dir)
 	@for i in $(MAN1G) ; do echo "install:  installed $$i in $(INSTALL_PREFIX)$(man1dir)" ; done
diff --git a/man/default_store.3.bot b/man/default_store.3.bot
index 16c08ee..ebd2bf6 100644
--- a/man/default_store.3.bot
+++ b/man/default_store.3.bot
@@ -111,7 +111,7 @@
 allocation failure).
 .TP
 .BI "int netsnmp_ds_register_premib(u_char " type ", const char *" ftype ", const char *" token ", int " store ", int " which ");"
-Analogous to the preceeding function, but the
+Analogous to the preceding function, but the
 .I token
 is processed before MIBs are read (this is therefore useful for controlling
 MIB processing options).
diff --git a/man/encode_keychange.1.def b/man/encode_keychange.1.def
index 7415617..20f5cc3 100644
--- a/man/encode_keychange.1.def
+++ b/man/encode_keychange.1.def
@@ -3,13 +3,13 @@
 encode_keychange - produce the KeyChange string for SNMPv3
 .SH SYNOPSIS
 .B encode_keychange 
--t md5|sha1
+\-t md5|sha1
 [\fIOPTIONS\fR]
 .SH DESCRIPTION
 .B encode_keychange
 produces a KeyChange string using the old and new passphrases 
 as described in Section 5 of RFC 2274 "User-based Security Model (USM) for 
-version 3 of the Simple Network Management Protocol (SNMPv3)". \fB-t\fR
+version 3 of the Simple Network Management Protocol (SNMPv3)". \fB\-t\fR
 option is mandatory and specifies the hash transform type to use.
 
 The transform is used to convert passphrase to master key for a given
@@ -20,9 +20,9 @@
 (in order listed):
 .IP
 command line options (see 
-.B -N
+.B \-N
 and
-.B -O
+.B \-O
 options below);
 .IP
 the file 
@@ -35,7 +35,7 @@
 .SH OPTIONS
 .TP
 \fB\-E\fR [0x]<\fIengineID\fR> EngineID used for Kul generation.
-<\fIengineID\fR> is intepreted as a hex string when preceeded by 0x,
+<\fIengineID\fR> is intepreted as a hex string when preceded by 0x,
 otherwise it is treated as a text string. If no <\fIengineID\fR> is
 specified, it is constructed from the first IP address for the local
 host.
diff --git a/man/fixproc.1.def b/man/fixproc.1.def
index ef90036..ae88a3d 100644
--- a/man/fixproc.1.def
+++ b/man/fixproc.1.def
@@ -27,10 +27,10 @@
 check process against database /local/etc/fixproc.conf.
 .TP
 .B \-kill
-kill process, wait 5 seconds, kill -9 if still exist
+kill process, wait 5 seconds, kill \-9 if still exist
 .TP
 .B \-restart
-kill process, wait 5 seconds, kill -9 if still exist, then start again
+kill process, wait 5 seconds, kill \-9 if still exist, then start again
 .TP
 .B \-exist
 checks if proc exists in ps && (min <= num. of processes <= max)
diff --git a/man/mib2c.conf.5.in b/man/mib2c.conf.5.in
index 7e5a210..3692a65 100644
--- a/man/mib2c.conf.5.in
+++ b/man/mib2c.conf.5.in
@@ -1,6 +1,6 @@
 .TH MIB2C.CONF 5 "28 Apr 2004" VVERSIONINFO "Net-SNMP"
 .SH NAME
-mib2c.conf -- How to write mib2c.conf files to do ANYTHING based on MIB input.
+mib2c.conf \[em] How to write mib2c.conf files to do ANYTHING based on MIB input.
 .SH SYNOPSIS
 % cat > mib2c.test.conf  << EOF
 @foreach $t table@
@@ -12,7 +12,7 @@
 @end@
 EOF
 
-% mib2c -c mib2c.test.conf internet
+% mib2c \-c mib2c.test.conf internet
 .SH DESCRIPTION
 The mib2c.conf script language is a MIB-particular language designed
 to easily process MIB nodes in ways that you want.  mib2c is a
diff --git a/man/net-snmp-config.1.def b/man/net-snmp-config.1.def
index 6521c9e..3a0fa2b 100644
--- a/man/net-snmp-config.1.def
+++ b/man/net-snmp-config.1.def
@@ -1,17 +1,17 @@
 .TH net-snmp-config 1 "16 Nov 2006" VVERSIONINFO "Net-SNMP"
 .SH NAME
-net-snmp-config \- returns information about installed net-snmp libraries and binaries 
+net\-snmp\-config - returns information about installed net-snmp libraries and binaries 
 .SH SYNOPSIS
 .PP
-.B net-snmp-config
+.B net\-snmp\-config
 [OPTIONS]
 .SH DESCRIPTION
 .PP
-The \fInet-snmp-config\fP shell script is designed to retrieve the
+The \fInet\-snmp\-config\fP shell script is designed to retrieve the
 configuration information about the libraries and binaries dealing with
 the Simple Network Management Protocol (SNMP), built from the 
 .B net-snmp 
-source package. The information is particularily useful for
+source package. The information is particularly useful for
 applications that need to link against the SNMP libraries and hence
 must know about any other libraries that must be linked in as well.
 
@@ -29,8 +29,8 @@
 .PP
 SNMP Setup commands:
 .TP
-\fB\-\-create\-snmpv3\-user\fR [-ro] [-a authpass] [-x privpass] [-X DES|AES]
-[-A MD5|SHA] [username]
+\fB\-\-create\-snmpv3\-user\fR [\-ro] [\-a authpass] [\-x privpass]
+[\-X DES|AES] [\-A MD5|SHA] [username]
 .PP
 These options produce the various compilation flags needed when
 building external SNMP applications:
@@ -63,8 +63,8 @@
 Automated subagent building (produces an OUTPUTNAME binary file):
 [This feature has not been extensively tested,  use at your own risk.]
 .TP
-\fB\-\-compile\-subagent\fR OUTPUTNAME [--norm] [--cflags flags]
-[--ldflags flags] mibmodule1.c [...]]
+\fB\-\-compile\-subagent\fR OUTPUTNAME [\-\-norm] [\-\-cflags flags]
+[\-\-ldflags flags] mibmodule1.c [...]]
 .TP
 \fB\-\-norm\fR
 leave the generated .c file around to read.
diff --git a/man/netsnmp_agent_api.3.def b/man/netsnmp_agent_api.3.def
index 87dc541..19efd00 100644
--- a/man/netsnmp_agent_api.3.def
+++ b/man/netsnmp_agent_api.3.def
@@ -1,11 +1,11 @@
 .TH NETSNMP_AGENT_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
-netsnmp_agent_api \- embedding an agent into a external application
+netsnmp_agent_api - embedding an agent into a external application
 .SH SYNOPSIS
 .nf
-#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/net\-snmp\-config.h>
+#include <net\-snmp/net\-snmp\-includes.h>
+#include <net\-snmp/agent/net\-snmp\-agent\-includes.h>
 
 int
 main (int argc, char *argv[])
@@ -45,7 +45,7 @@
 }
 
 Then:
-$(CC) ... `net-snmp-config --agent-libs`
+$(CC) ... `net\-snmp\-config \-\-agent\-libs`
 
 .fi
 .SH DESCRIPTION
@@ -76,8 +76,8 @@
 configured the Net-SNMP package with agentx support (which is turned
 on by default, so just don't turn it off)
 .PP
-Additionally, you will need to link against the net-snmp libraries
-(use the output of "net-snmp-config --agent-libs" to get a library
+Additionally, you will need to link against the Net-SNMP libraries
+(use the output of "net\-snmp\-config \-\-agent\-libs" to get a library
 list) and call subagent_pre_init() as indicated above.
 .SH COMPILING
 .PP
@@ -86,7 +86,7 @@
 .SH FUNCTIONS
 .PP This is a brief description of the functions called above and
 where to find out more information on them.  It is certainly not a
-complete list of what is available within all the net-snmp libraries. 
+complete list of what is available within all the Net-SNMP libraries. 
 .IP "snmp_enable_stderrlog()"
 Logs error output from the SNMP agent to the standard error stream.
 .IP "netsnmp_ds_set_boolean()"
@@ -123,10 +123,10 @@
 alarm must be run (see
 .IR snmp_alarm(3) ).
 The return value from this function is a positive integer if packets
-were processed, zero if an alarm occurred and -1 if an error occured.
+were processed, zero if an alarm occurred and \-1 if an error occured.
 .IP "snmp_shutdown(char *name);"
 This shuts down the agent, saving any needed persistent storage, etc.
 .SH "SEE ALSO"
-http://www.net-snmp.org/tutorial-5/toolkit/ select(2), snmp_api(3),
+http://www.net\-snmp.org/tutorial\-5/toolkit/ select(2), snmp_api(3),
 default_store(3), snmp_alarm(3), netsnmp_config_api(3), snmp_config(5),
 snmpd.conf(5)
diff --git a/man/netsnmp_mib_api.3.def b/man/netsnmp_mib_api.3.def
index cc0d0cb..2e1da8f 100644
--- a/man/netsnmp_mib_api.3.def
+++ b/man/netsnmp_mib_api.3.def
@@ -21,7 +21,7 @@
 fprint_description,
 snprint_description - netsnmp_mib_api functions
 .SH SYNOPSIS
-.B #include <net-snmp/mib_api.h>
+.B #include <net\-snmp/mib_api.h>
 .PP
 .SS Initialisation and Shutdown
 .BI "int add_mibdir(const char *" "dirname" );
@@ -104,7 +104,7 @@
 in that directory, but is simply an initialisation step to make
 them available to
 .BR netsnmp_read_module .
-This function returns a count of files found in the directory, or a -1
+This function returns a count of files found in the directory, or a \-1
 if there is an error.  
 It should be called \fIbefore\fP invoking \fBnetsnmp_init_mib\fP.
 .PP
@@ -180,7 +180,7 @@
 in MIB IMPORTS clauses (such as referring to
 .I RFC1213
 instead of
-.IR RFC1213-MIB ).
+.IR RFC1213\-MIB ).
 .SS Searching the MIB Tree
 .PP
 .B read_objid
@@ -234,7 +234,7 @@
 .I buf
 which is of length
 .IR len .
-It returns the number of characters printed, or -1 if the
+It returns the number of characters printed, or \-1 if the
 buffer was not large enough.  In the latter case,
 .I buf
 will typically contain a truncated version of the information (but
@@ -277,7 +277,7 @@
 .br
 The default list of modules will depend on how the Net-SNMP software
 was originally compiled, but is typically:
-IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB: UCD-SNMP-MIB:HOST-RESOURCES-MIB
+IP\-MIB:IF\-MIB:TCP\-MIB:UDP\-MIB:SNMPv2\-MIB:RFC1213\-MIB: UCD\-SNMP\-MIB:HOST\-RESOURCES\-MIB
 .IP
 If the value of the
 .B MIBS
diff --git a/man/netsnmp_sess_api.3.def b/man/netsnmp_sess_api.3.def
index 8641538..890353d 100644
--- a/man/netsnmp_sess_api.3.def
+++ b/man/netsnmp_sess_api.3.def
@@ -8,6 +8,7 @@
 snmp_sess_select_info,
 snmp_sess_read,
 snmp_sess_timeout,
+snmp_sess_synch_response,
 snmp_sess_close,
 snmp_sess_error - session functions
 .SH SYNOPSIS
@@ -41,6 +42,13 @@
 .PP
 .BI "void snmp_sess_timeout(void *" handle ");"
 .PP
+.BI "int snmp_sess_synch_response ( void *" "handle,"
+.RS
+.BI "netsnmp_pdu *" "pdu" ", "
+.br
+.BI "netsnmp_pdu **" "response" );
+.RE
+.PP
 .BI "int snmp_sess_close(void *" handle ");"
 .PP
 .BI "void snmp_sess_error(void *" handle ", int *" pcliberr ", "
@@ -99,6 +107,12 @@
 .PP
 Consult snmp_api.h for the definitions of these structures.
 .PP
+With the
+.I snmp_sess_async_send()
+call,
+.I snmp_sess_read
+will invoke the specified callback when the response is received.
+.PP
 .BR snmp_sess_select_info() ", " snmp_sess_read() " and " snmp_sess_timeout()
 provide an interface for the use of the
 .BR select (2)
@@ -148,6 +162,13 @@
 .B snmp_sess_timeout()
 should be called to see if a timeout has occurred on the SNMP
 session.
+.PP
+.I snmp_sess_synch_response
+is a convenience routine that will send the request,
+wait for the response and process it before returning.
+See the descriptions of
+.I "snmp_sess_send" ", " "snmp_sess_read"
+etc for details.
 .SH DIAGNOSTICS
 .PP
 Error return status from 
diff --git a/man/netsnmp_session_api.3.def b/man/netsnmp_session_api.3.def
index 60b68d1..c8891a1 100644
--- a/man/netsnmp_session_api.3.def
+++ b/man/netsnmp_session_api.3.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1989 by Carnegie Mellon University
 .\" 
@@ -28,9 +28,11 @@
 snmp_sess_init,
 snmp_open,
 snmp_send,
+snmp_async_send,
 snmp_select_info,
 snmp_read,
 snmp_timeout,
+snmp_synch_response,
 snmp_close,
 snmp_perror,
 snmp_sess_perror,
@@ -51,6 +53,15 @@
 .BI "netsnmp_pdu *" "pdu" );
 .RE
 .PP
+.BI "int snmp_async_send ( netsnmp_session *" "session,"
+.RS
+.BI "                         netsnmp_pdu *" pdu ", "
+.br
+.BI "                         snmp_callback " callback ", "
+.br
+.BI "                         void *" callbackData ");"
+.RE
+.PP
 .BI "int snmp_select_info ( int * " numfds, "fd_set *" fdset,
 .RS
 .BI "struct timeval *" timeout, "int *" block );
@@ -60,6 +71,13 @@
 .PP
 .B  void snmp_timeout ( void );
 .PP
+.BI "int snmp_synch_response ( netsnmp_session *" "session,"
+.RS
+.BI "netsnmp_pdu *" "pdu" ", "
+.br
+.BI "netsnmp_pdu **" "response" );
+.RE
+.PP
 .BI "int snmp_close ( netsnmp_session *" session );
 .br
 .B  "int snmp_close_sessions ( void );
@@ -98,8 +116,10 @@
 object, which the application must use to reference the
 active SNMP session.
 .PP
-.I Snmp_send
-takes as input a pointer to a
+.I snmp_send
+and
+.I snmp_async_send()
+each take as input a pointer to a
 .I netsnmp_pdu
 object.
 This structure contains information that describes a transaction
@@ -107,6 +127,12 @@
 .PP
 Consult snmp_api.h for the definitions of these structures.
 .PP
+With the
+.I snmp_async_send()
+call,
+.I snmp_read
+will invoke the specified callback when the response is received.
+.PP
 .I Snmp_read, snmp_select_info,
 and
 .I snmp_timeout
@@ -156,6 +182,13 @@
 times out,
 .I snmp_timeout
 should be called to see if the timeout was intended for SNMP.
+.PP
+.I snmp_synch_response
+is a convenience routine that will send the request,
+wait for the response and process it before returning.
+See the descriptions of
+.I "snmp_send" ", " "snmp_read"
+etc for details.
 .SH DIAGNOSTICS
 .PP
 Previous versions of the library used
diff --git a/man/snmp.conf.5.def b/man/snmp.conf.5.def
index 2fe5810..46203d0 100644
--- a/man/snmp.conf.5.def
+++ b/man/snmp.conf.5.def
@@ -35,8 +35,8 @@
 "dontLoadHostConfig true" in your snmp.conf file.
 .SH COMMAND-LINE OPTIONS
 All of the tokens described in this file can be used on the command
-line of Net-SNMP applications as well by prefixing them with "--".
-EG, specifying \fI--dontLoadHostConfig=true\fR on the command line will
+line of Net-SNMP applications as well by prefixing them with "\-\-".
+EG, specifying \fI\-\-dontLoadHostConfig=true\fR on the command line will
 turn of loading of the host specific configuration files.
 .SH IMPORTANT NOTE
 Several of these directives may contain sensitive information
@@ -82,10 +82,10 @@
 TCP to \fIfoo.exmaple.com\fR on port 9876.
 .IP "defVersion (1|2c|3)"
 defines the default version of SNMP to use.
-This can be overridden using the \fB-v\fR option.
+This can be overridden using the \fB\-v\fR option.
 .IP "defCommunity STRING"
 defines the default community to use for SNMPv1 and SNMPv2c requests.
-This can be overridden using the \fB-c\fR option.
+This can be overridden using the \fB\-c\fR option.
 .\".IP "dumpPacket (1|yes|true|0|no|false)"
 .IP "alias NAME DEFINITION"
 Creates an aliased tied to NAME for a given transport definition.  The
@@ -97,7 +97,7 @@
 .IP "dumpPacket yes"
 defines whether to display a hexadecimal dump of the raw SNMP requests
 sent and received by the application.
-This is equivalent to the \fB-d\fR option.
+This is equivalent to the \fB\-d\fR option.
 .IP "doDebugging (1|0)"
 turns on debugging for all applications run if set to 1.
 .\"
@@ -107,7 +107,7 @@
 .IP "debugTokens TOKEN[,TOKEN...]"
 defines the debugging tokens that should be turned on when
 \fIdoDebugging\fR is set.
-This is equivalent to the \fB-D\fR option.
+This is equivalent to the \fB\-D\fR option.
 .\".IP "16bitIDs (1|yes|true|0|no|false)"
 .IP "16bitIDs yes"
 restricts requestIDs, etc to 16-bit values.
@@ -143,7 +143,7 @@
 .IP "noRangeCheck yes"
 disables the validation of varbind values against the MIB definition
 for the relevant OID.
-This is equivalent to the \fB-Ir\fR option.
+This is equivalent to the \fB\-Ir\fR option.
 .IP
 This directive is primarily relevant to the \fBsnmpset\fR command,
 but will also apply to any application that calls \fIsnmp_add_var()\fR
@@ -170,16 +170,20 @@
 Specifies whether or not the host-specific configuration files are
 loaded.  Set to "true" to turn off the loading of the host specific
 configuration files.
+.IP "retries INTEGER"
+Specifies the number of retries to be used in the requests.
+.IP "timeout INTEGER"
+Specifies the timeout in seconds between retries.
 .\"
 .\" XXX - It is probably about time to remove this choice!
 .\"
 .SH SNMPv3 SETTINGS
 .IP "defSecurityName STRING"
 defines the default security name to use for SNMPv3 requests.
-This can be overridden using the \fB-u\fR option.
+This can be overridden using the \fB\-u\fR option.
 .IP "defSecurityLevel noAuthNoPriv|authNoPriv|authPriv"
 defines the default security level to use for SNMPv3 requests.
-This can be overridden using the \fB-l\fR option.
+This can be overridden using the \fB\-l\fR option.
 .IP
 If not specified, the default value for this token is \fInoAuthNoPriv\fR.
 .\"
@@ -195,7 +199,7 @@
 .IP "defPrivPassphrase STRING"
 define the default authentication and privacy pass phrases to use
 for SNMPv3 requests.
-These can be overridden using the \fB-A\fR and \fB-X\fR options respectively.
+These can be overridden using the \fB\-A\fR and \fB\-X\fR options respectively.
 .IP
 The 
 .B defPassphrase
@@ -205,7 +209,7 @@
 .IP "defPrivType DES|AES"
 define the default authentication and privacy protocols to use for
 SNMPv3 requests.
-These can be overridden using the \fB-a\fR and \fB-x\fR options respectively.
+These can be overridden using the \fB\-a\fR and \fB\-x\fR options respectively.
 .IP
 If not specified, SNMPv3 requests will default to MD5 authentication
 and DES encryption.
@@ -217,7 +221,7 @@
 .RE
 .IP "defContext STRING"
 defines the default context to use for SNMPv3 requests.
-This can be overridden using the \fB-n\fR option.
+This can be overridden using the \fB\-n\fR option.
 .IP
 If not specified, the default value for this token is the default context
 (i.e. the empty string "").
@@ -236,7 +240,7 @@
 normally has better entropy than a password unless it is
 amazingly long).
 The directives are equivalent to the short-form
-command line options \fB-3m\fR, \fB-3M\fR, \fB-3k\fR, and \fB-3K\fR.
+command line options \fB\-3m\fR, \fB\-3M\fR, \fB\-3k\fR, and \fB\-3K\fR.
 .IP
 Localized keys are
 master keys which have been converted to a unique key which is only
@@ -256,6 +260,12 @@
 privileged for SSH users that are allowed to connect to the SNMP
 service (VACM access still needs to be granted as well, most likely
 through the TSM security model).
+.IP "sshusername NAME"
+Sets the SSH user name for logging into the remote system.
+.IP "sshpubkey FILE"
+Set the public key file to use when connecting to a remote system.
+.IP "sshprivkey FILE"
+Set the private key file to use when connecting to a remote system.
 .\"
 .\" XXX - are these lengths still correct ?
 .\"
@@ -296,18 +306,18 @@
 .SH MIB HANDLING
 .IP "mibdirs DIRLIST"
 specifies a list of directories to search for MIB files.
-This operates in the same way as the \fB-M\fR option -
+This operates in the same way as the \fB\-M\fR option -
 see \fIsnmpcmd(1)\fR for details.
 Note that this value can be overridden by the
 .B MIBDIRS
-environment variable, and the \fB-M\fR option.
+environment variable, and the \fB\-M\fR option.
 .IP "mibs MIBLIST"
 specifies a list of MIB modules (not files) that should be loaded.
-This operates in the same way as the \fB-m\fR option -
+This operates in the same way as the \fB\-m\fR option -
 see \fIsnmpcmd(1)\fR for details.
 Note that this list can be overridden by the
 .B MIBS
-environment variable, and the \fB-m\fR option.
+environment variable, and the \fB\-m\fR option.
 .IP "mibfile FILE"
 specifies a (single) MIB file to load, in addition to the
 list read from the \fImibs\fR token (or equivalent configuration).
@@ -319,7 +329,7 @@
 .IP "commentToEOL (1|yes|true|0|no|false)"
 whether MIB parsing should be strict about comment termination.
 Many MIB writers assume that ASN.1 comments extend to the end of
-the text line, rather than being terminated by the next "--" token.
+the text line, rather than being terminated by the next "\-\-" token.
 This token can be used to accept such (strictly incorrect) MIBs.
 .br
 Note that this directive was previous (mis-)named \fIstrictCommentTerm\fR,
@@ -340,49 +350,49 @@
 being passed to the logging routines.  This option is only used when file logging is active. 
 .IP "printNumericEnums (1|yes|true|0|no|false)"
 Equivalent to
-.BR -Oe .
+.BR \-Oe .
 .IP "printNumericOids (1|yes|true|0|no|false)"
 Equivalent to
-.BR -On .
+.BR \-On .
 .IP "dontBreakdownOids (1|yes|true|0|no|false)"
 Equivalent to
-.BR -Ob .
+.BR \-Ob .
 .IP "escapeQuotes (1|yes|true|0|no|false)"
 Equivalent to
-.BR -OE .
+.BR \-OE .
 .IP "quickPrinting (1|yes|true|0|no|false)"
 Equivalent to
-.BR -Oq .
+.BR \-Oq .
 .IP "printValueOnly (1|yes|true|0|no|false)"
 Equivalent to
-.BR -Ov .
+.BR \-Ov .
 .IP "dontPrintUnits (1|yes|true|0|no|false)"
 Equivalent to
-.BR -OU .
+.BR \-OU .
 .IP "numericTimeticks (1|yes|true|0|no|false)"
 Equivalent to
-.BR -Ot .
+.BR \-Ot .
 .IP "printHexText (1|yes|true|0|no|false)"
 Equivalent to
-.BR -OT .
+.BR \-OT .
 .IP "hexOutputLength integer"
 Specifies where to break up the output of hexadecimal strings.  
 Set to 0 to disable line breaks.  Defaults to 16.
 .IP "suffixPrinting (0|1|2)"
 The value 1 is equivalent to
-.B -Os
+.B \-Os
 and the value 2 is equivalent to
-.BR -OS .
+.BR \-OS .
 .IP "oidOutputFormat (1|2|3|4|5|6)"
-Maps -O options as follow: -Os=1, -OS=2, -Of=3, -On=4, -Ou=5.
-The value 6 has no matching -O option. It suppresses output.
+Maps \-O options as follow: \-Os=1, \-OS=2, \-Of=3, \-On=4, \-Ou=5.
+The value 6 has no matching \-O option. It suppresses output.
 .IP "extendedIndex (1|yes|true|0|no|false)"
 Equivalent to
-.BR -OX .
+.BR \-OX .
 .IP "noDisplayHint (1|yes|true|0|no|false)"
 Disables the use of DISPLAY-HINT information when parsing indices and
 values to set. Equivalent to
-.BR -Ih .
+.BR \-Ih .
 .SH FILES
 .IP "System-wide configuration files:"
 SYSCONFDIR/snmp/snmp.conf
diff --git a/man/snmpbulkget.1.def b/man/snmpbulkget.1.def
index b4e062d..25210f3 100644
--- a/man/snmpbulkget.1.def
+++ b/man/snmpbulkget.1.def
@@ -17,13 +17,13 @@
 pinpoint why the request was malformed.
 .SH OPTIONS
 .TP 8
-.BI -Cn <NUM>
+.BI \-Cn <NUM>
 Set the
 .I non-repeaters
 field in the GETBULK PDU.  This specifies the number of supplied
 variables that should not be iterated over.  The default is 0.
 .TP
-.BI -Cr <NUM>
+.BI \-Cr <NUM>
 Set the
 .I max-repetitions
 field in the GETBULK PDU.  This specifies the maximum number of
@@ -41,7 +41,7 @@
 .SH EXAMPLE
 The command:
 .PP
-snmpbulkget -v2c -Cn1 -Cr5 -Os -c public zeus system ifTable
+snmpbulkget \-v2c \-Cn1 \-Cr5 \-Os \-c public zeus system ifTable
 .PP
 will retrieve the variable system.sysDescr.0 (which is the
 lexicographically next object to system) and the first 5 objects in
diff --git a/man/snmpbulkwalk.1.def b/man/snmpbulkwalk.1.def
index e6c7a69..c5f4a06 100644
--- a/man/snmpbulkwalk.1.def
+++ b/man/snmpbulkwalk.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -42,7 +42,7 @@
 .IR variables(5) .
 If no OID argument is present,
 .B snmpbulkwalk
-will search MIB-2.
+will search MIB\-2.
 .PP
 If the network entity has an error processing the request packet, an
 error packet will be returned and a message will be shown, helping to
@@ -52,7 +52,7 @@
 MIB, the message "End of MIB" will be displayed.
 .SH OPTIONS
 .TP 8
-.B -Cc
+.B \-Cc
 Do not check whether the returned OIDs are increasing.  Some agents
 (LaserJets are an example) return OIDs out of order, but can
 complete the walk anyway.  Other agents return OIDs that are out of
@@ -62,10 +62,10 @@
 .B snmpbulkwalk
 tries to detect this behavior and warns you when it hits an agent
 acting illegally.  Use
-.B -Cc
+.B \-Cc
 to turn off this behaviour.
 .TP
-.B -Ci
+.B \-Ci
 Include the given OID in the search range.  Normally
 .B snmpbulkwalk
 uses GETBULK requests starting with the OID you specified and returns
@@ -74,16 +74,16 @@
 results if it is a valid OID in the tree itself.  This option lets you
 do this.
 .TP
-.BI -Cn <NUM>
+.BI \-Cn <NUM>
 Set the
 .I non-repeaters
 field in the GETBULK PDUs.  This specifies the number of supplied
 variables that should not be iterated over.  The default is 0.
 .TP
-.B -Cp
+.B \-Cp
 Upon completion of the walk, print the number of variables found.
 .TP
-.BI -Cr <NUM>
+.BI \-Cr <NUM>
 Set the
 .I max-repetitions
 field in the GETBULK PDUs.  This specifies the maximum number of
@@ -101,7 +101,7 @@
 .SH EXAMPLE
 The command:
 .PP
-snmpbulkwalk -v2c -Os -c public zeus system
+snmpbulkwalk \-v2c \-Os \-c public zeus system
 .PP
 will retrieve all of the variables under system:
 .PP
diff --git a/man/snmpcmd.1.def b/man/snmpcmd.1.def
index d97cc14..e4df8b2 100644
--- a/man/snmpcmd.1.def
+++ b/man/snmpcmd.1.def
@@ -49,8 +49,8 @@
 In addition to the options described in this manual page, all of the
 tokens described in the \fIsnmp.conf\fR and other .conf manual pages
 can be used on the command line of Net-SNMP applications as well by
-prefixing them with "--".  EG, specifying
-\fI--dontLoadHostConfig=true\fR on the command line will turn of
+prefixing them with "\-\-".  EG, specifying
+\fI\-\-dontLoadHostConfig=true\fR on the command line will turn of
 loading of the host specific configuration files.
 .PP
 The snmp.conf file settings and the double-dash arguments over-ride
@@ -60,14 +60,14 @@
 the longer-form double-dash arguments to successfully trump the
 \fIsnmp.conf\fR file settings.
 .SH Generic Options
-Thes options control how the Net-SNMP commands behave regardless of
+These options control how the Net-SNMP commands behave regardless of
 what version of SNMP you are using.  See further below for options
 that control specific versions or sub-modules of the SNMP protocol. 
 .TP
-.B -d
+.B \-d
 Dump (in hexadecimal) the raw SNMP packets sent and received.
 .TP
-.B -D\fI[TOKEN[,...]]
+.B \-D\fI[TOKEN[,...]]
 Turn on debugging output for the given
 .IR "TOKEN" "(s)."
 Try
@@ -75,24 +75,24 @@
 for extremely verbose output.
 .TP
 .TP
-.B -h, --help
+.B \-h, \-\-help
 Display a brief usage message and then exit.
 .TP
-.B -H
+.B \-H
 Display a list of configuration file directives understood by the
 command and then exit.
 .TP
-.BI -I " [brRhu]"
+.BI \-I " [brRhu]"
 Specifies input parsing options. See 
 .B INPUT OPTIONS 
 below.
 .TP
-.BI -L " [eEfFoOsS]"
+.BI \-L " [eEfFoOsS]"
 Specifies output logging options. See 
 .B LOGGING OPTIONS 
 below.
 .TP
-.BI -m " MIBLIST"
+.BI \-m " MIBLIST"
 Specifies a colon separated list of MIB modules (not files) to load for
 this application.  This overrides (or augments) the environment variable
 MIBS, the \fIsnmp.conf\fR directive \fImibs\fR, and the list of MIBs
@@ -100,7 +100,7 @@
 .IP
 If 
 .I MIBLIST
-has a leading '-' or '+' character, then the MIB modules listed are
+has a leading '\-' or '+' character, then the MIB modules listed are
 loaded in addition to the default list, coming before or after
 this list respectively.
 Otherwise, the specified MIBs are loaded \fIinstead\fR of this
@@ -112,7 +112,7 @@
 Every file whose name does not begin with "." will be parsed as
 if it were a MIB file.
 .TP
-.BI -M " DIRLIST"
+.BI \-M " DIRLIST"
 Specifies a colon separated list of directories to search for MIBs.
 This overrides (or augments) the environment variable MIBDIRS,
 the \fIsnmp.conf\fR directive \fImibdirs\fR, and the default
@@ -121,7 +121,7 @@
 .IP
 If 
 .I DIRLIST
-has a leading '-' or '+' character, then the given directories are
+has a leading '\-' or '+' character, then the given directories are
 added to the default list, being searched before or after the
 directories on this list respectively.
 Otherwise, the specified directories are searched \fIinstead\fR
@@ -135,46 +135,46 @@
 To avoid searching any MIB directories, set the MIBDIRS
 environment variable to the empty string ("").
 .\"
-.\" XXX - or     -M ""    ??
+.\" XXX - or     \-M ""    ??
 .\"
 
-Note that MIBs specified using the -m option or the \fImibs\fR
+Note that MIBs specified using the \-m option or the \fImibs\fR
 configuration directive will be loaded from one of the directories
-listed by the -M option (or equivalents).
+listed by the \-M option (or equivalents).
 The \fImibfile\fR directive takes a full path to the specified MIB
 file, so this does not need to be in the MIB directory search list.
 .TP
-.B -v \fI1\fR | \fI2c\fR | \fI3
+.B \-v \fI1\fR | \fI2c\fR | \fI3
 Specifies the protocol version to use: 1 (RFCs 1155-1157), 2c (RFCs 1901-1908),
 or 3 (RFCs 2571-2574).  The default is typically version 3.
 Overrides the \fIdefVersion\fR token in the
 .I snmp.conf
 file.
-.BI -O " [abeEfnqQsStTuUvxX]"
+.BI \-O " [abeEfnqQsStTuUvxX]"
 Specifies output printing options. See 
 .B OUTPUT OPTIONS
 below.
 .TP
-.BI -P " [cdeRuwW]"
+.BI \-P " [cdeRuwW]"
 Specifies MIB parsing options.  See
 .B MIB PARSING OPTIONS
 below.
 .TP
-.BI -r " retries"
+.BI \-r " retries"
 Specifies the number of retries to be used in the requests. The default
 is 5.
 .TP
-.BI -t " timeout"
+.BI \-t " timeout"
 Specifies the timeout in seconds between retries. The default is 1.
 Floating point numbers can be used to specify fractions of seconds.
 .TP
-.B -V, --version
+.B \-V, \-\-version
 Display version information for the application and then exit.
 .TP
-.BI -Y "name"="value"
+.BI \-Y "name"="value"
 .TP
-.BI -- "name"="value"
-Allows to specify any token ("name") supported in the
+.BI \-\- "name"="value"
+Allows one to specify any token ("name") supported in the
 .I snmp.conf
 file and sets its value to "value". Overrides the corresponding token in the
 .I snmp.conf
@@ -189,7 +189,7 @@
 (D)TLS support.
 
 .TP
-.BI -l " secLevel"
+.BI \-l " secLevel"
 Set the securityLevel used for SNMPv3 messages
 (noAuthNoPriv|authNoPriv|authPriv).  Appropriate pass phrase(s) must
 provided when using any level higher than noAuthNoPriv.
@@ -197,7 +197,7 @@
 .I snmp.conf
 file.
 .TP
-.BI -n " contextName"
+.BI \-n " contextName"
 Set the contextName used for SNMPv3 messages.  The default
 contextName is the empty string "".  Overrides the \fIdefContext\fR token
 in the
@@ -217,39 +217,39 @@
 it will look in ~/.snmp/tls and in /usr/local/share/snmp/tls for
 certificates.  The certificate components (eg, the public and private
 halves) are stored in sub-directories underneath this root set of
-directories.  See the net-snmp-cert tool for help in importing,
+directories.  See the net\-snmp\-cert tool for help in importing,
 creating and managing Net-SNMP certificates.
 .I "<certificate-specifier>s"
 can reference either a fingerprint of the certificate to use (the
-net-snmp-cert tool can help you figure out the certificates) or the
+net\-snmp\-cert tool can help you figure out the certificates) or the
 filename's prefix can be used.  For example, if you had a "snmpd.crt"
 certificate file then you could simply refer to the certificate via
 the "snmpd" specifier.
 .TP
-.BI "-T our_identity=<certificate-specifier>"
+.BI "\-T localCert=<certificate-specifier>"
 Indicates to the transport which key should be used to initiate (D)TLS
 client connections.  This would typically be a certificate found using
-the application name (eg snmpd, snmptrapd, perl, python) or
+the certificate fingerprint, the application name (eg snmpd, snmptrapd, perl, python) or
 genericized name "snmpapp" if using one of the generic applications
 (snmpget, snmpwalk, etc).  This can also be set using the
-clientCert specifier in a snmp.conf configuration file.
+localCert specifier in a snmp.conf configuration file.
 .TP
-.BI "-T their_identity=<certificate-specifier>"
+.BI "\-T peerCert=<certificate-specifier>"
 If you expect a particular certificate to be presented by the other
 side then you can use this specifier to indicate the certificate it
 should present.  If it fails to present the expected certificate the
 client will refuse to open the connection (because doing otherwise
 could lead to man-in-the-middle attacks).  This can also be set using
-the serverCert specifier in a snmp.conf configuration file.
+the peerCert specifier in a snmp.conf configuration file.
 .TP
-.BI "-T trust_cert=<certificate-specifier>"
+.BI "\-T trust_cert=<certificate-specifier>"
 If you have a trusted CA certificate you wish to anchor trust with,
 you can use this flag to load a given certificate as a trust anchor.
 A copy of the certificate must exist within the Net-SNMP certificate
 storage system or this must point to a complete path name.  Also see
 the "trustCert" snmp.conf configuration token.
 .TP
-.BI "-T their_hostname=<name>"
+.BI "\-T their_hostname=<name>"
 If the server's presented certificate can be validating using a trust
 anchor then their hostname will be checked to ensure their presented
 hostname matches one that is expected (you don't want to connect to
@@ -262,29 +262,29 @@
 These options are specific to using SNMPv3 with the original
 User-based Security Model (USM).
 .TP
-.BI "-3[MmKk]  0xHEXKEY"
+.BI "\-3[MmKk]  0xHEXKEY"
 Sets the keys to be used for SNMPv3 transactions.  These options allow
-you to set the master authentication and encryption keys (-3m and -3M
+you to set the master authentication and encryption keys (\-3m and \-3M
 respectively) or set the localized authentication and encryption keys
-(-3k and -3K respectively).  SNMPv3 keys can be either passed in by
+(\-3k and \-3K respectively).  SNMPv3 keys can be either passed in by
 hand using these flags, or by the use of keys generated from passwords
-using the -A and -X flags discussed below.  For further details on
+using the \-A and \-X flags discussed below.  For further details on
 SNMPv3 and its usage of keying information, see the Net-SNMP tutorial
-web site ( http://www.Net-SNMP.org/tutorial-5/commands/ ). 
-Overrides the defAuthMasterKey (-3m), defPrivMasterKey (-3M), 
-defAuthLocalizedKey (-3k) or defPrivLocalizedKey (-3K) tokens, respectively, 
+web site ( http://www.Net\-SNMP.org/tutorial\-5/commands/ ). 
+Overrides the defAuthMasterKey (\-3m), defPrivMasterKey (\-3M), 
+defAuthLocalizedKey (\-3k) or defPrivLocalizedKey (\-3K) tokens, respectively, 
 in the
 .I snmp.conf
 file, see
 .I snmp.conf(5).
 .TP
-.BI -a " authProtocol"
+.BI \-a " authProtocol"
 Set the authentication protocol (MD5 or SHA) used for authenticated SNMPv3
 messages. Overrides the \fIdefAuthType\fR token in the
 .I snmp.conf
 file.
 .TP
-.BI -A " authPassword"
+.BI \-A " authPassword"
 Set the authentication pass phrase used for authenticated SNMPv3
 messages.  Overrides the \fIdefAuthPassphrase\fR token in the
 .I snmp.conf
@@ -292,31 +292,31 @@
 see
 .I snmp.conf(5).
 .TP
-.BI -e " engineID"
+.BI \-e " engineID"
 Set the authoritative (security) engineID used for SNMPv3 REQUEST
 messages, given as a hexadecimal string (optionally prefixed by "0x").
 It is typically not necessary to specify this engine ID, as it will
 usually be discovered automatically.
 .TP
-.BI -E " engineID"
+.BI \-E " engineID"
 Set the context engineID used for SNMPv3 REQUEST messages scopedPdu,
 given as a hexadecimal string.
 If not specified, this will default to the authoritative engineID.
 .TP
-.BI -u " secName"
+.BI \-u " secName"
 Set the securityName used for authenticated SNMPv3 messages.
 Overrides the \fIdefSecurityName\fR token in the
 .I snmp.conf
 file.
 .TP
-.BI -x " privProtocol"
+.BI \-x " privProtocol"
 Set the privacy protocol (DES or AES) used for encrypted SNMPv3 messages. 
 Overrides the \fIdefPrivType\fR token in the
 .I snmp.conf
 file. This option is only valid if the Net-SNMP software was build
 to use OpenSSL.
 .TP
-.BI -X " privPassword"
+.BI \-X " privPassword"
 Set the privacy pass phrase used for encrypted SNMPv3 messages.
 Overrides the \fIdefPrivPassphrase\fR token in the
 .I snmp.conf
@@ -324,7 +324,7 @@
 It is insecure to specify pass phrases on the command line, see
 .I snmp.conf(5).
 .TP
-.BI -Z " boots,time"
+.BI \-Z " boots,time"
 Set the engineBoots and engineTime used for authenticated SNMPv3
 messages.  This will initialize the local notion of the agents
 boots/time with an authenticated value stored in the LCD.
@@ -334,7 +334,7 @@
 
 .SH SNMPv1 and SNMPv2c Options 
 .TP
-.BI -c " community"
+.BI \-c " community"
 Set the community string for SNMPv1/v2c transactions.
 Overrides the \fIdefCommunity\fR token in the
 .I snmp.conf
@@ -441,7 +441,7 @@
 .IR "ssh:hostname:22"
 Connects using SNMP over SSH as documented by the ISMS working group
 (RFCs not yet published as of this date).  This will require that the
-TSM security model is in use (--defSecurityModel=tsm).
+TSM security model is in use (\-\-defSecurityModel=tsm).
 .TP 24
 .IR "ipx::00D0B7AAE308"
 perform query using IPX datagrams to node number 
@@ -457,12 +457,12 @@
 on network number
 .IR 0AE43409 .
 .TP 24
-.IR "unix:/tmp/local-agent"
+.IR "unix:/tmp/local\-agent"
 connect to the Unix domain socket 
-.IR /tmp/local-agent ,
+.IR /tmp/local\-agent ,
 and perform the query over that connection.
 .TP 24
-.IR "/tmp/local-agent"
+.IR "/tmp/local\-agent"
 identical to the previous specification, since the Unix domain is the
 default transport iff the first character of the <transport-address>
 is a '/'.
@@ -499,26 +499,26 @@
 in recognition of the (ahem) diversity in compliance expressed in MIB
 files, additional options provide more flexibility in reading MIB files.
 .TP
-.B "-Pc"
+.B "\-Pc"
 Toggles whether ASN.1 comments should extend to the end of the MIB
 source line.
-Strictly speaking, a second appearance of "--" should terminate the
+Strictly speaking, a second appearance of "\-\-" should terminate the
 comment, but this breaks some MIB files.
 The default behaviour (to interpret comments correctly) can also
 be set with the configuration token \fIcommentToEOL\fR.
 .TP
-.B "-Pd"
+.B "\-Pd"
 Disables the loading of MIB object DESCRIPTIONs when parsing MIB files.
 This reduces the amount of memory used by the running application.
 .TP
-.B "-Pe"
+.B "\-Pe"
 Toggles whether to show errors encountered when parsing MIB files.
 These include
 references to IMPORTed modules and MIB objects that cannot be
 located in the MIB directory search list.
 The default behaviour can also be set with the configuration token \fIshowMibErrors\fR.
 .TP
-.B "-PR"
+.B "\-PR"
 If the same MIB object (parent name and sub-identifier) appears multiple
 times in the list of MIB definitions loaded, use the last version to be
 read in.  By default, the first version will be used, and any duplicates
@@ -532,20 +532,20 @@
 .\" Setting this option may result in an incorrect hierarchy.
 .\" XXX - Why?
 .TP
-.B "-Pu"
+.B "\-Pu"
 Toggles whether to allow the underline character in MIB object names
 and other symbols.
 Strictly speaking, this is not valid SMI syntax, but some vendor MIB
 files define such names.
 The default behaviour can also be set with the configuration token \fImibAllowUnderline\fR.
 .TP
-.B "-Pw"
+.B "\-Pw"
 Show various warning messages in parsing MIB files and building
 the overall OID tree.
 This can also be set with the configuration directive
 \fImibWarningLevel 1\fR
 .TP
-.B "-PW"
+.B "\-PW"
 Show some additional warning messages, mostly relating to parsing
 individual MIB objects.
 This can also be set with the configuration directive
@@ -553,107 +553,107 @@
 
 .SH "OUTPUT OPTIONS"
 The format of the output from SNMP commands can be controlled using
-various parameters of the \fB-O\fR flag.
+various parameters of the \fB\-O\fR flag.
 The effects of these sub-options can be seen by comparison with
 the following default output (unless otherwise specified):
 .RS
 .nf
-\fC$ snmpget -c public -v 1 localhost sysUpTime.0
-SNMPv2-MIB::sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
+\fC$ snmpget \-c public \-v 1 localhost sysUpTime.0
+SNMPv2\-MIB::sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .fi
 .RE
 
 .TP
-.B -Oa
+.B \-Oa
 Display string values as ASCII strings (unless there is a 
-\fCDISPLAY-HINT\fR defined for the corresponding MIB object).
+\fCDISPLAY\-HINT\fR defined for the corresponding MIB object).
 By default, the library attempts to determine whether the value is
 a printable or binary string, and displays it accordingly.
 
 This option does not affect objects that \fIdo\fR have a Display Hint.
 .TP
-.B -Ob
+.B \-Ob
 Display table indexes numerically, rather than trying to interpret
 the instance subidentifiers as string or OID values:
 .RS
 .nf
-\fC    $ snmpgetnext -c public -v 1 localhost vacmSecurityModel
-    SNMP-VIEW-BASED-ACM-MIB::vacmSecurityModel.0."wes" = xxx
-    $ snmpgetnext -c public -v 1 \fB-Ob\fP localhost vacmSecurityModel
-    SNMP-VIEW-BASED-ACM-MIB::vacmSecurityModel.0.3.119.101.115 = xxx\fR
+\fC    $ snmpgetnext \-c public \-v 1 localhost vacmSecurityModel
+    SNMP\-VIEW\-BASED\-ACM\-MIB::vacmSecurityModel.0."wes" = xxx
+    $ snmpgetnext \-c public \-v 1 \fB\-Ob\fP localhost vacmSecurityModel
+    SNMP\-VIEW\-BASED\-ACM\-MIB::vacmSecurityModel.0.3.119.101.115 = xxx\fR
 .fi
 .RE
 .TP
-.B -Oe
+.B \-Oe
 Removes the symbolic labels from enumeration values:
 .RS
 .nf
-\fC    $ snmpget -c public -v 1 localhost ipForwarding.0
-    IP-MIB::ipForwarding.0 = INTEGER: forwarding(1)
-\fC    $ snmpget -c public -v 1 \fB-Oe\fP localhost ipForwarding.0
-    IP-MIB::ipForwarding.0 = INTEGER: 1\fR
+\fC    $ snmpget \-c public \-v 1 localhost ipForwarding.0
+    IP\-MIB::ipForwarding.0 = INTEGER: forwarding(1)
+\fC    $ snmpget \-c public \-v 1 \fB\-Oe\fP localhost ipForwarding.0
+    IP\-MIB::ipForwarding.0 = INTEGER: 1\fR
 .fi
 .RE
 .TP
-.B -OE
+.B \-OE
 Modifies index strings to escape the quote characters:
 .RS
 .nf
-\fC    $ snmpgetnext -c public -v 1 localhost vacmSecurityModel
-    SNMP-VIEW-BASED-ACM-MIB::vacmSecurityModel.0."wes" = xxx
-    $ snmpgetnext -c public -v 1 \fB-OE\fP localhost vacmSecurityModel
-    SNMP-VIEW-BASED-ACM-MIB::vacmSecurityModel.0.\\"wes\\" = xxx\fR
+\fC    $ snmpgetnext \-c public \-v 1 localhost vacmSecurityModel
+    SNMP\-VIEW\-BASED\-ACM\-MIB::vacmSecurityModel.0."wes" = xxx
+    $ snmpgetnext \-c public \-v 1 \fB\-OE\fP localhost vacmSecurityModel
+    SNMP\-VIEW\-BASED\-ACM\-MIB::vacmSecurityModel.0.\\"wes\\" = xxx\fR
 .fi
 .RE
 .IP
 This allows the output to be reused in shell commands.
 .TP
-.B -Of
+.B \-Of
 Include the full list of MIB objects when displaying an OID:
 .RS
-\fC    .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.0 =\fR
+\fC    .iso.org.dod.internet.mgmt.mib\-2.system.sysUpTime.0 =\fR
 .RS
 \fC        Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .RE
 .RE
 .TP
-.B -On
+.B \-On
 Displays the OID numerically:
 .br
 \fC    .1.3.6.1.2.1.1.3.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .TP
-.B -Oq
+.B \-Oq
 Removes the equal sign and type information when displaying varbind values:
 .br
-\fC    SNMPv2-MIB::sysUpTime.0 1:15:09:27.63\fR
+\fC    SNMPv2\-MIB::sysUpTime.0 1:15:09:27.63\fR
 .TP
-.B -OQ
+.B \-OQ
 Removes the type information when displaying varbind values:
 .br
-\fC    SNMPv2-MIB::sysUpTime.0 = 1:15:09:27.63\fR
+\fC    SNMPv2\-MIB::sysUpTime.0 = 1:15:09:27.63\fR
 .TP
-.B -Os
+.B \-Os
 Display the MIB object name (plus any instance or other subidentifiers):
 .br
 \fC    sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .TP
-.B -OS
+.B \-OS
 Display the name of the MIB, as well as the object name:
 .br
-\fC    SNMPv2-MIB::sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
+\fC    SNMPv2\-MIB::sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .IP
 This is the default OID output format.
 .TP
-.B -Ot
+.B \-Ot
 Display \fCTimeTicks\fR values as raw numbers:
 .br
-\fC    SNMPv2-MIB::sysUpTime.0 = 14096763\fR
+\fC    SNMPv2\-MIB::sysUpTime.0 = 14096763\fR
 .TP
-.B -OT
+.B \-OT
 If values are printed as Hex strings,
 display a printable version as well.
 .TP
-.B -Ou
+.B \-Ou
 Display the OID in the traditional UCD-style (inherited from the original
 CMU code).
 That means removing a series of "standard" prefixes from the OID,
@@ -662,35 +662,35 @@
 .br
 \fC    system.sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .TP
-.B -OU
+.B \-OU
 Do not print the UNITS suffix at the end of the value.
 .TP
-.B -Ov
+.B \-Ov
 Display the varbind value only, not the OID:
 .RS
 .nf
-\fC    $ snmpget -c public -v 1 \fB-Ov\fP localhost ipForwarding.0
+\fC    $ snmpget \-c public \-v 1 \fB\-Ov\fP localhost ipForwarding.0
     INTEGER: forwarding(1)\fR
 .fi
 .RE
 .TP
-.B -Ox
+.B \-Ox
 Display string values as Hex strings (unless there is a 
-\fCDISPLAY-HINT\fR defined for the corresponding MIB object).
+\fCDISPLAY\-HINT\fR defined for the corresponding MIB object).
 By default, the library attempts to determine whether the value is
 a printable or binary string, and displays it accordingly.
 
 This option does not affect objects that \fIdo\fR have a Display Hint.
 .TP
-.B -OX
+.B \-OX
 Display table indexes in a more "program like" output, imitating
 a traditional array-style index format:
 .RS
 .nf
-\fC    $ snmpgetnext -c public -v 1 localhost ipv6RouteTable
-    IPv6-MIB::ipv6RouteIfIndex.63.254.1.0.255.0.0.0.0.0.0.0.0.0.0.0.64.1 = INTEGER: 2
-    $ snmpgetnext -c public -v 1 \fB-OX\fP localhost ipv6RouteTable
-    IPv6-MIB::ipv6RouteIfIndex[3ffe:100:ff00:0:0:0:0:0][64][1] = INTEGER: 2
+\fC    $ snmpgetnext \-c public \-v 1 localhost ipv6RouteTable
+    IPv6\-MIB::ipv6RouteIfIndex.63.254.1.0.255.0.0.0.0.0.0.0.0.0.0.0.64.1 = INTEGER: 2
+    $ snmpgetnext \-c public \-v 1 \fB\-OX\fP localhost ipv6RouteTable
+    IPv6\-MIB::ipv6RouteIfIndex[3ffe:100:ff00:0:0:0:0:0][64][1] = INTEGER: 2
 .fi
 .RE
 .PP
@@ -702,19 +702,19 @@
 .SH "LOGGING OPTIONS"
 The mechanism and destination to use for logging of warning and error
 messages can be controlled by passing various parameters to the
-.B -L
+.B \-L
 flag.
 .TP
-.B -Le
+.B \-Le
 Log messages to the standard error stream.
 .TP
-.B -Lf FILE
+.B \-Lf FILE
 Log messages to the specified file.
 .TP
-.B -Lo
+.B \-Lo
 Log messages to the standard output stream.
 .TP
-.B -Ls FACILITY
+.B \-Ls FACILITY
 Log messages via syslog, using the specified facility
 ('d' for LOG_DAEMON, 'u' for LOG_USER,
 or '0'-'7' for LOG_LOCAL0 through LOG_LOCAL7).
@@ -724,17 +724,17 @@
 allow the corresponding logging mechanism to be restricted to certain
 priorities of message.  Using standard error logging as an example:
 .TP
-.B -LE pri
+.B \-LE pri
 will log messages of priority 'pri' and above to standard error.
 .TP
-.B -LE p1-p2
+.B \-LE p1\-p2
 will log messages with priority between 'p1' and 'p2' (inclusive) to
 standard error.
 .PP
 For
-.B -LF
+.B \-LF
 and
-.B -LS
+.B \-LS
 the priority specification comes before the file or facility token.
 The priorities recognised are:
 .IP
@@ -783,10 +783,10 @@
 
 .SH "INPUT OPTIONS"
 The interpretation of input object names and the values to be assigned
-can be controlled using various parameters of the \fB-I\fR flag.
+can be controlled using various parameters of the \fB\-I\fR flag.
 The default behaviour will be described at the end of this section.
 .TP
-.B -Ib
+.B \-Ib
 specifies that the given name should be regarded as a regular expression,
 to match (case-insensitively) against object names in the MIB tree.
 The "best" match will be used - calculated as the one that matches the
@@ -807,23 +807,23 @@
 instance \fCsysContact.0\fR (although \fIsys*ontact\fR would match
 \fCsysContact\fR).
 Similarly, specifying a MIB module name will not succeed
-(so \fISNMPv2-MIB::sys.*ontact\fR would not match either).
+(so \fISNMPv2\-MIB::sys.*ontact\fR would not match either).
 .TP
-.B -Ih
-disables the use of DISPLAY-HINT information when assigning values.
+.B \-Ih
+disables the use of DISPLAY\-HINT information when assigning values.
 This would then require providing the raw value:
 .br
-\fC    snmpset ... HOST-RESOURCES-MIB::hrSystemDate.0
+\fC    snmpset ... HOST\-RESOURCES\-MIB::hrSystemDate.0
 .br
                     x "07 D2 0C 0A 02 04 06 08"\fR
 .br
 instead of a formatted version:
 .br
-\fC    snmpset ... HOST-RESOURCES-MIB::hrSystemDate.0
+\fC    snmpset ... HOST\-RESOURCES\-MIB::hrSystemDate.0
 .br
-                    = 2002-12-10,2:4:6.8\fR
+                    = 2002\-12\-10,2:4:6.8\fR
 .TP
-.B -Ir
+.B \-Ir
 disables checking table indexes and the value to be assigned against the
 relevant MIB definitions.  This will (hopefully) result in the remote
 agent reporting an invalid request, rather than checking (and rejecting)
@@ -833,13 +833,13 @@
 tend to be more precise), but disabling this behaviour is particularly
 useful when testing the remote agent.
 .TP
-.B -IR
+.B \-IR
 enables "random access" lookup of MIB names.
 Rather than providing a full OID path to the desired MIB object
 (or qualifying this object with an explicit MIB module name),
 the MIB tree will be searched for the matching object name.
-Thus \fC.iso.org.dod.internet.mib-2.system.sysDescr.0\fR
-(or \fCSNMPv2-MIB::sysDescr.0\fR) can be specified simply
+Thus \fC.iso.org.dod.internet.mib\-2.system.sysDescr.0\fR
+(or \fCSNMPv2\-MIB::sysDescr.0\fR) can be specified simply
 as \fCsysDescr.0\fR.
 .RS
 .IP "Warning:"
@@ -848,24 +848,24 @@
 have been loaded.
 .RE
 .IP
-The \fIMIB-MODULE::objectName\fR syntax has
+The \fIMIB\-MODULE::objectName\fR syntax has
 the advantage of uniquely identifying a particular MIB object,
 as well as being slightly more efficient (and automatically
 loading the necessary MIB file if necessary).
 .TP
-.B -Is SUFFIX
+.B \-Is SUFFIX
 adds the specified suffix to each textual OID given on the command line.
 This can be used to retrieve multiple objects from the same row of
 a table, by specifying a common index value.
 .TP
-.B -IS PREFIX
+.B \-IS PREFIX
 adds the specified prefix to each textual OID given on the command line.
 This can be used to specify an explicit MIB module name for all objects
 being retrieved (or for incurably lazy typists).
 .TP
-.B -Iu
+.B \-Iu
 enables the traditional UCD-style approach to interpreting input OIDs.
-This assumes that OIDs are rooted at the 'mib-2' point in the tree
+This assumes that OIDs are rooted at the 'mib\-2' point in the tree
 (unless they start with an explicit '.' or include a MIB module name).
 So the \fCsysDescr\fR instance above would be referenced as
 \fCsystem.sysDescr.0\fR. 
@@ -874,28 +874,28 @@
 Object names specified with a leading '.' are always interpreted as
 "fully qualified" OIDs, listing the sequence of MIB objects from the
 root of the MIB tree.  Such objects and those qualified by an explicit
-MIB module name are unaffected by the \fB-Ib\fR, \fB-IR\fR and \fB-Iu\fR flags.
+MIB module name are unaffected by the \fB\-Ib\fR, \fB\-IR\fR and \fB\-Iu\fR flags.
 
 Otherwise, if none of the above input options are specified, the
 default behaviour for a "relative" OID is to try and interpret it
 as an (implicitly) fully qualified OID,
-then apply "random access" lookup (\fB-IR\fR),
-followed by "best match" pattern matching (\fB-Ib\fR).
+then apply "random access" lookup (\fB\-IR\fR),
+followed by "best match" pattern matching (\fB\-Ib\fR).
 
 .SH "ENVIRONMENT VARIABLES"
 .IP PREFIX
 The standard prefix for object identifiers (when using UCD-style output).
-Defaults to .iso.org.dod.internet.mgmt.mib-2
+Defaults to .iso.org.dod.internet.mgmt.mib\-2
 .IP MIBS
 The list of MIBs to load. Defaults to
-SNMPv2-TC:SNMPv2-MIB:IF-MIB:IP-MIB:TCP-MIB:UDP-MIB:SNMP-VACM-MIB.
+SNMPv2\-TC:SNMPv2\-MIB:IF\-MIB:IP\-MIB:TCP\-MIB:UDP\-MIB:SNMP\-VACM\-MIB.
 Overridden by the
-.B -m
+.B \-m
 option.
 .IP MIBDIRS
 The list of directories to search for MIBs. Defaults to DATADIR/snmp/mibs.
 Overridden by the
-.B -M
+.B \-M
 option.
 
 .SH FILES
diff --git a/man/snmpconf.1.def b/man/snmpconf.1.def
index 8488aa5..cd0c104 100644
--- a/man/snmpconf.1.def
+++ b/man/snmpconf.1.def
@@ -6,7 +6,7 @@
 [OPTIONS] [fileToCreate]
 .IP "Start with:"
 .B snmpconf
--g basic_setup
+\-g basic_setup
 .IP "Or even just:"
 .B snmpconf
 .SH DESCRIPTION
@@ -27,35 +27,35 @@
 commented.
 .PP
 A particularly useful option is the
-.B -g
+.B \-g
 switch, which walks a user through a specific set of configuration
 questions.  Run:
 .RS
 .PP
-snmpconf -g basic_setup
+snmpconf \-g basic_setup
 .RE
 .PP
 for an example.
 .SH "OPTIONS"
 .TP 8
-.B -f
+.B \-f
 Force overwriting existing files in the current directory without
 prompting the user if this is a desired thing to do.
 .TP 
-.B -i
+.B \-i
 When finished, install the files into the location where the global
 system commands expect to find them.
 .TP
-.B -p
+.B \-p
 When finished, install the files into the users home directory's .snmp
 subdirectory (where the applications will also search for
 configuration files).
 .TP
-.BI -I " DIRECTORY"
+.BI \-I " DIRECTORY"
 When finished, install the files into the directory 
 .IR DIRECTORY .
 .TP
-.B -a
+.B \-a
 Don't ask any questions.  Simply read in the various known
 configuration files and write them back out again.  This has the
 effect of "auto-commenting" the configuration files for you.  See
@@ -63,17 +63,17 @@
 .B NEAT TRICKS
 section below.
 .TP
-.BI -r all|none
+.BI \-r all|none
 Read in either all or none of the found configuration files.  Normally
 .B snmpconf
 prompts you for which files you wish to read in.  Reading in
 these configuration files will merge these files with the results of
 the questions that it asks of you.
 .TP
-.BI -R " FILE,..."
+.BI \-R " FILE,..."
 Read in a specific list of configuration files.
 .TP
-.BI -g " GROUPNAME"
+.BI \-g " GROUPNAME"
 Groups of configuration entries can be created that can be used to
 walk a user through a series of questions to create an initial
 configuration file.  There are no menus to navigate, just a list of
@@ -81,44 +81,44 @@
 .RS
 .RS
 .PP
-snmpconf -g basic_setup
+snmpconf \-g basic_setup
 .RE
 .PP
 for a good example.
 .RE
 .TP
-.B -G
+.B \-G
 List all the known groups.
 .TP
-.BI -c " CONFIGDIR"
+.BI \-c " CONFIGDIR"
 .B snmpconf
 uses a directory of configuration information to learn about
 the files and questions that it should be asking.  This option tells
 .B snmpconf
 to use a different location for configuring itself.
 .TP
-.B -q
+.B \-q
 Run slightly more quietly.  Since this is an interactive program, I
 don't recommend this option since it only removes information from the
 output that is designed to help you.
 .TP
-.B -d
+.B \-d
 Turn on 
 .B lots
 of debugging output.
 .TP
-.B -D
+.B \-D
 Add 
 .B even more
 debugging output in the form of Perl variable dumps.
 .IP
 .SH "NEAT TRICKS"
-.IP "snmpconf -g basic_setup"
+.IP "snmpconf \-g basic_setup"
 Have I mentioned this command enough yet?  It's designed to walk
 someone through an initial setup for the
 .I snmpd(8)
 daemon.  Really, you should try it.
-.IP "snmpconf -R /usr/local/snmp/snmpd.conf -a -f snmpd.conf"
+.IP "snmpconf \-R /usr/local/snmp/snmpd.conf \-a \-f snmpd.conf"
 Automatically reads in an snmpd.conf file (for example) and adds
 comments to them describing what each token does.  Try it.  It's cool.
 .SH "NOTES"
diff --git a/man/snmpd.8.def b/man/snmpd.8.def
index 2c92fa2..f173396 100644
--- a/man/snmpd.8.def
+++ b/man/snmpd.8.def
@@ -12,13 +12,13 @@
 requested operation(s) and returns the information to the sender.
 .SH OPTIONS
 .TP 8
-.B -a
+.B \-a
 Log the source addresses of incoming requests.
 .TP
-.B -A
+.B \-A
 Append to the log file rather than truncating it.
 .TP
-.B "-c" \fIFILE
+.B "\-c" \fIFILE
 Read 
 .I FILE
 as a configuration file
@@ -27,21 +27,21 @@
 is specified in the file as described in the snmp_config man page under
 SWITCHING CONFIGURATION TYPES IN MID-FILE.
 .TP
-.B -C
+.B \-C
 Do not read any configuration files except the ones optionally specified by the 
-.B -c 
+.B \-c 
 option.
 Note that this behaviour also covers the persistent configuration files.
 This may result in dynamically-assigned values being reset following an
 agent restart, unless the relevant persistent config files are
 explicitly loaded using the
-.B -c 
+.B \-c 
 option.
 .TP
-.B -d
+.B \-d
 Dump (in hexadecimal) the sent and received SNMP packets.
 .TP
-.B -D\fI[TOKEN[,...]]
+.B \-D\fI[TOKEN[,...]]
 Turn on debugging output for the given
 .IR "TOKEN" "(s)."
 Without any tokens specified, it defaults to printing all the tokens
@@ -49,99 +49,99 @@
 You might want to try
 .IR ALL
 for extremely verbose output.  Note: You can not put a space between
-the -D flag and the listed TOKENs.
+the \-D flag and the listed TOKENs.
 .TP
-.B -f
+.B \-f
 Do not fork() from the calling shell.
 .TP
-.B -g \fIGID
+.B \-g \fIGID
 Change to the numerical group ID
 .I GID
 after opening listening sockets.
 .TP
-.B -h, --help
+.B \-h, \-\-help
 Display a brief usage message and then exit.
 .TP
-.B -H
+.B \-H
 Display a list of configuration file directives understood by the
 agent and then exit.
 .TP
-.B -I \fI[-]INITLIST
+.B \-I \fI[\-]INITLIST
 Specifies which modules should (or should not) be initialized
 when the agent starts up.  If the comma-separated
 .I INITLIST
 is preceded
-with a '-', it is the list of modules that should \fInot\fR be started.
+with a '\-', it is the list of modules that should \fInot\fR be started.
 Otherwise this is the list of the \fIonly\fR modules that should be started.
 
 To get a list of compiled modules, run the agent with the arguments
-.I "-Dmib_init -H"
+.I "\-Dmib_init \-H"
 (assuming debugging support has been compiled in).
 .TP
-.B -L[efos]
+.B \-L[efos]
 Specify where logging output should be directed (standard error or output,
 to a file or via syslog).  See LOGGING OPTIONS in snmpcmd(5) for details.
 .TP
-.BR -m " \fIMIBLIST"
+.BR \-m " \fIMIBLIST"
 Specifies a colon separated list of MIB modules to load for this
 application.  This overrides the environment variable MIBS.
 See \fIsnmpcmd(1)\fR for details.
 .TP
-.BR -M " \fIDIRLIST"
+.BR \-M " \fIDIRLIST"
 Specifies a colon separated list of directories to search for MIBs.
 This overrides the environment variable MIBDIRS.
 See \fIsnmpcmd(1)\fR for details.
 .TP
-.B -n \fINAME
+.B \-n \fINAME
 Set an alternative application name (which will affect the
 configuration files loaded).
 By default this will be \fIsnmpd\fR, regardless of the name
 of the actual binary.
 .TP
-.B -p \fIFILE
+.B \-p \fIFILE
 Save the process ID of the daemon in
 .IR FILE "."
 .TP 
-.B -q
+.B \-q
 Print simpler output for easier automated parsing.
 .TP
-.B -r
+.B \-r
 Do not require root access to run the daemon.  Specifically, do not exit
 if files only accessible to root (such as /dev/kmem etc.) cannot be
 opened.
 .TP
-.B -u \fIUID
+.B \-u \fIUID
 Change to the user ID
 .I UID
 (which can be given in numerical or textual form) after opening
 listening sockets.
 .TP
-.B -U
+.B \-U
 Instructs the agent to not remove its pid file (see the
-.B -p
+.B \-p
 option) on shutdown. Overrides the leave_pidfile token in the
 .I snmpd.conf
 file, see
 .I snmpd.conf(5).
 .TP
-.B -v, --version
+.B \-v, \-\-version
 Print version information for the agent and then exit.
 .TP
-.B -V
+.B \-V
 Symbolically dump SNMP transactions.
 .TP
-.B -x \fIADDRESS
+.B \-x \fIADDRESS
 Listens for AgentX connections on the specified address
 rather than the default AGENTX_SOCKET.
 The address can either be a Unix domain socket path,
 or the address of a network interface.  The format is the same as the
 format of listening addresses described below.
 .TP
-.B -X
+.B \-X
 Run as an AgentX subagent rather than as an SNMP master agent.
 .TP
-.BI -- "name"="value"
-Allows to specify any token ("name") supported in the
+.BI \-\- "name"="value"
+Allows one to specify any token ("name") supported in the
 .I snmpd.conf
 file and sets its value to "value". Overrides the corresponding token in the
 .I snmpd.conf
@@ -218,10 +218,10 @@
 .IR "ipx:/40000"
 listen on IPX port 40000 on all IPX interfaces.
 .TP 24
-.IR "unix:/tmp/local-agent"
-listen on the Unix domain socket \fI/tmp/local-agent\fR.
+.IR "unix:/tmp/local\-agent"
+listen on the Unix domain socket \fI/tmp/local\-agent\fR.
 .TP 24
-.IR "/tmp/local-agent"
+.IR "/tmp/local\-agent"
 is identical to the previous specification, since the Unix domain is
 assumed if the first character of the <transport-address> is '/'.
 .TP 24
@@ -256,7 +256,7 @@
 named pipe that can be connected to via a ssh subsystem configured in
 the main ssh server.  The pipe location (configurable with the
 sshtosnmpsocket token in snmp.conf) is
-.I /var/net-snmp/sshtosnmp.
+.I /var/net\-snmp/sshtosnmp.
 Packets should be submitted to it via the sshtosnmp application, which
 also sends the user ID as well when starting the connection.  The TSM
 security model should be used when packets should process it.
@@ -276,11 +276,11 @@
 The
 .I sshtosnmp
 command will need read/write access to the 
-.I /var/net-snmp/sshtosnmp
+.I /var/net\-snmp/sshtosnmp
 pipe.  Although it should be fairly safe to grant access to the
 average user since it still requires modifications to the ACM settings
 before the user can perform operations, paranoid administrators may
-want to make the /var/net-snmp directory accessible only by users in a
+want to make the /var/net\-snmp directory accessible only by users in a
 particular group.  Use the
 .I sshtosnmpsocketperms
 snmp.conf configure option to set the permissions, owner and group of
@@ -290,7 +290,7 @@
 style of simple snmpd.conf settings:
 .TP 8
 .IP
-rouser -s tsm foo authpriv
+rouser \-s tsm foo authpriv
 .IP
 Note that "authpriv" is acceptable assuming as SSH protects everything
 that way (assuming you have a non-insane setup).
diff --git a/man/snmpd.conf.5.def b/man/snmpd.conf.5.def
index 49d81b6..2a8a3d3 100644
--- a/man/snmpd.conf.5.def
+++ b/man/snmpd.conf.5.def
@@ -18,7 +18,7 @@
 manual page for more information, or try running the
 command:
 .RS
-.IP "snmpconf -g basic_setup"
+.IP "snmpconf \-g basic_setup"
 .RE
 .PP
 There are a large number of directives that can be specified,
@@ -40,7 +40,7 @@
 A full list of recognised directives can be obtained by running
 the command:
 .RS
-.IP "snmpd -H"
+.IP "snmpd \-H"
 .RE
 .SH AGENT BEHAVIOUR
 Although most configuration directives are concerned with the MIB
@@ -69,11 +69,11 @@
 starting with '#' (#UID).
 .IP "leave_pidfile yes"
 instructs the agent to not remove its pid file on shutdown. Equivalent to
-specifying "-U" on the command line.
+specifying "\-U" on the command line.
 .IP "maxGetbulkRepeats NUM"
 Sets the maximum number of responses allowed for a single variable in
-a getbulk request.  Set to 0 to enable the default and set it to -1 to
-enable unlimited.  Because memory is allocated ahead of time, sitting
+a getbulk request.  Set to 0 to enable the default and set it to \-1 to
+enable unlimited.  Because memory is allocated ahead of time, setting
 this to unlimited is not considered safe if your user population can
 not be trusted.  A repeat number greater than this will be truncated
 to this value.
@@ -82,8 +82,8 @@
 .IP "maxGetbulkResponses NUM"
 Sets the maximum number of responses allowed for a getbulk request.
 This is set by default to 100.  Set to 0 to enable the default and set
-it to -1 to enable unlimited.  Because memory is allocated ahead of
-time, sitting this to unlimited is not considered safe if your user
+it to \-1 to enable unlimited.  Because memory is allocated ahead of
+time, setting this to unlimited is not considered safe if your user
 population can not be trusted.
 .IP
 In general, the total number of responses will not be allowed to
@@ -105,9 +105,9 @@
 extensively tested.  It also contains code for support for an
 experimental Kerberos based SNMPv3 that never got standardized.
 .PP
-Hopeful more SNMP software and devices will eventually support SNMP
+Hopefully more SNMP software and devices will eventually support SNMP
 over (D)TLS or SSH, but it is likely that devices with original
-support for SNMP will only contain support for SNMP over USM.  If your
+support for SNMP will only contain support for USM users.  If your
 network manager supports SNMP over (D)TLS or SNMP over SSH we suggest
 you use one of these mechanisms instead of using USM, but as always
 with Net-SNMP we give you the options to pick from so you can make the
@@ -158,20 +158,14 @@
 a '[snmp]' tag.  If you place these tokens in your snmpd.conf file,
 this take is required.  See the snmp_config(5) manual page for the
 meaning of this context switch.
-.IP "[snmp] serverCert <specifier>"
+.IP "[snmp] localCert <specifier>"
 This token defines the default X.509 public key to use as the server's
 identity.  It should either be a fingerprint or a filename.  To create
-a public key for use, please run the "net-snmp-cert" utility which
+a public key for use, please run the "net\-snmp\-cert" utility which
 will help you create the required certificate.
 .IP
 The default value for this is the certificate in the "snmpd" named
 certificate file.
-.IP "[snmp] clientCert <specifier>"
-If outgoing TLS connections are to be opened, for example because
-notifications are to be sent over TLS, then this will select the
-client-side public key to use for those outgoing connections.  It can
-either be specified as a fingerprint or a filename.  See the
-"net-snmp-cert" utility for creating certificates.
 .IP "[snmp] tlsAlgorithms <algorithms>"
 This string will select the algorithms to use when negotiating
 security during (D)TLS session establishment.  See the openssl manual
@@ -182,12 +176,12 @@
 DEFAULT
 ALL
 HIGH
-HIGH:!AES128-SHA
+HIGH:!AES128\-SHA
 .fi
 .RE
 .IP
 The default value is whatever openssl itself was configured with.
-.IP "[snmp] x059CRLFile"
+.IP "[snmp] x509CRLFile"
 If you are using a Certificate Authority (CA) that publishes a
 Certificate Revocation List (CRL) then this token can be used to
 specify the location in the filesystem of a copy of the CRL file.
@@ -197,22 +191,22 @@
 be noticed upon a restart of the snmpd agent.
 
 .IP "certSecName PRIORITY FINGERPRINT OPTIONS"
-OPTIONS can be one of <--sn SECNAME | --rfc822 | --dns | --ip | --cn | --any>.
+OPTIONS can be one of <\-\-sn SECNAME | \-\-rfc822 | \-\-dns | \-\-ip | \-\-cn | \-\-any>.
 .IP
 The certSecName token will specify how to map a certificate field from
-the client's X.509 certificate to a SNMPv3 username.  Use the --sn
+the client's X.509 certificate to a SNMPv3 username.  Use the \-\-sn
 SECNAME flag to directly specify a securityName for a given
 certificate.  The other flags extract a particular component of the
 certificate for use as a snmpv3 securityName.  These fields are one
-of: A SubjectAltName containing an rfc822 value (eg hardaker@net-snmp.org),
-A SubjectAltName containing a dns name value (eg foo.net-snmp.org),
+of: A SubjectAltName containing an rfc822 value (eg hardaker@net\-snmp.org),
+A SubjectAltName containing a dns name value (eg foo.net\-snmp.org),
 an IP address (eg 192.0.2.1) or a common name "Wes Hardaker".  The
---any flag specifies that any of the subjecAltName fields may be
+\-\-any flag specifies that any of the subjecAltName fields may be
 used.  Make sure once a securityName has been selected that it is
 given authorization via the VACM controls discussed later in this
 manual page.
 .IP
-See the http://www.net-snmp.org/wiki/index.php/Using_DTLS web page for
+See the http://www.net\-snmp.org/wiki/index.php/Using_DTLS web page for
 more detailed instructions for setting up (D)TLS.
 .IP "trustCert <specifier>"
 For X509 to properly verify a certificate, it should be verifiable up
@@ -227,7 +221,7 @@
 connections from (D)TLS that you use the "tsm" security model.  E.G.:
 .fi
 
-rwuser -s tsm hardaker@net-snmp.org
+rwuser \-s tsm hardaker@net\-snmp.org
 .fi
 .SS SNMPv3 over SSH Support
 To use SSH, you'll need to configure sshd to invoke the sshtosnmp
@@ -265,10 +259,10 @@
 .SS SNMPv3 USM Users
 To use the USM based SNMPv3-specific users, you'll need to create
 them.  It is recommended you
-.B "use the net-snmp-config command"
+.B "use the net\-snmp\-config command"
 to do this, but you can also do it by directly specifying createUser
 directives yourself instead:
-.IP "createUser [-e ENGINEID] username (MD5|SHA) authpassphrase [DES|AES] [privpassphrase]"
+.IP "createUser [\-e ENGINEID] username (MD5|SHA) authpassphrase [DES|AES] [privpassphrase]"
 .IP
 MD5 and SHA are the authentication types to use.  DES and AES are the
 privacy protocols to use.  If the privacy
@@ -288,7 +282,7 @@
 command.
 .IP
 Instead of figuring out how to use this directive and where to put it
-(see below), just run "net-snmp-config --create-snmpv3-user" instead,
+(see below), just run "net\-snmp\-config \-\-create\-snmpv3\-user" instead,
 which will add one of these lines to the right place.
 .IP
 This directive should be placed into the
@@ -301,12 +295,12 @@
 it can be.
 .IP
 If you need to localize the user to a particular EngineID (this is
-useful mostly in the similar snmptrapd.conf file), you can use the -e
+useful mostly in the similar snmptrapd.conf file), you can use the \-e
 argument to specify an EngineID as a hex value (EG, "0x01020304").
 .IP
 If you want to generate either your master or localized keys directly,
-replace the given password with a hexstring (preceeded by a "0x") and
-precede the hex string by a -m or -l token (respectively).  EGs:
+replace the given password with a hexstring (preceded by a "0x") and
+precede the hex string by a \-m or \-l token (respectively).  EGs:
 .IP
 .RS
 .nf
@@ -314,8 +308,8 @@
 counting purposes.  Please generate random keys instead of using
 these examples]
 
-createUser myuser SHA -l 0x0001020304050607080900010203040506070809 AES -l 0x00010203040506070809000102030405
-createUser myuser SHA -m 0x0001020304050607080900010203040506070809 AES -m 0x0001020304050607080900010203040506070809
+createUser myuser SHA \-l 0x0001020304050607080900010203040506070809 AES \-l 0x00010203040506070809000102030405
+createUser myuser SHA \-m 0x0001020304050607080900010203040506070809 AES \-m 0x0001020304050607080900010203040506070809
 .fi
 .RE
 .IP
@@ -333,8 +327,8 @@
 Most simple access control requirements can be specified using the
 directives \fIrouser\fR/\fIrwuser\fR (for SNMPv3) or
 \fIrocommunity\fR/\fIrwcommunity\fR (for SNMPv1 or SNMPv2c).
-.IP "rouser [-s SECMODEL] USER [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]"
-.IP "rwuser [-s SECMODEL]  USER [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]"
+.IP "rouser [\-s SECMODEL] USER [noauth|auth|priv [OID | \-V VIEW [CONTEXT]]]"
+.IP "rwuser [\-s SECMODEL]  USER [noauth|auth|priv [OID | \-V VIEW [CONTEXT]]]"
 specify an SNMPv3 user that will be allowed read-only (GET and GETNEXT)
 or read-write (GET, GETNEXT and SET) access respectively.
 By default, this will provide access to the full OID tree for authenticated
@@ -353,8 +347,8 @@
 access control settings).  The default security model is "usm" and the
 other common security models are likely "tsm" when using (D)TLS or SSH
 support and "ksm" if the Kerberos support has been compiled in.
-.IP "rocommunity COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]"
-.IP "rwcommunity COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]"
+.IP "rocommunity COMMUNITY [SOURCE [OID | \-V VIEW [CONTEXT]]]"
+.IP "rwcommunity COMMUNITY [SOURCE [OID | \-V VIEW [CONTEXT]]]"
 specify an SNMPv1 or SNMPv2c community that will be allowed read-only
 (GET and GETNEXT) or read-write (GET, GETNEXT and SET) access respectively.
 By default, this will provide access to the full OID tree for such requests,
@@ -364,8 +358,8 @@
 that community to the subtree rooted at the given OID, or named view.
 Contexts are typically less relevant to community-based SNMP versions,
 but the same behaviour applies here.
-.IP "rocommunity6 COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]"
-.IP "rwcommunity6 COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]"
+.IP "rocommunity6 COMMUNITY [SOURCE [OID | \-V VIEW [CONTEXT]]]"
+.IP "rwcommunity6 COMMUNITY [SOURCE [OID | \-V VIEW [CONTEXT]]]"
 are directives relating to requests received using IPv6
 (if the agent supports such transport domains).
 The interpretation of the SOURCE, OID, VIEW and CONTEXT tokens are exactly
@@ -387,10 +381,10 @@
 configuration directives.
 .SS VACM Configuration
 The full flexibility of the VACM is available using four configuration
-directives - \fIcom2sec\fR, \fIgroup\fR, \fIview\fR and \fIaccess\fR.
+directives \- \fIcom2sec\fR, \fIgroup\fR, \fIview\fR and \fIaccess\fR.
 These provide direct configuration of the underlying VACM tables.
-.IP "com2sec  [-Cn CONTEXT] SECNAME SOURCE COMMUNITY"
-.IP "com2sec6 [-Cn CONTEXT] SECNAME SOURCE COMMUNITY"
+.IP "com2sec  [\-Cn CONTEXT] SECNAME SOURCE COMMUNITY"
+.IP "com2sec6 [\-Cn CONTEXT] SECNAME SOURCE COMMUNITY"
 map an SNMPv1 or SNMPv2c community string to a security name - either from
 a particular range of source addresses, or globally (\fI"default"\fR).
 A restricted source can either be a specific hostname (or address), or
@@ -402,10 +396,10 @@
 combination that matches the incoming request will be selected.
 Various source/community combinations can also map to the same security name.
 .IP
-If a CONTEXT is specified (using \fI-Cn\fR), the community string will be
+If a CONTEXT is specified (using \fI\-Cn\fR), the community string will be
 mapped to a security name in the named SNMPv3 context. Otherwise the
 default context ("") will be used.
-.IP "com2secunix [-Cn CONTEXT] SECNAME SOCKPATH COMMUNITY"
+.IP "com2secunix [\-Cn CONTEXT] SECNAME SOCKPATH COMMUNITY"
 is the Unix domain sockets version of \fIcom2sec\fR.
 .IP "group GROUP {v1|v2c|usm|tsm|ksm} SECNAME"
 maps a security name (in the specified security model) into
@@ -471,7 +465,7 @@
 concerned, the two main view types are \fIread\fR and \fIwrite\fR,
 corresponding to the READ and WRITE views of the main \fIaccess\fR directive.
 See the 'snmptrapd.conf(5)' man page for discussion of other view types.
-.IP "authcommunity TYPES  COMMUNITY   [SOURCE [OID | -V VIEW [CONTEXT]]]"
+.IP "authcommunity TYPES  COMMUNITY   [SOURCE [OID | \-V VIEW [CONTEXT]]]"
 is an alternative to the \fIrocommunity\fR/\fIrwcommunity\fR directives.
 TYPES will usually be \fIread\fR or \fIread,write\fR respectively.
 The view specification can either be an OID subtree (as before),
@@ -480,20 +474,20 @@
 then access will be allowed to the full OID tree.
 If CONTEXT is specified, access is configured within this SNMPv3 context.
 Otherwise the default context ("") is used.
-.IP "authuser   TYPES [-s MODEL] USER  [LEVEL [OID | -V VIEW [CONTEXT]]]"
+.IP "authuser   TYPES [\-s MODEL] USER  [LEVEL [OID | \-V VIEW [CONTEXT]]]"
 is an alternative to the \fIrouser\fR/\fIrwuser\fR directives.
 The fields TYPES, OID, VIEW and CONTEXT have the same meaning as for
 \fIauthcommunity\fR.
-.IP "authgroup  TYPES [-s MODEL] GROUP [LEVEL [OID | -V VIEW [CONTEXT]]]"
+.IP "authgroup  TYPES [\-s MODEL] GROUP [LEVEL [OID | \-V VIEW [CONTEXT]]]"
 is a companion to the \fIauthuser\fR directive, specifying access
 for a particular group (defined using the \fIgroup\fR directive as usual).
 Both \fIauthuser\fR and \fIauthgroup\fR default to authenticated requests -
 LEVEL can also be specified as \fInoauth\fR or \fIpriv\fR to allow
 unauthenticated requests, or require encryption respectively.
 Both \fIauthuser\fR and \fIauthgroup\fR directives also default to configuring
-access for SNMPv3/USM requests - use the '-s' flag to specify an alternative
+access for SNMPv3/USM requests - use the '\-s' flag to specify an alternative
 security model (using the same values as for \fIaccess\fR above).
-.IP "authaccess TYPES [-s MODEL] GROUP VIEW [LEVEL [CONTEXT]]"
+.IP "authaccess TYPES [\-s MODEL] GROUP VIEW [LEVEL [CONTEXT]]"
 also configures the access for a particular group,
 specifying the name and type of view to apply. The MODEL and LEVEL fields
 are interpreted in the same way as for \fIauthgroup\fR.
@@ -519,7 +513,7 @@
 .IP "sysName STRING"
 set the system location, system contact or system name
 (\fCsysLocation.0\fR, \fCsysContact.0\fR and \fCsysName.0\fR) for the agent respectively.
-Ordinarily these objects are writeable via suitably authorized SNMP SET
+Ordinarily these objects are writable via suitably authorized SNMP SET
 requests.  However, specifying one of these directives makes the
 corresponding object read-only, and attempts to SET it will result in
 a \fInotWritable\fR error response.
@@ -537,7 +531,7 @@
 .IP "interface NAME TYPE SPEED"
 can be used to provide appropriate type and speed settings for
 interfaces where the agent fails to determine this information correctly.
-TYPE is a type value as given in the IANAifType-MIB,
+TYPE is a type value as given in the IANAifType\-MIB,
 and can be specified numerically or by name (assuming this MIB is loaded).
 .IP "interface_fadeout TIMEOUT"
 specifies, for how long the agent keeps entries in \fCifTable\fR after
@@ -590,13 +584,32 @@
 as 'Fixed Disks', and this is still the default behaviour.
 Setting this directive to '1' reports such file systems as
 \'Network Disks', as required by the Host Resources MIB.
+.IP "realStorageUnits"
+controlls how the agent reports hrStorageAllocationUnits, hrStorageSize and
+hrStorageUsed in hrStorageTable.
+For big storage drives with small allocation units the agent re-calculates
+these values so they all fit Integer32 and
+hrStorageAllocationUnits x hrStorageSize
+gives real size of the storage.
+.RS
+.IP "Example:"
+Linux xfs 16TB filesystem with 4096 bytes large blocks will be
+reported as  hrStorageAllocationUnits = 8192 and hrStorageSize = 2147483647,
+so 8192 x 2147483647 gives real size of the filesystem (=16 TB).
+.RE
+.IP
+Setting this directive to '1' turns off
+this calculation and the agent reports real hrStorageAllocationUnits, but it
+might report wrong hrStorageSize for big drives because the value won't fit into
+Integer32. In this case, hrStorageAllocationUnits x hrStorageSize won't give
+real size of the storage.
 .SS Process Monitoring 
 The \fChrSWRun\fR group of the Host Resources MIB provides
 information about individual processes running on the local system.
-The \fCprTable\fR of the UCD-SNMP-MIB complements this by reporting
+The \fCprTable\fR of the UCD\-SNMP\-MIB complements this by reporting
 on selected services (which may involve multiple processes).
 This requires that the agent was built with support for the
-\fIucd-snmp/proc\fR module (which is included as part of the
+\fIucd\-snmp/proc\fR module (which is included as part of the
 default build configuration).
 .IP "proc NAME [MAX [MIN]]"
 monitors the number of processes called NAME (as reported by PSCMD)
@@ -635,7 +648,7 @@
 \fCprTable\fR will fail (\fInoSuchObject\fI).
 .SS Disk Usage Monitoring
 This requires that the agent was built with support for the
-\fIucd-snmp/disk\fR module (which is included as part of the
+\fIucd\-snmp/disk\fR module (which is included as part of the
 default build configuration).
 .IP "disk PATH [ MINSPACE | MINPERCENT% ]"
 monitors the disk mounted at PATH for available disk space.
@@ -681,7 +694,7 @@
 then walking the \fCdskTable\fR will fail (\fInoSuchObject\fI).
 .SS Disk I/O Monitoring
 This requires that the agent was built with support for the
-\fIucd-snmp/diskio\fR module (which is not included as part of the
+\fIucd\-snmp/diskio\fR module (which is not included as part of the
 default build configuration).
 .PP
 By default, all block devices known to the operating system are
@@ -703,7 +716,7 @@
 "ram0"
 .SS System Load Monitoring
 This requires that the agent was built with support for either the
-\fIucd-snmp/loadave\fR module or the \fIucd-snmp/memory\fR module
+\fIucd\-snmp/loadave\fR module or the \fIucd\-snmp/memory\fR module
 respectively (both of which are included as part of the
 default build configuration).
 .IP "load MAX1 [MAX5 [MAX15]]"
@@ -730,7 +743,7 @@
 .PP
 Unlike the \fIproc\fR and \fIdisk\fR directives, walking the
 walking the \fClaTable\fR will succeed (assuming the
-\fIucd-snmp/loadave\fR module was configured into the agent),
+\fIucd\-snmp/loadave\fR module was configured into the agent),
 even if the \fIload\fR directive is not present.
 .IP "swap MIN "
 monitors the amount of swap space available on the local system.
@@ -745,7 +758,7 @@
 If this directive is not specified, the default threshold is 16 MB.
 .SS Log File Monitoring
 This requires that the agent was built with support for either the
-\fIucd-snmp/file\fR or \fIucd-snmp/logmatch\fR modules respectively
+\fIucd\-snmp/file\fR or \fIucd\-snmp/logmatch\fR modules respectively
 (both of which are included as part of the
 default build configuration).
 .IP "file FILE [MAXSIZE]"
@@ -772,7 +785,7 @@
 .RS
 .IP NAME
 name of the logmatch instance (will appear as logMatchName under
-logMatch/logMatchTable/logMatchEntry/logMatchName in the ucd-snmp MIB tree)
+logMatch/logMatchTable/logMatchEntry/logMatchName in the ucd\-snmp MIB tree)
 .IP FILE
 absolute path to the logfile to be monitored. Note that this path
 can contain date/time directives (like in the UNIX 'date' command). See the
@@ -790,12 +803,12 @@
 Example:
 .RS
 .IP
-logmatch apache-GETs /usr/local/apache/logs/access.log-%Y-%m-%d 60 GET.*HTTP.*
+logmatch apache\-GETs /usr/local/apache/logs/access.log\-%Y\-%m\-%d 60 GET.*HTTP.*
 .IP
-This logmatch instance is named 'apache-GETs', uses 'GET.*HTTP.*' as its
+This logmatch instance is named 'apache\-GETs', uses 'GET.*HTTP.*' as its
 regular expression and it will monitor the file named
-(assuming today is May 6th 2009): '/usr/local/apache/logs/access.log-2009-05-06',
-tomorrow it will look for 'access.log-2009-05-07'. The logfile is read every 60
+(assuming today is May 6th 2009): '/usr/local/apache/logs/access.log\-2009\-05\-06',
+tomorrow it will look for 'access.log\-2009\-05\-07'. The logfile is read every 60
 seconds.
 .RE
 .IP
@@ -850,12 +863,12 @@
 .I "SNMPCMD_ARGS"
 should be the command-line options required for an equivalent
 \fIsnmptrap\fR (or \fIsnmpinform\fR) command to send the desired notification.
-The option \fI-Ci\fR can be used (with \fI-v2c\fR or \fI-v3\fR) to generate
+The option \fI\-Ci\fR can be used (with \fI\-v2c\fR or \fI\-v3\fR) to generate
 an INFORM notification rather than an unacknowledged TRAP.
 .IP
 This is the appropriate directive for defining SNMPv3 trap receivers.
 See
-http://www.net-snmp.org/tutorial/tutorial-5/commands/snmptrap-v3.html
+http://www.net\-snmp.org/tutorial/tutorial\-5/commands/snmptrap\-v3.html
 for more information about SNMPv3 notification behaviour.
 .IP "authtrapenable {1|2}"
 determines whether to generate authentication failure traps
@@ -957,47 +970,49 @@
 There are various options to control the behaviour of the monitored
 expression.  These include:
 .RS
-.IP "-D"
+.IP "\-D"
 indicates that the expression should be evaluated using delta differences
 between sample values (rather than the values themselves).
-.IP "-d OID"
-.IP "-di OID"
+.IP "\-d OID"
+.IP "\-di OID"
 specifies a discontinuity marker for validating delta differences.
-A \fI-di\fR object instance will be used exactly as given.
-A \fI-d\fR object will have the instance subidentifiers from the
+A \fI\-di\fR object instance will be used exactly as given.
+A \fI\-d\fR object will have the instance subidentifiers from the
 corresponding (wildcarded) expression object appended.
-If the \fI-I\fR flag is specified, then there is no difference
+If the \fI\-I\fR flag is specified, then there is no difference
 between these two options.
 .IP
-This option also implies \fI-D\fR.
-.IP "-e EVENT"
+This option also implies \fI\-D\fR.
+.IP "\-e EVENT"
 specifies the event to be invoked when this monitor entry is triggered.
 If this option is not given, the monitor entry will generate one
-of the standard notifications defined in the DISMAN-EVENT-MIB.
-.IP "-I"
+of the standard notifications defined in the DISMAN\-EVENT\-MIB.
+.IP "\-I"
 indicates that the monitored expression should be applied to the
 specified OID as a single instance.  By default, the OID will
 be treated as a wildcarded object, and the monitor expanded
 to cover all matching instances.
-.IP "-i OID"
-.IP "-o OID"
+.IP "\-i OID"
+.IP "\-o OID"
 define additional varbinds to be added to the notification payload
 when this monitor trigger fires.
 For a wildcarded expression, the suffix of the matched instance
-will be added to any OIDs specified using \fI-o\fR, while OIDs
-specified using \fI-i\fR will be treated as exact instances.
-If the \fI-I\fR flag is specified, then there is no difference
+will be added to any OIDs specified using \fI\-o\fR, while OIDs
+specified using \fI\-i\fR will be treated as exact instances.
+If the \fI\-I\fR flag is specified, then there is no difference
 between these two options.
 .IP
 See \fIstrictDisman\fR for details of the ordering of notification payloads.
-.IP "-r FREQUENCY"
-monitors the given expression every FREQUENCY seconds.
-By default, the expression will be evaluated every 600s (10 minutes). 
-.IP "-S"
+.IP "\-r FREQUENCY"
+monitors the given expression every FREQUENCY, where FREQUENCY is in
+seconds or optionally suffixed by one of s (for seconds), m (for
+minutes), h (for hours), d (for days), or w (for weeks).  By default,
+the expression will be evaluated every 600s (10 minutes).
+.IP "\-S"
 indicates that the monitor expression should \fInot\fR be evaluated
 when the agent first starts up.  The first evaluation will be done
 once the first repeat interval has expired.
-.IP "-s"
+.IP "\-s"
 indicates that the monitor expression \fIshould\fR be evaluated when the
 agent first starts up.  This is the default behaviour.
 .RS
@@ -1005,20 +1020,20 @@
 Notifications triggered by this initial evaluation will be sent
 \fIbefore\fR the \fCcoldStart\fR trap.
 .RE
-.IP "-u SECNAME"
+.IP "\-u SECNAME"
 specifies a security name to use for scanning the local host,
 instead of the default \fIiquerySecName\fR.
 Once again, this user must be explicitly created and given
 suitable access rights.
 .RE
-.IP "notificationEvent ENAME NOTIFICATION [-m] [-i OID | -o OID ]*"
+.IP "notificationEvent ENAME NOTIFICATION [\-m] [\-i OID | \-o OID ]*"
 defines a notification event named ENAME.
 This can be triggered from a given \fImonitor\fR entry by specifying
-the option \fI-e ENAME\fR (see above).
-NOTIFICATION should be the OID of the NOTIFICATION-TYPE definition
+the option \fI\-e ENAME\fR (see above).
+NOTIFICATION should be the OID of the NOTIFICATION\-TYPE definition
 for the notification to be generated.
 .IP
-If the \fI-m\fR option is given, the notification payload will
+If the \fI\-m\fR option is given, the notification payload will
 include the standard varbinds as specified in the OBJECTS clause
 of the notification MIB definition.
 This option must come \fBafter\fR the NOTIFICATION OID
@@ -1027,25 +1042,25 @@
 be listed explicitly (either here or in the corresponding
 \fImonitor\fR directive).
 .IP
-The \fI-i OID\fR and \fI-o OID\fR options specify additional
+The \fI\-i OID\fR and \fI\-o OID\fR options specify additional
 varbinds to be appended to the notification payload, after the
 standard list.
 If the monitor entry that triggered this event involved a
 wildcarded expression, the suffix of the matched instance
-will be added to any OIDs specified using \fI-o\fR, while OIDs
-specified using \fI-i\fR will be treated as exact instances.
-If the \fI-I\fR flag was specified to the \fImonitor\fR directive,
+will be added to any OIDs specified using \fI\-o\fR, while OIDs
+specified using \fI\-i\fR will be treated as exact instances.
+If the \fI\-I\fR flag was specified to the \fImonitor\fR directive,
 then there is no difference between these two options.
-.IP "setEvent ENAME [-I] OID = VALUE "
+.IP "setEvent ENAME [\-I] OID = VALUE "
 defines a set event named ENAME, assigning the (integer) VALUE
 to the specified OID.
 This can be triggered from a given \fImonitor\fR entry by specifying
-the option \fI-e ENAME\fR (see above).
+the option \fI\-e ENAME\fR (see above).
 .IP
 If the monitor entry that triggered this event involved a
 wildcarded expression, the suffix of the matched instance
 will normally be added to the OID.
-If the \fI-I\fR flag was specified to either of the
+If the \fI\-I\fR flag was specified to either of the
 \fImonitor\fR or \fIsetEvent\fR directives, the
 specified OID will be regarded as an exact single instance.
 .IP "strictDisman yes"
@@ -1066,8 +1081,8 @@
 .RS
 .IP "Note:"
 Strict DisMan ordering may result in generating invalid notifications
-payload lists if the \fInotificationEvent -n\fR flag is used together
-with \fImonitor -o\fR (or \fI-i\fR) varbind options.
+payload lists if the \fInotificationEvent \-n\fR flag is used together
+with \fImonitor \-o\fR (or \fI\-i\fR) varbind options.
 .RE
 .IP
 If no \fImonitor\fR entries specify payload varbinds,
@@ -1084,25 +1099,25 @@
 notificationEvent  linkUpTrap    linkUp   ifIndex ifAdminStatus ifOperStatus
 notificationEvent  linkDownTrap  linkDown ifIndex ifAdminStatus ifOperStatus
 
-monitor  -r 60 -e linkUpTrap   "Generate linkUp" ifOperStatus != 2
-monitor  -r 60 -e linkDownTrap "Generate linkDown" ifOperStatus == 2
+monitor  \-r 60 \-e linkUpTrap   "Generate linkUp" ifOperStatus != 2
+monitor  \-r 60 \-e linkDownTrap "Generate linkDown" ifOperStatus == 2
 .fi
 .RE
 .IP "defaultMonitors yes"
 will configure the Event MIB tables to monitor the various
-\fCUCD-SNMP-MIB\fR tables for problems (as indicated by
+\fCUCD\-SNMP\-MIB\fR tables for problems (as indicated by
 the appropriate \fCxxErrFlag\fR column objects).
 .IP
 This is exactly equivalent to the configuration:
 .RS
 .IP
 .nf
-monitor	-o prNames -o prErrMessage "process table" prErrorFlag != 0
-monitor	-o memErrorName -o memSwapErrorMsg "memory" memSwapError != 0
-monitor	-o extNames -o extOutput "extTable" extResult != 0
-monitor	-o dskPath -o dskErrorMsg "dskTable" dskErrorFlag != 0
-monitor	-o laNames -o laErrMessage  "laTable" laErrorFlag != 0
-monitor	-o fileName -o fileErrorMsg  "fileTable" fileErrorFlag != 0
+monitor	\-o prNames \-o prErrMessage "process table" prErrorFlag != 0
+monitor	\-o memErrorName \-o memSwapErrorMsg "memory" memSwapError != 0
+monitor	\-o extNames \-o extOutput "extTable" extResult != 0
+monitor	\-o dskPath \-o dskErrorMsg "dskTable" dskErrorFlag != 0
+monitor	\-o laNames \-o laErrMessage  "laTable" laErrorFlag != 0
+monitor	\-o fileName \-o fileErrorMsg  "fileTable" fileErrorFlag != 0
 .fi
 .RE
 .PP
@@ -1119,7 +1134,9 @@
 There are three ways of specifying the scheduled action:
 .IP "repeat FREQUENCY OID = VALUE"
 configures a SET assignment of the (integer) VALUE to the MIB instance
-OID, to be run every FREQUENCY seconds.
+OID, to be run every FREQUENCY seconds, where FREQUENCY is in
+seconds or optionally suffixed by one of s (for seconds), m (for
+minutes), h (for hours), d (for days), or w (for weeks).
 .IP "cron MINUTE HOUR DAY MONTH WEEKDAY  OID = VALUE"
 configures a SET assignment of the (integer) VALUE to the MIB instance
 OID, to be run at the times specified by the fields MINUTE to WEEKDAY.
@@ -1137,6 +1154,70 @@
 configures a one-shot SET assignment, to be run at the first matching
 time as specified by the fields MINUTE to WEEKDAY.  The interpretation
 of these fields is exactly the same as for the \fIcron\fR directive.
+.SS "Data Delivery via Notfiications"
+Note: this functionality is only available if the
+\fIdeliver/deliverByNotify\fR mib module was complied in to the agent
+.PP
+In some situations it may be advantageous to deliver SNMP data over
+SNMP Notifications (TRAPs and INFORMs) rather than the typical process
+of having the manager issue requests for the data (via GETs and
+GETNEXTs).  Reasons for doing this are numerous, but frequently corner
+cases.  The most common reason for wanting this behaviour might be to
+monitor devices that reside behind NATs or Firewalls that prevent
+incoming SNMP traffic.
+.PP
+It should be noted that although most management software is capable
+of logging notifications, very little (if any) management software
+will updated their "knowledge database" based on the contents of SNMP
+notifications.  IE, it won't (for example) update the interface
+traffic counter history that is used to produce graphs.  Most larger
+network management packages have a separate database for storing data
+received via SNMP requests (GETs and GETNEXTs) vs those received from
+notifications.  Researching the capabilities of your management
+station software is required before assuming this functionality will
+solve your data delivery requirements.
+.PP
+Notifications generated via this mechanism will be sent to the
+standard set of configured notification targets.  See the
+"Notification Handling" section of this document for further
+information.
+.IP "deliverByNotify [\-p] [\-m] [\-s MAXSIZE] FREQUENCY OID"
+This directive tells the SNMP agent to self-walk the \fIOID\fR,
+collect all the data and send it out every \fIFREQUENCY\fR seconds,
+where FREQUENCY is in seconds or optionally suffixed by one of s (for
+seconds), m (for minutes), h (for hours), d (for days), or w (for
+weeks).  By default scalars are included in the notification that
+specify the how often the notification will be sent (unless the
+\fI\-p\fR option is specified) and which message number of how many
+messages a particular notification is (unless \fI\-m\fR is specified).
+To break the notifications into manageable packet sizes, use the
+\fI\-s\fR flag to specify the approximate maximum number of bytes that
+a notification message should be limited to.  If more than
+\fIMAXSIZE\fR of bytes is needed then multiple notifications will be
+sent to deliver the data.  Note that the calculations for ensuring the
+maximum size is met are approximations and thus it can be absolutely
+guaranteed they'll be under that size, so leave a padding buffer if it
+is critical that you avoid fragmentation.  A value of \-1 indicates
+force everything into a single message no matter how big it is.
+.IP
+Example usage: the following will deliver the contents of the ifTable
+once an hour and the contents of the system group once every 2 hours:
+.RS
+.nf
+
+deliverByNotify 3600 ifTable
+deliverByNotify 7200 system
+.fi
+.RE
+.IP "deliverByNotifyMaxPacketSize SIZEINBYTES"
+Sets the default notification size limit (see the \fI\-s\fR flag above).
+.IP "deliverByNotifyOid OID"
+.IP "deliverByNotifyFrequencyOid OID"
+.IP "deliverByNotifyMessageNumberOid OID"
+.IP "deliverByNotifyMaxMessageNumberOid OID"
+These set the data OID that the notification will be sent under, the
+scalar OID, the message number OID, and the maximum message number
+OID.  These default to objects in the NET\-SNMP\-PERIODIC\-NOTIFY\-MIB.
 .SH "EXTENDING AGENT FUNCTIONALITY"
 One of the first distinguishing features of the original UCD suite was
 the ability to extend the functionality of the agent - not just by
@@ -1155,7 +1236,7 @@
 SNMP operations, or conform to any particular behaviour - the MIB
 structures are designed to accommodate any form of command output.
 Use of this mechanism requires that the agent was built with support for the
-\fIucd-snmp/extensible\fR and/or \fIagent/extend\fR modules (which
+\fIucd\-snmp/extensible\fR and/or \fIagent/extend\fR modules (which
 are both included as part of the default build configuration).
 .IP "exec [MIBOID] NAME PROG ARGS"
 .IP "sh [MIBOID] NAME PROG ARGS"
@@ -1229,7 +1310,7 @@
 \fIextend\fR entry, and can appear on its own.
 .PP
 Both \fIextend\fR and \fIextendfix\fR directives can be configured
-dynamically, using SNMP SET requests to the NET-SNMP-EXTEND-MIB.
+dynamically, using SNMP SET requests to the NET\-SNMP\-EXTEND\-MIB.
 .SS "MIB-Specific Extension Commands"
 The first group of extension directives invoke arbitrary commands,
 and rely on the MIB structure (and management applications) having
@@ -1240,17 +1321,17 @@
 The remaining extension mechanisms are all concerned with such
 MIB-specific situations - starting with "pass-through" scripts.
 Use of this mechanism requires that the agent was built with support for the
-\fIucd-snmp/pass\fR and \fIucd-snmp/pass_persist\fR modules (which
+\fIucd\-snmp/pass\fR and \fIucd\-snmp/pass_persist\fR modules (which
 are both included as part of the default build configuration).
-.IP "pass [-p priority] MIBOID PROG"
+.IP "pass [\-p priority] MIBOID PROG"
 will pass control of the subtree rooted at MIBOID to the specified
 PROG command.  GET and GETNEXT requests for OIDs within this tree will
 trigger this command, called as:
 .RS
 .IP
-PROG -g OID
+PROG \-g OID
 .IP
-PROG -n OID
+PROG \-n OID
 .RE
 .IP
 respectively, where OID is the requested OID.
@@ -1278,7 +1359,7 @@
 A SET request will result in the command being called as:
 .RS
 .IP
-PROG -s OID TYPE VALUE
+PROG \-s OID TYPE VALUE
 .RE
 .IP
 where TYPE is one of the tokens listed above, indicating the type of the
@@ -1312,9 +1393,9 @@
 a separate invocation of the command.
 .IP
 The default registration priority is 127.  This can be
-changed by supplying the optional -p flag, with lower priority
+changed by supplying the optional \-p flag, with lower priority
 registrations being used in preference to higher priority values.
-.IP "pass_persist [-p priority] MIBOID PROG"
+.IP "pass_persist [\-p priority] MIBOID PROG"
 will also pass control of the subtree rooted at MIBOID to the specified
 PROG command.  However this command will continue to run after the initial
 request has been answered, so subsequent requests can be processed without
@@ -1337,18 +1418,18 @@
 If the assignment is successful, the command should print
 "DONE\\n" to stdout.
 Errors should be indicated by writing one of the strings
-.B not-writable, 
-.B wrong-type,
-.B wrong-length,
-.B wrong-value
+.B not\-writable, 
+.B wrong\-type,
+.B wrong\-length,
+.B wrong\-value
 or
-.B inconsistent-value
+.B inconsistent\-value
 to stdout,
 and the agent will generate the appropriate error response.
 In either case, the command should continue running.
 .IP
 The registration priority can be changed using the optional
--p flag, just as for the \fIpass\fR directive.
+\-p flag, just as for the \fIpass\fR directive.
 .PP
 \fIpass\fR and \fIpass_persist\fR extensions can only be configured via the
 snmpd.conf file.  They cannot be set up via SNMP SET requests.
@@ -1366,7 +1447,7 @@
 .PP
 Use of this mechanism requires that the agent was built with support for the embedded
 perl mechanism, which is not part of the default build environment. It
-must be explicitly included by specifying the '--enable-embedded-perl'
+must be explicitly included by specifying the '\-\-enable\-embedded\-perl'
 option to the configure script when the package is first built.
 .PP
 If enabled, the following directives will be recognised:
@@ -1391,7 +1472,7 @@
 .nf
 \fCperl use Data::Dumper;
 perl sub myroutine  { print "got called: ",Dumper(@_),"\\n"; }
-perl $agent->register('mylink', '.1.3.6.1.8765', \\&myroutine);\fR
+perl $agent\->register('mylink', '.1.3.6.1.8765', \\&myroutine);\fR
 .fi
 .RE
 .RE
@@ -1413,7 +1494,7 @@
 when the suite was first built.  Such implementation modules can also be
 compiled independently and loaded into the running agent once it has
 started.  Use of this mechanism requires that the agent was built with support for the
-\fIucd-snmp/dlmod\fR module (which is included as part of the default
+\fIucd\-snmp/dlmod\fR module (which is included as part of the default
 build configuration).
 .IP "dlmod NAME PATH"
 will load the shared object module from the file PATH (an absolute
@@ -1426,7 +1507,7 @@
 .RE
 .PP
 This functionality can also be configured using SNMP SET requests
-to the UCD-DLMOD-MIB.
+to the UCD\-DLMOD\-MIB.
 .SS "Proxy Support"
 Another mechanism for extending the functionality of the agent
 is to pass selected requests (or selected varbinds) to another
@@ -1435,9 +1516,9 @@
 This can be viewed either as the main agent delegating requests to
 the remote one, or acting as a proxy for it.
 Use of this mechanism requires that the agent was built with support for the
-\fIucd-snmp/proxy\fR module (which is included as part of the
+\fIucd\-snmp/proxy\fR module (which is included as part of the
 default build configuration).
-.IP "proxy [-Cn CONTEXTNAME] [SNMPCMD_ARGS] HOST OID [REMOTEOID]"
+.IP "proxy [\-Cn CONTEXTNAME] [SNMPCMD_ARGS] HOST OID [REMOTEOID]"
 will pass any incoming requests under OID to the agent listening
 on the port specified by the transport address HOST.
 See the section 
@@ -1476,7 +1557,7 @@
 with SMUX-based subagents (such as \fIgated\fR, \fIzebra\fR or \fIquagga\fR).
 Use of this mechanism requires that the agent was built with support for the
 \fIsmux\fR module, which is not part of the default build environment, and
-must be explicitly included by specifying the '--with-mib-modules=smux'
+must be explicitly included by specifying the '\-\-with\-mib\-modules=smux'
 option to the configure script when the package is first built.
 .RS
 .IP "Note:"
@@ -1503,7 +1584,7 @@
 .IP "smuxsocket <IPv4-address>"
 defines the IPv4 address for SMUX peers to communicate with the Net-SNMP agent.
 The default is to listen on all IPv4 interfaces ("0.0.0.0"), unless the 
-package has been configured with "--enable-local-smux" at build time, which 
+package has been configured with "\-\-enable\-local\-smux" at build time, which 
 causes it to only listen on 127.0.0.1 by default. SMUX uses the well-known
 TCP port 199.
 .PP
@@ -1522,7 +1603,7 @@
 .IP "master agentx"
 will enable the AgentX functionality and cause the agent to
 start listening for incoming AgentX registrations.
-This can also be activated by specifying the '-x' command-line
+This can also be activated by specifying the '\-x' command-line
 option (to specify an alternative listening socket).
 .IP "agentXPerms SOCKPERMS [DIRPERMS [USER|UID [GROUP|GID]]]"
 Defines the permissions and ownership of the AgentX Unix Domain socket,
@@ -1553,11 +1634,13 @@
 .RS
 .IP "Note:"
 Specifying an AgentX socket does \fBnot\fR automatically enable
-AgentX functionality (unlike the '-x' command-line option).
+AgentX functionality (unlike the '\-x' command-line option).
 .RE
 .IP "agentXTimeout NUM"
 defines the timeout period (NUM seconds) for an AgentX request.
-Default is 1 second.
+Default is 1 second.  NUM also be specified with a suffix of one of s
+(for seconds), m (for minutes), h (for hours), d (for days), or w (for
+weeks).
 .IP "agentXRetries NUM"
 defines the number of retries for an AgentX request.
 Default is 5 retries.
@@ -1565,9 +1648,9 @@
 net-snmp ships with both C and Perl APIs to develop your own AgentX
 subagent.
 .SH "OTHER CONFIGURATION"
-.IP "override [-rw] OID TYPE VALUE"
+.IP "override [\-rw] OID TYPE VALUE"
 This directive allows you to override a particular OID with a
-different value (and possibly a different type of value).  The -rw
+different value (and possibly a different type of value).  The \-rw
 flag will allow snmp SETs to modify it's value as well. (note that if
 you're overriding original functionality, that functionality will be
 entirely lost.  Thus SETS will do nothing more than modify the
@@ -1599,8 +1682,8 @@
 If you're trying to figure out aspects of the various mib modules
 (possibly some that you've added yourself), the following may help you
 spit out some useful debugging information.  First off, please read
-the snmpd manual page on the -D flag.  Then the following
-configuration snmpd.conf token, combined with the -D flag, can produce
+the snmpd manual page on the \-D flag.  Then the following
+configuration snmpd.conf token, combined with the \-D flag, can produce
 useful output:
 .IP "injectHandler HANDLER modulename [beforeThis]"
 This will insert new handlers into the section of the mib tree
@@ -1629,7 +1712,7 @@
 
 .IP debug
 Prints out lots of debugging information when
-the -Dhelper:debug flag is passed to the snmpd
+the \-Dhelper:debug flag is passed to the snmpd
 application.
 
 .IP read_only
@@ -1664,8 +1747,8 @@
 .IP o
 The Net-SNMP agent can be instructed to re-read the various configuration files,
 either via an \fBsnmpset\fR assignment of integer(1) to
-\fCUCD-SNMP-MIB::versionUpdateConfig.0\fR (.1.3.6.1.4.1.2021.100.11.0),
-or by sending a \fBkill -HUP\fR signal to the agent process.
+\fCUCD\-SNMP\-MIB::versionUpdateConfig.0\fR (.1.3.6.1.4.1.2021.100.11.0),
+or by sending a \fBkill \-HUP\fR signal to the agent process.
 .IP o
 All directives listed with a value of "yes" actually accept a range
 of boolean values.  These will accept any of \fI1\fR, \fIyes\fR or
diff --git a/man/snmpd.examples.5.def b/man/snmpd.examples.5.def
index 97f9d9c..3602869 100644
--- a/man/snmpd.examples.5.def
+++ b/man/snmpd.examples.5.def
@@ -104,7 +104,7 @@
 PERSISTENT_DIRECTORY/snmpd.conf file, rather than the usual location.
 .RE
 .\"
-.\"  ??? Illustrate "-e", "-l" and "-m" forms ??
+.\"  ??? Illustrate "\-e", "\-l" and "\-m" forms ??
 .\"
 .SS Traditional Access Control
 The SNMPv3 users defined above can be granted access to the full
@@ -219,7 +219,7 @@
 view   sys2View included    system
 view   sys2View included    .1.3.6.1.2.1.25.1
 
-authcommunity read       public  default      -v sys2View
+authcommunity read       public  default      \-v sys2View
 authcommunity read,write private 10.10.10.0/8
 .fi
 .RE
@@ -238,12 +238,12 @@
 can be explicitly configured using:
 .RS
 .nf
-\fI# Override 'uname -a' and hardcoded system OID - inherently read-only values\fR
+\fI# Override 'uname \-a' and hardcoded system OID - inherently read-only values\fR
 sysDescr     Universal Turing Machine mk I
 sysObjectID  .1.3.6.1.4.1.8072.3.2.1066
 
 \fI# Override default values from 'configure' - makes these objects read-only\fR
-sysContact   Alan.Turing@pre-cs.man.ac.uk
+sysContact   Alan.Turing@pre\-cs.man.ac.uk
 sysName      tortoise.turing.com
 sysLocation  An idea in the mind of AT
 
@@ -262,7 +262,7 @@
 .RS
 .nf
 ignoredisk /dev/rdsk/c0t[!6]d0
-ignoredisk /dev/rdsk/c0t[0-57-9a-f]d0
+ignoredisk /dev/rdsk/c0t[0\-57\-9a\-f]d0
 .fi
 .RE
 either of which prevents all devices \fI/dev/rdsk/c0t\fRX\fId0\fR
@@ -388,7 +388,7 @@
 .PP
 A more detailed monitor example is given by:
 .RS
-monitor -u me -o hrSWRunName "high process memory" hrSWRunPerfMem > 10000
+monitor \-u me \-o hrSWRunName "high process memory" hrSWRunPerfMem > 10000
 .RE
 .PP
 This defines an explicit boolean monitor entry, looking for any process
@@ -402,7 +402,7 @@
 Objects that could potentially fluctuate around the specified level
 are better monitored using a threshold monitor entry: 
 .RS
-monitor -D -r 10 "network traffic" ifInOctets 1000000 5000000
+monitor \-D \-r 10 "network traffic" ifInOctets 1000000 5000000
 .RE
 .PP
 This will send a \fCmteTriggerRising\fR trap whenever the incoming
@@ -410,11 +410,11 @@
 and a corresponding \fCmteTriggerFalling\fR trap when it falls below
 100 kB/s again.
 .PP
-Note that this monitors the deltas between successive samples (\fI-D\fR)
+Note that this monitors the deltas between successive samples (\fI\-D\fR)
 rather than the actual sample values themselves.  The same effect
 could be obtained using:
 .RS
-monitor -r 10 "network traffic" ifInOctets - - 1000000 5000000
+monitor \-r 10 "network traffic" ifInOctets \- \- 1000000 5000000
 .RE
 .PP
 The \fIlinkUpDownNotifications\fR directive above is broadly
@@ -424,8 +424,8 @@
 notificationEvent  linkUpTrap    linkUp   ifIndex ifAdminStatus ifOperStatus
 notificationEvent  linkDownTrap  linkDown ifIndex ifAdminStatus ifOperStatus
 
-monitor  -r 60 -e linkUpTrap   "Generate linkUp"   ifOperStatus != 2
-monitor  -r 60 -e linkDownTrap "Generate linkDown" ifOperStatus == 2
+monitor  \-r 60 \-e linkUpTrap   "Generate linkUp"   ifOperStatus != 2
+monitor  \-r 60 \-e linkDownTrap "Generate linkDown" ifOperStatus == 2
 .fi
 .RE
 .PP
@@ -437,12 +437,12 @@
 of (boolean) monitor entries:
 .RS
 .nf
-monitor	-o prNames      -o prErrMessage  "procTable" prErrorFlag   != 0
-monitor	-o memErrorName -o memSwapErrorMsg "memory"  memSwapError  != 0
-monitor	-o extNames     -o extOutput     "extTable"  extResult     != 0
-monitor	-o dskPath      -o dskErrorMsg   "dskTable"  dskErrorFlag  != 0
-monitor	-o laNames      -o laErrMessage  "laTable"   laErrorFlag   != 0
-monitor	-o fileName     -o fileErrorMsg  "fileTable" fileErrorFlag != 0
+monitor	\-o prNames      \-o prErrMessage  "procTable" prErrorFlag   != 0
+monitor	\-o memErrorName \-o memSwapErrorMsg "memory"  memSwapError  != 0
+monitor	\-o extNames     \-o extOutput     "extTable"  extResult     != 0
+monitor	\-o dskPath      \-o dskErrorMsg   "dskTable"  dskErrorFlag  != 0
+monitor	\-o laNames      \-o laErrMessage  "laTable"   laErrorFlag   != 0
+monitor	\-o fileName     \-o fileErrorMsg  "fileTable" fileErrorFlag != 0
 .fi
 .RE
 and will send a trap whenever any of these entries indicate a problem.
@@ -452,7 +452,7 @@
 .RS
 .nf
 setEvent   prFixIt  prErrFix = 1
-monitor -e prFixIt "procTable" prErrorFlag   != 0
+monitor \-e prFixIt "procTable" prErrorFlag   != 0
 .fi
 .RE
 (and similarly for any of the other \fIdefaultMonitor\fR entries).
@@ -494,12 +494,12 @@
 .SS "MIB-Specific Extension Commands"
 .I One-Shot
 .RS
-"pass [-p priority] MIBOID PROG"
+"pass [\-p priority] MIBOID PROG"
 .RE
 .IP
 .I Persistent
 .RS
-"pass_persist [-p priority] MIBOID PROG"
+"pass_persist [\-p priority] MIBOID PROG"
 .RE
 .SS "Embedded Perl Support"
 If embedded perl support is enabled in the agent, the default
@@ -517,7 +517,7 @@
 .nf
 perl use Data::Dumper;
 perl sub myroutine  { print "got called: ",Dumper(@_),"\\n"; }
-perl $agent->register('mylink', '.1.3.6.1.8765', \\&myroutine);
+perl $agent\->register('mylink', '.1.3.6.1.8765', \\&myroutine);
 .fi
 .RE
 .PP
@@ -548,11 +548,11 @@
 SNMP agents (running on remote systems) might be:
 .RS
 .nf
-com2sec -Cn rem1context  rem1user default  remotehost1
-com2sec -Cn rem2context  rem2user default  remotehost2
+com2sec \-Cn rem1context  rem1user default  remotehost1
+com2sec \-Cn rem2context  rem2user default  remotehost2
 
-proxy -Cn rem1context  -v 1 -c public  remotehost1  .1.3
-proxy -Cn rem2context  -v 1 -c public  remotehost2  .1.3
+proxy \-Cn rem1context  \-v 1 -c public  remotehost1  .1.3
+proxy \-Cn rem2context  \-v 1 -c public  remotehost2  .1.3
 .fi
 .RE
 (plus suitable access control entries).
@@ -572,7 +572,7 @@
 or listening on a different port on the same system),
 while handling the rest internally:
 .RS
-proxy -v 1 -c public  localhost:6161  .1.3.6.1.4.1.99
+proxy \-v 1 \-c public  localhost:6161  .1.3.6.1.4.1.99
 .RE
 This mechanism can be used to link together two separate SNMP agents.
 .PP
@@ -582,7 +582,7 @@
 .nf
 \fI# uses SNMPv3 to access the MIB tree .1.3.6.1.2.1.1 on 'remotehost'
 # and maps this to the local tree .1.3.6.1.3.10\fR
-proxy -v 3 -l noAuthNoPriv -u user remotehost .1.3.6.1.3.10 .1.3.6.1.2.1.1
+proxy \-v 3 \-l noAuthNoPriv \-u user remotehost .1.3.6.1.3.10 .1.3.6.1.2.1.1
 .fi
 .RE
 .SS SMUX Sub-Agents
diff --git a/man/snmpdelta.1.def b/man/snmpdelta.1.def
index 330151c..e95a69b 100644
--- a/man/snmpdelta.1.def
+++ b/man/snmpdelta.1.def
@@ -12,7 +12,7 @@
 snmpdelta \- Monitor delta differences in SNMP Counter values
 .SH SYNOPSIS
 .B snmpdelta
-[ COMMON OPTIONS ] [-Cf] [ -Ct ] [ -Cs ] [ -CS ] [ -Cm ] [ -CF configfile ] [ -Cl ] [ -Cp period ] [ -CP Peaks ] [ -Ck ] [ -CT ] AGENT OID [ OID ... ]
+[ COMMON OPTIONS ] [\-Cf] [ \-Ct ] [ \-Cs ] [ \-CS ] [ \-Cm ] [ \-CF configfile ] [ \-Cl ] [ \-Cp period ] [ \-CP Peaks ] [ \-Ck ] [ \-CT ] AGENT OID [ OID ... ]
 .SH "DESCRIPTION"
 .B snmpdelta
 will monitor the specified integer valued OIDs, and report changes
@@ -38,51 +38,51 @@
 for a list of possible values for COMMON OPTIONS
 as well as their descriptions.
 .TP
-.B -Cf
+.B \-Cf
 Don't fix errors and retry the request.
 Without this option, if multiple oids have been specified for
 a single request and if the request for one or more of the
 oids fails, snmpdelta will retry the request so that data for
 oids apart from the ones that failed will still be returned. 
-Specifying -Cf tells
+Specifying \-Cf tells
 .I  snmpdelta
 not to retry a request, even
 if there are multiple oids specified.
 .TP
-.B -Ct
+.B \-Ct
 Flag will determine time interval from the monitored entity.
 .TP
-.B -Cs
+.B \-Cs
 Flag will display a timestamp.
 .TP
-.B -CS
+.B \-CS
 Generates a "sum count" in addition to the individual instance
 counts.  The "sum count" is the total of all the individual
 deltas for each time period.
 .TP
-.B -Cm
+.B \-Cm
 Prints the max value ever attained.
 .TP
-.B -CF configfile
+.B \-CF configfile
 Tells
 .B snmpdelta
 to read it's configuration from the specified file.
 This options allows the input to be set up in advance rather
 than having to be specified on the command line.
 .TP
-.B -Cl
+.B \-Cl
 Tells
 .B snmpdelta
 to write it's configuration to files whose names correspond to the MIB
-instances monitored.  For example, snmpdelta -Cl localhost ifInOctets.1
-will create a file "localhost-ifInOctets.1".
+instances monitored.  For example, snmpdelta \-Cl localhost ifInOctets.1
+will create a file "localhost\-ifInOctets.1".
 .TP
-.B -Cp
+.B \-Cp
 Specifies the number of seconds between polling periods.
 Polling constitutes sending a request to the agent. The
 default polling period is one second.
 .TP
-.B -CP peaks
+.B \-CP peaks
 Specifies the reporting period in number of polling periods.
 If this option is specified, snmpdelta polls the agent
 .I peaks
@@ -91,24 +91,24 @@
 the reporting period. In addition, the highest polled
 value within the reporting period is shown.
 .TP
-.B -Ck
-When the polling period (-Cp) is an increment of 60 seconds
-and the timestamp is displayed in the output (-Cs), then
+.B \-Ck
+When the polling period (\-Cp) is an increment of 60 seconds
+and the timestamp is displayed in the output (\-Cs), then
 the default display shows the timestamp in the format
 hh:mm mm/dd. This option causes the timestamp format
 to be hh:mm:ss mm/dd.
 .TP
-.B -CT
+.B \-CT
 Makes 
 .B snmpdelta
 print its output in tabular form.
 .TP
-.B -Cv vars/pkt
+.B \-Cv vars/pkt
 Specifies the maximum number of oids allowed to be packaged
 in a single PDU. Multiple PDUs can be created in a single
 request. The default value of variables per packet is 60.
 This option is useful if a request response results in an
-error becaues the packet is too big.
+error because the packet is too big.
 .PP
 Note that
 .B snmpdelta
@@ -118,7 +118,7 @@
 manual page.
 .SH EXAMPLES
 .nf
-$ snmpdelta -c public -v 1 -Cs localhost IF-MIB::ifInUcastPkts.3 IF-MIB::ifOutUcastPkts.3
+$ snmpdelta \-c public \-v 1 \-Cs localhost IF\-MIB::ifInUcastPkts.3 IF\-MIB::ifOutUcastPkts.3
 [20:15:43 6/14] ifInUcastPkts.3 /1 sec: 158
 [20:15:43 6/14] ifOutUcastPkts.3 /1 sec: 158
 [20:15:44 6/14] ifInUcastPkts.3 /1 sec: 184
@@ -134,7 +134,7 @@
 [20:15:49 6/14] ifInUcastPkts.3 /1 sec: 158
 [20:15:49 6/14] ifOutUcastPkts.3 /1 sec: 158
 ^C
-$ snmpdelta -c public -v 1 -Cs -CT localhost IF-MIB:ifInUcastPkts.3 IF-MIB:ifOutcastPkts.3
+$ snmpdelta \-c public \-v 1 \-Cs \-CT localhost IF\-MIB:ifInUcastPkts.3 IF\-MIB:ifOutcastPkts.3
 localhost	ifInUcastPkts.3	ifOutUcastPkts.3
 [20:15:59 6/14]	184.00	184.00
 [20:16:00 6/14]	158.00	158.00
@@ -153,7 +153,7 @@
 screen.
 .PP
 .nf
-$ snmpdelta -c public -v 1 -Ct -Cs -CS -Cm -Cl -Cp 60 -CP 60
+$ snmpdelta \-c public \-v 1 \-Ct \-Cs \-CS \-Cm \-Cl \-Cp 60 \-CP 60
   interlink.sw.net.cmu.edu .1.3.6.1.2.1.2.2.1.16.3 .1.3.6.1.2.1.2.2.1.16.4
 .fi
 .SH "SEE ALSO"
diff --git a/man/snmpdf.1.def b/man/snmpdf.1.def
index 7653347..406845a 100644
--- a/man/snmpdf.1.def
+++ b/man/snmpdf.1.def
@@ -7,19 +7,19 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH SNMPDF 1 "25 Jul 2003" VVERSIONINFO "Net-SNMP"
+.TH SNMPDF 1 "28 Jan 2013" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpdf - display disk space usage on a network entity via SNMP
 .SH SYNOPSIS
 .B snmpdf
-[COMMON OPTIONS] [-Cu] AGENT
+[COMMON OPTIONS] [\-Cu] [\-Ch] AGENT
 .SH DESCRIPTION
 .B snmpdf
-is simply a networked verison of the typical df command.  It
+is simply a networked version of the typical df command.  It
 checks the disk space on the remote machine by examining the
-HOST-RESOURCES-MIB's hrStorageTable or the UCD-SNMP-MIB's dskTable.
+HOST\-RESOURCES\-MIB's hrStorageTable or the UCD\-SNMP\-MIB's dskTable.
 By default, the hrStorageTable is preferred as it typically contains
-more information.  However, the -Cu argument can be passed to snmpdf
+more information.  However, the \-Cu argument can be passed to snmpdf
 to force the usage of the dskTable.
 .PP
 AGENT identifies a target SNMP agent, which is instrumented
@@ -44,16 +44,22 @@
 for a list of possible values for COMMON OPTIONS
 as well as their descriptions.
 .TP
-.B -Cu
+.B \-Cu
 Forces the command to use dskTable in mib
-UCD-SNMP-MIB instead of the default to determine
+UCD\-SNMP\-MIB instead of the default to determine
 the storage information. Generally, the default
-use of hrStorageTable in mib HOST-RESOURCES-MIB
+use of hrStorageTable in mib HOST\-RESOURCES\-MIB
 is preferred because it typically contains
 more information.
+.TP
+.B \-Ch
+Print sizes in human readable format (i.e. MiB, GiB, TiB)
+.TP
+.B \-CH
+Print sizes in human readable SI format (i.e. MB, GB, TB)
 .SH "EXAMPLES"
 .PP
-% snmpdf -v 2c -c public localhost
+% snmpdf \-v 2c \-c public localhost
 .PP
 .nf
 Description       size (kB)         Used    Available Used%
diff --git a/man/snmpget.1.def b/man/snmpget.1.def
index 6bc1b5a..0ecac19 100644
--- a/man/snmpget.1.def
+++ b/man/snmpget.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -28,7 +28,7 @@
 snmpget - communicates with a network entity using SNMP GET requests
 .SH SYNOPSIS
 .B snmpget
-[COMMON OPTIONS] [-Cf] AGENT OID [OID]...
+[COMMON OPTIONS] [\-Cf] AGENT OID [OID]...
 .SH DESCRIPTION
 .B snmpget
 is an SNMP application that uses the SNMP GET request to query for
@@ -38,9 +38,9 @@
 .IR variables(5) .
 .SH "OPTIONS"
 .TP 8
-.B -Cf
+.B \-Cf
 If
-.B -Cf
+.B \-Cf
 is
 .I not
 specified, some applications
@@ -62,7 +62,7 @@
 .SH "EXAMPLES"
 The command:
 .PP
-    snmpget -c public zeus system.sysDescr.0
+    snmpget \-c public zeus system.sysDescr.0
 .PP
 will retrieve the variable system.sysDescr.0 from the host 
 .B zeus 
@@ -78,13 +78,13 @@
 variables in the request, the request will be resent without the bad
 variable.
 .PP
-Here is another example. The -c and -v options are defined in the 
+Here is another example. The \-c and \-v options are defined in the 
 .I snmpcmd(1)
 manual page. (Note that system.sysUpTime is an incomplete
 OID, as it needs the .0 index appended to it):
 .PP
 .nf
-    snmpget -v1 -Cf -c public localhost system.sysUpTime system.sysContact.0
+    snmpget \-v1 \-Cf \-c public localhost system.sysUpTime system.sysContact.0
 .fi
 .PP
 This example will return the following:
@@ -97,7 +97,7 @@
 .PP
 Similarly, the command:
 .nf
-    snmpget -v1 -c public localhost system.sysUpTime system.sysContact.0
+    snmpget \-v1 \-c public localhost system.sysUpTime system.sysContact.0
 .fi
 .PP
 Will return:
@@ -112,7 +112,7 @@
 .PP
 With the
 .B
--Cf
+\-Cf
 flag specified the application will not try to fix the PDU for you.
 .SH "SEE ALSO"
 snmpcmd(1), snmpwalk(1), variables(5).
diff --git a/man/snmpgetnext.1.def b/man/snmpgetnext.1.def
index 77c7835..e6c6e60 100644
--- a/man/snmpgetnext.1.def
+++ b/man/snmpgetnext.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -28,9 +28,9 @@
 snmpgetnext - communicates with a network entity using SNMP GETNEXT requests
 .SH SYNOPSIS
 .B snmpgetnext
-[COMMON OPTIONS] [-Cf] AGENT OID [OID]...
+[COMMON OPTIONS] [\-Cf] AGENT OID [OID]...
 .SH DESCRIPTION
-.B snmpget
+.B snmpgetnext
 is an SNMP application that uses the SNMP GETNEXT request to query for
 information on a network entity.  One or more object identifiers
 (OIDs) may be given as arguments on the command line.  Each variable
@@ -41,7 +41,7 @@
 .PP
 For example:
 .PP
-snmpgetnext -c public zeus interfaces.ifTable.ifEntry.ifType.1
+snmpgetnext \-c public zeus interfaces.ifTable.ifEntry.ifType.1
 .PP
 will retrieve the variable interfaces.ifTable.ifEntry.ifType.2:
 .PP
@@ -52,9 +52,9 @@
 request was malformed.
 .SH "OPTIONS"
 .TP 8
-.B -Cf
+.B \-Cf
 If
-.B -Cf
+.B \-Cf
 is
 .I not
 specified, some applications
diff --git a/man/snmpnetstat.1.def b/man/snmpnetstat.1.def
index 92cfee4..450ab7f 100644
--- a/man/snmpnetstat.1.def
+++ b/man/snmpnetstat.1.def
@@ -12,7 +12,7 @@
 .\" both that copyright notice and this permission notice appear in 
 .\" supporting documentation, and that the name of CMU not be
 .\" used in advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.  
+.\" software without specific, written prior permission.
 .\" 
 .\" CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
 .\" ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
@@ -58,21 +58,21 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH SNMPNETSTAT 1 "20 Jan 2010" VVERSIONINFO "Net-SNMP"
+.TH SNMPNETSTAT 1 "04 Nov 2013" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpnetstat \- display networking status and configuration information from a network entity via SNMP
 .SH SYNOPSIS
 .B snmpnetstat
-[COMMON OPTIONS] [-Ca] [-Cn] AGENT
+[COMMON OPTIONS] [\-Ca] [\-Cn] [\-Cv] [\-Cf address_family] AGENT
 .br
 .B snmpnetstat
-[COMMON OPTIONS] [-Ci] [-Co] [-Cr] [-Cn] [-Cs] AGENT
+[COMMON OPTIONS] [\-Cr] [\-Cn] [\-Cv] [\-Cf address_family] AGENT
 .br
 .B snmpnetstat
-[COMMON OPTIONS] [-Ci] [-Cn] [-CI interface] AGENT [interval]
+[COMMON OPTIONS] [\-Ci] [\-C o | b | d] [\-Cn] [\-Cv] [\-CI interface] [\-Cw interval] AGENT
 .br
 .B snmpnetstat
-[COMMON OPTIONS] [-Ca] [-Cn] [-Cs] [-Cp protocol] AGENT
+[COMMON OPTIONS] [\-Cs[s]] [\-Cp protocol] AGENT
 .SH DESCRIPTION
 The
 .B snmpnetstat 
@@ -115,18 +115,32 @@
 for a list of possible values for common options
 as well as their descriptions.
 .PP
+.B \-CL
+use the legacy SNMP MIB elements, not the modern IP version agnostic
+tables. \fIsnmpnetstat\fR  will automatically fall back to the legacy
+tables if the modern ones are not available.
+.PP
 .B \-Ca
 With the default display,
 show the state of all sockets; normally sockets used by
 server processes are not shown.
 .PP
+.BI \-Cf " address_family"
+Only show entries for the selected address family (inet, inet6)
+.PP
 .B \-Ci
 Show the state of all of the network interfaces.
-The  interface  display  provides  a  table  of cumulative
+The interface display provides a table of cumulative
 statistics regarding packets transferred, errors, and collisions.
-The  network addresses of the interface and the maximum transmission 
+The network addresses of the interface and the maximum transmission 
 unit (``mtu'') are also displayed.
 .PP
+.B \-Cd
+Add dropped packets to the interface display.
+.PP
+.B \-Cb
+Show an extended interface status, giving octets in addition to packets.
+.PP
 .B \-Co
 Show an abbreviated interface status, giving octets in place of packets.
 This is useful when enquiring virtual interfaces (such as Frame-Relay circuits)
@@ -145,6 +159,10 @@
 symbolically).
 This option may be used with any of the display formats.
 .PP
+.B \-Cv
+Allow long host or service names to break the columnar output.
+This option may be used with any of the display formats.
+.PP
 .BI \-Cp " protocol"
 Show statistics about 
 .IR protocol,
@@ -158,24 +176,20 @@
 is unknown or if there is no statistics routine for it.
 .PP
 .B \-Cs
-Show per-protocol statistics.  When used with the
-.B \-Cr
-option, show routing statistics instead.
+Show per-protocol statistics.
+If this is duplicated (-Css) statistics entries which are zero will
+be suppressed.
 .PP
 .B \-Cr
 Show the routing tables.
-When
-.B \-Cs
-is also present, show per-protocol routing statistics instead of 
-the routing tables.
 .PP
 .BI \-CR " repeaters"
 For GETBULK requests,
 .I repeaters
 specifies the max-repeaters value to use.
 .PP
-When  snmpnetstat is invoked with an interval argument, it
-displays a running count of statistics related to  network
+When snmpnetstat is invoked with an interval argument, it
+displays a running count of statistics related to network
 interfaces.
 .I interval
 is the number of seconds between
@@ -184,43 +198,43 @@
 .I The Active Sockets Display (default)
 .PP
 The default display, for active sockets, shows the local
-and remote addresses, protocol, and the internal state  of
-the   protocol.    Address   formats   are   of  the  form
-``host.port'' or ``network.port'' if  a  socket's  address
-specifies  a  network  but no specific host address.  When
+and remote addresses, protocol, and the internal state of
+the protocol.  Address formats are of the form
+``host.port'' or ``network.port'' if a socket's address
+specifies a network but no specific host address.  When
 known, the host and network addresses are displayed symbolically
-according   to  the  data  bases 
-.I /etc/hosts  and
+according to the databases 
+.I /etc/hosts and
 .IR /etc/networks,
-respectively.  If a symbolic  name  for  an
-address  is unknown, or if the
+respectively.  If a symbolic name for an
+address is unknown, or if the
 .B \-Cn
 option is specified, the
-address is printed numerically, according to  the  address
+address is printed numerically, according to the address
 family.  For more information regarding the Internet ``dot
-format,'' refer  to
+format,'' refer to
 .IR inet(3N).
-Unspecified,  or  ``wildcard'', addresses and ports appear as ``*''.
+Unspecified, or ``wildcard'', addresses and ports appear as ``*''.
 .PP
 .I The Interface Display
 .PP
-The  interface  display  provides  a  table  of cumulative
+The interface display provides a table of cumulative
 statistics regarding packets transferred, errors, and col-
-lisions.   The  network addresses of the interface and the
+lisions.  The network addresses of the interface and the
 maximum transmission unit (``mtu'') are also displayed.
 .PP
 .I The Routing Table Display
 .PP
-The routing table display indicates the  available  routes
-and  their  status.   Each route consists of a destination
-host or network and a gateway to use in  forwarding  pack-
-ets.   The flags field shows the state of the route (``U''
-if ``up''), whether the route is  to  a  gateway  (``G''),
-whether  the  route  was created dynamically by a redirect
-(``D''), and whether the route  has  been  modified  by  a
-redirect  (``M'').   Direct  routes  are  created for each
-interface attached to the local host;  the  gateway  field
-for  such entries shows the address of the outgoing inter-
+The routing table display indicates the available routes
+and their status.  Each route consists of a destination
+host or network and a gateway to use in forwarding pack-
+ets.  The flags field shows the state of the route (``U''
+if ``up''), whether the route is to a gateway (``G''),
+whether the route was created dynamically by a redirect
+(``D''), and whether the route has been modified by a
+redirect (``M'').  Direct routes are created for each
+interface attached to the local host; the gateway field
+for such entries shows the address of the outgoing inter-
 face.  The interface entry indicates the network interface
 utilized for the route.
 .PP
@@ -231,10 +245,10 @@
 is invoked with an
 .I interval
 argument, it
-displays a running count of statistics related to  network
-interfaces.   This  display  consists  of a column for the
+displays a running count of statistics related to network
+interfaces.  This display consists of a column for the
 primary interface and a column summarizing information for
-all  interfaces.   The  primary  interface may be replaced
+all interfaces.  The primary interface may be replaced
 with another interface with the
 .B \-CI
 option.  The first line
@@ -254,7 +268,7 @@
 .SH EXAMPLES
 Example of using snmpnetstat to display active sockets (default):
 .PP
-% snmpnetstat -v 2c -c public -Ca testhost
+% snmpnetstat \-v 2c \-c public \-Ca testhost
 .PP
 .nf
 Active Internet (tcp) Connections (including servers)
@@ -278,7 +292,7 @@
 \&...
 .fi
 .PP
-% snmpnetstat -v 2c -c public -Ci testhost
+% snmpnetstat \-v 2c \-c public \-Ci testhost
 .PP
 .nf
 Name     Mtu Network    Address          Ipkts   Ierrs    Opkts Oerrs Queue
@@ -289,7 +303,7 @@
 Example of using snmpnetstat to show statistics about a specific protocol:
 .PP
 .nf
-% snmpnetstat -v 2c -c public -Cp tcp testhost
+% snmpnetstat \-v 2c \-c public \-Cp tcp testhost
 
 Active Internet (tcp) Connections
 Proto Local Address                Foreign Address                 (state)
diff --git a/man/snmpset.1.def b/man/snmpset.1.def
index 5c7df46..b0c4e07 100644
--- a/man/snmpset.1.def
+++ b/man/snmpset.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright.
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -86,13 +86,13 @@
 .PP
 For example:
 .PP
-snmpset -c private -v 1 test-hub system.sysContact.0 s dpz@noc.rutgers.edu ip.ipforwarding.0 = 2
+snmpset \-c private \-v 1 test\-hub system.sysContact.0 s dpz@noc.rutgers.edu ip.ipforwarding.0 = 2
 .PP
 will set the variables sysContact.0 and ipForwarding.0:
 .PP
 system.sysContact.0 = STRING: "dpz@noc.rutgers.edu"
 .br
-ip.ipForwarding.0 = INTEGER: not-forwarding(2)
+ip.ipForwarding.0 = INTEGER: not\-forwarding(2)
 .PP
 If the network entity has an error processing the request packet, an
 error packet will be returned and a message will be shown, helping to
diff --git a/man/snmpstatus.1.def b/man/snmpstatus.1.def
index bba48b3..1126146 100644
--- a/man/snmpstatus.1.def
+++ b/man/snmpstatus.1.def
@@ -32,7 +32,7 @@
 snmpstatus - retrieves a fixed set of management information from a network entity
 .SH SYNOPSIS
 .B snmpstatus
-[COMMON OPTIONS] [-Cf] AGENT
+[COMMON OPTIONS] [\-Cf] AGENT
 .SH DESCRIPTION
 .B snmpstatus
 is an SNMP application that retrieves several important statistics
@@ -68,7 +68,7 @@
 .PP
 For example:
 .PP
-snmpstatus -c public -v 1 netdev-kbox.cc.cmu.edu
+snmpstatus \-c public \-v 1 netdev\-kbox.cc.cmu.edu
 .PP
 will produce output similar to the following:
 .PP
@@ -90,7 +90,7 @@
 .B snmpstatus
 will attempt to reform its request to eliminate the malformed
 variable (unless the
-.B -Cf
+.B \-Cf
 option is given, see below), but this variable will then be missing
 from the displayed data.
 .PP
@@ -102,10 +102,10 @@
 for a list of possible values for COMMON OPTIONS
 as well as their descriptions.
 .TP
-.B -Cf
+.B \-Cf
 By default, snmpstatus will try to fix errors returned
 by the agent and retry a request. In this situation,
-the command will display the data that it can. If the -Cf option
+the command will display the data that it can. If the \-Cf option
 is specified, then snmpstatus will not try to fix
 errors, and the error will cause the command to terminate.
 .SH "SEE ALSO"
diff --git a/man/snmptable.1.def b/man/snmptable.1.def
index 575b034..4e65cb4 100644
--- a/man/snmptable.1.def
+++ b/man/snmptable.1.def
@@ -20,28 +20,21 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH SNMPTABLE 1 "06 Sep 2003" VVERSIONINFO "Net-SNMP"
+.TH SNMPTABLE 1 "25 Jul 2003" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmptable - retrieve an SNMP table and display it in tabular form
 .SH SYNOPSIS
 .B snmptable
-[COMMON OPTIONS] [-Cb] [-CB] [-Ch] [-CH] [-Ci] [-Cf STRING] [-Cw WIDTH]
-AGENT TABLE-OID
+[COMMON OPTIONS] [\-Cb] [\-CB] [\-Ch] [\-CH] [\-Ci] [\-Cf STRING] [\-Cw WIDTH]
+AGENT TABLE\-OID
 .SH DESCRIPTION
 .B snmptable
 is an SNMP application that repeatedly uses the SNMP GETNEXT or
 GETBULK requests to query for information on a network entity.  The
-parameter
-.I TABLE-OID
-must specify an SNMP table.
-.PP
-snmptable is an SNMP application that repeatedly uses the
-SNMP GETNEXT or GETBULK requests to query for  information
-on a network entity.  The parameter TABLE-OID must specify
-an SNMP table.
+parameter TABLE\-OID must specify an SNMP table.
 
 AGENT identifies a target SNMP agent, which is instrumented
-to monitor the gievn objects.  At its simplest, the AGENT
+to monitor the given objects.  At its simplest, the AGENT
 specification will consist of a hostname or an IPv4
 address.  In this situation, the command will attempt
 communication with the agent, using UDP/IPv4 to port 161
@@ -57,19 +50,19 @@
 for a list of possible values for COMMON OPTIONS
 as well as their descriptions.
 .TP
-.B -Cb
+.B \-Cb
 Display only a brief heading. Any common prefix of the table field
 names will be deleted.
 .TP 
-.B -CB
+.B \-CB
 Do not use GETBULK requests to retrieve data, only GETNEXT.
 .TP 
-.BI -Cc " CHARS"
+.BI \-Cc " CHARS"
 Print table in columns of
 .I CHARS
 characters width.
 .TP
-.BI -Cf " STRING"
+.BI \-Cf " STRING"
 The string
 .I STRING
 is used to separate table columns.  With this option, each table entry
@@ -77,28 +70,28 @@
 separate the columns (useful if you want to import it into a
 database).  Otherwise it is printed in nicely aligned columns.
 .TP
-.B -Ch
+.B \-Ch
 Display
 .I only
 the column headings.
 .TP
-.B -CH
+.B \-CH
 Do not display the column headings.
 .TP
-.B -Ci
+.B \-Ci
 This option prepends the index of the entry to all printed lines.
 .TP
-.B -Cl
+.B \-Cl
 Left justify the data in each column.
 .TP 
-.BI -Cr " REPEATERS"
+.BI \-Cr " REPEATERS"
 For GETBULK requests, 
 .I REPEATERS
 specifies the max-repeaters value to use.  For GETNEXT requests,
 .I REPEATERS
 specifies the number of entries to retrieve at a time.
 .TP 
-.BI -Cw " WIDTH"
+.BI \-Cw " WIDTH"
 Specifies the width of the lines when the table is printed.
 If the lines will be longer, the table will be printed in sections of
 at most 
@@ -115,14 +108,14 @@
 .I snmpcmd(1)
 manual page.  This OID \fBmust\fP be that of a MIB table object.
 .SH EXAMPLES
-$ snmptable -v 2c -c public localhost at.atTable
+$ snmptable \-v 2c \-c public localhost at.atTable
 
-SNMP table: at.atTable RFC1213-MIB::atTable
+SNMP table: at.atTable RFC1213\-MIB::atTable
 
 atIfIndex   atPhysAddress   atNetAddress
         1  8:0:20:20:0:ab 130.225.243.33
 .PP
-$ snmptable -v 2c -c public -Cf + localhost at.atTable
+$ snmptable \-v 2c \-c public \-Cf + localhost at.atTable
 
 SNMP table: at.atTable
 
@@ -130,7 +123,7 @@
 1+8:0:20:20:0:ab+130.225.243.33
 .PP
 .nf
-$ snmptable localhost -Cl -CB -Ci -OX -Cb -Cc 16 -Cw 64 ifTable
+$ snmptable localhost \-Cl \-CB \-Ci \-OX \-Cb \-Cc 16 \-Cw 64 ifTable
 
 SNMP table: ifTable
 
@@ -159,7 +152,7 @@
 .PP
 .SH "BUGS"
 The test for
-.I TABLE-OID
+.I TABLE\-OID
 actually specifying a table is rather heuristic.  Note also that the
 test requires the defining MIB file to be loaded.
 .PP
diff --git a/man/snmptest.1.def b/man/snmptest.1.def
index c1edb48..dfdaed8 100644
--- a/man/snmptest.1.def
+++ b/man/snmptest.1.def
@@ -27,7 +27,7 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH SNMPTEST 1 "06 Sep 2003" VVERSIONINFO "Net-SNMP"
+.TH SNMPTEST 1 "25 Jul 2003" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmptest - communicates with a network entity using SNMP requests
 .SH SYNOPSIS
@@ -62,7 +62,7 @@
 .IR variables(5) .
 For example:
 .PP
-snmptest -c public -v 1 zeus
+snmptest \-c public \-v 1 zeus
 .br
 .BR Variable: " system.sysDescr.0"
 .br
@@ -114,7 +114,7 @@
 .PP
 GETNEXT Request:
 .PP
-The "GETNEXT request" mode ($N) is simlar to the "Get request"
+The "GETNEXT request" mode ($N) is similar to the "Get request"
 mode, described above.
 .PP
 SET Request:
@@ -175,7 +175,7 @@
 .PP
 The following is an example of sending a GET request for two OIDs:
 .PP
-% snmptest -v 2c -c public testhost:9999
+% snmptest \-v 2c \-c public testhost:9999
 .PP
 .nf
 Variable: system.sysDescr.0
@@ -183,18 +183,18 @@
 Variable:
 Received Get Response from 128.2.56.220
 requestid 0x7D9FCD63 errstat 0x0 errindex 0x0
-SNMPv2-MIB::sysDescr.0 = STRING: SunOS testhost 5.9 Generic_112233-02 sun4u
-SNMPv2-MIB::sysContact.0 = STRING: x1111
+SNMPv2\-MIB::sysDescr.0 = STRING: SunOS testhost 5.9 Generic_112233\-02 sun4u
+SNMPv2\-MIB::sysContact.0 = STRING: x1111
 .fi
 .PP
 The following is an example of sending a GETNEXT request:
 .PP
 .nf
-Variable: SNMPv2-MIB::sysORUpTime
+Variable: SNMPv2\-MIB::sysORUpTime
 Variable:
 Received Get Response from 128.2.56.220
 requestid 0x7D9FCD64 errstat 0x0 errindex 0x0
-SNMPv2-MIB::sysORUpTime.1 = Timeticks: (6) 0:00:00.06
+SNMPv2\-MIB::sysORUpTime.1 = Timeticks: (6) 0:00:00.06
 Variable:
 .fi
 .PP
@@ -209,7 +209,7 @@
 Variable:
 Received Get Response from 128.2.56.220
 requestid 0x7D9FCD65 errstat 0x0 errindex 0x0
-SNMPv2-MIB::sysLocation.0 = STRING: building A
+SNMPv2\-MIB::sysLocation.0 = STRING: building A
 Variable:
 .fi
 .PP
@@ -228,17 +228,17 @@
 What repeat count? 2
 Received Get Response from 128.2.56.220
 requestid 0x2EA7942A errstat 0x0 errindex 0x0
-SNMPv2-MIB::sysName.0 = STRING: testhost
-SNMPv2-MIB::sysORLastChange.0 = Timeticks: (58) 0:00:00.58
-SNMPv2-MIB::sysLocation.0 = STRING: bldg A
-SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
+SNMPv2\-MIB::sysName.0 = STRING: testhost
+SNMPv2\-MIB::sysORLastChange.0 = Timeticks: (58) 0:00:00.58
+SNMPv2\-MIB::sysLocation.0 = STRING: bldg A
+SNMPv2\-MIB::sysORID.1 = OID: IF\-MIB::ifMIB
 Variable:
 .fi
 .PP
 The following is an example of sending an Inform request:
 .PP
 .nf
-snmptest -v 2c -c public snmptrapd_host
+snmptest \-v 2c \-c public snmptrapd_host
 Variable: $I
 Request type is Inform Request
 (Are you sending to the right port?)
@@ -252,13 +252,13 @@
 .PP
 The snmptrapd_host will show:
 .PP
-snmptrapd_host [<ip address>]: Trap SNMPv2-MIB::sysContact.0 = STRING:
+snmptrapd_host [<ip address>]: Trap SNMPv2\-MIB::sysContact.0 = STRING:
 x12345
 .PP
 The following is an example of sending an SNMPv2 Trap request:
 .PP
 .nf
-snmptest -v 2c -c public snmptrapd_host
+snmptest \-v 2c \-c public snmptrapd_host
 Variable: $T
 Request type is SNMPv2 Trap Request
 (Are you sending to the right port?)
@@ -271,7 +271,7 @@
 The snmptrapd_host will show:
 .PP
 .nf
-snmptrapd_host [<ip address>]: Trap SNMPv2-MIB::sys.0 = STRING:
+snmptrapd_host [<ip address>]: Trap SNMPv2\-MIB::sys.0 = STRING:
 building a
 .fi
 .SH "SEE ALSO"
diff --git a/man/snmptranslate.1.def b/man/snmptranslate.1.def
index 0f31a55..721af99 100644
--- a/man/snmptranslate.1.def
+++ b/man/snmptranslate.1.def
@@ -27,7 +27,7 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH SNMPTRANSLATE 1 "20 Jul 2010" VVERSIONINFO "Net-SNMP"
+.TH SNMPTRANSLATE 1 "13 Nov 2013" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmptranslate - translate MIB OID names between numeric and textual forms
 .SH SYNOPSIS
@@ -42,17 +42,17 @@
 OID is either a numeric or textual object identifier.
 .SH OPTIONS
 .TP 8
-.B -D\fI[TOKEN[,...]]
+.B \-D\fI[TOKEN[,...]]
 Turn on debugging output for the given
 .IR "TOKEN" "(s)."
 Try
 .IR ALL
 for extremely verbose output.
 .TP
-.B -h
+.B \-h
 Display a brief usage message and then exit.
 .TP
-.BI -m " MIBLIST"
+.BI \-m " MIBLIST"
 Specifies a colon separated list of MIB modules to load for this
 application.  This overrides the environment variable MIBS.
 .IP
@@ -62,17 +62,20 @@
 files.  Every file whose name does not begin with "." will be parsed as
 if it were a MIB file.
 .TP
-.BI -M " DIRLIST"
+.BI \-M " DIRLIST"
 Specifies a colon separated list of directories to search for MIBs.
 This overrides the environment variable MIBDIRS.
 .TP
-.BI -T " TRANSOPTS"
+.BI \-T " TRANSOPTS"
 Provides control over the translation of the OID values.  The
 following
 .I TRANSOPTS
 are available:
 .RS
 .TP 6
+.B \-TB
+Print all matching objects for a regex search.
+.TP
 .B \-Td
 Print full details of the specified OID.
 .TP
@@ -98,24 +101,24 @@
 Dump a numeric and labeled form of all objects (compatible with MIB2SCHEMA format).
 .RE
 .TP
-.B -V
+.B \-V
 Display version information for the application and then exit.
 .TP
-.BI -w " WIDTH"
+.BI \-w " WIDTH"
 Specifies the width of
-.B -Tp
+.B \-Tp
 and
-.B -Td
+.B \-Td
 output. The default is very large.
 .PP
 In addition to the above options, 
 .B snmptranslate
 takes the OID input 
-.RB ( -I ),
+.RB ( \-I ),
 MIB parsing
-.RB ( -M )
+.RB ( \-M )
 and OID output
-.RB ( -O )
+.RB ( \-O )
 options described in the 
 .BR "INPUT OPTIONS" ", " "MIB PARSING OPTIONS" " and " "OUTPUT OPTIONS"
 sections of the
@@ -123,40 +126,40 @@
 manual page.
 .SH EXAMPLES
 .IP \(bu 4
-snmptranslate -On -IR sysDescr
+snmptranslate \-On \-IR sysDescr
 .br
 will translate "sysDescr" to a more qualified form:
 .IP
 system.sysDescr
 .IP \(bu 4
-snmptranslate -Onf -IR sysDescr
+snmptranslate \-Onf \-IR sysDescr
 .br
 will translate "sysDecr" to:
 .IP
-.RI .iso.org.dod.internet.mgmt.mib-2.system.sysDescr
+.RI .iso.org.dod.internet.mgmt.mib\-2.system.sysDescr
 .IP \(bu 4 
-snmptranslate -Td -OS system.sysDescr
+snmptranslate \-Td \-OS system.sysDescr
 .br
 will translate "sysDecr" into:
 .IP
 .nf
-SNMPv2-MIB::sysDescr
-sysDescr OBJECT-TYPE
-  -- FROM SNMPv2-MIB
-  -- TEXTUAL CONVENTION DisplayString
+SNMPv2\-MIB::sysDescr
+sysDescr OBJECT\-TYPE
+  \-\- FROM SNMPv2\-MIB
+  \-\- TEXTUAL CONVENTION DisplayString
   SYNTAX OCTET STRING (0..255)
-  DISPLAY-HINT "255a"
-  MAX-ACCESS read-only
+  DISPLAY\-HINT "255a"
+  MAX\-ACCESS read\-only
   STATUS current
   DESCRIPTION "A textual description of the entity. This
                value should include the full name and
                version identification of the system's
-               hardware type, software operating-system,
+               hardware type, software operating\-system,
                and networking software."
-::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) 1 }
+::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib\-2(1) system(1) 1 }
 .fi
 .IP \(bu 4 
-snmptranslate -Tp -OS system
+snmptranslate \-Tp \-OS system
 .br
 will print the following tree:
 .IP
@@ -196,7 +199,7 @@
 .fi
 .PP
 .IP \(bu 4
-snmptranslate -Ta | head
+snmptranslate \-Ta | head
 .br
 will produce the following dump:
 .IP
@@ -214,7 +217,7 @@
 .fi
 .PP
 .IP \(bu 4
-snmptranslate -Tl | head
+snmptranslate \-Tl | head
 .br
 will produce the following dump:
 .IP
@@ -224,15 +227,15 @@
 .RI .iso(1).org(3).dod(6).internet(1)
 .RI .iso(1).org(3).dod(6).internet(1).directory(1)
 .RI .iso(1).org(3).dod(6).internet(1).mgmt(2)
-.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1)
-.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1)
-.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysDescr(1)
-.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysObjectID(2)
-.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysUpTime(3)
+.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib\-2(1)
+.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib\-2(1).system(1)
+.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib\-2(1).system(1).sysDescr(1)
+.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib\-2(1).system(1).sysObjectID(2)
+.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib\-2(1).system(1).sysUpTime(3)
 .fi
 .PP
 .IP \(bu 4
-snmptranslate -To | head
+snmptranslate \-To | head
 .br
 will produce the following dump
 .IP
@@ -250,7 +253,7 @@
 .fi
 .PP
 .IP \(bu 4
-snmptranslate -Ts | head
+snmptranslate \-Ts | head
 .br
 will produce the following dump
 .IP
@@ -260,15 +263,15 @@
 .RI .iso.org.dod.internet
 .RI .iso.org.dod.internet.directory
 .RI .iso.org.dod.internet.mgmt
-.RI .iso.org.dod.internet.mgmt.mib-2
-.RI .iso.org.dod.internet.mgmt.mib-2.system
-.RI .iso.org.dod.internet.mgmt.mib-2.system.sysDescr
-.RI .iso.org.dod.internet.mgmt.mib-2.system.sysObjectID
-.RI .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime
+.RI .iso.org.dod.internet.mgmt.mib\-2
+.RI .iso.org.dod.internet.mgmt.mib\-2.system
+.RI .iso.org.dod.internet.mgmt.mib\-2.system.sysDescr
+.RI .iso.org.dod.internet.mgmt.mib\-2.system.sysObjectID
+.RI .iso.org.dod.internet.mgmt.mib\-2.system.sysUpTime
 .fi
 .PP
 .IP \(bu 4
-snmptranslate -Tt | head
+snmptranslate \-Tt | head
 .br
 will produce the following dump
 .IP
@@ -278,7 +281,7 @@
       internet(1) type=0
         directory(1) type=0
         mgmt(2) type=0
-          mib-2(1) type=0
+          mib\-2(1) type=0
             system(1) type=0
               sysDescr(1) type=2 tc=4 hint=255a
               sysObjectID(2) type=1
diff --git a/man/snmptrap.1.def b/man/snmptrap.1.def
index 09aec79..55c19d1 100644
--- a/man/snmptrap.1.def
+++ b/man/snmptrap.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -27,13 +27,13 @@
 .SH NAME
 snmptrap, snmpinform - sends an SNMP notification to a manager
 .SH SYNOPSIS
-.B snmptrap -v 1
+.B snmptrap \-v 1
 [COMMON OPTIONS] AGENT enterprise-oid agent generic-trap specific-trap uptime [OID TYPE VALUE]...
 .PP
-.B snmptrap -v [2c|3]
-[COMMON OPTIONS] [-Ci] AGENT uptime trap-oid [OID TYPE VALUE]...
+.B snmptrap \-v [2c|3]
+[COMMON OPTIONS] [\-Ci] AGENT uptime trap-oid [OID TYPE VALUE]...
 .PP
-.B snmpinform -v [2c|3]
+.B snmpinform \-v [2c|3]
 [COMMON OPTIONS] AGENT uptime trap-oid [OID TYPE VALUE]...
 .SH DESCRIPTION
 .B snmptrap
@@ -47,7 +47,7 @@
 When invoked as
 .B snmpinform,
 or when
-.B -Ci
+.B \-Ci
 is added to the command line flags of snmptrap, it sends an
 INFORM-PDU, expecting a response from the trap receiver,
 retransmitting if required.  Otherwise it sends an TRAP-PDU or
@@ -111,7 +111,7 @@
 .PP
 For example:
 .PP
-snmptrap -v 1 -c public manager enterprises.spider test-hub 3 0 '' interfaces.iftable.ifentry.ifindex.1 i 1
+snmptrap \-v 1 \-c public manager enterprises.spider test\-hub 3 0 '' interfaces.iftable.ifentry.ifindex.1 i 1
 .PP
 will send a generic linkUp trap to manager, for interface 1.
 .SH OPTIONS
@@ -120,7 +120,7 @@
 .I snmpcmd(1) 
 manual page in
 addition to the 
-.B -Ci
+.B \-Ci
 option described above.
 Note that
 .B snmptrap
diff --git a/man/snmptrapd.8.def b/man/snmptrapd.8.def
index b6247bf..45bd034 100644
--- a/man/snmptrapd.8.def
+++ b/man/snmptrapd.8.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright.
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1989 by Carnegie Mellon University
 .\" 
@@ -23,7 +23,7 @@
 .\" ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 .\" SOFTWARE.
 .\" ******************************************************************/
-.TH SNMPTRAPD 8 "30 Mar 2011" VVERSIONINFO "Net-SNMP"
+.TH SNMPTRAPD 8 "27 Apr 2014" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmptrapd - Receive and log SNMP trap messages.
 .SH SYNOPSIS
@@ -39,88 +39,88 @@
 must typically be run as root.
 .SH OPTIONS
 .TP 8
-.B -a
+.B \-a
 Ignore authenticationFailure traps.
 .TP
-.B -A
+.B \-A
 Append to the log file rather than truncating it.
 
-Note that this needs to come \fIbefore\fP any -Lf options
+Note that this needs to come \fIbefore\fP any \-Lf options
 that it should apply to.
 .TP
-.BI "-c" " FILE"
+.BI "\-c" " FILE"
 Read 
 .I FILE
 as a configuration file
 (or a comma-separated list of configuration files).
 .TP
-.B -C
+.B \-C
 Do not read any configuration files except the one optionally specified by the 
-.B -c 
+.B \-c 
 option.
 .TP
-.B -d
+.B \-d
 Dump (in hexadecimal) the sent and received SNMP packets.
 .TP
-.BI -D[TOKEN[,...]]
+.BI \-D[TOKEN[,...]]
 Turn on debugging output for the given
 .IR "TOKEN" "(s)."
 Try
 .IR ALL
 for extremely verbose output.
 .TP
-.B -f
+.B \-f
 Do not fork() from the calling shell.
 .TP
-.BI -F " FORMAT"
+.BI \-F " FORMAT"
 When logging to standard output, use the format in the string
 .IR FORMAT .
 See the section
 .B FORMAT SPECIFICATIONS
 below for more details.
 .TP
-.B -h, --help
+.B \-h, \-\-help
 Display a brief usage message and then exit.
 .TP
-.B -H
+.B \-H
 Display a list of configuration file directives understood by the
 trap daemon and then exit.
 .TP
-.B -I \fI[-]INITLIST
+.B \-I \fI[\-]INITLIST
 Specifies which modules should (or should not) be initialized
 when snmptrapd starts up.  If the comma-separated
 .I INITLIST
 is preceded
-with a '-', it is the list of modules that should \fInot\fR be started.
+with a '\-', it is the list of modules that should \fInot\fR be started.
 Otherwise this is the list of the \fIonly\fR modules that should be started.
 
 To get a list of compiled modules, run snmptrapd with the arguments
-.I "-Dmib_init -H"
+.I "\-Dmib_init \-H"
 (assuming debugging support has been compiled in).
 .TP
-.B -L[efos]
+.B \-L[efos]
 Specify where logging output should be directed (standard error or output,
 to a file or via syslog).  See LOGGING OPTIONS in \fIsnmpcmd(1)\fR for details.
 .TP
-.BR -m " \fIMIBLIST"
+.BR \-m " \fIMIBLIST"
 Specifies a colon separated list of MIB modules to load for this
 application.  This overrides the environment variable MIBS.
 See \fIsnmpcmd(1)\fR for details.
 .TP
-.BR -M " \fIDIRLIST"
+.BR \-M " \fIDIRLIST"
 Specifies a colon separated list of directories to search for MIBs.
 This overrides the environment variable MIBDIRS.
 See \fIsnmpcmd(1)\fR for details.
 .TP
-.BR -n
+.BR \-n
 Do not attempt to translate source addresses of incoming packets into
 hostnames.
 .TP
-.BI -p " FILE"
+.BI \-p " FILE"
 Save the process ID of the trap daemon in
 .IR FILE "."
 .TP
-.BI -O " [abeEfnqQsStTuUvxX]"
+.BI \-O " [abeEfnqQsStTuUvxX]"
 Specifies how MIB objects and other output should be displayed.
 See the section
 .B OUTPUT OPTIONS
@@ -128,22 +128,25 @@
 .I snmpcmd(1)
 manual page for details.
 .TP
-.BI -t
+.BI \-t
 Do not log traps to syslog.  This disables logging to syslog.  This is
 useful if you want the snmptrapd application to
 .B only
 run traphandle hooks and not to log any traps to any location.
 .TP
-.B -v, --version
+.B \-v, \-\-version
 Print version information for the trap daemon and then exit.
 .TP
-.B -x \fIADDRESS
+.B \-x \fIADDRESS
 Connect to the AgentX master agent on the specified address,
 rather than the default AGENTX_SOCKET.
 See \fIsnmpd(8)\fR for details of the format of such addresses.
 .TP
-.BI -- "name"="value"
-Allows to specify any token ("name") supported in the
+.B \-X
+Do not connect to a AgentX master agent
+.TP
+.BI \-\- "name"="value"
+Allows one to specify any token ("name") supported in the
 .I snmptrapd.conf
 file and sets its value to "value". Overrides the corresponding token in the
 .I snmptrapd.conf
@@ -162,21 +165,26 @@
 a literal %
 .TP
 .B %a
-the contents of the agent-addr field of the PDU (v1 TRAPs only)
+the contents of the agent\-addr field of the PDU (v1 TRAPs only)
 .TP
 .B %A
-the hostname corresponding to the contents of the agent-addr field of
-the PDU, if available, otherwise the contents of the agent-addr field
+the hostname corresponding to the contents of the agent\-addr field of
+the PDU, if available, otherwise the contents of the agent\-addr field
 of the PDU (v1 TRAPs only).
 .TP
 .B %b
-PDU source address (Note: this is not necessarily an IPv4
-address)
+PDU transport address (Note: this is not necessarily an IPv4
+address).
+.br
+Something like "[UDP: [172.16.10.12]:23456->[10.150.0.8]]"
 .TP
 .B %B
 PDU source hostname if available, otherwise PDU source address (see
 note above) 
 .TP
+.B %E
+SNMPv3 context engine id
+.TP
 .B %h
 current hour on the local system
 .TP
@@ -210,13 +218,19 @@
 .B %N
 enterprise string
 .TP
-.B %q
-trap sub-type (numeric, in decimal)
-.TP
 .B %P
 security information from the PDU (community name for v1/v2c,
 user and context for v3)
 .TP
+.B %q
+trap sub-type (numeric, in decimal)
+.TP
+.B %s
+SNMP version number (0: v1, 1: v2c, 2: v3)
+.TP
+.B %S
+SNMPv3 security model version number
+.TP
 .B %t
 decimal number of seconds since the operating system epoch (as
 returned by
@@ -225,6 +239,9 @@
 .B %T
 the value of the \fCsysUpTime.0\fR varbind in seconds
 .TP
+.B %u
+SNMPv3 security name, or v1/v2c community name
+.TP
 .B %v
 list of variable-bindings from the notification payload.
 These will be separated by a tab, 
@@ -254,7 +271,7 @@
 and a flag value. The following flags are supported:
 .RS 4 
 .TP 4
-.B -
+.B \-
 left justify
 .TP
 .B 0
@@ -279,7 +296,7 @@
 .PP
 .RS
 .nf
-snmptrapd -P -F "%02.2h:%02.2j TRAP%w.%q from %A\en"
+snmptrapd \-P \-F "%02.2h:%02.2j TRAP%w.%q from %A\en"
 .fi
 .RE
 .PP
@@ -287,7 +304,7 @@
 .PP
 .RS
 .nf
-snmptrapd -P -F "%#02.2h:%#02.2j TRAP%w.%q from %A\en"
+snmptrapd \-P \-F "%#02.2h:%#02.2j TRAP%w.%q from %A\en"
 .fi
 .RE
 .SH LISTENING ADDRESSES
@@ -301,20 +318,20 @@
 .I snmpd(8)
 manual page for more information about the format of listening
 addresses.
-.SH NOTIFICATION-LOG-MIB SUPPORT
+.SH NOTIFICATION\-LOG\-MIB SUPPORT
 As of net-snmp 5.0, the snmptrapd application supports the
-NOTIFICATION-LOG-MIB.  It does this by opening an AgentX subagent
+NOTIFICATION\-LOG\-MIB.  It does this by opening an AgentX subagent
 connection to the master snmpd agent and registering the notification
 log tables.  As long as the snmpd application is started first, it
 will attach itself to it and thus you should be able to view the last
 recorded notifications via the nlmLogTable and nlmLogVariableTable.
 See the snmptrapd.conf file and the "doNotRetainNotificationLogs" token
 for turning
-off this support.  See the NOTIFICATION-LOG-MIB for more details about
+off this support.  See the NOTIFICATION\-LOG\-MIB for more details about
 the MIB itself.
 .SH EXTENSIBILITY AND CONFIGURATION
 See the
 .I snmptrapd.conf(5)
 manual page.
 .SH "SEE ALSO"
-snmpcmd(1), snmpd(8), printf(3), snmptrapd.conf(5), syslog(8), variables(5)
+snmpcmd(1), snmpd(8), printf(3), snmptrapd.conf(5), syslog(8), traptoemail(1), variables(5)
diff --git a/man/snmptrapd.conf.5.def b/man/snmptrapd.conf.5.def
index e2394cb..1bbbfbb 100644
--- a/man/snmptrapd.conf.5.def
+++ b/man/snmptrapd.conf.5.def
@@ -1,4 +1,4 @@
-.TH SNMPTRAPD.CONF 5 "19 Feb 2009" VVERSIONINFO "Net-SNMP"
+.TH SNMPTRAPD.CONF 5 "13 Mar 2014" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmptrapd.conf - configuration file for the Net-SNMP notification receiver
 .SH DESCRIPTION
@@ -7,7 +7,7 @@
 (and INFORM requests) should be processed.
 This file (\fBsnmptrapd.conf\fR) can be located in
 one of several locations, as described in the
-.I snmp_config(5)
+.IR snmp_config (5)
 manual page.
 .SH IMPORTANT
 Previously,
@@ -32,22 +32,22 @@
 See the section 
 .B LISTENING ADDRESSES
 in the
-.I snmpd(8)
+.IR snmpd (8)
 manual page for more information about the format of listening
 addresses.
 .IP
 The default behaviour is to
 listen on UDP port 162 on all IPv4 interfaces.
 .IP "doNotRetainNotificationLogs yes"
-disables support for the NOTIFICATION-LOG-MIB.
+disables support for the NOTIFICATION\-LOG\-MIB.
 Normally the snmptrapd program keeps a record of the traps
 received, which can be retrieved by querying
 the \fCnlmLogTable\fR and \fCnlmLogvariableTable\fR tables.  
 This directive can be used to suppress this behaviour.
 .IP
 See the 
-.I snmptrapd(8) 
-manual page and the NOTIFICATION-LOG-MIB for details.
+.IR snmptrapd (8) 
+manual page and the NOTIFICATION\-LOG\-MIB for details.
 .IP "doNotLogTraps yes"
 disables the logging of notifications altogether.
 This is useful if the \fBsnmptrapd\fR application should
@@ -81,14 +81,16 @@
 for a particular category of notification. But it is perfectly
 possible (even desirable) to limit certain notification sources to
 selected processing only.
-.IP "authCommunity   TYPES COMMUNITY  [SOURCE [OID | -v VIEW ]]"
+.IP "authCommunity   TYPES COMMUNITY  [SOURCE [OID | \-v VIEW ]]"
 authorises traps (and SNMPv2c INFORM requests) with the specified
 community to trigger the types of processing listed.
 By default, this will allow any notification using this community
 to be processed.  The SOURCE field can be used to specify that the
 configuration should only apply to notifications received from
-particular sources - see \fIsnmpd.conf(5)\fR for more details.
-.IP "authUser   TYPES [-s MODEL] USER  [LEVEL [OID | -v VIEW ]]"
+particular sources - see
+.IR snmpd.conf (5)
+for more details.
+.IP "authUser   TYPES [\-s MODEL] USER  [LEVEL [OID | \-v VIEW ]]"
 authorises SNMPv3 notifications with the specified
 user to trigger the types of processing listed.
 By default, this will accept authenticated requests.
@@ -96,7 +98,7 @@
 be used to allow unauthenticated notifications (\fInoauth\fR),
 or to require encryption (\fIpriv\fR), just as for the SNMP agent.
 .IP
-With both of these directives, the OID (or \fI-v VIEW\fR) field
+With both of these directives, the OID (or \fI\-v VIEW\fR) field
 can be used to retrict this configuration to the processing of
 particular notifications.
 .RS
@@ -106,16 +108,18 @@
 incoming notification.  It is not applied to the payload varbinds
 held within that notification.
 .RE
-.IP "authGroup  TYPES [-s MODEL] GROUP  [LEVEL [OID | -v VIEW ]]"
-.IP "authAccess TYPES [-s MODEL] GROUP VIEW  [LEVEL [CONTEXT]]"
+.IP "authGroup  TYPES [\-s MODEL] GROUP  [LEVEL [OID | \-v VIEW ]]"
+.IP "authAccess TYPES [\-s MODEL] GROUP VIEW  [LEVEL [CONTEXT]]"
 .IP "setAccess GROUP CONTEXT MODEL LEVEL PREFIX VIEW TYPES"
 authorise notifications in the specified GROUP
 (configured using the \fIgroup\fR directive)
 to trigger the types of processing listed.
-See \fIsnmpd.conf(5)\fR for more details.
+See
+.IR snmpd.conf (5)
+for more details.
 .IP "createUser [-e  ENGINEID] username (MD5|SHA) authpassphrase [DES|AES]"
 See the 
-.I snmpd.conf(5)
+.IR snmpd.conf (5)
 manual page for a description of how to create SNMPv3 users.  This
 is roughly the same, but the file name changes to snmptrapd.conf from
 snmpd.conf.
@@ -131,9 +135,38 @@
 specify the format used to display SNMPv1 TRAPs and SNMPv2
 notifications respectively.  Note that SNMPv2c and SNMPv3
 both use the same SNMPv2 PDU format.
+.IP "format DESTINATION FORMAT"
+specify the format used for different destinations.
+DESTINATION is one of:
+.IR print ", " print1 ", " print2 ", " 
+.IR syslog ", " syslog1 ", " syslog2 ", " 
+.IR execute ", " execute1 ", " execute2 .
+.I print1
+is used for printing SNMPv1 traps,
+.I print2
+is for SNMPv2.
+.I print
+is used for both versions.
+.I syslog
+is similarly used when sending traps to syslog, and
+.I execute
+used when sending traps to a program such as
+.IR traptoemail (1).
+.IP
+The default formats are
+.br
+.I format print1 %.4y-%.2m-%.2l %.2h:%.2j:%.2k %B [%b] (via %A [%a]): %N\en\et%W Trap (%q) Uptime: %#T\en%v\en
+.br
+.I format print2 %.4y-%.2m-%.2l %.2h:%.2j:%.2k %B [%b]:\en%v\en
+.br
+.I format syslog1 %a: %W Trap (%q) Uptime: %#T%#v\en
+.br
+.I format syslog2 %B [%b]: Trap %#v\en
+.br
+.I format execute %B\en%b\en%V\en%v\en
 .IP
 See
-.IR snmptrapd(8)
+.IR snmptrapd (8)
 for the layout characters available.
 .IP "ignoreAuthFailure yes"
 instructs the receiver to ignore \fIauthenticationFailure\fR traps.
@@ -149,12 +182,14 @@
 specifies where notifications should be logged - to standard
 output, standard error, a specified file or via \fIsyslog\fR.
 See the section LOGGING OPTIONS in the
-\fIsnmpcmd(1)\fR manual page for details.
+.IR snmpcmd (1)
+manual page for details.
 .IP "outputOption string"
 specifies various characteristics of how OIDs and other values
 should be displayed.
 See the section OUTPUT OPTIONS in the
-\fIsnmpcmd(1)\fR manual page for details.
+.IR snmpcmd (1)
+manual page for details.
 .SH MySQL Logging
 There are two configuration variables that work together to control
 when queued traps are logged to the MySQL database. A non-zero
@@ -201,14 +236,17 @@
 Note that this will always use the SNMPv2-style notification format, with
 SNMPv1 traps being converted as per RFC 2576, before being passed to the
 program.
-The input format is as follows, one entry per line:
+The input format is, if you use the default set by
+the "format execute %B\en%b\en%V\en%v\en", one entry per line:
 .RS
 .IP HOSTNAME
 The name of the host that sent the notification, as determined by
-.IR gethostbyaddr(3) .
+.IR gethostbyaddr (3).
 .br
-.IP IPADDRESS
-The IP address of the host that sent the notification.
+.IP ADDRESS
+The transport address, like
+.br
+"[UDP: [172.16.10.12]:23456->[10.150.0.8]]"
 .\"
 .\" XXX - What about non-IPv4 transports?
 .\"
@@ -219,10 +257,10 @@
 The format of both of these are controlled by the \fIoutputOption\fR
 directive (or similar configuration).
 .IP
-The first OID should always be \fCSNMPv2-MIB::sysUpTime.0\fR,
-and the second should be \fCSNMPv2-MIB::snmpTrapOID.0\fR.
+The first OID should always be \fCSNMPv2\-MIB::sysUpTime.0\fR,
+and the second should be \fCSNMPv2\-MIB::snmpTrapOID.0\fR.
 The remaining lines will contain the payload varbind list.
-For SNMPv1 traps, the final OID will be \fCSNMPv2-MIB::snmpTrapEnterprise.0\fR.
+For SNMPv1 traps, the final OID will be \fCSNMPv2\-MIB::snmpTrapEnterprise.0\fR.
 .br
 .IP Example:
 A \fBtraptoemail\fR script has been included in the Net-SNMP package that
@@ -230,7 +268,7 @@
 .br
 .RS
 .P
-traphandle default /usr/bin/perl BINDIR/traptoemail -s mysmtp.somewhere.com -f admin@somewhere.com me@somewhere.com
+traphandle default /usr/bin/perl BINDIR/traptoemail \-s mysmtp.somewhere.com \-f admin@somewhere.com me@somewhere.com
 .RE
 .RE
 .IP "forward OID|default DESTINATION"
@@ -242,7 +280,7 @@
 See the section 
 .B LISTENING ADDRESSES
 in the
-.I snmpd(8)
+.IR snmpd (8)
 manual page for more information about the format of listening
 addresses.
 .RE
@@ -262,5 +300,5 @@
 .SH FILES
 SYSCONFDIR/snmp/snmptrapd.conf
 .SH "SEE ALSO"
-snmp_config(5), snmptrapd(8), syslog(8), variables(5), snmpd.conf(5), netsnmp_config_api(3).
+snmp_config(5), snmptrapd(8), syslog(8), traptoemail(1), variables(5), netsnmp_config_api(3).
 
diff --git a/man/snmpusm.1.def b/man/snmpusm.1.def
index 2177592..9061213 100644
--- a/man/snmpusm.1.def
+++ b/man/snmpusm.1.def
@@ -3,7 +3,7 @@
 snmpusm - creates and maintains SNMPv3 users on a network entity
 .SH SYNOPSIS
 .B snmpusm
-[COMMON OPTIONS] [-Cw] AGENT
+[COMMON OPTIONS] [\-Cw] AGENT
 .B create
 USER [CLONEFROM-USER]
 .br
@@ -18,17 +18,17 @@
 USER CLONEFROM-USER
 .br
 .B snmpusm
-[COMMON OPTIONS] [-Ca] [-Cx] AGENT
+[COMMON OPTIONS] [\-Ca] [\-Cx] AGENT
 .B passwd
 OLD-PASSPHRASE NEW-PASSPHRASE [USER]
 .br
 .B snmpusm
-[COMMON OPTIONS] <-Ca | -Cx> -Ck AGENT
+[COMMON OPTIONS] <\-Ca | \-Cx> \-Ck AGENT
 .B passwd
 OLD-KEY-OR-PASSPHRASE NEW-KEY-OR-PASSPHRASE [USER]
 .br
 .B snmpusm
-[COMMON OPTIONS] [-Ca] [-Cx] AGENT
+[COMMON OPTIONS] [\-Ca] [\-Cx] AGENT
 .B changekey
 [USER]
 
@@ -46,12 +46,12 @@
 .B snmpusm
 commands:
 .TP
-.BI -CE " ENGINE-ID"
+.BI \-CE " ENGINE-ID"
 Set usmUserEngineID to be used as part of the index of the usmUserTable.
-Default is to use the contextEngineID (set via -E or probed) as the 
+Default is to use the contextEngineID (set via \-E or probed) as the 
 usmUserEngineID.
 .TP
-.BI -Cp " STRING"
+.BI \-Cp " STRING"
 Set the usmUserPublic value of the (new) user to the specified STRING.
 .PP
 Options for the
@@ -60,15 +60,15 @@
 .B changekey
 commands:
 .TP
-.BI -Ca
+.BI \-Ca
 Change the authentication key.
 .TP
-.BI -Cx
+.BI \-Cx
 Change the privacy key.
 .TP
-.BI -Ck
-Allows to use localized key (must start with 0x) instead of passphrase.
-When this option is used, either the -Ca or -Cx option (but not both) must also
+.BI \-Ck
+Allows one to use localized key (must start with 0x) instead of passphrase.
+When this option is used, either the \-Ca or \-Cx option (but not both) must also
 be used.
 
 .SH CREATING USERS
@@ -76,14 +76,14 @@
 An unauthenticated SNMPv3 user can be created using the command
 .IP
 .B snmpusm
-[OPTIONS] AGENT create USER
+[COMMON OPTIONS] AGENT create USER
 .PP
 This constructs an (inactive) entry in the usmUserTable,
 with no authentication or privacy settings.
 In principle, this user should be useable for 'noAuthNoPriv' requests,
 but in practise the Net-SNMP agent will not allow such an entry
 to be made active.  The user can be created via the createAndWait
-operation instead by using the -Ca flag.  This will prevent the user
+operation instead by using the \-Ca flag.  This will prevent the user
 from being marked as active in any agent until explicitly activated
 later via the activate command.
 
@@ -92,7 +92,7 @@
 user, using the command
 .IP
 .B snmpusm
-[OPTIONS] AGENT cloneFrom USER CLONEFROM-USER
+[COMMON OPTIONS] AGENT cloneFrom USER CLONEFROM-USER
 .PP
 The USER entry then inherits the same authentication and privacy
 settings (including pass phrases) as the CLONEFROM user.
@@ -101,7 +101,7 @@
 These two steps can be combined into one, by using the command
 .IP
 .B snmpusm
-[OPTIONS] AGENT create USER CLONEFROM-USER
+[COMMON OPTIONS] AGENT create USER CLONEFROM-USER
 
 .PP
 The two forms of the
@@ -137,7 +137,7 @@
 A user can be deleted from the usmUserTable using the command
 .IP
 .B snmpusm
-[OPTIONS] AGENT delete USER
+[COMMON OPTIONS] AGENT delete USER
 
 .SH CHANGING PASS PHRASES
 User profiles contain private keys that are never
@@ -148,7 +148,7 @@
 This uses the command
 .IP
 .B snmpusm
-[OPTIONS] [-Ca] [-Cx] AGENT passwd OLD-PASSPHRASE NEW-PASSPHRASE [USER]
+[COMMON OPTIONS] [\-Ca] [\-Cx] AGENT passwd OLD-PASSPHRASE NEW-PASSPHRASE [USER]
 
 .PP
 After cloning a new user entry from the appropriate template,
@@ -156,21 +156,21 @@
 
 .PP
 If USER is not specified, this command will change the passphrase
-of the (SNMPv3) user issuing the command.  If the -Ca or -Cx options
+of the (SNMPv3) user issuing the command.  If the \-Ca or \-Cx options
 are specified, then only the authentication or privacy keys are changed.  If
 these options are not specified, then both the authentication and privacy keys
 are changed.
 
 .IP
 .B snmpusm
-[OPTIONS] [-Ca] [-Cx] AGENT changekey [USER]
+[COMMON OPTIONS] [\-Ca] [\-Cx] AGENT changekey [USER]
 
 .PP
 This command changes the key in a perfect-forward-secrecy compliant
 way through a diffie-helman exchange.  The remote agent must support
-the SNMP-USM-DH-OBJECTS-MIB for this command to work.  The resulting
+the SNMP\-USM\-DH\-OBJECTS\-MIB for this command to work.  The resulting
 keys are printed to the console and may be then set in future command
-invocations using the --defAuthLocalizedKey and --defPrivLocalizedKey
+invocations using the \-\-defAuthLocalizedKey and \-\-defPrivLocalizedKey
 options or in your snmp.conf file using the defAuthLocalizedKey and
 defPrivLocalizedKey keywords.
 
@@ -187,10 +187,10 @@
 
 .IP
 .B snmpusm
-[OPTIONS] <-Ca | -Cx> -Ck AGENT passwd OLD-KEY-OR-PASSPHRASE NEW-KEY-OR-PASSPHRASE [USER]
+[COMMON OPTIONS] <\-Ca | \-Cx> \-Ck AGENT passwd OLD-KEY-OR-PASSPHRASE NEW-KEY-OR-PASSPHRASE [USER]
 
 .PP
-Either the -Ca or the -Cx option must be specified.  The OLD-KEY-OR-PASSPHRASE
+Either the \-Ca or the \-Cx option must be specified.  The OLD-KEY-OR-PASSPHRASE
 and/or NEW-KEY-OR-PASSPHRASE arguments can either be a passphrase or a
 localized key starting with "0x", e.g. as printed out by the
 .B changekey
@@ -229,7 +229,7 @@
 in length.
 .SS Create a new user
 .PP
-snmpusm -v3 -u initial -n "" -l authNoPriv -a MD5 -A setup_passphrase
+snmpusm \-v3 \-u initial \-n "" \-l authNoPriv \-a MD5 \-A setup_passphrase
 localhost create wes initial
 .IP
 Creates a new user, here named "wes" using the user "initial" to do
@@ -237,7 +237,7 @@
 that user's passphrase ("setup_passphrase").
 .SS Change the user's passphrase
 .PP
-snmpusm -v 3 -u wes -n "" -l authNoPriv -a MD5 -A setup_passphrase
+snmpusm \-v 3 \-u wes \-n "" \-l authNoPriv \-a MD5 \-A setup_passphrase
 localhost passwd setup_passphrase new_passphrase
 .IP
 After creating the user "wes" with the same passphrase as the
@@ -246,7 +246,7 @@
 the initial user, to "new_passphrase".
 .SS Test the new user
 .PP
-snmpget -v 3 -u wes -n "" -l authNoPriv -a MD5 -A new_passphrase
+snmpget \-v 3 \-u wes \-n "" \-l authNoPriv \-a MD5 \-A new_passphrase
 localhost sysUpTime.0
 .IP
 If the above commands were successful, this command should have
diff --git a/man/snmpvacm.1.def b/man/snmpvacm.1.def
index 6ae1f03..70b089e 100644
--- a/man/snmpvacm.1.def
+++ b/man/snmpvacm.1.def
@@ -15,7 +15,7 @@
 .B snmpvacm
 [COMMON OPTIONS] AGENT
 .B createView
-[-Ce] NAME SUBTREE MASK
+[\-Ce] NAME SUBTREE MASK
 .br
 .B snmpvacm
 [COMMON OPTIONS] AGENT
@@ -102,7 +102,7 @@
 .B createSec2Group
 command (or equivalent).
 
-.SS createView \fR[-Ce] NAME SUBTREE MASK\fP
+.SS createView \fR[\-Ce] NAME SUBTREE MASK\fP
 .PP
 Create an entry in the SNMPv3 MIB view table.
 A MIB view consists of a family of view subtrees which may be individually
@@ -110,7 +110,7 @@
 defined by a combination of an OID subtree together with a bit string mask.
 The view table is indexed by the view name and subtree OID values.
 .PP
-[-Ce]
+[\-Ce]
 .IP
 An optional flag to indicate that this view subtree should be excluded
 from the named view.
@@ -327,7 +327,7 @@
 .PP
 This creates a new security group named "ROGroup" containing the (pre-existing)
 user "wes", a new view "sysView" containing just the OID tree based on
-.I .iso(1).org(3).dod(6).inet(1).mgmt(2).mib-2(1).system(1)
+.I .iso(1).org(3).dod(6).inet(1).mgmt(2).mib\-2(1).system(1)
 , and then allows those users in the group "ROGroup" (i.e. "wes")
 read-access, but not write-access to the view "sysView" (i.e. the system group).
 
diff --git a/man/snmpwalk.1.def b/man/snmpwalk.1.def
index 6e15201..d9f3d5c 100644
--- a/man/snmpwalk.1.def
+++ b/man/snmpwalk.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -43,7 +43,7 @@
 .PP
 If no OID argument is present,
 .B snmpwalk
-will search the subtree rooted at SNMPv2-SMI::mib-2
+will search the subtree rooted at SNMPv2\-SMI::mib\-2
 (including any MIB object values from other MIB modules,
 that are defined as lying within this subtree).
 If the network entity has an error processing the request packet, an
@@ -54,7 +54,7 @@
 MIB, the message "End of MIB" will be displayed.
 .SH OPTIONS
 .TP 8
-.B -Cc
+.B \-Cc
 Do not check whether the returned OIDs are increasing.  Some agents
 (LaserJets are an example) return OIDs out of order, but can
 complete the walk anyway.  Other agents return OIDs that are out of
@@ -64,15 +64,15 @@
 .B snmpwalk
 tries to detect this behavior and warns you when it hits an agent
 acting illegally.  Use
-.B -Cc
+.B \-Cc
 to turn off this check.
 .TP
-.B -CE {OID}
+.B \-CE {OID}
 End the walk at the specified OID, rather than a simple subtree.
 This can be used to walk a partial subtree, selected columns of
 a table, or even two or more tables within a single command.
 .TP
-.B -Ci
+.B \-Ci
 Include the given OID in the search range.  Normally
 .B snmpwalk
 uses GETNEXT requests starting with the OID you specified and returns
@@ -81,7 +81,7 @@
 results if it is a valid OID in the tree itself.  This option lets you
 do this explicitly.
 .TP
-.B -CI
+.B \-CI
 In fact, the given OID will be retrieved automatically if the main
 subtree walk returns no useable values.  This allows a walk of a
 single instance to behave as generally expected, and return the
@@ -89,10 +89,10 @@
 This option turns off this final GET request, so a walk of a
 single instance will return nothing.
 .TP
-.B -Cp
+.B \-Cp
 Upon completion of the walk, print the number of variables found.
 .TP
-.B -Ct
+.B \-Ct
 Upon completion of the walk, print the total wall-clock time it took
 to collect the data (in seconds).  Note that the timer is started just
 before the beginning of the data request series and stopped just after
@@ -108,12 +108,12 @@
 .SH EXAMPLES
 .br
 Note that
-.B snmpbulkget
+.B snmpwalk
 REQUIRES  an argument specifying the agent to query
 and at most one OID argument, as described there.
 The command:
 .PP
-snmpwalk -Os -c public -v 1 zeus system
+snmpwalk \-Os \-c public \-v 1 zeus system
 .PP
 will retrieve all of the variables under system:
 .PP
@@ -135,7 +135,7 @@
 
 The command:
 .PP
-snmpwalk -Os -c public -v 1 -CE sysORTable zeus system
+snmpwalk \-Os \-c public \-v 1 \-CE sysORTable zeus system
 .PP
 will retrieve the scalar values, but omit the sysORTable.
 .SH "SEE ALSO"
diff --git a/man/tkmib.1.def b/man/tkmib.1.def
index fa45dce..f0253b9 100644
--- a/man/tkmib.1.def
+++ b/man/tkmib.1.def
@@ -1,4 +1,4 @@
-.TH tkmib 1 "16 Nov 2006" VVERSIONINFO "Net-SNMP"
+.TH tkmib "1" "16 Nov 2006" VVERSIONINFO "Net-SNMP"
 .SH NAME
 tkmib - an interactive graphical MIB browser for SNMP
 .SH SYNOPSIS
diff --git a/mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt b/mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt
new file mode 100644
index 0000000..83eacad
--- /dev/null
+++ b/mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt
@@ -0,0 +1,83 @@
+NET-SNMP-PERIODIC-NOTIFY-MIB DEFINITIONS ::= BEGIN
+
+--
+-- Objects for periodic notifications containing data payloads
+--
+
+IMPORTS
+    netSnmpModuleIDs, netSnmpObjects, netSnmpNotifications FROM NET-SNMP-MIB
+
+    OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY, Integer32, Unsigned32
+        FROM SNMPv2-SMI
+
+    DisplayString FROM SNMPv2-TC;
+
+
+netSnmpPeriodicNotifyMib MODULE-IDENTITY
+    LAST-UPDATED "201104200000Z"
+    ORGANIZATION "www.net-snmp.org"
+    CONTACT-INFO    
+	 "postal:   Wes Hardaker
+                    P.O. Box 382
+                    Davis CA  95617
+
+          email:    net-snmp-coders@lists.sourceforge.net"
+    DESCRIPTION
+	"Objects for periodic notifications containing data payloads"
+    REVISION     "201104200000Z"
+    DESCRIPTION
+	"First revision."
+    ::= { netSnmpModuleIDs 5 }
+
+nsPNScalars                 OBJECT IDENTIFIER ::= {netSnmpPeriodicNotifyMib 1}
+nsPNTables                  OBJECT IDENTIFIER ::= {netSnmpPeriodicNotifyMib 2}
+nsPNotifyObjects            OBJECT IDENTIFIER ::= {netSnmpPeriodicNotifyMib 3}
+nsPNotificationPrefix       OBJECT IDENTIFIER ::= {netSnmpPeriodicNotifyMib 4}
+nsPNotifications            OBJECT IDENTIFIER ::= {nsPNotificationPrefix 0}
+nsPNotificationObjects      OBJECT IDENTIFIER ::= {nsPNotificationPrefix 1}
+
+--
+-- Notification Definitions
+--
+
+nsNotifyPeriodicNotification        NOTIFICATION-TYPE
+    STATUS	current
+    DESCRIPTION
+	"Data delivery notification from a configured list of periodic
+	data sets to deliver.  See the snmpd.conf manual page for
+	details about configuring Net-SNMP agents for sending these
+	notifications out on a regular basis."
+    ::= { nsPNotifications 1 }
+
+--
+-- Objects that can be put into the notifications
+--
+
+nsPNPeriodicTime OBJECT-TYPE
+     SYNTAX      Unsigned32
+     MAX-ACCESS  accessible-for-notify
+     STATUS      current
+     DESCRIPTION
+         "The number of seconds between notifications containing this data set."
+     ::= { nsPNotifyObjects 1 }
+
+nsPNotifyMessageNumber OBJECT-TYPE
+    SYNTAX      Unsigned32
+    MAX-ACCESS  accessible-for-notify
+    STATUS      current
+    DESCRIPTION
+        "Indicates this is the Nth notification in a longer sequence
+        of notifications"
+    ::= { nsPNotifyObjects 2 }
+
+nsPNotifyMaxMessageNumber OBJECT-TYPE
+    SYNTAX      Unsigned32
+    MAX-ACCESS  accessible-for-notify
+    STATUS      current
+    DESCRIPTION
+        "The maximum number of messages this notification sequence
+        will contain."
+    ::= { nsPNotifyObjects 3 }
+
+
+END
diff --git a/mibs/UCD-SNMP-MIB.txt b/mibs/UCD-SNMP-MIB.txt
index 69f9ac5..3bf4913 100644
--- a/mibs/UCD-SNMP-MIB.txt
+++ b/mibs/UCD-SNMP-MIB.txt
@@ -55,6 +55,10 @@
     DESCRIPTION
 	"This file defines the private UCD SNMP MIB extensions."
 
+    REVISION	 "201105140000Z"
+    DESCRIPTION
+	"New objects for monitoring CPU Steal, Guest and Nice values"
+
     REVISION	 "200901190000Z"
     DESCRIPTION
 	"New 64-bit objects for monitoring large disk usage"
@@ -1432,6 +1436,58 @@
         "Number of blocks swapped out"
     ::= { systemStats 63 }
 
+ssCpuRawSteal OBJECT-TYPE
+    SYNTAX      Counter32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of 'ticks' (typically 1/100s) spent
+         by the hypervisor code to run other VMs even
+         though the CPU in the current VM had something runnable.
+
+         This object will not be implemented on hosts where
+         the underlying operating system does not measure
+         this particular CPU metric.
+
+         On a multi-processor system, the 'ssCpuRaw*'
+         counters are cumulative over all CPUs, so their
+         sum will typically be N*100 (for N processors)."
+    ::= { systemStats 64 }
+
+ssCpuRawGuest OBJECT-TYPE
+    SYNTAX      Counter32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of 'ticks' (typically 1/100s) spent
+         by the CPU to run a virtual CPU (guest).
+
+         This object will not be implemented on hosts where
+         the underlying operating system does not measure
+         this particular CPU metric.
+
+         On a multi-processor system, the 'ssCpuRaw*'
+         counters are cumulative over all CPUs, so their
+         sum will typically be N*100 (for N processors)."
+    ::= { systemStats 65 }
+
+ssCpuRawGuestNice OBJECT-TYPE
+    SYNTAX      Counter32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of 'ticks' (typically 1/100s) spent
+         by the CPU to run a niced virtual CPU (guest).
+
+         This object will not be implemented on hosts where
+         the underlying operating system does not measure
+         this particular CPU metric.
+
+         On a multi-processor system, the 'ssCpuRaw*'
+         counters are cumulative over all CPUs, so their
+         sum will typically be N*100 (for N processors)."
+    ::= { systemStats 66 }
+
 -- possibly used in the future:
 --
 -- ssErrorFlag OBJECT-TYPE
diff --git a/perl/ASN/ASN.pm b/perl/ASN/ASN.pm
index 6f0603f..008e97b 100644
--- a/perl/ASN/ASN.pm
+++ b/perl/ASN/ASN.pm
@@ -66,7 +66,7 @@
 	ASN_UNSIGNED
 	ASN_UNSIGNED64
 );
-$VERSION = '5.0602';
+$VERSION = '5.0703';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
diff --git a/perl/ASN/netsnmp-feature-definitions.h b/perl/ASN/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/perl/ASN/netsnmp-feature-definitions.h
diff --git a/perl/AnyData_SNMP/Storage.pm b/perl/AnyData_SNMP/Storage.pm
index 44b85ae..67c791f 100644
--- a/perl/AnyData_SNMP/Storage.pm
+++ b/perl/AnyData_SNMP/Storage.pm
@@ -6,7 +6,7 @@
 ##   scalar sets?
 ##   multi-hosts
 
-$AnyData::Storage::VERSION = '5.0602';
+$AnyData::Storage::VERSION = '5.0703';
 use strict;
 use warnings;
 
diff --git a/perl/Makefile.PL b/perl/Makefile.PL
index 92f5ad2..31fdc40 100644
--- a/perl/Makefile.PL
+++ b/perl/Makefile.PL
@@ -11,7 +11,7 @@
     $nsconfig="net-snmp-config"; # in path by default
     my %Params = (
 		  'NAME' => 'Bundle::NetSNMP',
-		  'DIR' => [qw(default_store ASN OID agent SNMP TrapReceiver)]
+		  'DIR' => [qw(default_store ASN OID agent SNMP TrapReceiver)],
 		  );
 
     # bogus, but these options need to be passed to the lower levels
diff --git a/perl/OID/OID.pm b/perl/OID/OID.pm
index dc3a427..b75bf1d 100644
--- a/perl/OID/OID.pm
+++ b/perl/OID/OID.pm
@@ -92,7 +92,7 @@
 	snmp_oid_compare
         compare
 );
-$VERSION = '5.0602';
+$VERSION = '5.0703';
 
 sub new {
     my $type = shift;
diff --git a/perl/OID/netsnmp-feature-definitions.h b/perl/OID/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..fb4ccdb
--- /dev/null
+++ b/perl/OID/netsnmp-feature-definitions.h
@@ -0,0 +1,6 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(snprint_objid)
+netsnmp_feature_require(snprint_value)
+
diff --git a/perl/SNMP/SNMP.pm b/perl/SNMP/SNMP.pm
index ca62339..a05cd38 100644
--- a/perl/SNMP/SNMP.pm
+++ b/perl/SNMP/SNMP.pm
@@ -7,7 +7,7 @@
 #     modify it under the same terms as Perl itself.
 
 package SNMP;
-$VERSION = '5.0602';   # current release version number
+$VERSION = '5.0703';   # current release version number
 
 use strict;
 use warnings;
diff --git a/perl/SNMP/SNMP.xs b/perl/SNMP/SNMP.xs
index ce0fb5c..2a734e8 100644
--- a/perl/SNMP/SNMP.xs
+++ b/perl/SNMP/SNMP.xs
@@ -244,7 +244,8 @@
 
         SOCK_STARTUP;
 
-        snmp_set_quick_print(1);
+        netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                               NETSNMP_DS_LIB_QUICK_PRINT, 1);
         init_snmp(appname);
     
         netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS, 1);
@@ -3073,6 +3074,7 @@
            int use_enums;
            struct enum_list *ep;
            int best_guess;	   
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 
            New (0, oid_arr, MAX_OID_LEN, oid);
 
@@ -3194,6 +3196,9 @@
               /* BUG!!! need to return an error value */
               XPUSHs(&sv_undef); /* no mem or bad args */
            }
+#else  /* NETSNMP_NO_WRITE_SUPPORT */
+           warn("error: Net-SNMP was compiled using --enable-read-only, set() can not be used.");
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 done:
            Safefree(oid_arr);
         }
@@ -4446,7 +4451,7 @@
 	   
            New (0, oid_arr, MAX_OID_LEN, oid);
 
-           if (oid_arr && SvROK(sess_ref) && SvROK(varlist_ref)) {
+           if (oid_arr && SvROK(sess_ref)) {
 
               sess_ptr_sv = hv_fetch((HV*)SvRV(sess_ref), "SessPtr", 7, 1);
 	      ss = (SnmpSession *)SvIV((SV*)SvRV(*sess_ptr_sv));
@@ -4460,8 +4465,13 @@
 	      
               pdu = snmp_pdu_create(SNMP_MSG_TRAP2);
 
-              varlist = (AV*) SvRV(varlist_ref);
-              varlist_len = av_len(varlist);
+              if (SvROK(varlist_ref)) {
+                  varlist = (AV*) SvRV(varlist_ref);
+                  varlist_len = av_len(varlist);
+              } else {
+                  varlist = NULL;
+                  varlist_len = -1;
+              }
 	      /************************************************/
               res = __add_var_val_str(pdu, sysUpTime, SYS_UPTIME_OID_LEN,
 				uptime, strlen(uptime), TYPE_TIMETICKS);
@@ -4749,7 +4759,8 @@
 	int		flag
 	CODE:
 	{
-	   snmp_set_dump_packet(flag);
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                   NETSNMP_DS_LIB_DUMP_PACKET, flag);
 	}
 
 
@@ -4897,7 +4908,8 @@
 	int	val
 	CODE:
 	{
-	   snmp_set_save_descriptions(val);
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                   NETSNMP_DS_LIB_SAVE_MIB_DESCRS, val);
 	}
 
 void
diff --git a/perl/SNMP/netsnmp-feature-definitions.h b/perl/SNMP/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..adc642c
--- /dev/null
+++ b/perl/SNMP/netsnmp-feature-definitions.h
@@ -0,0 +1,8 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(snprint_objid)
+netsnmp_feature_require(snprint_value)
+netsnmp_feature_require(find_module)
+netsnmp_feature_require(get_tc_description)
+
diff --git a/perl/SNMP/t/async.t b/perl/SNMP/t/async.t
index b1c86c6..f3fb38d 100644
--- a/perl/SNMP/t/async.t
+++ b/perl/SNMP/t/async.t
@@ -17,7 +17,7 @@
 use vars qw($agent_port $comm $agent_host);
 
 if ($^O =~ /win32/i) {
-  warn "Win32 detected - skipping async calls\n";
+  warn "Win32/Win64 detected - skipping async calls\n";
   exit;
 }
 
diff --git a/perl/SNMP/t/bulkwalk.t b/perl/SNMP/t/bulkwalk.t
index 60f10b5..2d13e7b 100644
--- a/perl/SNMP/t/bulkwalk.t
+++ b/perl/SNMP/t/bulkwalk.t
@@ -326,7 +326,7 @@
 			    ['ifSpeed'], ['ifDescr']);	 # Repeated variables.
 
 if ($^O =~ /win32/i) {
-  warn "Win32 detected - skipping async calls\n";
+  warn "Win32/Win64 detected - skipping async calls\n";
 }
 else {
   @list = $s1->bulkwalk(2, 16, $vars, [ \&async_cb1, $vars ] );
diff --git a/perl/SNMP/t/notify.t b/perl/SNMP/t/notify.t
index 434237f..72600fa 100644
--- a/perl/SNMP/t/notify.t
+++ b/perl/SNMP/t/notify.t
@@ -10,7 +10,7 @@
     $ENV{'MIBDIRS'} = '+' . abs_path("../../mibs");
 }
 use Test;
-BEGIN { $n = 10; plan tests => $n }
+BEGIN { $n = 11; plan tests => $n }
 use SNMP;
 use vars qw($agent_port $comm $comm2 $trap_port $agent_host $sec_name $priv_pass $auth_pass $bad_name);
 require 't/startagent.pl';
@@ -21,20 +21,20 @@
 my $generic = 'specific';
 
 #                         V1 trap testing
-######################  1  #############################
+########################  1  ############################
 # Fire up a trap session.
 my $s1 =
     new SNMP::Session (DestHost=>$agent_host,Version=>1,Community=>$comm,RemotePort=>$trap_port);
 ok(defined($s1));
 
-##########################  2  ####################################
+########################  2  ############################
 # test v1 trap
 if (defined($s1)) {
   $res = $s1->trap(enterprise => $enterprise, agent=>$agent_host, generic=>$generic,[[sysContact, 0, 'root@localhost'], [sysLocation, 0, 'here']] );
 }
 ok($res =~ /^0 but true/);
 
-########################### 3 #############################
+########################  3  ############################
 # test with wrong varbind
 undef $res;
 if (defined($s1)) {
@@ -45,12 +45,12 @@
 #########################################################
 
 #                      V2 testing
-########################## 4 ############################
+########################  4  ############################
 # Fire up a v2 trap session.
 my $s2 =
     new SNMP::Session (Version=>2, DestHost=>$agent_host,Community=>$comm2,RemotePort=>$trap_port);
 ok(defined($s2));
-#########################  5  ###########################
+########################  5  ############################
 # test v2 trap
 undef $res;
 if (defined($s2)) {
@@ -58,7 +58,7 @@
   #print("res is $res\n");
 }
 ok($res =~ /^0 but true/);
-##########################  6  ##########################
+########################  6  ############################
 # no trapoid and uptime given. Should take defaults...
 my $ret;
 if (defined($s2)) {
@@ -66,27 +66,35 @@
   #print("res is $ret\n");
 }
 ok(defined($ret));
+########################  7  ############################
+# no varbind list given.
+undef $res;
+if (defined($s2)) {
+  $res = $s2->trap(trapoid=>'coldStart');
+  #print("res is $res\n");
+}
+ok(defined($res) && $res =~ /^0 but true/);
 
 #########################################################
 
 #                     v3 testing
-########################  7  ############################
+########################  8  ############################
 # Fire up a v3 trap session.
 my $s3 = new SNMP::Session(Version=>3, DestHost=> $agent_host, RemotePort=>$trap_port, SecName => $sec_name);
 ok(defined($s3));
 
-########################  8  ###########################
+########################  9  ############################
 if (defined($s3)) {
   $res = $s3->inform(uptime=>111, trapoid=>'coldStart', [[sysContact, 0, 'root@localhost'], [sysLocation, 0, 'here']] );
 }
 ok($res =~ /^0 but true/);
 
-#################### 9 #####################
+######################## 10  ############################
 # Fire up a v3 trap session.
 $s3 = new SNMP::Session(Version=>3, DestHost=> $agent_host, RemotePort=>$trap_port, SecName => $sec_name, SecLevel => authPriv, AuthPass => $auth_pass, PrivPass => $priv_pass);
 ok(defined($s3));
 
-########################  10  ###########################
+######################## 11  ############################
 undef $res;
 if (defined($s3)) {
     $res = $s3->inform(uptime=>111, trapoid=>'coldStart', [[sysContact, 0, 'root@localhost'], [sysLocation, 0, 'here']] );
diff --git a/perl/TrapReceiver/TrapReceiver.pm b/perl/TrapReceiver/TrapReceiver.pm
index bd90e3c..85a041a 100644
--- a/perl/TrapReceiver/TrapReceiver.pm
+++ b/perl/TrapReceiver/TrapReceiver.pm
@@ -47,7 +47,7 @@
 	NETSNMPTRAPD_PRE_HANDLER
 );
 
-$VERSION = '5.0602';
+$VERSION = '5.0703';
 
 # sub new {
 #     my $type = shift;
diff --git a/perl/TrapReceiver/netsnmp-feature-definitions.h b/perl/TrapReceiver/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..bd331e3
--- /dev/null
+++ b/perl/TrapReceiver/netsnmp-feature-definitions.h
@@ -0,0 +1,6 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(netsnmp_add_default_traphandler)
+netsnmp_feature_require(memory_free)
+
diff --git a/perl/agent/Support/Support.pm b/perl/agent/Support/Support.pm
index 06541cd..03f54d9 100644
--- a/perl/agent/Support/Support.pm
+++ b/perl/agent/Support/Support.pm
@@ -26,7 +26,7 @@
 @ISA       = qw(Exporter getLeaf);
 @EXPORT    = qw(registerAgent getOidElement setOidElement);
 @EXPORT_OK = qw();
-$VERSION = '5.0602';
+$VERSION = '5.0703';
 
 use strict;
 use warnings;
diff --git a/perl/agent/agent.pm b/perl/agent/agent.pm
index 1e2dad5..46500ff 100644
--- a/perl/agent/agent.pm
+++ b/perl/agent/agent.pm
@@ -87,7 +87,7 @@
 	SNMP_ERR_AUTHORIZATIONERROR
 	SNMP_ERR_NOTWRITABLE
 );
-$VERSION = '5.0602';
+$VERSION = '5.0703';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
@@ -199,6 +199,12 @@
     __agent_check_and_process($blocking || 0);
 }
 
+sub uptime {
+    my $self = shift;
+    $self->maybe_init_lib();
+    return _uptime();
+}
+
 bootstrap NetSNMP::agent $VERSION;
 
 # Preloaded methods go here.
diff --git a/perl/agent/agent.xs b/perl/agent/agent.xs
index 99e8ecb..c7b5d9a 100644
--- a/perl/agent/agent.xs
+++ b/perl/agent/agent.xs
@@ -60,12 +60,14 @@
 static int constant_MODE_SET_R(double *value, const char *name, const int len)
 {
     switch (len >= 16 ? name[16] : -1) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case '1':
 	TEST_CONSTANT(value, name, MODE_SET_RESERVE1);
         break;
     case '2':
 	TEST_CONSTANT(value, name, MODE_SET_RESERVE2);
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
     return EINVAL;
 }
@@ -121,6 +123,7 @@
         return EINVAL;
 
     switch (len >= 9 ? name[9] : -1) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case 'A':
         TEST_CONSTANT(value, name, MODE_SET_ACTION);
         break;
@@ -133,11 +136,12 @@
     case 'F':
         TEST_CONSTANT(value, name, MODE_SET_FREE);
         break;
-    case 'R':
-        return constant_MODE_SET_R(value, name, len);
     case 'U':
         TEST_CONSTANT(value, name, MODE_SET_UNDO);
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+    case 'R':
+        return constant_MODE_SET_R(value, name, len);
     }
     return EINVAL;
 }
@@ -234,6 +238,13 @@
     OUTPUT:
 	RETVAL
 
+int
+_uptime()
+    CODE:
+        RETVAL = netsnmp_get_agent_uptime();
+    OUTPUT:
+	RETVAL
+
 void
 init_mib()
     CODE:
diff --git a/perl/agent/default_store/default_store.pm b/perl/agent/default_store/default_store.pm
index 39b8a14..a8812eb 100644
--- a/perl/agent/default_store/default_store.pm
+++ b/perl/agent/default_store/default_store.pm
@@ -96,7 +96,7 @@
 				   NETSNMP_DS_AGENT_MAX_GETBULKREPEATS
 				   NETSNMP_DS_AGENT_MAX_GETBULKRESPONSES
 );
-$VERSION = '5.0602';
+$VERSION = '5.0703';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
diff --git a/perl/agent/netsnmp-feature-definitions.h b/perl/agent/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..4f2630e
--- /dev/null
+++ b/perl/agent/netsnmp-feature-definitions.h
@@ -0,0 +1,6 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(agent_check_and_process)
+netsnmp_feature_require(snmp_enable_stderrlog)
+
diff --git a/perl/agent/test.pl b/perl/agent/test.pl
index a7ac8f9..88cba56 100644
--- a/perl/agent/test.pl
+++ b/perl/agent/test.pl
@@ -9,7 +9,7 @@
 BEGIN { $| = 1; 
         $ENV{'SNMPCONFPATH'} = 'nopath';
         $ENV{'MIBS'} = '';
-        print "1..5\n";
+        print "1..6\n";
       }
 END {print "not ok 1\n" unless $loaded;}
 use NetSNMP::agent (':all');
@@ -76,6 +76,12 @@
 print it($regitem, 4);
 #print STDERR $regitem,":",ref($regitem),"\n";
 print it(ref($regitem) eq "NetSNMP::agent::netsnmp_handler_registration", 5);
+
+my $uptime1 = $agent->uptime();
+my $uptime2 = $agent->uptime(666);
+my $uptime3 = $agent->uptime(555, 444);
+print it($uptime1 <= $uptime2 && $uptime2 <= $uptime3, 6);
+
 exit;
 
 while(1) {
diff --git a/perl/default_store/default_store.pm b/perl/default_store/default_store.pm
index ccae606..b898501 100644
--- a/perl/default_store/default_store.pm
+++ b/perl/default_store/default_store.pm
@@ -200,7 +200,7 @@
 				   NETSNMP_DS_LIB_KSM_SERVICE_NAME
 				   NETSNMP_DS_LIB_SBSM_LOCAL_PWD
 );
-$VERSION = '5.0602';
+$VERSION = '5.0703';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
diff --git a/perl/default_store/netsnmp-feature-definitions.h b/perl/default_store/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/perl/default_store/netsnmp-feature-definitions.h
diff --git a/python/netsnmp/client_intf.c b/python/netsnmp/client_intf.c
index 9f726f5..8b8805d 100644
--- a/python/netsnmp/client_intf.c
+++ b/python/netsnmp/client_intf.c
@@ -1360,12 +1360,12 @@
 
   if (our_identity && our_identity[0] != '\0')
       CONTAINER_INSERT(session.transport_configuration,
-                       netsnmp_transport_create_config("our_identity",
+                       netsnmp_transport_create_config("localCert",
                                                        our_identity));
 
   if (their_identity && their_identity[0] != '\0')
       CONTAINER_INSERT(session.transport_configuration,
-                       netsnmp_transport_create_config("their_identity",
+                       netsnmp_transport_create_config("peerCert",
                                                        their_identity));
 
   if (their_hostname && their_hostname[0] != '\0')
diff --git a/python/netsnmp/netsnmp-feature-definitions.h b/python/netsnmp/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..389416a
--- /dev/null
+++ b/python/netsnmp/netsnmp-feature-definitions.h
@@ -0,0 +1,6 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(snprint_value)
+netsnmp_feature_require(enable_stderrlog)
+
diff --git a/snmplib/Makefile.depend b/snmplib/Makefile.depend
index 20fc653..62b5111 100644
--- a/snmplib/Makefile.depend
+++ b/snmplib/Makefile.depend
@@ -5,8 +5,7 @@
 ./asn1.lo: ../include/net-snmp/system/sysv.h
 ./asn1.lo: ../include/net-snmp/system/generic.h
 ./asn1.lo: ../include/net-snmp/machine/generic.h
-./asn1.lo: ../include/net-snmp/output_api.h
-./asn1.lo: ../include/net-snmp/types.h
+./asn1.lo: ../include/net-snmp/output_api.h ../include/net-snmp/types.h
 ./asn1.lo: ../include/net-snmp/library/oid.h
 ./asn1.lo: ../include/net-snmp/library/types.h
 ./asn1.lo: ../include/net-snmp/definitions.h
@@ -20,11 +19,8 @@
 ./asn1.lo: ../include/net-snmp/library/snmp_service.h
 ./asn1.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./asn1.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./asn1.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./asn1.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./asn1.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./asn1.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./asn1.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./asn1.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./asn1.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./asn1.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./asn1.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -33,6 +29,7 @@
 ./asn1.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./asn1.lo: ../include/net-snmp/library/parse.h
 ./asn1.lo: ../include/net-snmp/library/oid_stash.h
+./asn1.lo: ../include/net-snmp/net-snmp-features.h
 ./asn1.lo: ../include/net-snmp/library/snmp_impl.h
 ./asn1.lo: ../include/net-snmp/library/snmp.h
 ./asn1.lo: ../include/net-snmp/library/snmp-tc.h
@@ -59,6 +56,7 @@
 ./callback.lo: ../include/net-snmp/system/sysv.h
 ./callback.lo: ../include/net-snmp/system/generic.h
 ./callback.lo: ../include/net-snmp/machine/generic.h
+./callback.lo: ../include/net-snmp/net-snmp-features.h
 ./callback.lo: ../include/net-snmp/types.h
 ./callback.lo: ../include/net-snmp/library/oid.h
 ./callback.lo: ../include/net-snmp/library/types.h
@@ -77,11 +75,8 @@
 ./callback.lo: ../include/net-snmp/library/snmp_service.h
 ./callback.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./callback.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./callback.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./callback.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./callback.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./callback.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./callback.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./callback.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./callback.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./callback.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./callback.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -115,11 +110,57 @@
 ./cert_util.lo: ../include/net-snmp/system/sysv.h
 ./cert_util.lo: ../include/net-snmp/system/generic.h
 ./cert_util.lo: ../include/net-snmp/machine/generic.h
+./cert_util.lo: ../include/net-snmp/net-snmp-features.h
+./cert_util.lo: ../include/net-snmp/types.h
+./cert_util.lo: ../include/net-snmp/library/oid.h
+./cert_util.lo: ../include/net-snmp/library/types.h
+./cert_util.lo: ../include/net-snmp/definitions.h
+./cert_util.lo: ../include/net-snmp/library/snmp_api.h
+./cert_util.lo: ../include/net-snmp/varbind_api.h
+./cert_util.lo: ../include/net-snmp/library/snmp_client.h
+./cert_util.lo: ../include/net-snmp/pdu_api.h
+./cert_util.lo: ../include/net-snmp/library/asn1.h
+./cert_util.lo: ../include/net-snmp/output_api.h
+./cert_util.lo: ../include/net-snmp/library/snmp_debug.h
+./cert_util.lo: ../include/net-snmp/library/snmp_logging.h
+./cert_util.lo: ../include/net-snmp/session_api.h
+./cert_util.lo: ../include/net-snmp/library/callback.h
+./cert_util.lo: ../include/net-snmp/library/snmp_transport.h
+./cert_util.lo: ../include/net-snmp/library/snmp_service.h
+./cert_util.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./cert_util.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./cert_util.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./cert_util.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./cert_util.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./cert_util.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./cert_util.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./cert_util.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./cert_util.lo: ../include/net-snmp/library/ucd_compat.h
+./cert_util.lo: ../include/net-snmp/library/mib.h
+./cert_util.lo: ../include/net-snmp/mib_api.h
+./cert_util.lo: ../include/net-snmp/library/parse.h
+./cert_util.lo: ../include/net-snmp/library/oid_stash.h
+./cert_util.lo: ../include/net-snmp/library/snmp_impl.h
+./cert_util.lo: ../include/net-snmp/library/snmp.h
+./cert_util.lo: ../include/net-snmp/library/snmp-tc.h
+./cert_util.lo: ../include/net-snmp/config_api.h
+./cert_util.lo: ../include/net-snmp/library/read_config.h
+./cert_util.lo: ../include/net-snmp/library/default_store.h
+./cert_util.lo: ../include/net-snmp/net-snmp-config.h
+./cert_util.lo: ../include/net-snmp/library/snmp_parse_args.h
+./cert_util.lo: ../include/net-snmp/library/snmp_enum.h
+./cert_util.lo: ../include/net-snmp/library/vacm.h
+./cert_util.lo: ../include/net-snmp/library/snmp_assert.h
+./cert_util.lo: ../include/net-snmp/library/system.h
+./cert_util.lo: ../include/net-snmp/library/tools.h
+./cert_util.lo: ../include/net-snmp/library/container.h
+./cert_util.lo: ../include/net-snmp/library/factory.h
+./cert_util.lo: ../include/net-snmp/library/data_list.h
+./cert_util.lo: ../include/net-snmp/library/file_utils.h
+./cert_util.lo: ../include/net-snmp/library/dir_utils.h
+./cert_util.lo: ../include/net-snmp/library/cert_util.h
+./cert_util.lo: ../include/net-snmp/library/snmp_openssl.h
 ./check_varbind.lo: ../include/net-snmp/net-snmp-config.h
-./check_varbind.lo: ../include/net-snmp/system/linux.h
-./check_varbind.lo: ../include/net-snmp/system/sysv.h
-./check_varbind.lo: ../include/net-snmp/system/generic.h
-./check_varbind.lo: ../include/net-snmp/machine/generic.h
 ./check_varbind.lo: ../include/net-snmp/net-snmp-includes.h
 ./check_varbind.lo: ../include/net-snmp/definitions.h
 ./check_varbind.lo: ../include/net-snmp/types.h
@@ -139,11 +180,8 @@
 ./check_varbind.lo: ../include/net-snmp/library/snmp_service.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./check_varbind.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./check_varbind.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./check_varbind.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./check_varbind.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./check_varbind.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -153,6 +191,7 @@
 ./check_varbind.lo: ../include/net-snmp/mib_api.h
 ./check_varbind.lo: ../include/net-snmp/library/parse.h
 ./check_varbind.lo: ../include/net-snmp/library/oid_stash.h
+./check_varbind.lo: ../include/net-snmp/net-snmp-features.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_impl.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp-tc.h
@@ -176,7 +215,6 @@
 ./check_varbind.lo: ../include/net-snmp/config_api.h
 ./check_varbind.lo: ../include/net-snmp/library/read_config.h
 ./check_varbind.lo: ../include/net-snmp/library/default_store.h
-./check_varbind.lo: ../include/net-snmp/net-snmp-config.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_enum.h
 ./check_varbind.lo: ../include/net-snmp/library/vacm.h
@@ -188,6 +226,7 @@
 ./check_varbind.lo: ../include/net-snmp/library/lcd_time.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_secmod.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./check_varbind.lo: ../include/net-snmp/library/snmptsm.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpusm.h
 ./closedir.lo: ../include/net-snmp/net-snmp-config.h
 ./closedir.lo: ../include/net-snmp/types.h
@@ -208,11 +247,8 @@
 ./closedir.lo: ../include/net-snmp/library/snmp_service.h
 ./closedir.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./closedir.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./closedir.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./closedir.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./closedir.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./closedir.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./closedir.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./closedir.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./closedir.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./closedir.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./closedir.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -222,11 +258,11 @@
 ./closedir.lo: ../include/net-snmp/mib_api.h
 ./closedir.lo: ../include/net-snmp/library/parse.h
 ./closedir.lo: ../include/net-snmp/library/oid_stash.h
+./closedir.lo: ../include/net-snmp/net-snmp-features.h
 ./closedir.lo: ../include/net-snmp/library/snmp_impl.h
 ./closedir.lo: ../include/net-snmp/library/snmp.h
 ./closedir.lo: ../include/net-snmp/library/snmp-tc.h
 ./closedir.lo: ../include/net-snmp/library/system.h
-./cmu_compat.lo: ../include/net-snmp/net-snmp-config.h
 ./container_binary_array.lo: ../include/net-snmp/net-snmp-config.h
 ./container_binary_array.lo: ../include/net-snmp/net-snmp-includes.h
 ./container_binary_array.lo: ../include/net-snmp/definitions.h
@@ -247,11 +283,8 @@
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_service.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./container_binary_array.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./container_binary_array.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./container_binary_array.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./container_binary_array.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./container_binary_array.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -261,6 +294,7 @@
 ./container_binary_array.lo: ../include/net-snmp/mib_api.h
 ./container_binary_array.lo: ../include/net-snmp/library/parse.h
 ./container_binary_array.lo: ../include/net-snmp/library/oid_stash.h
+./container_binary_array.lo: ../include/net-snmp/net-snmp-features.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_impl.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp-tc.h
@@ -295,8 +329,10 @@
 ./container_binary_array.lo: ../include/net-snmp/library/lcd_time.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_secmod.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./container_binary_array.lo: ../include/net-snmp/library/snmptsm.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpusm.h
 ./container.lo: ../include/net-snmp/net-snmp-config.h
+./container.lo: ../include/net-snmp/net-snmp-features.h
 ./container.lo: ../include/net-snmp/net-snmp-includes.h
 ./container.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
 ./container.lo: ../include/net-snmp/library/oid.h
@@ -315,11 +351,8 @@
 ./container.lo: ../include/net-snmp/library/snmp_service.h
 ./container.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./container.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./container.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./container.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./container.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./container.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./container.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./container.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./container.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./container.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./container.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -363,9 +396,11 @@
 ./container.lo: ../include/net-snmp/library/lcd_time.h
 ./container.lo: ../include/net-snmp/library/snmp_secmod.h
 ./container.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./container.lo: ../include/net-snmp/library/snmptsm.h
 ./container.lo: ../include/net-snmp/library/snmpusm.h
 ./container.lo: ../include/net-snmp/library/container_null.h
 ./container_iterator.lo: ../include/net-snmp/net-snmp-config.h
+./container_iterator.lo: ../include/net-snmp/net-snmp-features.h
 ./container_iterator.lo: ../include/net-snmp/net-snmp-includes.h
 ./container_iterator.lo: ../include/net-snmp/definitions.h
 ./container_iterator.lo: ../include/net-snmp/types.h
@@ -385,11 +420,8 @@
 ./container_iterator.lo: ../include/net-snmp/library/snmp_service.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./container_iterator.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./container_iterator.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./container_iterator.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./container_iterator.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./container_iterator.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -433,8 +465,10 @@
 ./container_iterator.lo: ../include/net-snmp/library/lcd_time.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp_secmod.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./container_iterator.lo: ../include/net-snmp/library/snmptsm.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpusm.h
 ./container_list_ssll.lo: ../include/net-snmp/net-snmp-config.h
+./container_list_ssll.lo: ../include/net-snmp/net-snmp-features.h
 ./container_list_ssll.lo: ../include/net-snmp/net-snmp-includes.h
 ./container_list_ssll.lo: ../include/net-snmp/definitions.h
 ./container_list_ssll.lo: ../include/net-snmp/types.h
@@ -454,11 +488,8 @@
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_service.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -502,8 +533,10 @@
 ./container_list_ssll.lo: ../include/net-snmp/library/lcd_time.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_secmod.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmptsm.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpusm.h
 ./container_null.lo: ../include/net-snmp/net-snmp-config.h
+./container_null.lo: ../include/net-snmp/net-snmp-features.h
 ./container_null.lo: ../include/net-snmp/net-snmp-includes.h
 ./container_null.lo: ../include/net-snmp/definitions.h
 ./container_null.lo: ../include/net-snmp/types.h
@@ -523,11 +556,8 @@
 ./container_null.lo: ../include/net-snmp/library/snmp_service.h
 ./container_null.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./container_null.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./container_null.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./container_null.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./container_null.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./container_null.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./container_null.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./container_null.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./container_null.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./container_null.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./container_null.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -571,9 +601,11 @@
 ./container_null.lo: ../include/net-snmp/library/lcd_time.h
 ./container_null.lo: ../include/net-snmp/library/snmp_secmod.h
 ./container_null.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./container_null.lo: ../include/net-snmp/library/snmptsm.h
 ./container_null.lo: ../include/net-snmp/library/snmpusm.h
 ./container_null.lo: ../include/net-snmp/library/container_null.h
 ./data_list.lo: ../include/net-snmp/net-snmp-config.h
+./data_list.lo: ../include/net-snmp/net-snmp-features.h
 ./data_list.lo: ../include/net-snmp/net-snmp-includes.h
 ./data_list.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
 ./data_list.lo: ../include/net-snmp/library/oid.h
@@ -592,11 +624,8 @@
 ./data_list.lo: ../include/net-snmp/library/snmp_service.h
 ./data_list.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./data_list.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./data_list.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./data_list.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./data_list.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./data_list.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./data_list.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./data_list.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./data_list.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./data_list.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./data_list.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -640,8 +669,10 @@
 ./data_list.lo: ../include/net-snmp/library/lcd_time.h
 ./data_list.lo: ../include/net-snmp/library/snmp_secmod.h
 ./data_list.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./data_list.lo: ../include/net-snmp/library/snmptsm.h
 ./data_list.lo: ../include/net-snmp/library/snmpusm.h
 ./default_store.lo: ../include/net-snmp/net-snmp-config.h
+./default_store.lo: ../include/net-snmp/net-snmp-features.h
 ./default_store.lo: ../include/net-snmp/types.h
 ./default_store.lo: ../include/net-snmp/library/oid.h
 ./default_store.lo: ../include/net-snmp/library/types.h
@@ -660,11 +691,8 @@
 ./default_store.lo: ../include/net-snmp/library/snmp_service.h
 ./default_store.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./default_store.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./default_store.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./default_store.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./default_store.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./default_store.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./default_store.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./default_store.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./default_store.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./default_store.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./default_store.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -700,6 +728,7 @@
 ./default_store.lo: ../include/net-snmp/library/snmp_assert.h
 ./default_store.lo: ../include/net-snmp/version.h
 ./dir_utils.lo: ../include/net-snmp/net-snmp-config.h
+./dir_utils.lo: ../include/net-snmp/net-snmp-features.h
 ./dir_utils.lo: ../include/net-snmp/net-snmp-includes.h
 ./dir_utils.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
 ./dir_utils.lo: ../include/net-snmp/library/oid.h
@@ -718,11 +747,8 @@
 ./dir_utils.lo: ../include/net-snmp/library/snmp_service.h
 ./dir_utils.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./dir_utils.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./dir_utils.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./dir_utils.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./dir_utils.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./dir_utils.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./dir_utils.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./dir_utils.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./dir_utils.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./dir_utils.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./dir_utils.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -766,6 +792,7 @@
 ./dir_utils.lo: ../include/net-snmp/library/lcd_time.h
 ./dir_utils.lo: ../include/net-snmp/library/snmp_secmod.h
 ./dir_utils.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./dir_utils.lo: ../include/net-snmp/library/snmptsm.h
 ./dir_utils.lo: ../include/net-snmp/library/snmpusm.h
 ./dir_utils.lo: ../include/net-snmp/library/file_utils.h
 ./dir_utils.lo: ../include/net-snmp/library/dir_utils.h
@@ -789,11 +816,8 @@
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_service.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -803,6 +827,7 @@
 ./fd_event_manager.lo: ../include/net-snmp/mib_api.h
 ./fd_event_manager.lo: ../include/net-snmp/library/parse.h
 ./fd_event_manager.lo: ../include/net-snmp/library/oid_stash.h
+./fd_event_manager.lo: ../include/net-snmp/net-snmp-features.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_impl.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp-tc.h
@@ -837,10 +862,12 @@
 ./fd_event_manager.lo: ../include/net-snmp/library/lcd_time.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_secmod.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmptsm.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpusm.h
 ./fd_event_manager.lo: ../include/net-snmp/library/fd_event_manager.h
 ./fd_event_manager.lo: ../include/net-snmp/library/large_fd_set.h
 ./file_utils.lo: ../include/net-snmp/net-snmp-config.h
+./file_utils.lo: ../include/net-snmp/net-snmp-features.h
 ./file_utils.lo: ../include/net-snmp/net-snmp-includes.h
 ./file_utils.lo: ../include/net-snmp/definitions.h
 ./file_utils.lo: ../include/net-snmp/types.h
@@ -860,11 +887,8 @@
 ./file_utils.lo: ../include/net-snmp/library/snmp_service.h
 ./file_utils.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./file_utils.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./file_utils.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./file_utils.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./file_utils.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./file_utils.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./file_utils.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./file_utils.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./file_utils.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./file_utils.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./file_utils.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -908,6 +932,7 @@
 ./file_utils.lo: ../include/net-snmp/library/lcd_time.h
 ./file_utils.lo: ../include/net-snmp/library/snmp_secmod.h
 ./file_utils.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./file_utils.lo: ../include/net-snmp/library/snmptsm.h
 ./file_utils.lo: ../include/net-snmp/library/snmpusm.h
 ./file_utils.lo: ../include/net-snmp/library/file_utils.h
 ./getopt.lo: ../include/net-snmp/net-snmp-config.h
@@ -931,11 +956,8 @@
 ./gettimeofday.lo: ../include/net-snmp/library/snmp_service.h
 ./gettimeofday.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./gettimeofday.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./gettimeofday.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./gettimeofday.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./gettimeofday.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./gettimeofday.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./gettimeofday.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./gettimeofday.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./gettimeofday.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./gettimeofday.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./gettimeofday.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -945,6 +967,7 @@
 ./gettimeofday.lo: ../include/net-snmp/mib_api.h
 ./gettimeofday.lo: ../include/net-snmp/library/parse.h
 ./gettimeofday.lo: ../include/net-snmp/library/oid_stash.h
+./gettimeofday.lo: ../include/net-snmp/net-snmp-features.h
 ./gettimeofday.lo: ../include/net-snmp/library/snmp_impl.h
 ./gettimeofday.lo: ../include/net-snmp/library/snmp.h
 ./gettimeofday.lo: ../include/net-snmp/library/snmp-tc.h
@@ -968,11 +991,8 @@
 ./inet_ntop.lo: ../include/net-snmp/library/snmp_service.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./inet_ntop.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./inet_ntop.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./inet_ntop.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./inet_ntop.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -982,6 +1002,7 @@
 ./inet_ntop.lo: ../include/net-snmp/mib_api.h
 ./inet_ntop.lo: ../include/net-snmp/library/parse.h
 ./inet_ntop.lo: ../include/net-snmp/library/oid_stash.h
+./inet_ntop.lo: ../include/net-snmp/net-snmp-features.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmp_impl.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmp.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmp-tc.h inet_ntop.h
@@ -1004,11 +1025,8 @@
 ./inet_pton.lo: ../include/net-snmp/library/snmp_service.h
 ./inet_pton.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./inet_pton.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./inet_pton.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./inet_pton.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./inet_pton.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./inet_pton.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./inet_pton.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./inet_pton.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./inet_pton.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./inet_pton.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./inet_pton.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1018,6 +1036,7 @@
 ./inet_pton.lo: ../include/net-snmp/mib_api.h
 ./inet_pton.lo: ../include/net-snmp/library/parse.h
 ./inet_pton.lo: ../include/net-snmp/library/oid_stash.h
+./inet_pton.lo: ../include/net-snmp/net-snmp-features.h
 ./inet_pton.lo: ../include/net-snmp/library/snmp_impl.h
 ./inet_pton.lo: ../include/net-snmp/library/snmp.h
 ./inet_pton.lo: ../include/net-snmp/library/snmp-tc.h inet_pton.h
@@ -1039,11 +1058,8 @@
 ./int64.lo: ../include/net-snmp/library/snmp_service.h
 ./int64.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./int64.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./int64.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./int64.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./int64.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./int64.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./int64.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./int64.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./int64.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./int64.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./int64.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1052,12 +1068,14 @@
 ./int64.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./int64.lo: ../include/net-snmp/library/parse.h
 ./int64.lo: ../include/net-snmp/library/oid_stash.h
+./int64.lo: ../include/net-snmp/net-snmp-features.h
 ./int64.lo: ../include/net-snmp/library/snmp_impl.h
 ./int64.lo: ../include/net-snmp/library/snmp.h
 ./int64.lo: ../include/net-snmp/library/snmp-tc.h
 ./int64.lo: ../include/net-snmp/library/int64.h
 ./int64.lo: ../include/net-snmp/library/snmp_assert.h
 ./keytools.lo: ../include/net-snmp/net-snmp-config.h
+./keytools.lo: ../include/net-snmp/net-snmp-features.h
 ./keytools.lo: ../include/net-snmp/types.h
 ./keytools.lo: ../include/net-snmp/library/oid.h
 ./keytools.lo: ../include/net-snmp/library/types.h
@@ -1076,11 +1094,8 @@
 ./keytools.lo: ../include/net-snmp/library/snmp_service.h
 ./keytools.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./keytools.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./keytools.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./keytools.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./keytools.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./keytools.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./keytools.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./keytools.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./keytools.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./keytools.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./keytools.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1132,11 +1147,8 @@
 ./large_fd_set.lo: ../include/net-snmp/library/snmp_service.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./large_fd_set.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./large_fd_set.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./large_fd_set.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./large_fd_set.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1146,6 +1158,7 @@
 ./large_fd_set.lo: ../include/net-snmp/mib_api.h
 ./large_fd_set.lo: ../include/net-snmp/library/parse.h
 ./large_fd_set.lo: ../include/net-snmp/library/oid_stash.h
+./large_fd_set.lo: ../include/net-snmp/net-snmp-features.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmp_impl.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmp.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1180,9 +1193,11 @@
 ./large_fd_set.lo: ../include/net-snmp/library/lcd_time.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmp_secmod.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./large_fd_set.lo: ../include/net-snmp/library/snmptsm.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmpusm.h
 ./large_fd_set.lo: ../include/net-snmp/library/large_fd_set.h
 ./lcd_time.lo: ../include/net-snmp/net-snmp-config.h
+./lcd_time.lo: ../include/net-snmp/net-snmp-features.h
 ./lcd_time.lo: ../include/net-snmp/types.h
 ./lcd_time.lo: ../include/net-snmp/library/oid.h
 ./lcd_time.lo: ../include/net-snmp/library/types.h
@@ -1201,11 +1216,8 @@
 ./lcd_time.lo: ../include/net-snmp/library/snmp_service.h
 ./lcd_time.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./lcd_time.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./lcd_time.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./lcd_time.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./lcd_time.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./lcd_time.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./lcd_time.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./lcd_time.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./lcd_time.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./lcd_time.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./lcd_time.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1258,11 +1270,8 @@
 ./md5.lo: ../include/net-snmp/library/snmp_service.h
 ./md5.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./md5.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./md5.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./md5.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./md5.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./md5.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./md5.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./md5.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./md5.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./md5.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./md5.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1271,6 +1280,7 @@
 ./md5.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./md5.lo: ../include/net-snmp/library/parse.h
 ./md5.lo: ../include/net-snmp/library/oid_stash.h
+./md5.lo: ../include/net-snmp/net-snmp-features.h
 ./md5.lo: ../include/net-snmp/library/snmp_impl.h
 ./md5.lo: ../include/net-snmp/library/snmp.h
 ./md5.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1303,9 +1313,11 @@
 ./md5.lo: ../include/net-snmp/library/lcd_time.h
 ./md5.lo: ../include/net-snmp/library/snmp_secmod.h
 ./md5.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./md5.lo: ../include/net-snmp/library/snmptsm.h
 ./md5.lo: ../include/net-snmp/library/snmpusm.h
 ./md5.lo: ../include/net-snmp/library/md5.h
 ./mib.lo: ../include/net-snmp/net-snmp-config.h
+./mib.lo: ../include/net-snmp/net-snmp-features.h
 ./mib.lo: ../include/net-snmp/types.h
 ./mib.lo: ../include/net-snmp/library/oid.h
 ./mib.lo: ../include/net-snmp/library/types.h
@@ -1323,11 +1335,8 @@
 ./mib.lo: ../include/net-snmp/library/snmp_service.h
 ./mib.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./mib.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./mib.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./mib.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./mib.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./mib.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mib.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./mib.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./mib.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./mib.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mib.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1363,6 +1372,7 @@
 ./mt_support.lo: ../include/net-snmp/net-snmp-config.h
 ./mt_support.lo: ../include/net-snmp/library/mt_support.h
 ./oid_stash.lo: ../include/net-snmp/net-snmp-config.h
+./oid_stash.lo: ../include/net-snmp/net-snmp-features.h
 ./oid_stash.lo: ../include/net-snmp/net-snmp-includes.h
 ./oid_stash.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
 ./oid_stash.lo: ../include/net-snmp/library/oid.h
@@ -1381,11 +1391,8 @@
 ./oid_stash.lo: ../include/net-snmp/library/snmp_service.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./oid_stash.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./oid_stash.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./oid_stash.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./oid_stash.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./oid_stash.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1429,6 +1436,7 @@
 ./oid_stash.lo: ../include/net-snmp/library/lcd_time.h
 ./oid_stash.lo: ../include/net-snmp/library/snmp_secmod.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./oid_stash.lo: ../include/net-snmp/library/snmptsm.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpusm.h
 ./opendir.lo: ../include/net-snmp/net-snmp-config.h
 ./opendir.lo: ../include/net-snmp/types.h
@@ -1449,11 +1457,8 @@
 ./opendir.lo: ../include/net-snmp/library/snmp_service.h
 ./opendir.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./opendir.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./opendir.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./opendir.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./opendir.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./opendir.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./opendir.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./opendir.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./opendir.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./opendir.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./opendir.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1462,11 +1467,13 @@
 ./opendir.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./opendir.lo: ../include/net-snmp/library/parse.h
 ./opendir.lo: ../include/net-snmp/library/oid_stash.h
+./opendir.lo: ../include/net-snmp/net-snmp-features.h
 ./opendir.lo: ../include/net-snmp/library/snmp_impl.h
 ./opendir.lo: ../include/net-snmp/library/snmp.h
 ./opendir.lo: ../include/net-snmp/library/snmp-tc.h
 ./opendir.lo: ../include/net-snmp/library/system.h
 ./parse.lo: ../include/net-snmp/net-snmp-config.h
+./parse.lo: ../include/net-snmp/net-snmp-features.h
 ./parse.lo: ../include/net-snmp/types.h
 ./parse.lo: ../include/net-snmp/library/oid.h
 ./parse.lo: ../include/net-snmp/library/types.h
@@ -1484,11 +1491,8 @@
 ./parse.lo: ../include/net-snmp/library/snmp_service.h
 ./parse.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./parse.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./parse.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./parse.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./parse.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./parse.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./parse.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./parse.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./parse.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./parse.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./parse.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1524,6 +1528,7 @@
 ./parse.lo: ../include/net-snmp/version.h
 ./pkcs.lo: ../include/net-snmp/net-snmp-config.h
 ./read_config.lo: ../include/net-snmp/net-snmp-config.h
+./read_config.lo: ../include/net-snmp/net-snmp-features.h
 ./read_config.lo: ../include/net-snmp/types.h
 ./read_config.lo: ../include/net-snmp/library/oid.h
 ./read_config.lo: ../include/net-snmp/library/types.h
@@ -1542,11 +1547,8 @@
 ./read_config.lo: ../include/net-snmp/library/snmp_service.h
 ./read_config.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./read_config.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./read_config.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./read_config.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./read_config.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./read_config.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./read_config.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./read_config.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./read_config.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./read_config.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./read_config.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1600,11 +1602,8 @@
 ./readdir.lo: ../include/net-snmp/library/snmp_service.h
 ./readdir.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./readdir.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./readdir.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./readdir.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./readdir.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./readdir.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./readdir.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./readdir.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./readdir.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./readdir.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./readdir.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1613,11 +1612,13 @@
 ./readdir.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./readdir.lo: ../include/net-snmp/library/parse.h
 ./readdir.lo: ../include/net-snmp/library/oid_stash.h
+./readdir.lo: ../include/net-snmp/net-snmp-features.h
 ./readdir.lo: ../include/net-snmp/library/snmp_impl.h
 ./readdir.lo: ../include/net-snmp/library/snmp.h
 ./readdir.lo: ../include/net-snmp/library/snmp-tc.h
 ./readdir.lo: ../include/net-snmp/library/system.h
 ./scapi.lo: ../include/net-snmp/net-snmp-config.h
+./scapi.lo: ../include/net-snmp/net-snmp-features.h
 ./scapi.lo: ../include/net-snmp/types.h
 ./scapi.lo: ../include/net-snmp/library/oid.h
 ./scapi.lo: ../include/net-snmp/library/types.h
@@ -1635,11 +1636,8 @@
 ./scapi.lo: ../include/net-snmp/library/snmp_service.h
 ./scapi.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./scapi.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./scapi.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./scapi.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./scapi.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./scapi.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./scapi.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./scapi.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./scapi.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./scapi.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./scapi.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1691,11 +1689,8 @@
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_alarm.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_alarm.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_alarm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_alarm.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1705,6 +1700,7 @@
 ./snmp_alarm.lo: ../include/net-snmp/mib_api.h
 ./snmp_alarm.lo: ../include/net-snmp/library/parse.h
 ./snmp_alarm.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_alarm.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1731,6 +1727,7 @@
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_alarm.lo: ../include/net-snmp/version.h
 ./snmp_api.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_api.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_api.lo: ../include/net-snmp/types.h
 ./snmp_api.lo: ../include/net-snmp/library/oid.h
 ./snmp_api.lo: ../include/net-snmp/library/types.h
@@ -1749,11 +1746,8 @@
 ./snmp_api.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_api.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_api.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_api.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_api.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_api.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_api.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_api.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_api.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_api.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_api.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_api.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1814,11 +1808,8 @@
 ./snmp_auth.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_auth.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_auth.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_auth.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_auth.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1828,6 +1819,7 @@
 ./snmp_auth.lo: ../include/net-snmp/mib_api.h
 ./snmp_auth.lo: ../include/net-snmp/library/parse.h
 ./snmp_auth.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_auth.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmp.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1867,11 +1859,8 @@
 ./snmp.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1880,10 +1869,12 @@
 ./snmp.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./snmp.lo: ../include/net-snmp/library/parse.h
 ./snmp.lo: ../include/net-snmp/library/oid_stash.h
+./snmp.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp.lo: ../include/net-snmp/library/snmp.h
 ./snmp.lo: ../include/net-snmp/library/snmp-tc.h
 ./snmp_client.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_client.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_client.lo: ../include/net-snmp/types.h
 ./snmp_client.lo: ../include/net-snmp/library/oid.h
 ./snmp_client.lo: ../include/net-snmp/library/types.h
@@ -1902,11 +1893,8 @@
 ./snmp_client.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_client.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_client.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_client.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_client.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_client.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_client.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_client.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_client.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_client.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_client.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_client.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1943,11 +1931,8 @@
 ./snmp_debug.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_debug.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_debug.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_debug.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_debug.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1957,6 +1942,7 @@
 ./snmp_debug.lo: ../include/net-snmp/mib_api.h
 ./snmp_debug.lo: ../include/net-snmp/library/parse.h
 ./snmp_debug.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_debug.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmp.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1983,6 +1969,7 @@
 ./snmp_debug.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_debug.lo: ../include/net-snmp/version.h
 ./snmp_enum.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_enum.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_enum.lo: ../include/net-snmp/types.h
 ./snmp_enum.lo: ../include/net-snmp/library/oid.h
 ./snmp_enum.lo: ../include/net-snmp/library/types.h
@@ -2001,11 +1988,8 @@
 ./snmp_enum.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_enum.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_enum.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_enum.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_enum.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2042,11 +2026,8 @@
 ./snmpksm.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpksm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpksm.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpksm.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpksm.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpksm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpksm.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpksm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpksm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpksm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpksm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpksm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2055,6 +2036,7 @@
 ./snmpksm.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./snmpksm.lo: ../include/net-snmp/library/parse.h
 ./snmpksm.lo: ../include/net-snmp/library/oid_stash.h
+./snmpksm.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpksm.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpksm.lo: ../include/net-snmp/library/snmp.h
 ./snmpksm.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2089,6 +2071,7 @@
 ./snmpksm.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpksm.lo: ../include/net-snmp/library/snmpksm.h
 ./snmp_logging.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_logging.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_logging.lo: ../include/net-snmp/types.h
 ./snmp_logging.lo: ../include/net-snmp/library/oid.h
 ./snmp_logging.lo: ../include/net-snmp/library/types.h
@@ -2107,11 +2090,8 @@
 ./snmp_logging.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_logging.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_logging.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_logging.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_logging.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2166,11 +2146,8 @@
 ./snmp_openssl.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_openssl.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_openssl.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_openssl.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_openssl.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2180,6 +2157,7 @@
 ./snmp_openssl.lo: ../include/net-snmp/mib_api.h
 ./snmp_openssl.lo: ../include/net-snmp/library/parse.h
 ./snmp_openssl.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_openssl.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmp.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2214,6 +2192,7 @@
 ./snmp_openssl.lo: ../include/net-snmp/library/lcd_time.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmptsm.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmpusm.h
 ./snmp_parse_args.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp_parse_args.lo: ../include/net-snmp/net-snmp-includes.h
@@ -2235,11 +2214,8 @@
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2249,6 +2225,7 @@
 ./snmp_parse_args.lo: ../include/net-snmp/mib_api.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/parse.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_parse_args.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmp.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2283,6 +2260,7 @@
 ./snmp_parse_args.lo: ../include/net-snmp/library/lcd_time.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmptsm.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmpusm.h
 ./snmp_secmod.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp_secmod.lo: ../include/net-snmp/types.h
@@ -2303,11 +2281,8 @@
 ./snmp_secmod.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2317,6 +2292,7 @@
 ./snmp_secmod.lo: ../include/net-snmp/mib_api.h
 ./snmp_secmod.lo: ../include/net-snmp/library/parse.h
 ./snmp_secmod.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_secmod.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmp.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2344,7 +2320,9 @@
 ./snmp_secmod.lo: ../include/net-snmp/version.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmptsm.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmpusm.h snmpsm_init.h
+./snmp_secmod.lo: snmpsm_shutdown.h
 ./snmp_service.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp_service.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmp_service.lo: ../include/net-snmp/definitions.h
@@ -2365,11 +2343,8 @@
 ./snmp_service.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_service.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_service.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_service.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_service.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_service.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2379,6 +2354,7 @@
 ./snmp_service.lo: ../include/net-snmp/mib_api.h
 ./snmp_service.lo: ../include/net-snmp/library/parse.h
 ./snmp_service.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_service.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_service.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_service.lo: ../include/net-snmp/library/snmp.h
 ./snmp_service.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2413,8 +2389,10 @@
 ./snmp_service.lo: ../include/net-snmp/library/lcd_time.h
 ./snmp_service.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_service.lo: ../include/net-snmp/library/snmptsm.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpusm.h
 ./snmp-tc.lo: ../include/net-snmp/net-snmp-config.h
+./snmp-tc.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp-tc.lo: ../include/net-snmp/types.h
 ./snmp-tc.lo: ../include/net-snmp/library/oid.h
 ./snmp-tc.lo: ../include/net-snmp/library/types.h
@@ -2433,11 +2411,8 @@
 ./snmp-tc.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp-tc.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp-tc.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp-tc.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp-tc.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2450,6 +2425,7 @@
 ./snmp-tc.lo: ../include/net-snmp/library/snmp.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmp-tc.h
 ./snmp_transport.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_transport.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_transport.lo: ../include/net-snmp/types.h
 ./snmp_transport.lo: ../include/net-snmp/library/oid.h
 ./snmp_transport.lo: ../include/net-snmp/library/types.h
@@ -2468,11 +2444,8 @@
 ./snmp_transport.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_transport.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_transport.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmp_transport.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmp_transport.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2502,6 +2475,9 @@
 ./snmp_transport.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_transport.lo: ../include/net-snmp/version.h
 ./snmp_transport.lo: ../include/net-snmp/library/default_store.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmp_transport.lo: ../include/net-snmp/library/read_config.h
 ./snmp_transport.lo: ../include/net-snmp/config_api.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmp_parse_args.h
@@ -2509,6 +2485,7 @@
 ./snmp_transport.lo: ../include/net-snmp/library/vacm.h
 ./snmp_transport.lo: transports/snmp_transport_inits.h
 ./snmptsm.lo: ../include/net-snmp/net-snmp-config.h
+./snmptsm.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptsm.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmptsm.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
 ./snmptsm.lo: ../include/net-snmp/library/oid.h
@@ -2527,11 +2504,8 @@
 ./snmptsm.lo: ../include/net-snmp/library/snmp_service.h
 ./snmptsm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmptsm.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptsm.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptsm.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmptsm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmptsm.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmptsm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptsm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmptsm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmptsm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptsm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2573,9 +2547,10 @@
 ./snmptsm.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptsm.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptsm.lo: ../include/net-snmp/library/snmpv3-security-includes.h
-./snmptsm.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptsm.lo: ../include/net-snmp/library/snmptsm.h
+./snmptsm.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpusm.lo: ../include/net-snmp/net-snmp-config.h
+./snmpusm.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpusm.lo: ../include/net-snmp/types.h
 ./snmpusm.lo: ../include/net-snmp/library/oid.h
 ./snmpusm.lo: ../include/net-snmp/library/types.h
@@ -2594,11 +2569,8 @@
 ./snmpusm.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2656,11 +2628,8 @@
 ./snmpv3.lo: ../include/net-snmp/library/snmp_service.h
 ./snmpv3.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpv3.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpv3.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpv3.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./snmpv3.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./snmpv3.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpv3.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpv3.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./snmpv3.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./snmpv3.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpv3.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2669,6 +2638,7 @@
 ./snmpv3.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./snmpv3.lo: ../include/net-snmp/library/parse.h
 ./snmpv3.lo: ../include/net-snmp/library/oid_stash.h
+./snmpv3.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpv3.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpv3.lo: ../include/net-snmp/library/snmp.h
 ./snmpv3.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2724,11 +2694,8 @@
 ./strlcat.lo: ../include/net-snmp/library/snmp_service.h
 ./strlcat.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./strlcat.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./strlcat.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./strlcat.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./strlcat.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./strlcat.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./strlcat.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./strlcat.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./strlcat.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./strlcat.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./strlcat.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2737,6 +2704,7 @@
 ./strlcat.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./strlcat.lo: ../include/net-snmp/library/parse.h
 ./strlcat.lo: ../include/net-snmp/library/oid_stash.h
+./strlcat.lo: ../include/net-snmp/net-snmp-features.h
 ./strlcat.lo: ../include/net-snmp/library/snmp_impl.h
 ./strlcat.lo: ../include/net-snmp/library/snmp.h
 ./strlcat.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2760,11 +2728,8 @@
 ./strlcpy.lo: ../include/net-snmp/library/snmp_service.h
 ./strlcpy.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./strlcpy.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./strlcpy.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./strlcpy.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./strlcpy.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./strlcpy.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./strlcpy.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./strlcpy.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./strlcpy.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./strlcpy.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./strlcpy.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2773,6 +2738,7 @@
 ./strlcpy.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./strlcpy.lo: ../include/net-snmp/library/parse.h
 ./strlcpy.lo: ../include/net-snmp/library/oid_stash.h
+./strlcpy.lo: ../include/net-snmp/net-snmp-features.h
 ./strlcpy.lo: ../include/net-snmp/library/snmp_impl.h
 ./strlcpy.lo: ../include/net-snmp/library/snmp.h
 ./strlcpy.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2796,11 +2762,8 @@
 ./strtok_r.lo: ../include/net-snmp/library/snmp_service.h
 ./strtok_r.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./strtok_r.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./strtok_r.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./strtok_r.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./strtok_r.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./strtok_r.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./strtok_r.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./strtok_r.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./strtok_r.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./strtok_r.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./strtok_r.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2810,6 +2773,7 @@
 ./strtok_r.lo: ../include/net-snmp/mib_api.h
 ./strtok_r.lo: ../include/net-snmp/library/parse.h
 ./strtok_r.lo: ../include/net-snmp/library/oid_stash.h
+./strtok_r.lo: ../include/net-snmp/net-snmp-features.h
 ./strtok_r.lo: ../include/net-snmp/library/snmp_impl.h
 ./strtok_r.lo: ../include/net-snmp/library/snmp.h
 ./strtok_r.lo: ../include/net-snmp/library/snmp-tc.h
@@ -2834,11 +2798,8 @@
 ./strtoull.lo: ../include/net-snmp/library/snmp_service.h
 ./strtoull.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./strtoull.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./strtoull.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./strtoull.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./strtoull.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./strtoull.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./strtoull.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./strtoull.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./strtoull.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./strtoull.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./strtoull.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2848,11 +2809,13 @@
 ./strtoull.lo: ../include/net-snmp/mib_api.h
 ./strtoull.lo: ../include/net-snmp/library/parse.h
 ./strtoull.lo: ../include/net-snmp/library/oid_stash.h
+./strtoull.lo: ../include/net-snmp/net-snmp-features.h
 ./strtoull.lo: ../include/net-snmp/library/snmp_impl.h
 ./strtoull.lo: ../include/net-snmp/library/snmp.h
 ./strtoull.lo: ../include/net-snmp/library/snmp-tc.h
 ./strtoull.lo: ../include/net-snmp/library/system.h
 ./system.lo: ../include/net-snmp/net-snmp-config.h
+./system.lo: ../include/net-snmp/net-snmp-features.h
 ./system.lo: ../include/net-snmp/types.h
 ./system.lo: ../include/net-snmp/library/oid.h
 ./system.lo: ../include/net-snmp/library/types.h
@@ -2870,11 +2833,8 @@
 ./system.lo: ../include/net-snmp/library/snmp_service.h
 ./system.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./system.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./system.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./system.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./system.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./system.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./system.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./system.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./system.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./system.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./system.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -2907,77 +2867,9 @@
 ./system.lo: ../include/net-snmp/library/default_store.h
 ./system.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./system.lo: ../include/net-snmp/library/snmp_enum.h
-./system.lo: ../include/net-snmp/library/vacm.h
-./test_binary_array.lo: ../include/net-snmp/net-snmp-config.h
-./test_binary_array.lo: ../include/net-snmp/net-snmp-includes.h
-./test_binary_array.lo: ../include/net-snmp/definitions.h
-./test_binary_array.lo: ../include/net-snmp/types.h
-./test_binary_array.lo: ../include/net-snmp/library/oid.h
-./test_binary_array.lo: ../include/net-snmp/library/types.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_api.h
-./test_binary_array.lo: ../include/net-snmp/varbind_api.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_client.h
-./test_binary_array.lo: ../include/net-snmp/pdu_api.h
-./test_binary_array.lo: ../include/net-snmp/library/asn1.h
-./test_binary_array.lo: ../include/net-snmp/output_api.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_debug.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_logging.h
-./test_binary_array.lo: ../include/net-snmp/session_api.h
-./test_binary_array.lo: ../include/net-snmp/library/callback.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_transport.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_service.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/ucd_compat.h
-./test_binary_array.lo: ../include/net-snmp/library/mib.h
-./test_binary_array.lo: ../include/net-snmp/mib_api.h
-./test_binary_array.lo: ../include/net-snmp/library/parse.h
-./test_binary_array.lo: ../include/net-snmp/library/oid_stash.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_impl.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp-tc.h
-./test_binary_array.lo: ../include/net-snmp/library/getopt.h
-./test_binary_array.lo: ../include/net-snmp/utilities.h
-./test_binary_array.lo: ../include/net-snmp/library/system.h
-./test_binary_array.lo: ../include/net-snmp/library/tools.h
-./test_binary_array.lo: ../include/net-snmp/library/int64.h
-./test_binary_array.lo: ../include/net-snmp/library/mt_support.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_alarm.h
-./test_binary_array.lo: ../include/net-snmp/library/data_list.h
-./test_binary_array.lo: ../include/net-snmp/library/check_varbind.h
-./test_binary_array.lo: ../include/net-snmp/library/container.h
-./test_binary_array.lo: ../include/net-snmp/library/factory.h
-./test_binary_array.lo: ../include/net-snmp/library/container_binary_array.h
-./test_binary_array.lo: ../include/net-snmp/library/container_list_ssll.h
-./test_binary_array.lo: ../include/net-snmp/library/container_iterator.h
-./test_binary_array.lo: ../include/net-snmp/library/container.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_assert.h
-./test_binary_array.lo: ../include/net-snmp/version.h
-./test_binary_array.lo: ../include/net-snmp/config_api.h
-./test_binary_array.lo: ../include/net-snmp/library/read_config.h
-./test_binary_array.lo: ../include/net-snmp/library/default_store.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_parse_args.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_enum.h
-./test_binary_array.lo: ../include/net-snmp/library/vacm.h
-./test_binary_array.lo: ../include/net-snmp/snmpv3_api.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpv3.h
-./test_binary_array.lo: ../include/net-snmp/library/transform_oids.h
-./test_binary_array.lo: ../include/net-snmp/library/keytools.h
-./test_binary_array.lo: ../include/net-snmp/library/scapi.h
-./test_binary_array.lo: ../include/net-snmp/library/lcd_time.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_secmod.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpv3-security-includes.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpusm.h
+./system.lo: ../include/net-snmp/library/vacm.h inet_ntop.h
 ./text_utils.lo: ../include/net-snmp/net-snmp-config.h
+./text_utils.lo: ../include/net-snmp/net-snmp-features.h
 ./text_utils.lo: ../include/net-snmp/net-snmp-includes.h
 ./text_utils.lo: ../include/net-snmp/definitions.h
 ./text_utils.lo: ../include/net-snmp/types.h
@@ -2997,11 +2889,8 @@
 ./text_utils.lo: ../include/net-snmp/library/snmp_service.h
 ./text_utils.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./text_utils.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./text_utils.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./text_utils.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./text_utils.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./text_utils.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./text_utils.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./text_utils.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./text_utils.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./text_utils.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./text_utils.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3045,10 +2934,12 @@
 ./text_utils.lo: ../include/net-snmp/library/lcd_time.h
 ./text_utils.lo: ../include/net-snmp/library/snmp_secmod.h
 ./text_utils.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./text_utils.lo: ../include/net-snmp/library/snmptsm.h
 ./text_utils.lo: ../include/net-snmp/library/snmpusm.h
 ./text_utils.lo: ../include/net-snmp/library/file_utils.h
 ./text_utils.lo: ../include/net-snmp/library/text_utils.h
 ./tools.lo: ../include/net-snmp/net-snmp-config.h
+./tools.lo: ../include/net-snmp/net-snmp-features.h
 ./tools.lo: ../include/net-snmp/types.h
 ./tools.lo: ../include/net-snmp/library/oid.h
 ./tools.lo: ../include/net-snmp/library/types.h
@@ -3066,11 +2957,8 @@
 ./tools.lo: ../include/net-snmp/library/snmp_service.h
 ./tools.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./tools.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./tools.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./tools.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./tools.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./tools.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./tools.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./tools.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./tools.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./tools.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./tools.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3099,6 +2987,7 @@
 ./tools.lo: ../include/net-snmp/library/snmp_assert.h
 ./tools.lo: ../include/net-snmp/version.h ../include/net-snmp/library/scapi.h
 ./ucd_compat.lo: ../include/net-snmp/net-snmp-config.h
+./ucd_compat.lo: ../include/net-snmp/net-snmp-features.h
 ./ucd_compat.lo: ../include/net-snmp/types.h
 ./ucd_compat.lo: ../include/net-snmp/library/oid.h
 ./ucd_compat.lo: ../include/net-snmp/library/types.h
@@ -3117,11 +3006,8 @@
 ./ucd_compat.lo: ../include/net-snmp/library/snmp_service.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./ucd_compat.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./ucd_compat.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./ucd_compat.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./ucd_compat.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./ucd_compat.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3158,11 +3044,8 @@
 ./vacm.lo: ../include/net-snmp/library/snmp_service.h
 ./vacm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./vacm.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./vacm.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./vacm.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./vacm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./vacm.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./vacm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./vacm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./vacm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./vacm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./vacm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3171,6 +3054,7 @@
 ./vacm.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
 ./vacm.lo: ../include/net-snmp/library/parse.h
 ./vacm.lo: ../include/net-snmp/library/oid_stash.h
+./vacm.lo: ../include/net-snmp/net-snmp-features.h
 ./vacm.lo: ../include/net-snmp/library/snmp_impl.h
 ./vacm.lo: ../include/net-snmp/library/snmp.h
 ./vacm.lo: ../include/net-snmp/library/snmp-tc.h
@@ -3223,11 +3107,8 @@
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3237,6 +3118,7 @@
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp-tc.h
@@ -3246,6 +3128,7 @@
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_enum.h
 ./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/vacm.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/tools.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/net-snmp-config.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/types.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/oid.h
@@ -3265,11 +3148,8 @@
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3279,6 +3159,7 @@
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp-tc.h
@@ -3315,6 +3196,7 @@
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/lcd_time.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_secmod.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmptsm.h
 ./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpusm.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/net-snmp-config.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
@@ -3335,11 +3217,8 @@
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_transport.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3349,6 +3228,7 @@
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp-tc.h
@@ -3394,11 +3274,8 @@
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3408,49 +3285,13 @@
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/default_store.h
 ./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/system.h
 ./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/net-snmp-config.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/types.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/oid.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/types.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/definitions.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmp_api.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/varbind_api.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmp_client.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/pdu_api.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/asn1.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/output_api.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/session_api.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/callback.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmp_service.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/ucd_compat.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/mib.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/mib_api.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/parse.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/oid_stash.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmp.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
-./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/library/default_store.h
-./transports/snmpIPv6BaseDomain.lo: inet_ntop.h inet_pton.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/net-snmp-config.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3471,11 +3312,8 @@
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3484,6 +3322,7 @@
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp-tc.h
@@ -3493,6 +3332,7 @@
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp_enum.h
 ./transports/snmpIPXDomain.lo: ../include/net-snmp/library/vacm.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/tools.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/net-snmp-config.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/types.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/oid.h
@@ -3512,11 +3352,8 @@
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3526,6 +3363,7 @@
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
@@ -3535,6 +3373,7 @@
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/system.h
 ./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp_assert.h
 ./transports/snmpSSHDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpSSHDomain.h
 ./transports/snmpSSHDomain.lo: ../include/net-snmp/types.h
 ./transports/snmpSSHDomain.lo: ../include/net-snmp/library/oid.h
@@ -3554,11 +3393,8 @@
 ./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3600,11 +3436,8 @@
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3614,6 +3447,7 @@
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp-tc.h
@@ -3637,11 +3471,8 @@
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3651,6 +3482,7 @@
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
@@ -3674,11 +3506,8 @@
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3688,13 +3517,16 @@
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp-tc.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpSocketBaseDomain.h
 ./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpTCPBaseDomain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/tools.h
 ./transports/snmpTCPIPv6Domain.lo: ../include/net-snmp/net-snmp-config.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpTLSBaseDomain.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_transport.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/asn1.h
@@ -3715,11 +3547,8 @@
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3734,13 +3563,19 @@
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/factory.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/config_api.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/read_config.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/default_store.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/vacm.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/cert_util.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_openssl.h
-./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/default_store.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_assert.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_secmod.h
 ./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/system.h
 ./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpTLSTCPDomain.h
 ./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3761,9 +3596,6 @@
 ./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
 ./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
@@ -3811,11 +3643,8 @@
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3825,10 +3654,14 @@
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpSocketBaseDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/tools.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/default_store.h
 ./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/system.h
@@ -3852,11 +3685,8 @@
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3866,9 +3696,13 @@
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/config_api.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/read_config.h
 ./transports/snmpUDPDomain.lo: ../include/net-snmp/library/default_store.h
@@ -3898,11 +3732,8 @@
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3912,9 +3743,12 @@
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/tools.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_assert.h
 ./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/default_store.h
@@ -3939,11 +3773,8 @@
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpIPXDomain.h
@@ -3952,10 +3783,13 @@
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/mib_api.h
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/parse.h
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_impl.h
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp.h
 ./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/system.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/net-snmp-features.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp_transport.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/asn1.h
@@ -3974,11 +3808,8 @@
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/callback.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp_service.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
-./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
-./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -3999,3 +3830,4 @@
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/vacm.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpSocketBaseDomain.h
 ./transports/snmpUnixDomain.lo: ../include/net-snmp/library/system.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/tools.h
diff --git a/snmplib/Makefile.in b/snmplib/Makefile.in
index c1a086d..506b8d4 100644
--- a/snmplib/Makefile.in
+++ b/snmplib/Makefile.in
@@ -13,6 +13,7 @@
 #
 
 top_builddir=..
+mysubdir=snmplib
 
 # use GNU vpath, if available, to only set a path for source and headers
 # VPATH will pick up objects too, which is bad if you are sharing a
@@ -84,7 +85,6 @@
 	tools.h \
 	transform_oids.h \
 	types.h \
-        cmu_compat.h \
         getopt.h \
         lcd_time.h \
         mt_support.h \
@@ -138,61 +138,91 @@
 
 #
 # Things to build
+#   - for the feature checking / removal / minimialist support these
+#     must be listed such that code requiring a feature must be listed
+#     *before* the code implementing the feature.
 #
 CSRCS=	snmp_client.c mib.c parse.c snmp_api.c snmp.c 		\
-	large_fd_set.c cert_util.c				\
 	snmp_auth.c asn1.c md5.c snmp_parse_args.c		\
 	system.c vacm.c int64.c read_config.c pkcs.c		\
 	snmp_debug.c tools.c  snmp_logging.c text_utils.c	\
-	snmpv3.c lcd_time.c keytools.c file_utils.c dir_utils.c \
+	large_fd_set.c cert_util.c snmp_openssl.c 		\
+	snmpv3.c lcd_time.c keytools.c                          \
 	scapi.c callback.c default_store.c snmp_alarm.c		\
 	data_list.c oid_stash.c fd_event_manager.c 		\
+	check_varbind.c 					\
 	mt_support.c snmp_enum.c snmp-tc.c snmp_service.c	\
 	snprintf.c						\
 	snmp_transport.c @transport_src_list@			\
 	snmp_secmod.c @security_src_list@ snmp_version.c        \
-	check_varbind.c container.c container_binary_array.c	\
 	container_null.c container_list_ssll.c container_iterator.c \
-	cmu_compat.c ucd_compat.c                               \
-	snmp_openssl.c @other_src_list@ @crypto_files_c@
+	ucd_compat.c		                                \
+	@other_src_list@ @crypto_files_c@        		\
+	dir_utils.c file_utils.c 	                        \
+	container.c container_binary_array.c	
 
 OBJS=	snmp_client.o mib.o parse.o snmp_api.o snmp.o 		\
-	large_fd_set.o cert_util.o				\
 	snmp_auth.o asn1.o md5.o snmp_parse_args.o		\
 	system.o vacm.o int64.o read_config.o pkcs.o 		\
 	snmp_debug.o tools.o  snmp_logging.o text_utils.o	\
-	snmpv3.o lcd_time.o keytools.o file_utils.o dir_utils.o \
+	large_fd_set.o cert_util.o snmp_openssl.o 		\
+	snmpv3.o lcd_time.o keytools.o                          \
 	scapi.o callback.o default_store.o snmp_alarm.o		\
 	data_list.o oid_stash.o fd_event_manager.o		\
+	check_varbind.o 					\
 	mt_support.o snmp_enum.o snmp-tc.o snmp_service.o	\
 	snprintf.o						\
 	snmp_transport.o @transport_obj_list@                   \
 	snmp_secmod.o @security_obj_list@ snmp_version.o        \
-	check_varbind.o container.o container_binary_array.o	\
 	container_null.o container_list_ssll.o container_iterator.o \
-	cmu_compat.o ucd_compat.o                               \
-        snmp_openssl.o @crypto_files_o@ @other_objs_list@ @LIBOBJS@
+	ucd_compat.o                               		\
+        @crypto_files_o@ @other_objs_list@ @LIBOBJS@ 		\
+	dir_utils.o file_utils.o 	                        \
+	container.o container_binary_array.o	
 
 LOBJS=	snmp_client.lo mib.lo parse.lo snmp_api.lo snmp.lo 	\
-	large_fd_set.lo cert_util.lo				\
 	snmp_auth.lo asn1.lo md5.lo snmp_parse_args.lo		\
 	system.lo vacm.lo int64.lo read_config.lo pkcs.lo	\
 	snmp_debug.lo tools.lo  snmp_logging.lo	 text_utils.lo	\
-	snmpv3.lo lcd_time.lo keytools.lo file_utils.lo dir_utils.lo \
-	scapi.lo callback.lo default_store.lo snmp_alarm.lo		\
+	large_fd_set.lo cert_util.lo snmp_openssl.lo 		\
+	snmpv3.lo lcd_time.lo keytools.lo                       \
+	scapi.lo callback.lo default_store.lo snmp_alarm.lo	\
 	data_list.lo oid_stash.lo fd_event_manager.lo		\
+	check_varbind.lo 					\
 	mt_support.lo snmp_enum.lo snmp-tc.lo snmp_service.lo	\
 	snprintf.lo						\
 	snmp_transport.lo @transport_lobj_list@                 \
 	snmp_secmod.lo @security_lobj_list@ snmp_version.lo     \
-	check_varbind.lo container.lo container_binary_array.lo	\
-	container_null.lo container_list_ssll.lo container_iterator.lo \
-	cmu_compat.lo ucd_compat.lo                             \
-        snmp_openssl.lo @crypto_files_lo@ @other_lobjs_list@ @LTLIBOBJS@
+	container.lo container_binary_array.lo			\
+	ucd_compat.lo		                                \
+        @crypto_files_lo@ @other_lobjs_list@ @LTLIBOBJS@        \
+	dir_utils.lo file_utils.lo 	                        \
+	container_null.lo container_list_ssll.lo container_iterator.lo 
+
+FTOBJS=	snmp_client.ft mib.ft parse.ft snmp_api.ft snmp.ft 	\
+	snmp_auth.ft asn1.ft md5.ft snmp_parse_args.ft		\
+	system.ft vacm.ft int64.ft read_config.ft pkcs.ft	\
+	snmp_debug.ft tools.ft  snmp_logging.ft	 text_utils.ft	\
+	snmpv3.ft lcd_time.ft keytools.ft                       \
+	scapi.ft callback.ft default_store.ft snmp_alarm.ft	\
+	data_list.ft oid_stash.ft fd_event_manager.ft		\
+	check_varbind.ft 					\
+	mt_support.ft snmp_enum.ft snmp-tc.ft snmp_service.ft	\
+	snprintf.ft						\
+	snmp_transport.ft @transport_ftobj_list@                \
+	snmp_secmod.ft @security_ftobj_list@ snmp_version.ft    \
+	container.ft container_binary_array.ft	\
+	ucd_compat.ft		                             	\
+        @other_ftobjs_list@                     		\
+	large_fd_set.ft cert_util.ft snmp_openssl.ft 		\
+	dir_utils.ft file_utils.ft 	                        \
+	container_null.ft container_list_ssll.ft container_iterator.ft
 
 # just in case someone wants to remove libtool, change this to OBJS.
 TOBJS=$(LOBJS)
 
+FEATUREFILE     = $(top_builddir)/include/net-snmp/library/features.h
+
 # 
 CPPFLAGS = $(TOP_INCLUDES) -I. 	$(SNMPLIB_INCLUDES) @CPPFLAGS@
 
@@ -213,7 +243,3 @@
 parse:  mib.o parse.c
 	$(CC) $(CFLAGS) -DTEST parse.c -o $@ \
 		`$(top_srcdir)/net-snmp-config --libs`
-
-test_binary_array: test_binary_array.c
-	$(CC) $(CFLAGS) test_binary_array.c -o $@ \
-		`$(top_srcdir)/net-snmp-config --libs`
diff --git a/snmplib/callback.c b/snmplib/callback.c
index fea0f25..dfe537a 100644
--- a/snmplib/callback.c
+++ b/snmplib/callback.c
@@ -17,6 +17,7 @@
  *  @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <sys/types.h>
 #include <stdio.h>
 #if HAVE_STDLIB_H
@@ -52,6 +53,11 @@
 #include <net-snmp/library/callback.h>
 #include <net-snmp/library/snmp_api.h>
 
+netsnmp_feature_child_of(callbacks_all, libnetsnmp)
+
+netsnmp_feature_child_of(callback_count, callbacks_all)
+netsnmp_feature_child_of(callback_list, callbacks_all)
+
 /*
  * the inline callback methods use major/minor to index into arrays.
  * all users in this function do range checking before calling these
@@ -214,7 +220,9 @@
  * @param new_callback is the callback function that is registered.
  *
  * @param arg when not NULL is a void pointer used whenever new_callback 
- *	function is exercised.
+ *	function is exercised. Ownership is transferred to the twodimensional
+ *      thecallbacks[][] array. The function clear_callback() will deallocate
+ *      the memory pointed at by calling free().
  *
  * @return 
  *	Returns SNMPERR_GENERR if major is >= MAX_CALLBACK_IDS or minor is >=
@@ -234,6 +242,20 @@
                                       NETSNMP_CALLBACK_DEFAULT_PRIORITY);
 }
 
+/**
+ * Register a callback function.
+ *
+ * @param major        Major callback event type.
+ * @param minor        Minor callback event type.
+ * @param new_callback Callback function being registered.
+ * @param arg          Argument that will be passed to the callback function.
+ * @param priority     Handler invocation priority. When multiple handlers have
+ *   been registered for the same (major, minor) callback event type, handlers
+ *   with the numerically lowest priority will be invoked first. Handlers with
+ *   identical priority are invoked in the order they have been registered.
+ *
+ * @see snmp_register_callback
+ */
 int
 netsnmp_register_callback(int major, int minor, SNMPCallback * new_callback,
                           void *arg, int priority)
@@ -351,6 +373,7 @@
     return SNMPERR_SUCCESS;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CALLBACK_COUNT
 int
 snmp_count_callbacks(int major, int minor)
 {
@@ -370,6 +393,7 @@
 
     return count;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CALLBACK_COUNT */
 
 int
 snmp_callback_available(int major, int minor)
@@ -548,6 +572,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CALLBACK_LIST
 struct snmp_gen_callback *
 snmp_callback_list(int major, int minor)
 {
@@ -556,4 +581,5 @@
 
     return (thecallbacks[major][minor]);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CALLBACK_LIST */
 /**  @} */
diff --git a/snmplib/cert_util.c b/snmplib/cert_util.c
index 6b2cb30..246a6c9 100644
--- a/snmplib/cert_util.c
+++ b/snmplib/cert_util.c
@@ -1,13 +1,40 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+netsnmp_feature_child_of(cert_util_all, libnetsnmp)
+netsnmp_feature_child_of(cert_util, cert_util_all)
+#ifdef NETSNMP_FEATURE_REQUIRE_CERT_UTIL
+netsnmp_feature_require(container_directory)
+netsnmp_feature_require(container_fifo)
+netsnmp_feature_require(container_dup)
+netsnmp_feature_require(container_free_all)
+netsnmp_feature_require(subcontainer_find)
+
+netsnmp_feature_child_of(cert_map_remove, netsnmp_unused)
+netsnmp_feature_child_of(cert_map_find, netsnmp_unused)
+netsnmp_feature_child_of(tlstmparams_external, cert_util_all)
+netsnmp_feature_child_of(tlstmparams_container, tlstmparams_external)
+netsnmp_feature_child_of(tlstmparams_remove, tlstmparams_external)
+netsnmp_feature_child_of(tlstmparams_find, tlstmparams_external)
+netsnmp_feature_child_of(tlstmAddr_remove, netsnmp_unused)
+netsnmp_feature_child_of(tlstmaddr_external, cert_util_all)
+netsnmp_feature_child_of(tlstmaddr_container, tlstmaddr_external)
+netsnmp_feature_child_of(tlstmAddr_get_serverId, tlstmaddr_external)
+
+netsnmp_feature_child_of(cert_fingerprints, cert_util_all)
+netsnmp_feature_child_of(tls_fingerprint_build, cert_util_all)
+
+#endif /* NETSNMP_FEATURE_REQUIRE_CERT_UTIL */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CERT_UTIL
+
+#include <ctype.h>
 
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
 
-#include <ctype.h>
-
 #if HAVE_STRING_H
 #include <string.h>
 #else
@@ -228,6 +255,11 @@
 netsnmp_certs_shutdown(void)
 {
     DEBUGMSGT(("cert:util:shutdown","shutdown\n"));
+    if (_maps) {
+        CONTAINER_FREE_ALL(_maps, NULL);
+        CONTAINER_FREE(_maps);
+        _maps = NULL;
+    }
     if (NULL != _certs) {
         CONTAINER_FREE_ALL(_certs, NULL);
         CONTAINER_FREE(_certs);
@@ -1137,7 +1169,7 @@
 static void
 _find_partner(netsnmp_cert *cert, netsnmp_key *key)
 {
-    netsnmp_void_array *matching;
+    netsnmp_void_array *matching = NULL;
     char                filename[NAME_MAX], *pos;
 
     if ((cert && key) || (!cert && ! key)) {
@@ -1611,6 +1643,7 @@
                            se_find_label_in_slist("cert_hash_alg", c->hash_type),
                            c->hash_type, c->fingerprint));
         }
+        /* netsnmp_feature_require(cert_utils_dump_names) */
         /* netsnmp_openssl_cert_dump_names(c->ocert); */
         netsnmp_openssl_cert_dump_extensions(c->ocert);
     }
@@ -1701,7 +1734,6 @@
 netsnmp_cert_find(int what, int where, void *hint)
 {
     netsnmp_cert *result = NULL;
-    int           tmp;
     char         *fp, *hint_str;
 
     DEBUGMSGT(("cert:find:params", "looking for %s(%d) in %s(0x%x), hint %lu\n",
@@ -1711,13 +1743,20 @@
             
         switch (what) {
             case NS_CERT_IDENTITY: /* want my ID */
-                tmp = (ptrdiff_t)hint;
-                DEBUGMSGT(("cert:find:params", " hint = %s\n",
-                           tmp ? "server" : "client"));
                 fp =
                     netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                          tmp ? NETSNMP_DS_LIB_X509_SERVER_PUB :
-                                          NETSNMP_DS_LIB_X509_CLIENT_PUB );
+                                          NETSNMP_DS_LIB_TLS_LOCAL_CERT);
+                /** temp backwards compability; remove in 5.7 */
+                if (!fp) {
+                    int           tmp;
+                    tmp = (ptrdiff_t)hint;
+                    DEBUGMSGT(("cert:find:params", " hint = %s\n",
+                               tmp ? "server" : "client"));
+                    fp =
+                        netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, tmp ?
+                                              NETSNMP_DS_LIB_X509_SERVER_PUB :
+                                              NETSNMP_DS_LIB_X509_CLIENT_PUB );
+                }
                 if (!fp) {
                     /* As a special case, use the application type to
                        determine a file name to pull the default identity
@@ -1727,7 +1766,11 @@
                 break;
             case NS_CERT_REMOTE_PEER:
                 fp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                           NETSNMP_DS_LIB_X509_SERVER_PUB);
+                                           NETSNMP_DS_LIB_TLS_PEER_CERT);
+                /** temp backwards compability; remove in 5.7 */
+                if (!fp)
+                    fp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                               NETSNMP_DS_LIB_X509_SERVER_PUB);
                 break;
             default:
                 DEBUGMSGT(("cert:find:err", "unhandled type %d for %s(%d)\n",
@@ -1831,12 +1874,7 @@
     return result;
 }
 
-int
-netsnmp_cert_validate(int who, int how, X509 *cert)
-{
-    return -1;
-}
-
+#ifndef NETSNMP_FEATURE_REMOVE_CERT_FINGERPRINTS
 int
 netsnmp_cert_check_vb_fingerprint(const netsnmp_variable_list *var)
 {
@@ -1911,7 +1949,9 @@
 
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CERT_FINGERPRINTS */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TLS_FINGERPRINT_BUILD
 /**
  * combine a hash type and hex fingerprint into a SnmpTLSFingerprint
  *
@@ -1957,6 +1997,7 @@
                                
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TLS_FINGERPRINT_BUILD */
 
 /**
  * Trusts a given certificate for use in TLS translations.
@@ -2245,8 +2286,13 @@
     matching = CONTAINER_GET_SUBSET(container, &search);
     DEBUGMSGT(("9:cert:subset:found", "%" NETSNMP_PRIz "d matches\n", matching ?
                matching->size : 0));
-    if (matching && matching->size > 1)
+    if (matching && matching->size > 1) {
         _reduce_subset(matching, filename);
+        if (0 == matching->size) {
+            free(matching->array);
+            SNMP_FREE(matching);
+        }
+    }
     return matching;
 }
 
@@ -2261,8 +2307,13 @@
     netsnmp_assert(fn_container);
 
     matching = _cert_find_subset_common(filename, fn_container);
-    if (matching && (matching->size > 1) && directory)
+    if (matching && (matching->size > 1) && directory) {
         _reduce_subset_dir(matching, directory);
+        if (0 == matching->size) {
+            free(matching->array);
+            SNMP_FREE(matching);
+        }
+    }
     return matching;
 }
 
@@ -2428,6 +2479,7 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CERT_MAP_REMOVE
 int
 netsnmp_cert_map_remove(netsnmp_cert_map *map)
 {
@@ -2444,7 +2496,9 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CERT_MAP_REMOVE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CERT_MAP_FIND
 netsnmp_cert_map *
 netsnmp_cert_map_find(netsnmp_cert_map *map)
 {
@@ -2453,6 +2507,7 @@
 
     return CONTAINER_FIND(_maps, map);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CERT_MAP_FIND */
 
 static void
 _map_free(netsnmp_cert_map *map, void *context)
@@ -2502,10 +2557,9 @@
 netsnmp_container *
 netsnmp_cert_map_container_create(int with_fp)
 {
-    netsnmp_container *chain_map =
-        netsnmp_container_find("cert_map:stack:binary_array");
-    netsnmp_container *fp;
+    netsnmp_container *chain_map, *fp;
 
+    chain_map = netsnmp_container_find("cert_map:stack:binary_array");
     if (NULL == chain_map) {
         snmp_log(LOG_ERR, "could not allocate container for cert_map\n");
         return NULL;
@@ -2898,11 +2952,13 @@
                                 params_help);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_CONTAINER
 netsnmp_container *
 netsnmp_tlstmParams_container(void)
 {
     return _tlstmParams;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_CONTAINER */
 
 snmpTlstmParams *
 netsnmp_tlstmParams_create(const char *name, int hashType, const char *fp,
@@ -3006,6 +3062,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_REMOVE
 int
 netsnmp_tlstmParams_remove(snmpTlstmParams *stp)
 {
@@ -3022,7 +3079,9 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_REMOVE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_FIND
 snmpTlstmParams *
 netsnmp_tlstmParams_find(snmpTlstmParams *stp)
 {
@@ -3034,6 +3093,7 @@
     found = CONTAINER_FIND(_tlstmParams, stp);
     return found;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_FIND */
 
 static void
 _parse_params(const char *token, char *line)
@@ -3100,11 +3160,13 @@
                             addr_help);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMADDR_CONTAINER
 netsnmp_container *
 netsnmp_tlstmAddr_container(void)
 {
     return _tlstmAddr;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMADDR_CONTAINER */
 
 /*
  * create a new row in the table 
@@ -3210,6 +3272,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMADDR_REMOVE
 int
 netsnmp_tlstmAddr_remove(snmpTlstmAddr *entry)
 {
@@ -3223,6 +3286,7 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMADDR_REMOVE */
 
 static void
 _parse_addr(const char *token, char *line)
@@ -3274,6 +3338,7 @@
     return result->fingerprint;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMADDR_GET_SERVERID
 char *
 netsnmp_tlstmAddr_get_serverId(const char *name)
 {
@@ -3290,10 +3355,13 @@
 
     return result->identity;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMADDR_GET_SERVERID */
 /*
  * END snmpTlstmAddrTable data
  * ***************************************************************************/
 
 #else
-int cert_unused;	/* Suppress "empty translation unit" warning */
+netsnmp_feature_unused(cert_util);
+#endif /* NETSNMP_FEATURE_REMOVE_CERT_UTIL */
+netsnmp_feature_unused(cert_util);
 #endif /* defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL) */
diff --git a/snmplib/check_varbind.c b/snmplib/check_varbind.c
index 442795c..12b7a52 100644
--- a/snmplib/check_varbind.c
+++ b/snmplib/check_varbind.c
@@ -1,9 +1,27 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/library/check_varbind.h>
 
+netsnmp_feature_child_of(check_varbind_all, libnetsnmp)
+
+netsnmp_feature_child_of(check_vb_range, check_varbind_all)
+netsnmp_feature_child_of(check_vb_size_range, check_varbind_all)
+netsnmp_feature_child_of(check_vb_uint, check_varbind_all)
+netsnmp_feature_child_of(check_vb_storagetype, check_varbind_all)
+netsnmp_feature_child_of(check_vb_oid, check_varbind_all)
+netsnmp_feature_child_of(check_vb_type_and_max_size, check_varbind_all)
+netsnmp_feature_child_of(check_vb_type_and_max_size, check_varbind_all)
+netsnmp_feature_child_of(check_vb_rowstatus_with_storagetype, check_varbind_all)
+netsnmp_feature_child_of(check_vb_truthvalue, check_varbind_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_CHECK_VB_ROWSTATUS_WITH_STORAGETYPE
+netsnmp_feature_require(check_rowstatus_with_storagetype_transition)
+#endif /* NETSNMP_FEATURE_REQUIRES_CHECK_VB_ROWSTATUS_WITH_STORAGETYPE */
+
+
 NETSNMP_INLINE int
 netsnmp_check_vb_type(const netsnmp_variable_list *var, int type )
 {
@@ -49,6 +67,7 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_RANGE
 NETSNMP_INLINE int
 netsnmp_check_vb_range(const netsnmp_variable_list *var,
                        size_t low, size_t high )
@@ -64,7 +83,9 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_RANGE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_SIZE_RANGE
 NETSNMP_INLINE int
 netsnmp_check_vb_size_range(const netsnmp_variable_list *var,
                             size_t low, size_t high )
@@ -80,6 +101,7 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_SIZE_RANGE */
 
 NETSNMP_INLINE int
 netsnmp_check_vb_type_and_size(const netsnmp_variable_list *var,
@@ -98,6 +120,7 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_TYPE_AND_MAX_SIZE
 NETSNMP_INLINE int
 netsnmp_check_vb_type_and_max_size(const netsnmp_variable_list *var,
                                int type, size_t size)
@@ -114,7 +137,9 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_TYPE_AND_MAX_SIZE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_OID
 NETSNMP_INLINE int
 netsnmp_check_vb_oid(const netsnmp_variable_list *var)
 {
@@ -130,6 +155,7 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_OID */
 
 NETSNMP_INLINE int
 netsnmp_check_vb_int(const netsnmp_variable_list *var)
@@ -140,6 +166,7 @@
     return netsnmp_check_vb_type_and_size(var, ASN_INTEGER, sizeof(long));
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_UINT
 NETSNMP_INLINE int
 netsnmp_check_vb_uint(const netsnmp_variable_list *var)
 {
@@ -148,6 +175,7 @@
     
     return netsnmp_check_vb_type_and_size(var, ASN_UNSIGNED, sizeof(long));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_UINT */
 
 NETSNMP_INLINE int
 netsnmp_check_vb_int_range(const netsnmp_variable_list *var, int low, int high)
@@ -167,6 +195,7 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_TRUTHVALUE
 int
 netsnmp_check_vb_truthvalue(const netsnmp_variable_list *var)
 {
@@ -180,6 +209,7 @@
     
     return netsnmp_check_vb_int_range(var, 1, 2);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_TRUTHVALUE */
 
 NETSNMP_INLINE int
 netsnmp_check_vb_rowstatus_value(const netsnmp_variable_list *var)
@@ -213,6 +243,7 @@
     return check_rowstatus_transition(old_value, *var->val.integer);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_ROWSTATUS_WITH_STORAGETYPE
 int
 netsnmp_check_vb_rowstatus_with_storagetype(const netsnmp_variable_list *var,
                                             int old_value, int old_storage)
@@ -229,7 +260,9 @@
                                                        *var->val.integer,
                                                        old_storage);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_ROWSTATUS_WITH_STORAGETYPE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_STORAGETYPE
 int
 netsnmp_check_vb_storagetype(const netsnmp_variable_list *var, int old_value)
 {
@@ -247,3 +280,4 @@
         
     return check_storage_transition(old_value, *var->val.integer);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_STORAGETYPE */
diff --git a/snmplib/cmu_compat.c b/snmplib/cmu_compat.c
deleted file mode 100644
index a8dcf3a..0000000
--- a/snmplib/cmu_compat.c
+++ /dev/null
@@ -1,93 +0,0 @@
-#include <net-snmp/net-snmp-config.h>
-
-#ifdef CMU_COMPATIBLE
-
-#include <net-snmp/mib_api.h>
-#include <net-snmp/pdu_api.h>
-#include <net-snmp/session_api.h>
-
-int
-mib_TxtToOid(char *Buf, oid ** OidP, size_t * LenP)
-{
-    return read_objid(Buf, *OidP, LenP);
-}
-
-int
-mib_OidToTxt(oid * O, size_t OidLen, char *Buf, size_t BufLen)
-{
-    _sprint_objid(Buf, O, OidLen);
-    return 1;
-}
-
-
-/*
- * cmu_snmp_parse - emulate CMU library's snmp_parse.
- *
- * Parse packet, storing results into PDU.
- * Returns community string if success, NULL if fail.
- * WARNING: may return a zero length community string.
- *
- * Note:
- * Some CMU-aware apps call init_mib(), but do not
- * initialize a session.
- * Check Reqid to make sure that this module is initialized.
- */
-
-u_char         *
-cmu_snmp_parse(netsnmp_session * session,
-               netsnmp_pdu *pdu, u_char * data, size_t length)
-{
-    u_char         *bufp = NULL;
-
-    snmp_sess_init(session);    /* gimme a break! */
-
-    switch (pdu->version) {
-    case SNMP_VERSION_1:
-    case SNMP_VERSION_2c:
-    case SNMP_DEFAULT_VERSION:
-        break;
-    default:
-        return NULL;
-    }
-#ifndef NO_INTERNAL_VARLIST
-    if (snmp_parse(0, session, pdu, data, length) != SNMP_ERR_NOERROR) {
-        return NULL;
-    }
-#else
-    /*
-     * while there are two versions of variable_list:
-     * use an internal variable list for snmp_parse;
-     * clone the result.
-     */
-    if (1) {
-        netsnmp_pdu    *snmp_clone_pdu(netsnmp_pdu *);
-        netsnmp_pdu    *snmp_2clone_pdu(netsnmp_pdu *from_pdu,
-                                        netsnmp_pdu *to_pdu);
-
-        netsnmp_pdu    *ipdu;
-        ipdu = snmp_clone_pdu(pdu);
-        if (snmp_parse(0, session, ipdu, data, length) != SNMP_ERR_NOERROR) {
-            snmp_free_internal_pdu(ipdu);
-            return NULL;
-        }
-        pdu = snmp_2clone_pdu(ipdu, pdu);
-        snmp_free_internal_pdu(ipdu);
-    }
-#endif                          /* NO_INTERNAL_VAR_LIST */
-
-    /*
-     * Add a null to meet the caller's expectations. 
-     */
-
-    bufp = (u_char *) malloc(1 + pdu->community_len);
-    if (bufp && pdu->community_len) {
-        memcpy(bufp, pdu->community, pdu->community_len);
-        bufp[pdu->community_len] = '\0';
-    }
-    return (bufp);
-}
-
-
-#else
-int cmu_unused;	/* Suppress "empty translation unit" warning */
-#endif                          /* CMU_COMPATIBLE */
diff --git a/snmplib/container.c b/snmplib/container.c
index 17dd40f..b2ac97e 100644
--- a/snmplib/container.c
+++ b/snmplib/container.c
@@ -9,12 +9,31 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/container_binary_array.h>
 #include <net-snmp/library/container_list_ssll.h>
 #include <net-snmp/library/container_null.h>
 
+netsnmp_feature_child_of(container_all, libnetsnmp)
+
+netsnmp_feature_child_of(container_factories, container_all)
+netsnmp_feature_child_of(container_types, container_all)
+netsnmp_feature_child_of(container_compare, container_all)
+netsnmp_feature_child_of(container_dup, container_all)
+netsnmp_feature_child_of(container_free_all, container_all)
+netsnmp_feature_child_of(subcontainer_find, container_all)
+
+netsnmp_feature_child_of(container_ncompare_cstring, container_compare)
+netsnmp_feature_child_of(container_compare_mem, container_compare)
+netsnmp_feature_child_of(container_compare_long, container_compare)
+netsnmp_feature_child_of(container_compare_ulong, container_compare)
+netsnmp_feature_child_of(container_compare_int32, container_compare)
+netsnmp_feature_child_of(container_compare_uint32, container_compare)
+
+netsnmp_feature_child_of(container_find_factory, container_factories)
+
 /** @defgroup container container
  */
 
@@ -68,18 +87,25 @@
      * register containers
      */
     netsnmp_container_binary_array_init();
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST
     netsnmp_container_ssll_init();
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST */
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_NULL
     netsnmp_container_null_init();
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_NULL */
 
     /*
      * default aliases for some containers
      */
     netsnmp_container_register("table_container",
                                netsnmp_container_get_factory("binary_array"));
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST
     netsnmp_container_register("linked_list",
                                netsnmp_container_get_factory("sorted_singly_linked_list"));
     netsnmp_container_register("ssll_container",
                                netsnmp_container_get_factory("sorted_singly_linked_list"));
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST */
 
     netsnmp_container_register_with_compare
         ("cstring", netsnmp_container_get_factory("binary_array"),
@@ -166,6 +192,7 @@
     return found ? found->factory : NULL;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_FIND_FACTORY
 netsnmp_factory *
 netsnmp_container_find_factory(const char *type_list)
 {
@@ -188,6 +215,7 @@
     free(list);
     return f;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_FIND_FACTORY */
 
 /*------------------------------------------------------------------
  */
@@ -286,8 +314,6 @@
     new_index->prev = curr;
 }
 
-#ifndef NETSNMP_USE_INLINE /* default is to inline */
-
 /*------------------------------------------------------------------
  * These functions should EXACTLY match the inline version in
  * container.h. If you change one, change them both.
@@ -352,6 +378,7 @@
  * These functions should EXACTLY match the function version in
  * container.c. If you change one, change them both.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_DUP
 netsnmp_container *CONTAINER_DUP(netsnmp_container *x, void *ctx, u_int flags)
 {
     if (NULL == x->duplicate) {
@@ -361,6 +388,7 @@
     }
     return x->duplicate(x, ctx, flags);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_DUP */
 
 /*------------------------------------------------------------------
  * These functions should EXACTLY match the inline version in
@@ -413,6 +441,7 @@
     x->clear(x, f, c);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_FREE_ALL
 /*
  * clear all containers. When clearing the *first* container, and
  * *only* the first container, call the free_item function for each item.
@@ -422,7 +451,9 @@
 {
     CONTAINER_CLEAR(x, x->free_item, c);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_FREE_ALL */
 
+#ifndef NETSNMP_FEATURE_REMOVE_SUBCONTAINER_FIND
 /*------------------------------------------------------------------
  * These functions should EXACTLY match the function version in
  * container.c. If you change one, change them both.
@@ -446,7 +477,7 @@
     }
     return x;
 }
-#endif
+#endif /* NETSNMP_FEATURE_REMOVE_SUBCONTAINER_FIND */
 
 
 /*------------------------------------------------------------------
@@ -550,6 +581,7 @@
                   ((const container_type*)rhs)->name);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_NCOMPARE_CSTRING
 int
 netsnmp_ncompare_cstring(const void * lhs, const void * rhs)
 {
@@ -557,6 +589,7 @@
                    ((const container_type*)rhs)->name,
                    strlen(((const container_type*)rhs)->name));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_NCOMPARE_CSTRING */
 
 int
 netsnmp_compare_direct_cstring(const void * lhs, const void * rhs)
@@ -571,6 +604,7 @@
  * compare up to the length of the smaller, and then use length to
  * break any ties.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_MEM
 int
 netsnmp_compare_mem(const char * lhs, size_t lhs_len,
                     const char * rhs, size_t rhs_len)
@@ -587,16 +621,16 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_MEM */
 
-typedef struct dummy_long_s {
-    long                      index;
-} dummy_long;
-
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_LONG
 int
 netsnmp_compare_long(const void * lhs, const void * rhs)
 {
-    const dummy_long *lhd = (const dummy_long*)lhs;
-    const dummy_long *rhd = (const dummy_long*)rhs;
+    typedef struct { long index; } dummy;
+
+    const dummy *lhd = (const dummy*)lhs;
+    const dummy *rhd = (const dummy*)rhs;
 
     if (lhd->index < rhd->index)
         return -1;
@@ -605,16 +639,16 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_LONG */
 
-typedef struct dummy_ulong_s {
-    u_long                      index;
-} dummy_ulong;
-
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_ULONG
 int
 netsnmp_compare_ulong(const void * lhs, const void * rhs)
 {
-    const dummy_ulong *lhd = (const dummy_ulong*)lhs;
-    const dummy_ulong *rhd = (const dummy_ulong*)rhs;
+    typedef struct { u_long index; } dummy;
+
+    const dummy *lhd = (const dummy*)lhs;
+    const dummy *rhd = (const dummy*)rhs;
 
     if (lhd->index < rhd->index)
         return -1;
@@ -623,16 +657,16 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_ULONG */
 
-typedef struct dummy_int32_s {
-    int32_t                    index;
-} dummy_int32;
-
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_INT32
 int
 netsnmp_compare_int32(const void * lhs, const void * rhs)
 {
-    const dummy_int32 *lhd = (const dummy_int32*)lhs;
-    const dummy_int32 *rhd = (const dummy_int32*)rhs;
+    typedef struct { int32_t index; } dummy;
+
+    const dummy *lhd = (const dummy*)lhs;
+    const dummy *rhd = (const dummy*)rhs;
 
     if (lhd->index < rhd->index)
         return -1;
@@ -641,16 +675,16 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_INT32 */
 
-typedef struct dummy_uint32_s {
-    uint32_t                   index;
-} dummy_uint32;
-
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_UINT32
 int
 netsnmp_compare_uint32(const void * lhs, const void * rhs)
 {
-    const dummy_uint32 *lhd = (const dummy_uint32*)lhs;
-    const dummy_uint32 *rhd = (const dummy_uint32*)rhs;
+    typedef struct { uint32_t index; } dummy;
+
+    const dummy *lhd = (const dummy*)lhs;
+    const dummy *rhd = (const dummy*)rhs;
 
     if (lhd->index < rhd->index)
         return -1;
@@ -659,6 +693,7 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_UINT32 */
 
 /*------------------------------------------------------------------
  * netsnmp_container_simple_free
diff --git a/snmplib/container_binary_array.c b/snmplib/container_binary_array.c
index a309248..249a3a9 100644
--- a/snmplib/container_binary_array.c
+++ b/snmplib/container_binary_array.c
@@ -37,7 +37,6 @@
     size_t                     max_size;   /* Size of the current data table */
     size_t                     count;      /* Index of the next free entry */
     int                        dirty;
-    int                        data_size;  /* Size of an individual entry */
     void                     **data;       /* The table itself */
 } binary_array_table;
 
@@ -221,7 +220,6 @@
     t->max_size = 0;
     t->count = 0;
     t->dirty = 0;
-    t->data_size = sizeof(void*);
     t->data = NULL;
 
     return t;
@@ -231,9 +229,7 @@
 netsnmp_binary_array_release(netsnmp_container *c)
 {
     binary_array_table *t = (binary_array_table*)c->container_data;
-    if (t->data != NULL) {
-	SNMP_FREE(t->data);
-    }
+    SNMP_FREE(t->data);
     SNMP_FREE(t);
     SNMP_FREE(c);
 }
@@ -322,7 +318,7 @@
          * otherwise, shift array down
          */
         memmove(&t->data[index], &t->data[index+1],
-                t->data_size * (t->count - index));
+                sizeof(void*) * (t->count - index));
 
         ++c->sync;
     }
@@ -397,16 +393,13 @@
 netsnmp_binary_array_insert(netsnmp_container *c, const void *entry)
 {
     binary_array_table *t = (binary_array_table*)c->container_data;
-    int             new_max, new_size, was_dirty = 0;
-    char           *new_data;   /* Used for * a) extending the data table
-                                 * * b) the next entry to use */
+    int             was_dirty = 0;
     /*
      * check for duplicates
      */
     if (! (c->flags & CONTAINER_KEY_ALLOW_DUPLICATES)) {
         was_dirty = t->dirty;
-        new_data = netsnmp_binary_array_get(c, entry, 1);
-        if (NULL != new_data) {
+        if (NULL != netsnmp_binary_array_get(c, entry, 1)) {
             DEBUGMSGTL(("container","not inserting duplicate key\n"));
             return -1;
         }
@@ -417,22 +410,20 @@
      */
     if (t->max_size <= t->count) {
         /*
-         * Table is full, so extend it to double the size
+         * Table is full, so extend it to double the size, or use 10 elements
+         * if it is empty.
          */
-        new_max = 2 * t->max_size;
-        if (new_max == 0)
-            new_max = 10;       /* Start with 10 entries */
+        size_t const new_max = t->max_size > 0 ? 2 * t->max_size : 10;
+        void ** const new_data =
+            (void**) realloc(t->data, new_max * sizeof(void*));
 
-        new_size = new_max * t->data_size;
-        new_data = (char *) realloc(t->data, new_size);
         if (new_data == NULL)
             return -1;
-        else {
-            int old_size = t->max_size * t->data_size;
-            int count = new_size - old_size;
-            memset(&new_data[old_size], 0x0, count);
-        }
-        t->data = (void**)new_data;
+
+        memset(new_data + t->max_size, 0x0,
+               (new_max - t->max_size) * sizeof(void*));
+
+        t->data = new_data;
         t->max_size = new_max;
     }
 
@@ -532,9 +523,9 @@
     }
 
     *len = end - start + 1;
-    subset = (void **)malloc((*len) * t->data_size);
+    subset = (void **)malloc((*len) * sizeof(void*));
     if (subset)
-        memcpy(subset, &t->data[start], t->data_size * (*len));
+        memcpy(subset, &t->data[start], sizeof(void*) * (*len));
 
     return subset;
 }
@@ -657,20 +648,19 @@
     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);
+    dupt->data = (void**) malloc(dupt->max_size * sizeof(void*));
     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);
-    
+    memcpy(dupt->data, t->data, dupt->max_size * sizeof(void*));
+
     return dup;
 }
 
diff --git a/snmplib/container_iterator.c b/snmplib/container_iterator.c
index e26d99e..41b14ff 100644
--- a/snmplib/container_iterator.c
+++ b/snmplib/container_iterator.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #if HAVE_STDLIB_H
@@ -28,6 +29,9 @@
 
 #include <net-snmp/library/container_iterator.h>
 
+netsnmp_feature_child_of(container_iterator, container_types)
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_ITERATOR
 /**
  *  Holds iterator information containing functions which should be called
  *  by the iterator_handler to loop over your data set and sort it in a
@@ -504,3 +508,6 @@
     ii->remove_data = remove_data;
     ii->get_size = get_size;
 }
+#else  /* NETSNMP_FEATURE_REMOVE_CONTAINER_ITERATOR */
+netsnmp_feature_unused(container_iterator);
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_ITERATOR */
diff --git a/snmplib/container_list_ssll.c b/snmplib/container_list_ssll.c
index 65e3968..7ff01c4 100644
--- a/snmplib/container_list_ssll.c
+++ b/snmplib/container_list_ssll.c
@@ -4,6 +4,7 @@
  *
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #if HAVE_STDLIB_H
@@ -28,6 +29,19 @@
 
 #include <net-snmp/library/container_list_ssll.h>
 
+netsnmp_feature_child_of(container_linked_list, container_types)
+netsnmp_feature_child_of(container_fifo, container_types)
+netsnmp_feature_child_of(container_lifo, container_types)
+
+/* this is a fancy way of cleaning up ifdefs */
+#ifdef NETSNMP_FEATURE_REQUIRE_CONTAINER_FIFO
+netsnmp_feature_require(container_linked_list)
+#endif /* NETSNMP_FEATURE_REQUIRE_CONTAINER_FIFO */
+#ifdef NETSNMP_FEATURE_REQUIRE_CONTAINER_LIFO
+netsnmp_feature_require(container_linked_list)
+#endif /* NETSNMP_FEATURE_REQUIRE_CONTAINER_LIFO */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST
 typedef struct sl_node {
    void           *data;
    struct sl_node *next;
@@ -551,3 +565,6 @@
 
     return (netsnmp_iterator *)it;
 }
+#else /* NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST */
+netsnmp_feature_unused(container_linked_list);
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST */
diff --git a/snmplib/container_null.c b/snmplib/container_null.c
index 04cca21..1f4870e 100644
--- a/snmplib/container_null.c
+++ b/snmplib/container_null.c
@@ -7,6 +7,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_IO_H
 #include <io.h>
@@ -33,6 +34,8 @@
 #include <net-snmp/library/tools.h>
 #include <net-snmp/library/snmp_assert.h>
 
+netsnmp_feature_child_of(container_null, container_types)
+
 /** @defgroup null_container null_container
  *  Helps you implement specialized containers.
  *  @ingroup container
@@ -50,6 +53,7 @@
  *  @{
  */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_NULL
 /**********************************************************************
  *
  * container
@@ -180,5 +184,8 @@
     netsnmp_container_register("null",
                                netsnmp_container_get_null_factory());
 }
+#else  /* NETSNMP_FEATURE_REMOVE_CONTAINER_NULL */
+netsnmp_feature_unused(container_null);
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_NULL */
 /**  @} */
 
diff --git a/snmplib/data_list.c b/snmplib/data_list.c
index c379fa6..505d4fc 100644
--- a/snmplib/data_list.c
+++ b/snmplib/data_list.c
@@ -4,8 +4,14 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
+netsnmp_feature_child_of(data_list_all, libnetsnmp)
+
+netsnmp_feature_child_of(data_list_add_data, data_list_all)
+netsnmp_feature_child_of(data_list_get_list_node, data_list_all)
+
 /** @defgroup data_list generic linked-list data handling with a string as a key.
  * @ingroup library
  * @{
@@ -62,8 +68,8 @@
         return NULL;
     node->name = strdup(name);
     if (!node->name) {
-      free(node);
-      return NULL;
+        free(node);
+        return NULL;
     }
     node->data = data;
     node->free_func = beer;
@@ -131,6 +137,7 @@
  * @param beer A function that can free the data pointer (in the future)
  * @return a newly created data_list node which was inserted in the list
  */
+#ifndef NETSNMP_FEATURE_REMOVE_DATA_LIST_ADD_DATA
 NETSNMP_INLINE netsnmp_data_list *
 netsnmp_data_list_add_data(netsnmp_data_list **head, const char *name,
                            void *data, Netsnmp_Free_List_Data * beer)
@@ -150,6 +157,7 @@
 
     return node;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DATA_LIST_ADD_DATA */
 
 /** returns a data_list node's data for a given name within a data_list
  * @param head the head node of a data_list
@@ -174,6 +182,7 @@
  * @param name the name to find
  * @return a pointer to the data_list node
  */
+#ifndef NETSNMP_FEATURE_REMOVE_DATA_LIST_GET_LIST_NODE
 NETSNMP_INLINE netsnmp_data_list    *
 netsnmp_get_list_node(netsnmp_data_list *head, const char *name)
 {
@@ -186,6 +195,7 @@
         return head;
     return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DATA_LIST_GET_LIST_NODE */
 
 /** Removes a named node from a data_list (and frees it)
  * @param realhead a pointer to the head node of a data_list
diff --git a/snmplib/default_store.c b/snmplib/default_store.c
index 83f4e34..8dbc9bc 100644
--- a/snmplib/default_store.c
+++ b/snmplib/default_store.c
@@ -126,6 +126,7 @@
  *  @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <sys/types.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -157,6 +158,14 @@
 
 #include <net-snmp/library/snmp_api.h>
 
+netsnmp_feature_child_of(default_store_all, libnetsnmp)
+
+netsnmp_feature_child_of(default_store_void, default_store_all)
+
+#ifndef NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID
+#endif /* NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID */
+
+
 static const char * stores [NETSNMP_DS_MAX_IDS] = { "LIB", "APP", "TOK" };
 
 typedef struct netsnmp_ds_read_config_s {
@@ -173,7 +182,9 @@
 static int   netsnmp_ds_integers[NETSNMP_DS_MAX_IDS][NETSNMP_DS_MAX_SUBIDS];
 static char  netsnmp_ds_booleans[NETSNMP_DS_MAX_IDS][NETSNMP_DS_MAX_SUBIDS/8];
 static char *netsnmp_ds_strings[NETSNMP_DS_MAX_IDS][NETSNMP_DS_MAX_SUBIDS];
+#ifndef NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID
 static void *netsnmp_ds_voids[NETSNMP_DS_MAX_IDS][NETSNMP_DS_MAX_SUBIDS];
+#endif /* NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID */
 
 /*
  * Prototype definitions 
@@ -313,6 +324,7 @@
     return netsnmp_ds_strings[storeid][which];
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID
 int
 netsnmp_ds_set_void(int storeid, int which, void *value)
 {
@@ -339,6 +351,7 @@
 
     return netsnmp_ds_voids[storeid][which];
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID */
 
 int
 netsnmp_ds_parse_boolean(char *line)
diff --git a/snmplib/dir_utils.c b/snmplib/dir_utils.c
index a97505d..d35e700 100644
--- a/snmplib/dir_utils.c
+++ b/snmplib/dir_utils.c
@@ -9,6 +9,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <stdio.h>
@@ -47,6 +48,13 @@
 #include <net-snmp/library/file_utils.h>
 #include <net-snmp/library/dir_utils.h>
 
+netsnmp_feature_child_of(container_directory, container_types)
+#ifdef NETSNMP_FEATURE_REQUIRE_CONTAINER_DIRECTORY
+netsnmp_feature_require(file_utils)
+netsnmp_feature_require(container_free_all)
+#endif /* NETSNMP_FEATURE_REQUIRE_CONTAINER_DIRECTORY */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_DIRECTORY
 static int
 _insert_nsfile( netsnmp_container *c, const char *name, struct stat *stats,
                 u_int flags);
@@ -229,10 +237,13 @@
         }
     
         /** use stats from earlier if we have them */
-        if (stats)
+        if (stats) {
             memcpy(ns_file->stats, stats, sizeof(*stats));
-        else
-            stat(ns_file->name, ns_file->stats);
+        } else if (stat(ns_file->name, ns_file->stats) < 0) {
+            snmp_log(LOG_ERR, "stat() failed for ns_file\n");
+            netsnmp_file_release(ns_file);
+            return -1;
+        }
     }
 
     rc = CONTAINER_INSERT(c, ns_file);
@@ -243,3 +254,6 @@
 
     return 0;
 }
+#else  /* NETSNMP_FEATURE_REMOVE_CONTAINER_DIRECTORY */
+netsnmp_feature_unused(container_directory);
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_DIRECTORY */
diff --git a/snmplib/fd_event_manager.c b/snmplib/fd_event_manager.c
index 20454f7..f9cf08e 100644
--- a/snmplib/fd_event_manager.c
+++ b/snmplib/fd_event_manager.c
@@ -4,12 +4,15 @@
 #include <sys/select.h>
 #endif
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/fd_event_manager.h>
 #include <net-snmp/library/snmp_logging.h>
 #include <net-snmp/library/large_fd_set.h>
 
+netsnmp_feature_child_of(fd_event_manager, libnetsnmp)
 
+#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
 int     external_readfd[NUM_EXTERNAL_FDS],   external_readfdlen   = 0;
 int     external_writefd[NUM_EXTERNAL_FDS],  external_writefdlen  = 0;
 int     external_exceptfd[NUM_EXTERNAL_FDS], external_exceptfdlen = 0;
@@ -289,3 +292,6 @@
       }
   }
 }
+#else  /*  !NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
+netsnmp_feature_unused(fd_event_manager);
+#endif /*  !NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
diff --git a/snmplib/file_utils.c b/snmplib/file_utils.c
index 889d552..5261431 100644
--- a/snmplib/file_utils.c
+++ b/snmplib/file_utils.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <stdio.h>
@@ -37,7 +38,11 @@
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/file_utils.h>
 
+netsnmp_feature_child_of(file_utils_all, libnetsnmp)
+netsnmp_feature_child_of(file_utils, file_utils_all)
+netsnmp_feature_child_of(file_close, file_utils_all)
 
+#ifndef NETSNMP_FEATURE_REMOVE_FILE_UTILS
 /*------------------------------------------------------------------
  *
  * Prototypes
@@ -206,6 +211,7 @@
  * @retval  0 : success
  * @retval -1 : error
  */
+#ifndef NETSNMP_FEATURE_REMOVE_FILE_CLOSE
 int
 netsnmp_file_close(netsnmp_file * filei)
 {
@@ -236,6 +242,7 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_FILE_CLOSE */
 
 void
 netsnmp_file_container_free(netsnmp_file *file, void *context)
@@ -251,3 +258,6 @@
 
     return strcmp(lhs->name, rhs->name);
 }
+#else /* NETSNMP_FEATURE_REMOVE_FILE_UTILS */
+netsnmp_feature_unused(file_utils);
+#endif /* NETSNMP_FEATURE_REMOVE_FILE_UTILS */
diff --git a/snmplib/gettimeofday.c b/snmplib/gettimeofday.c
index 3c75d3a..df5c0a0 100644
--- a/snmplib/gettimeofday.c
+++ b/snmplib/gettimeofday.c
@@ -28,6 +28,6 @@
 
     _ftime(&timebuffer);
     tv->tv_usec = timebuffer.millitm * 1000;
-    tv->tv_sec = timebuffer.time;
+    tv->tv_sec = (long)timebuffer.time;
     return (0);
 }
diff --git a/snmplib/int64.c b/snmplib/int64.c
index 2d86959..51f1f32 100644
--- a/snmplib/int64.c
+++ b/snmplib/int64.c
@@ -23,6 +23,8 @@
 #include <net-snmp/library/snmp_debug.h>
 #include <net-snmp/library/snmp_logging.h>
 
+#include <net-snmp/net-snmp-features.h>
+
 /**
  * Divide an unsigned 64-bit integer by 10.
  *
@@ -197,6 +199,8 @@
     u64Incr(pu64out, &tmp);
 }
 
+netsnmp_feature_child_of(u64copy, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_U64COPY
 /**
  * Copy a 64-bit number.
  *
@@ -208,6 +212,7 @@
 {
     *pu64one = *pu64two;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_U64COPY */
 
 /**
  * Set an unsigned 64-bit number to zero.
diff --git a/snmplib/keytools.c b/snmplib/keytools.c
index c1dbcd6..0ccb3a6 100644
--- a/snmplib/keytools.c
+++ b/snmplib/keytools.c
@@ -14,6 +14,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <sys/types.h>
@@ -62,6 +63,11 @@
 
 #include <net-snmp/library/transform_oids.h>
 
+netsnmp_feature_child_of(usm_support, libnetsnmp)
+netsnmp_feature_child_of(usm_keytools, usm_support)
+
+#ifndef NETSNMP_FEATURE_REMOVE_USM_KEYTOOLS
+
 /*******************************************************************-o-******
  * generate_Ku
  *
@@ -653,8 +659,7 @@
             memset(newkey, 0, properlength);
     }
     memset(tmp_buf, 0, SNMP_MAXBUF);
-    if (tmpbuf != NULL)
-        SNMP_FREE(tmpbuf);
+    SNMP_FREE(tmpbuf);
 
     return rval;
 
@@ -663,3 +668,4 @@
 #else
 _KEYTOOLS_NOT_AVAILABLE
 #endif                          /* internal or openssl */
+#endif /* NETSNMP_FEATURE_REMOVE_USM_KEYTOOLS */
diff --git a/snmplib/large_fd_set.c b/snmplib/large_fd_set.c
index 3b8b4a4..2967d3c 100644
--- a/snmplib/large_fd_set.c
+++ b/snmplib/large_fd_set.c
@@ -121,10 +121,10 @@
 }
 
 int
-net_snmp_large_fd_set_select(int numfds, netsnmp_large_fd_set *readfds,
-                      netsnmp_large_fd_set *writefds,
-                      netsnmp_large_fd_set *exceptfds,
-                      struct timeval *timeout)
+netsnmp_large_fd_set_select(int numfds, netsnmp_large_fd_set *readfds,
+                     netsnmp_large_fd_set *writefds,
+                     netsnmp_large_fd_set *exceptfds,
+                     struct timeval *timeout)
 {
 #if defined(cygwin) || !defined(HAVE_WINSOCK_H)
     /* Bit-set representation: make sure all fds have at least size 'numfds'. */
@@ -174,13 +174,16 @@
     }
 
 #if defined(cygwin) || !defined(HAVE_WINSOCK_H)
-    {
+    /*
+     * Unix: when enlarging, clear the file descriptors defined in the
+     * resized *fdset but that were not defined in the original *fdset.
+     */
+    if ( fdset->lfs_setsize == 0 && setsize == FD_SETSIZE ) {
+        /* In this case we can use the OS's FD_ZERO */
+        FD_ZERO( fdset->lfs_setptr );
+    } else {
         int             i;
 
-        /*
-         * Unix: when enlarging, clear the file descriptors defined in the
-         * resized *fdset but that were not defined in the original *fdset.
-         */
         for (i = fdset->lfs_setsize; i < setsize; i++)
             FD_CLR(i, fdset->lfs_setptr);
     }
diff --git a/snmplib/lcd_time.c b/snmplib/lcd_time.c
index 2222904..2bfa549 100644
--- a/snmplib/lcd_time.c
+++ b/snmplib/lcd_time.c
@@ -6,6 +6,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #include <stdio.h>
@@ -52,6 +53,11 @@
 
 #include <net-snmp/library/transform_oids.h>
 
+netsnmp_feature_child_of(usm_support, libnetsnmp)
+netsnmp_feature_child_of(usm_lcd_time, usm_support)
+
+#ifndef NETSNMP_FEATURE_REMOVE_USM_LCD_TIME
+
 /*
  * Global static hashlist to contain Enginetime entries.
  *
@@ -94,7 +100,7 @@
                u_int * engine_time, u_int authenticated)
 {
     int             rval = SNMPERR_SUCCESS;
-    time_t          timediff = 0;
+    int             timediff = 0;
     Enginetime      e = NULL;
 
 
@@ -126,7 +132,7 @@
         *engine_time = e->engineTime;
         *engineboot = e->engineBoot;
 
-       timediff = snmpv3_local_snmpEngineTime() - e->lastReceivedEngineTime;
+       timediff = (int) (snmpv3_local_snmpEngineTime() - e->lastReceivedEngineTime);
 
 #ifdef LCD_TIME_SYNC_OPT
     }
@@ -190,7 +196,7 @@
                   u_int * last_engine_time, u_int authenticated)
 {
     int             rval = SNMPERR_SUCCESS;
-    time_t          timediff = 0;
+    int             timediff = 0;
     Enginetime      e = NULL;
 
 
@@ -222,7 +228,7 @@
         *last_engine_time = *engine_time = e->engineTime;
         *engineboot = e->engineBoot;
 
-       timediff = snmpv3_local_snmpEngineTime() - e->lastReceivedEngineTime;
+       timediff = (int) (snmpv3_local_snmpEngineTime() - e->lastReceivedEngineTime);
 
 #ifdef LCD_TIME_SYNC_OPT
     }
@@ -605,3 +611,4 @@
 
 }                               /* end dump_etimelist() */
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
+#endif /* NETSNMP_FEATURE_REMOVE_USM_LCD_TIME */
diff --git a/snmplib/mib.c b/snmplib/mib.c
index 9625d96..be0e627 100644
--- a/snmplib/mib.c
+++ b/snmplib/mib.c
@@ -38,6 +38,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <ctype.h>
@@ -104,6 +105,19 @@
 #include <net-snmp/library/int64.h>
 #include <net-snmp/library/snmp_client.h>
 
+netsnmp_feature_child_of(mib_api, libnetsnmp)
+netsnmp_feature_child_of(mib_strings_all, mib_api)
+
+netsnmp_feature_child_of(mib_snprint, mib_strings_all)
+netsnmp_feature_child_of(mib_snprint_description, mib_strings_all)
+netsnmp_feature_child_of(mib_snprint_variable, mib_strings_all)
+netsnmp_feature_child_of(mib_string_conversions, mib_strings_all)
+netsnmp_feature_child_of(print_mib, mib_strings_all)
+netsnmp_feature_child_of(snprint_objid, mib_strings_all)
+netsnmp_feature_child_of(snprint_value, mib_strings_all)
+
+netsnmp_feature_child_of(mib_to_asn_type, mib_api)
+
 /** @defgroup mib_utilities mib parsing and datatype manipulation routines.
  *  @ingroup library
  *
@@ -2898,7 +2912,6 @@
         if (tree_top->label)
             SNMP_FREE(tree_top->label);
         SNMP_FREE(tree_top);
-        tree_top = NULL;
     }
     tree_head = NULL;
     Mib = NULL;
@@ -2924,11 +2937,13 @@
  *
  * @param fp   The file descriptor to print to.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_PRINT_MIB
 void
 print_mib(FILE * fp)
 {
     print_subtree(fp, tree_head, 0);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PRINT_MIB */
 
 void
 print_ascii_dump(FILE * fp)
@@ -3309,6 +3324,7 @@
     return !buf_overflow;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SPRINT_OBJID
 int
 snprint_objid(char *buf, size_t buf_len,
               const oid * objid, size_t objidlen)
@@ -3322,6 +3338,7 @@
         return -1;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SPRINT_OBJID */
 
 /**
  * Prints an oid to stdout.
@@ -3459,6 +3476,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNPRINT_VARABLE
 int
 snprint_variable(char *buf, size_t buf_len,
                  const oid * objid, size_t objidlen,
@@ -3473,6 +3491,7 @@
         return -1;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNPRINT_VARABLE */
 
 /**
  * Prints a variable to stdout.
@@ -3567,6 +3586,8 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNPRINT_VALUE
+/* used in the perl module */
 int
 snprint_value(char *buf, size_t buf_len,
               const oid * objid, size_t objidlen,
@@ -3581,6 +3602,7 @@
         return -1;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNPRINT_VALUE */
 
 void
 print_value(const oid * objid,
@@ -4684,6 +4706,7 @@
     SNMP_FREE(buf);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_MIB_SNPRINT_DESCRIPTION
 int
 snprint_description(char *buf, size_t buf_len,
                     oid * objid, size_t objidlen, int width)
@@ -4697,6 +4720,7 @@
         return -1;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MIB_SNPRINT_DESCRIPTION */
 
 int
 sprint_realloc_description(u_char ** buf, size_t * buf_len,
@@ -6012,7 +6036,6 @@
 
 /**
  * Converts timeticks to hours, minutes, seconds string.
- * CMU compatible does not show centiseconds.
  *
  * @param timeticks    The timeticks to convert.
  * @param buf          Buffer to write to, has to be at 
@@ -6032,13 +6055,6 @@
 uptime_string_n(u_long timeticks, char *buf, size_t buflen)
 {
     uptimeString(timeticks, buf, buflen);
-#ifdef CMU_COMPATIBLE
-    {
-    char *cp = strrchr(buf, '.');
-    if (cp)
-        *cp = '\0';
-    }
-#endif
     return buf;
 }
 
@@ -6391,6 +6407,7 @@
 
 #endif /* test_display_hint */
 
+#ifndef NETSNMP_FEATURE_REMOVE_MIB_TO_ASN_TYPE
 u_char
 mib_to_asn_type(int mib_type)
 {
@@ -6440,6 +6457,7 @@
     }
     return -1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MIB_TO_ASN_TYPE */
 
 /**
  * Converts a string to its OID form.
@@ -6451,6 +6469,7 @@
  *
  * @return 0 on Sucess, 1 on failure.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_MIB_STRING_CONVERSIONS
 int
 netsnmp_str2oid(const char *S, oid * O, int L)
 {
@@ -6530,7 +6549,10 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MIB_STRING_CONVERSIONS */
 
+
+#ifndef NETSNMP_FEATURE_REMOVE_MIB_SNPRINT
 int
 snprint_by_type(char *buf, size_t buf_len,
                 netsnmp_variable_list * var,
@@ -6808,5 +6830,6 @@
         return -1;
 }
 #endif
+#endif /* NETSNMP_FEATURE_REMOVE_MIB_SNPRINT */
 /** @} */
 
diff --git a/snmplib/oid_stash.c b/snmplib/oid_stash.c
index 860abab..8a79897 100644
--- a/snmplib/oid_stash.c
+++ b/snmplib/oid_stash.c
@@ -5,8 +5,15 @@
 #include <stdlib.h>
 #include <sys/types.h>
 
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
+netsnmp_feature_child_of(oid_stash_all, libnetsnmp)
+netsnmp_feature_child_of(oid_stash, oid_stash_all)
+netsnmp_feature_child_of(oid_stash_no_free, oid_stash_all)
+
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH
+
 /** @defgroup oid_stash Store and retrieve data referenced by an OID.
     This is essentially a way of storing data associated with a given
     OID.  It stores a bunch of data pointers within a memory tree that
@@ -68,6 +75,8 @@
     return netsnmp_oid_stash_create_sized_node(OID_STASH_CHILDREN_SIZE);
 }
 
+netsnmp_feature_child_of(oid_stash_add_data, oid_stash_all)
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH_ADD_DATA
 /** adds data to the stash at a given oid.
 
  * @param root the top of the stash tree
@@ -144,6 +153,7 @@
     tmpp->thedata = mydata;
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_STASH_ADD_DATA */
 
 /** returns a node associated with a given OID.
  * @param root the top of the stash tree
@@ -187,6 +197,8 @@
  * @param lookup the oid to look up a node for.
  * @param lookup_len the length of the lookup oid
  */
+netsnmp_feature_child_of(oid_stash_iterate, oid_stash_all)
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH_ITERATE
 netsnmp_oid_stash_node *
 netsnmp_oid_stash_getnext_node(netsnmp_oid_stash_node *root,
                                oid * lookup, size_t lookup_len)
@@ -268,7 +280,10 @@
     /* fell off the top */
     return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_STASH_ITERATE */
 
+netsnmp_feature_child_of(oid_stash_get_data, oid_stash_all)
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH_GET_DATA
 /** returns a data pointer associated with a given OID.
 
     This is equivelent to netsnmp_oid_stash_get_node, but returns only
@@ -288,7 +303,10 @@
         return ret->thedata;
     return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_STASH_GET_DATA */
 
+netsnmp_feature_child_of(oid_stash_store_all, oid_stash_all)
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH_STORE_ALL
 /** a wrapper around netsnmp_oid_stash_store for use with a snmp_alarm.
  * when calling snmp_alarm, you can list this as a callback.  The
  * clientarg should be a pointer to a netsnmp_oid_stash_save_info
@@ -314,6 +332,7 @@
                             oidbase,0);
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_STASH_STORE_ALL */
 
 /** stores data in a starsh tree to peristent storage.
 
@@ -427,10 +446,16 @@
     *root = NULL;
 }
 
+#else /* NETSNMP_FEATURE_REMOVE_OID_STASH */
+netsnmp_feature_unused(oid_stash);
+#endif/* NETSNMP_FEATURE_REMOVE_OID_STASH */
+
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH_NO_FREE
 void
 netsnmp_oid_stash_no_free(void *bogus)
 {
     /* noop */
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_STASH_NO_FREE */
 
 /** @} */
diff --git a/snmplib/parse.c b/snmplib/parse.c
index 817c897..4d44d88 100644
--- a/snmplib/parse.c
+++ b/snmplib/parse.c
@@ -33,6 +33,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #ifndef NETSNMP_DISABLE_MIB_LOADING
 
@@ -106,6 +107,10 @@
 #include <net-snmp/library/parse.h>
 #include <net-snmp/library/mib.h>
 #include <net-snmp/library/snmp_api.h>
+#include <net-snmp/library/tools.h>
+
+netsnmp_feature_child_of(find_module, mib_api)
+netsnmp_feature_child_of(get_tc_description, mib_api)
 
 /*
  * A linked list of nodes.
@@ -529,7 +534,11 @@
  * #define MODULE_LOAD_FAILED   3       
  */
 #define MODULE_LOAD_FAILED	MODULE_NOT_FOUND
+#define MODULE_SYNTAX_ERROR     4
 
+int gMibError = 0,gLoop = 0;
+char *gpMibErrorString = NULL;
+char gMibNames[STRINGMAX];
 
 #define HASHSIZE        32
 #define BUCKET(x)       (x & (HASHSIZE-1))
@@ -774,11 +783,14 @@
 
 static int      erroneousMibs = 0;
 
+netsnmp_feature_child_of(parse_get_error_count, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_PARSE_GET_ERROR_COUNT
 int
 get_mib_parse_error_count(void)
 {
     return erroneousMibs;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PARSE_GET_ERROR_COUNT */
 
 
 static void
@@ -906,9 +918,9 @@
 
     unlink_tbucket(Tree);
     free_partial_tree(Tree, FALSE);
-    if (Tree->number_modules > 1)
-        free((char *) Tree->module_list);
-    free((char *) Tree);
+    if (Tree->module_list != &Tree->modid)
+        free(Tree->module_list);
+    free(Tree);
 }
 
 static void
@@ -1559,15 +1571,14 @@
                 /*
                  * Update list of modules 
                  */
-                int_p =
-                    (int *) malloc((tp->number_modules + 1) * sizeof(int));
+                int_p = malloc((tp->number_modules + 1) * sizeof(int));
                 if (int_p == NULL)
                     return;
                 memcpy(int_p, tp->module_list,
                        tp->number_modules * sizeof(int));
                 int_p[tp->number_modules] = np->modid;
-                if (tp->number_modules > 1)
-                    free((char *) tp->module_list);
+                if (tp->module_list != &tp->modid)
+                    free(tp->module_list);
                 ++tp->number_modules;
                 tp->module_list = int_p;
 
@@ -2140,6 +2151,8 @@
     return (tclist[tc_index].descriptor);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_GET_TC_DESCRIPTION
+/* used in the perl module */
 const char     *
 get_tc_description(int tc_index)
 {
@@ -2147,6 +2160,7 @@
         return NULL;
     return (tclist[tc_index].description);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_GET_TC_DESCRIPTION */
 
 
 /*
@@ -2975,6 +2989,15 @@
         free_node(np);
         return (NULL);
     }
+
+    /* Catch the syntax error */
+    if (np->parent == NULL) {
+        free_node(np->next);
+        free_node(np);
+        gMibError = MODULE_SYNTAX_ERROR;
+        return (NULL);
+    }
+
     np->next->parent = np->parent;
     np->parent = (char *) malloc(strlen(np->parent) + 2);
     if (np->parent == NULL) {
@@ -3754,6 +3777,8 @@
  *      or those relating to a specified identifier (read_import_replacements)
  *      plus an interface to add new replacement requirements
  */
+netsnmp_feature_child_of(parse_add_module_replacement, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_PARSE_ADD_MODULE_REPLACEMENT
 void
 add_module_replacement(const char *old_module,
                        const char *new_module_name,
@@ -3775,6 +3800,7 @@
     mcp->next = module_map_head;
     module_map_head = mcp;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PARSE_ADD_MODULE_REPLACEMENT */
 
 static int
 read_module_replacements(const char *name)
@@ -3850,6 +3876,7 @@
 {
     struct module  *mp;
     FILE           *fp;
+    struct node    *np;
 
     netsnmp_init_mib_internals();
 
@@ -3865,9 +3892,17 @@
                 return MODULE_ALREADY_LOADED;
             }
             if ((fp = fopen(mp->file, "r")) == NULL) {
+                int rval;
+                if (errno == ENOTDIR || errno == ENOENT)
+                    rval = MODULE_NOT_FOUND;
+                else
+                    rval = MODULE_LOAD_FAILED;
                 snmp_log_perror(mp->file);
-                return MODULE_LOAD_FAILED;
+                return rval;
             }
+#ifdef HAVE_FLOCKFILE
+            flockfile(fp);
+#endif
             mp->no_imports = 0; /* Note that we've read the file */
             File = mp->file;
             mibLine = 1;
@@ -3875,11 +3910,16 @@
             /*
              * Parse the file
              */
-            parse(fp, NULL);
+            np = parse(fp, NULL);
+#ifdef HAVE_FUNLOCKFILE
+            funlockfile(fp);
+#endif
             fclose(fp);
             File = oldFile;
             mibLine = oldLine;
             current_module = oldModule;
+            if ((np == NULL) && (gMibError == MODULE_SYNTAX_ERROR) )
+                return MODULE_SYNTAX_ERROR;
             return MODULE_LOADED_OK;
         }
 
@@ -3968,9 +4008,20 @@
 struct tree    *
 netsnmp_read_module(const char *name)
 {
-    if (read_module_internal(name) == MODULE_NOT_FOUND)
+    int status = 0;
+    status = read_module_internal(name);
+
+    if (status == MODULE_NOT_FOUND) {
         if (!read_module_replacements(name))
-	    print_module_not_found(name);
+            print_module_not_found(name);
+    } else if (status == MODULE_SYNTAX_ERROR) {
+        gMibError = 0;
+        gLoop = 1;
+
+        strncat(gMibNames, " ", sizeof(gMibNames) - strlen(gMibNames) - 1);
+        strncat(gMibNames, name, sizeof(gMibNames) - strlen(gMibNames) - 1);
+    }
+
     return tree_head;
 }
 
@@ -4290,6 +4341,7 @@
         case END:
             if (state != IN_MIB) {
                 print_error("Error, END before start of MIB", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             } else {
                 struct module  *mp;
@@ -4353,6 +4405,7 @@
                 nnp = parse_macro(fp, name);
                 if (nnp == NULL) {
                     print_error("Bad parse of MACRO", NULL, type);
+                    gMibError = MODULE_SYNTAX_ERROR;
                     /*
                      * return NULL;
                      */
@@ -4376,6 +4429,7 @@
                 type = get_token(fp, token, MAXTOKEN);
             if (type == ENDOFFILE) {
                 print_error("Expected \"}\"", token, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             type = get_token(fp, token, MAXTOKEN);
@@ -4385,6 +4439,7 @@
         case DEFINITIONS:
             if (state != BETWEEN_MIBS) {
                 print_error("Error, nested MIBS", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             state = IN_MIB;
@@ -4409,6 +4464,7 @@
             nnp = parse_objecttype(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of OBJECT-TYPE", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4416,6 +4472,7 @@
             nnp = parse_objectgroup(fp, name, OBJECTS, &objects);
             if (nnp == NULL) {
                 print_error("Bad parse of OBJECT-GROUP", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4423,6 +4480,7 @@
             nnp = parse_objectgroup(fp, name, NOTIFICATIONS, &notifs);
             if (nnp == NULL) {
                 print_error("Bad parse of NOTIFICATION-GROUP", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4430,6 +4488,7 @@
             nnp = parse_trapDefinition(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of TRAP-TYPE", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4437,6 +4496,7 @@
             nnp = parse_notificationDefinition(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of NOTIFICATION-TYPE", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4444,6 +4504,7 @@
             nnp = parse_compliance(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of MODULE-COMPLIANCE", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4451,6 +4512,7 @@
             nnp = parse_capabilities(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of AGENT-CAPABILITIES", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4458,6 +4520,7 @@
             nnp = parse_macro(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of MACRO", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 /*
                  * return NULL;
                  */
@@ -4469,6 +4532,7 @@
             nnp = parse_moduleIdentity(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of MODULE-IDENTITY", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4476,6 +4540,7 @@
             nnp = parse_objectgroup(fp, name, OBJECTS, &objects);
             if (nnp == NULL) {
                 print_error("Bad parse of OBJECT-IDENTITY", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4483,16 +4548,19 @@
             type = get_token(fp, token, MAXTOKEN);
             if (type != IDENTIFIER) {
                 print_error("Expected IDENTIFIER", token, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             type = get_token(fp, token, MAXTOKEN);
             if (type != EQUALS) {
                 print_error("Expected \"::=\"", token, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             nnp = parse_objectid(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of OBJECT IDENTIFIER", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4504,6 +4572,7 @@
             break;
         default:
             print_error("Bad operator", token, type);
+            gMibError = MODULE_SYNTAX_ERROR;
             return NULL;
         }
         if (nnp) {
@@ -4537,6 +4606,21 @@
     return 0;
 }
 
+/**
+ * Read a single character from a file. Assumes that the caller has invoked
+ * flockfile(). Uses fgetc_unlocked() instead of getc() since the former is
+ * implemented as an inline function in glibc. See also bug 3447196
+ * (http://sourceforge.net/tracker/?func=detail&aid=3447196&group_id=12694&atid=112694).
+ */
+static int netsnmp_getc(FILE *stream)
+{
+#ifdef HAVE_FGETC_UNLOCKED
+    return fgetc_unlocked(stream);
+#else
+    return getc(stream);
+#endif
+}
+
 /*
  * Parses a token from the file.  The type of the token parsed is returned,
  * and the text is placed in the string pointed to by token.
@@ -4556,7 +4640,7 @@
      * skip all white space 
      */
     do {
-        ch = getc(fp);
+        ch = netsnmp_getc(fp);
         if (ch == '\n')
             mibLine++;
     }
@@ -4570,7 +4654,7 @@
         return parseQuoteString(fp, token, maxtlen);
     case '\'':                 /* binary or hex constant */
         seenSymbols = bdigits;
-        while ((ch = getc(fp)) != EOF && ch != '\'') {
+        while ((ch = netsnmp_getc(fp)) != EOF && ch != '\'') {
             switch (seenSymbols) {
             case bdigits:
                 if (ch == '0' || ch == '1')
@@ -4589,7 +4673,7 @@
         if (ch == '\'') {
             unsigned long   val = 0;
             char           *run = token + 1;
-            ch = getc(fp);
+            ch = netsnmp_getc(fp);
             switch (ch) {
             case EOF:
                 return ENDOFFILE;
@@ -4648,25 +4732,25 @@
     case '|':
         return BAR;
     case '.':
-        ch_next = getc(fp);
+        ch_next = netsnmp_getc(fp);
         if (ch_next == '.')
             return RANGE;
         ungetc(ch_next, fp);
         return LABEL;
     case ':':
-        ch_next = getc(fp);
+        ch_next = netsnmp_getc(fp);
         if (ch_next != ':') {
             ungetc(ch_next, fp);
             return LABEL;
         }
-        ch_next = getc(fp);
+        ch_next = netsnmp_getc(fp);
         if (ch_next != '=') {
             ungetc(ch_next, fp);
             return LABEL;
         }
         return EQUALS;
     case '-':
-        ch_next = getc(fp);
+        ch_next = netsnmp_getc(fp);
         if (ch_next == '-') {
             if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
 				       NETSNMP_DS_LIB_MIB_COMMENT_TERM)) {
@@ -4674,7 +4758,7 @@
                  * Treat the rest of this line as a comment. 
                  */
                 while ((ch_next != EOF) && (ch_next != '\n'))
-                    ch_next = getc(fp);
+                    ch_next = netsnmp_getc(fp);
             } else {
                 /*
                  * Treat the rest of the line or until another '--' as a comment 
@@ -4683,11 +4767,11 @@
                  * (this is the "technically" correct way to parse comments) 
                  */
                 ch = ' ';
-                ch_next = getc(fp);
+                ch_next = netsnmp_getc(fp);
                 while (ch_next != EOF && ch_next != '\n' &&
                        (ch != '-' || ch_next != '-')) {
                     ch = ch_next;
-                    ch_next = getc(fp);
+                    ch_next = netsnmp_getc(fp);
                 }
             }
             if (ch_next == EOF)
@@ -4708,7 +4792,7 @@
             return LABEL;
         hash += tolower(ch);
       more:
-        while (is_labelchar(ch_next = getc(fp))) {
+        while (is_labelchar(ch_next = netsnmp_getc(fp))) {
             hash += tolower(ch_next);
             if (cp - token < maxtlen - 1)
                 *cp++ = ch_next;
@@ -4727,7 +4811,7 @@
         if (tp) {
             if (tp->token != CONTINUE)
                 return (tp->token);
-            while (isspace((ch_next = getc(fp))))
+            while (isspace((ch_next = netsnmp_getc(fp))))
                 if (ch_next == '\n')
                     mibLine++;
             if (ch_next == EOF)
@@ -4748,11 +4832,14 @@
     }
 }
 
+netsnmp_feature_child_of(parse_get_token, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_PARSE_GET_TOKEN
 int
 snmp_get_token(FILE * fp, char *token, int maxtlen)
 {
     return get_token(fp, token, maxtlen);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PARSE_GET_TOKEN */
 
 int
 add_mibfile(const char* tmpstr, const char* d_name, FILE *ip )
@@ -4935,6 +5022,23 @@
             netsnmp_read_module(mp->name);
     adopt_orphans();
 
+    /* If entered the syntax error loop in "read_module()" */
+    if (gLoop == 1) {
+        gLoop = 0;
+        if (gpMibErrorString != NULL) {
+            SNMP_FREE(gpMibErrorString);
+        }
+        gpMibErrorString = (char *) calloc(1, MAXQUOTESTR);
+        if (gpMibErrorString == NULL) {
+            snmp_log(LOG_CRIT, "failed to allocated memory for gpMibErrorString\n");
+        } else {
+            snprintf(gpMibErrorString, sizeof(gpMibErrorString)-1, "Error in parsing MIB module(s): %s ! Unable to load corresponding MIB(s)", gMibNames);
+        }
+    }
+
+    /* Caller's responsibility to free this memory */
+    tree_head->parseErrorString = gpMibErrorString;
+	
     return tree_head;
 }
 
@@ -4970,7 +5074,7 @@
     int             too_long = 0;
     char           *token_start = token;
 
-    for (ch = getc(fp); ch != EOF; ch = getc(fp)) {
+    for (ch = netsnmp_getc(fp); ch != EOF; ch = netsnmp_getc(fp)) {
         if (ch == '\r')
             continue;
         if (ch == '\n') {
@@ -5230,8 +5334,8 @@
     return (find_tree_node(name, -1));
 }
 
-/* Find node in specific MIB module
-   Used by Perl modules		*/
+netsnmp_feature_child_of(parse_find_node2, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_PARSE_FIND_NODE2
 struct tree    *
 find_node2(const char *name, const char *module)
 {                               
@@ -5245,7 +5349,10 @@
   }
   return (find_tree_node(name, modid));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PARSE_FIND_NODE2 */
 
+#ifndef NETSNMP_FEATURE_REMOVE_FIND_MODULE
+/* Used in the perl module */
 struct module  *
 find_module(int mid)
 {
@@ -5257,6 +5364,7 @@
     }
     return mp;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_FIND_MODULE */
 
 
 static char     leave_indent[256];
diff --git a/snmplib/read_config.c b/snmplib/read_config.c
index 8e724c0..3167674 100644
--- a/snmplib/read_config.c
+++ b/snmplib/read_config.c
@@ -65,6 +65,7 @@
  *  @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <ctype.h>
@@ -145,6 +146,12 @@
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/callback.h>
 
+netsnmp_feature_child_of(read_config_all, libnetsnmp)
+
+netsnmp_feature_child_of(unregister_app_config_handler, read_config_all)
+netsnmp_feature_child_of(read_config_register_app_prenetsnmp_mib_handler, netsnmp_unused)
+netsnmp_feature_child_of(read_config_register_const_config_handler, netsnmp_unused)
+
 static int      config_errors;
 
 struct config_files *config_files = NULL;
@@ -252,6 +259,7 @@
 					    help, PREMIB_CONFIG);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_READ_CONFIG_REGISTER_APP_PRENETSNMP_MIB_HANDLER
 struct config_line *
 register_app_prenetsnmp_mib_handler(const char *token,
                                     void (*parser) (const char *, char *),
@@ -261,6 +269,7 @@
     return (register_prenetsnmp_mib_handler
             (NULL, token, parser, releaser, help));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_CONFIG_REGISTER_APP_PRENETSNMP_MIB_HANDLER */
 
 /**
  * register_config_handler registers handlers for certain tokens specified in
@@ -305,6 +314,7 @@
 					    help, NORMAL_CONFIG);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_READ_CONFIG_REGISTER_CONST_CONFIG_HANDLER
 struct config_line *
 register_const_config_handler(const char *type,
                               const char *token,
@@ -316,6 +326,7 @@
                                             parser, releaser,
 					    help, NORMAL_CONFIG);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_CONFIG_REGISTER_CONST_CONFIG_HANDLER */
 
 struct config_line *
 register_app_config_handler(const char *token,
@@ -419,11 +430,13 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_UNREGISTER_APP_CONFIG_HANDLER
 void
 unregister_app_config_handler(const char *token)
 {
     unregister_config_handler(NULL, token);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UNREGISTER_APP_CONFIG_HANDLER */
 
 void
 unregister_all_config_handlers(void)
@@ -463,8 +476,8 @@
 }
 #endif
 
-int             linecount,    prev_linecount;
-const char     *curfilename, *prev_filename;
+static unsigned int  linecount;
+static const char   *curfilename;
 
 struct config_line *
 read_config_get_handlers(const char *type)
@@ -742,17 +755,17 @@
 {
     static int      depth = 0;
     static int      files = 0;
+
+    const char * const prev_filename = curfilename;
+    const unsigned int prev_linecount = linecount;
+
     FILE           *ifile;
-    char            line[STRINGMAX], token[STRINGMAX];
-    char           *cptr;
-    int             i, ret;
-    struct config_line *lptr;
+    char           *line = NULL;  /* current line buffer */
+    size_t          linesize = 0; /* allocated size of line */
 
-    // reset file counter when recursion depth is 0
-    if (depth == 0) files = 0;
-
-    linecount = 0;
-    curfilename = filename;
+    /* reset file counter when recursion depth is 0 */
+    if (depth == 0)
+        files = 0;
 
     if ((ifile = fopen(filename, "r")) == NULL) {
 #ifdef ENOENT
@@ -767,13 +780,9 @@
                         strerror(errno)));
         } else
 #endif                          /* EACCES */
-#if defined(ENOENT) || defined(EACCES)
         {
             snmp_log_perror(filename);
         }
-#else                           /* defined(ENOENT) || defined(EACCES) */
-            snmp_log_perror(filename);
-#endif                          /* ENOENT */
         return SNMPERR_GENERR;
     }
 
@@ -791,25 +800,58 @@
 	fclose(ifile);
         return SNMPERR_GENERR;
     }
+
+    linecount = 0;
+    curfilename = filename;
+
     ++files;
     ++depth;
 
     DEBUGMSGTL(("read_config:file", "Reading configuration %s (%d)\n",
                 filename, when));
-    
-    while (fgets(line, sizeof(line), ifile) != NULL) {
-        lptr = line_handler;
-        linecount++;
-        cptr = line;
-        i = strlen(line) - 1;
-        if (line[i] == '\n')
-            line[i] = 0;
+
+    while (ifile) {
+        size_t              linelen = 0; /* strlen of the current line */
+        char               *cptr;
+        struct config_line *lptr = line_handler;
+
+        for (;;) {
+            if (linesize <= linelen + 1) {
+                char *tmp = realloc(line, linesize + 256);
+                if (tmp) {
+                    line = tmp;
+                    linesize += 256;
+                } else {
+                    netsnmp_config_error("Failed to allocate memory\n");
+                    free(line);
+                    fclose(ifile);
+                    return SNMPERR_GENERR;
+                }
+            }
+            if (fgets(line + linelen, linesize - linelen, ifile) == NULL) {
+                line[linelen] = '\0';
+                fclose (ifile);
+                ifile = NULL;
+                break;
+            }
+
+            linelen += strlen(line + linelen);
+
+            if (line[linelen - 1] == '\n') {
+              line[linelen - 1] = '\0';
+              break;
+            }
+        }
+
+        ++linecount;
         DEBUGMSGTL(("9:read_config:line", "%s:%d examining: %s\n",
                     filename, linecount, line));
         /*
          * check blank line or # comment 
          */
-        if ((cptr = skip_white(cptr))) {
+        if ((cptr = skip_white(line))) {
+            char token[STRINGMAX];
+
             cptr = copy_nword(cptr, token, sizeof(token));
             if (token[0] == '[') {
                 if (token[strlen(token) - 1] != ']') {
@@ -864,8 +906,6 @@
                             netsnmp_config_error("Can't open include dir '%s'.", cptr);
                         continue;
                     }
-                    prev_filename  = curfilename;
-                    prev_linecount = linecount;
                     while ((entry = readdir( d )) != NULL ) {
                         if ( entry->d_name[0] != '.') {
                             len = NAMLEN(entry);
@@ -877,8 +917,6 @@
                         }
                     }
                     closedir(d);
-                    curfilename = prev_filename;
-                    linecount   = prev_linecount;
                     continue;
                 } else if ( strcasecmp( token, "includefile" )==0) {
                     char  fname[SNMP_MAXPATH], *cp;
@@ -899,17 +937,14 @@
                             *(++cp) = '\0';
                         strlcat(fname, cptr, SNMP_MAXPATH);
                     }
-                    prev_filename  = curfilename;
-                    prev_linecount = linecount;
-                    ret = read_config(fname, line_handler, when);
-                    curfilename = prev_filename;
-                    linecount   = prev_linecount;
-                    if ((ret != SNMPERR_SUCCESS) && (when != PREMIB_CONFIG))
-                        netsnmp_config_error("Included file '%s' not found.", fname);
+                    if (read_config(fname, line_handler, when) !=
+                        SNMPERR_SUCCESS && when != PREMIB_CONFIG)
+                        netsnmp_config_error("Included file '%s' not found.",
+                                             fname);
                     continue;
                 } else if ( strcasecmp( token, "includesearch" )==0) {
                     struct config_files ctmp;
-                    int len;
+                    int len, ret;
 
                     if (cptr == NULL) {
                         if (when != PREMIB_CONFIG)
@@ -922,11 +957,7 @@
                     ctmp.next = NULL;
                     if ((len > 5) && (strcmp(&cptr[len-5],".conf") == 0))
                        cptr[len-5] = 0; /* chop off .conf */
-                    prev_filename  = curfilename;
-                    prev_linecount = linecount;
                     ret = read_config_files_of_type(when,&ctmp);
-                    curfilename = prev_filename;
-                    linecount   = prev_linecount;
                     if ((len > 5) && (cptr[len-5] == 0))
                        cptr[len-5] = '.'; /* restore .conf */
                     if (( ret != SNMPERR_SUCCESS ) && (when != PREMIB_CONFIG))
@@ -947,7 +978,9 @@
             }
         }
     }
-    fclose(ifile);
+    free(line);
+    linecount = prev_linecount;
+    curfilename = prev_filename;
     --depth;
     return SNMPERR_SUCCESS;
 
diff --git a/snmplib/scapi.c b/snmplib/scapi.c
index e42f6c6..16ac829 100644
--- a/snmplib/scapi.c
+++ b/snmplib/scapi.c
@@ -15,6 +15,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #ifdef HAVE_STDLIB_H
@@ -50,6 +51,11 @@
 #include <net-snmp/output_api.h>
 #include <net-snmp/utilities.h>
 
+netsnmp_feature_child_of(usm_support, libnetsnmp)
+netsnmp_feature_child_of(usm_scapi, usm_support)
+
+#ifndef NETSNMP_FEATURE_REMOVE_USM_SCAPI
+
 #ifdef NETSNMP_USE_INTERNAL_MD5
 #include <net-snmp/library/md5.h>
 #endif
@@ -68,6 +74,7 @@
 #include <net-snmp/library/openssl_des.h>
 #include <net-snmp/library/openssl_aes.h>
 #endif
+
 #ifdef NETSNMP_USE_OPENSSL
 #include <openssl/hmac.h>
 #include <openssl/evp.h>
@@ -143,6 +150,8 @@
     return SNMPERR_GENERR;
 }
 
+netsnmp_feature_child_of(scapi_get_proper_priv_length, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_SCAPI_GET_PROPER_PRIV_LENGTH
 int
 sc_get_proper_priv_length(const oid * privtype, u_int privtype_len)
 {
@@ -159,6 +168,7 @@
 #endif
     return properlength;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SCAPI_GET_PROPER_PRIV_LENGTH */
 
 
 /*******************************************************************-o-******
@@ -180,7 +190,7 @@
 
     gettimeofday(&tv, (struct timezone *) 0);
 
-    srandom(tv.tv_sec ^ tv.tv_usec);
+    srandom((unsigned)(tv.tv_sec ^ tv.tv_usec));
 #elif NETSNMP_USE_PKCS11
     DEBUGTRACE;
     rval = pkcs_init();
@@ -1350,3 +1360,4 @@
     return rc;
 }
 #endif /* NETSNMP_USE_INTERNAL_CRYPTO */
+#endif /*  NETSNMP_FEATURE_REMOVE_USM_SCAPI  */
diff --git a/snmplib/snmp-tc.c b/snmplib/snmp-tc.c
index 38285e1..891c3a0 100644
--- a/snmplib/snmp-tc.c
+++ b/snmplib/snmp-tc.c
@@ -5,6 +5,7 @@
 
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <sys/types.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -32,6 +33,14 @@
 #include <net-snmp/library/snmp-tc.h>   /* for "internal" definitions */
 #include <net-snmp/library/snmp_api.h>
 
+netsnmp_feature_child_of(snmp_tc_all, libnetsnmp)
+
+netsnmp_feature_child_of(netsnmp_dateandtime_set_buf_from_vars, netsnmp_unused)
+netsnmp_feature_child_of(date_n_time, snmp_tc_all)
+netsnmp_feature_child_of(ctime_to_timet, snmp_tc_all)
+netsnmp_feature_child_of(check_rowstatus_with_storagetype_transition, snmp_tc_all)
+
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_DATEANDTIME_SET_BUF_FROM_VARS
 /*
   DateAndTime ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"
@@ -112,7 +121,9 @@
 
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_DATEANDTIME_SET_BUF_FROM_VARS */
 
+#ifndef NETSNMP_FEATURE_REMOVE_DATE_N_TIME
 u_char         *
 date_n_time(const time_t * when, size_t * length)
 {
@@ -192,8 +203,9 @@
 
     return string;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DATE_N_TIME */
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_CTIME_TO_TIMET
 time_t
 ctime_to_timet(const char *str)
 {
@@ -251,9 +263,10 @@
 
     return (mktime(&tm));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CTIME_TO_TIMET */
 
 /*
- * blatantly lifted from opensmp 
+ * blatantly lifted from opensnmp 
  */
 char
 check_rowstatus_transition(int oldValue, int newValue)
@@ -401,6 +414,7 @@
     return SNMP_ERR_NOERROR;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_ROWSTATUS_WITH_STORAGETYPE_TRANSITION
 char
 check_rowstatus_with_storagetype_transition(int oldValue, int newValue,
                                             int oldStorage)
@@ -415,7 +429,10 @@
 
     return check_rowstatus_transition(oldValue, newValue);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_ROWSTATUS_WITH_STORAGETYPE_TRANSITION */
 
+netsnmp_feature_child_of(check_storage_transition, snmp_tc_all)
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_STORAGE_TRANSITION
 char
 check_storage_transition(int oldValue, int newValue)
 {
@@ -456,3 +473,4 @@
 
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_STORAGE_TRANSITION */
diff --git a/snmplib/snmp_alarm.c b/snmplib/snmp_alarm.c
index 74628be..af4800f 100644
--- a/snmplib/snmp_alarm.c
+++ b/snmplib/snmp_alarm.c
@@ -82,29 +82,24 @@
 void
 sa_update_entry(struct snmp_alarm *a)
 {
-    if (!timerisset(&a->t_last)) {
-        struct timeval  t_now;
+    if (!timerisset(&a->t_lastM)) {
         /*
-         * Never been called yet, call time `t' from now.  
+         * First call of sa_update_entry() for alarm a: set t_lastM and t_nextM.
          */
-        gettimeofday(&t_now, NULL);
-
-        a->t_last = t_now;
-
-        NETSNMP_TIMERADD(&t_now, &a->t, &a->t_next);
-    } else if (!timerisset(&a->t_next)) {
+        netsnmp_get_monotonic_clock(&a->t_lastM);
+        NETSNMP_TIMERADD(&a->t_lastM, &a->t, &a->t_nextM);
+    } else if (!timerisset(&a->t_nextM)) {
         /*
          * We've been called but not reset for the next call.  
          */
         if (a->flags & SA_REPEAT) {
-            if (!timerisset(&a->t)) {
+            if (timerisset(&a->t)) {
+                NETSNMP_TIMERADD(&a->t_lastM, &a->t, &a->t_nextM);
+            } else {
                 DEBUGMSGTL(("snmp_alarm",
                             "update_entry: illegal interval specified\n"));
                 snmp_alarm_unregister(a->clientreg);
-                return;
             }
-
-            NETSNMP_TIMERADD(&a->t_last, &a->t, &a->t_next);
         } else {
             /*
              * Single time call, remove it.  
@@ -177,22 +172,12 @@
 sa_find_next(void)
 {
     struct snmp_alarm *a, *lowest = NULL;
-    struct timeval  t_now;
 
-    gettimeofday(&t_now, NULL);
+    for (a = thealarms; a != NULL; a = a->next)
+        if (!(a->flags & SA_FIRED)
+            && (lowest == NULL || timercmp(&a->t_nextM, &lowest->t_nextM, <)))
+            lowest = a;
 
-    for (a = thealarms; a != NULL; a = a->next) {
-        if (!(a->flags & SA_FIRED)) {
-            /* check for time delta skew */
-            if ((a->t_next.tv_sec - t_now.tv_sec) > a->t.tv_sec) {
-                DEBUGMSGTL(("time_skew", "Time delta too big (%ld seconds), should be %ld seconds - fixing\n",
-		    (long)(a->t_next.tv_sec - t_now.tv_sec), (long)a->t.tv_sec));
-                NETSNMP_TIMERADD(&t_now, &a->t, &a->t_next);
-            }
-            if (lowest == NULL || timercmp(&a->t_next, &lowest->t_next, <))
-                lowest = a;
-       }
-    }
     return lowest;
 }
 
@@ -212,8 +197,7 @@
 void
 run_alarms(void)
 {
-    int             done = 0;
-    struct snmp_alarm *a = NULL;
+    struct snmp_alarm *a;
     unsigned int    clientreg;
     struct timeval  t_now;
 
@@ -222,31 +206,27 @@
      * call until all events are finally in the future again.  
      */
 
-    while (!done) {
-        if ((a = sa_find_next()) == NULL) {
+    while ((a = sa_find_next()) != NULL) {
+        netsnmp_get_monotonic_clock(&t_now);
+
+        if (timercmp(&a->t_nextM, &t_now, >))
             return;
-        }
 
-        gettimeofday(&t_now, NULL);
+        clientreg = a->clientreg;
+        a->flags |= SA_FIRED;
+        DEBUGMSGTL(("snmp_alarm", "run alarm %d\n", clientreg));
+        (*(a->thecallback)) (clientreg, a->clientarg);
+        DEBUGMSGTL(("snmp_alarm", "alarm %d completed\n", clientreg));
 
-        if (timercmp(&a->t_next, &t_now, <)) {
-            clientreg = a->clientreg;
-            a->flags |= SA_FIRED;
-            DEBUGMSGTL(("snmp_alarm", "run alarm %d\n", clientreg));
-            (*(a->thecallback)) (clientreg, a->clientarg);
-            DEBUGMSGTL(("snmp_alarm", "alarm %d completed\n", clientreg));
-
-            if ((a = sa_find_specific(clientreg)) != NULL) {
-                a->t_last = t_now;
-                timerclear(&a->t_next);
-                a->flags &= ~SA_FIRED;
-                sa_update_entry(a);
-            } else {
-                DEBUGMSGTL(("snmp_alarm", "alarm %d deleted itself\n",
-                            clientreg));
-            }
+        a = sa_find_specific(clientreg);
+        if (a) {
+            a->t_lastM = t_now;
+            timerclear(&a->t_nextM);
+            a->flags &= ~SA_FIRED;
+            sa_update_entry(a);
         } else {
-            done = 1;
+            DEBUGMSGTL(("snmp_alarm", "alarm %d deleted itself\n",
+                        clientreg));
         }
     }
 }
@@ -281,9 +261,9 @@
 
     if (sa_ptr) {
         netsnmp_assert(alarm_tm);
-        netsnmp_assert(timerisset(&sa_ptr->t_next));
-        if (timercmp(&sa_ptr->t_next, now, >))
-            *alarm_tm = sa_ptr->t_next;
+        netsnmp_assert(timerisset(&sa_ptr->t_nextM));
+        if (timercmp(&sa_ptr->t_nextM, now, >))
+            *alarm_tm = sa_ptr->t_nextM;
         else
             *alarm_tm = *now;
         return sa_ptr->clientreg;
@@ -307,7 +287,7 @@
     struct timeval t_now, alarm_tm;
     int res;
 
-    gettimeofday(&t_now, NULL);
+    netsnmp_get_monotonic_clock(&t_now);
     res = netsnmp_get_next_alarm_time(&alarm_tm, &t_now);
     if (res)
         NETSNMP_TIMERSUB(&alarm_tm, &t_now, delta);
@@ -339,7 +319,7 @@
         signal(SIGALRM, alarm_handler);
         setitimer(ITIMER_REAL, &it, NULL);
         DEBUGMSGTL(("snmp_alarm", "schedule alarm %d in %ld.%03ld seconds\n",
-                    nextalarm, delta.tv_sec, (delta.tv_usec / 1000)));
+                    nextalarm, (long) delta.tv_sec, (long)(delta.tv_usec / 1000)));
 # else  /* HAVE_SETITIMER */
 #  ifdef SIGALRM
         signal(SIGALRM, alarm_handler);
@@ -466,7 +446,7 @@
 
     DEBUGMSGTL(("snmp_alarm",
                 "registered alarm %d, t = %ld.%03ld, flags=0x%02x\n",
-                (*s)->clientreg, (*s)->t.tv_sec, ((*s)->t.tv_usec / 1000),
+                (*s)->clientreg, (long) (*s)->t.tv_sec, (long)((*s)->t.tv_usec / 1000),
                 (*s)->flags));
 
     if (start_alarms) {
@@ -494,12 +474,12 @@
     struct snmp_alarm *a;
     struct timeval  t_now;
     if ((a = sa_find_specific(clientreg)) != NULL) {
-        gettimeofday(&t_now, NULL);
-        a->t_last.tv_sec = t_now.tv_sec;
-        a->t_last.tv_usec = t_now.tv_usec;
-        a->t_next.tv_sec = 0;
-        a->t_next.tv_usec = 0;
-        NETSNMP_TIMERADD(&t_now, &a->t, &a->t_next);
+        netsnmp_get_monotonic_clock(&t_now);
+        a->t_lastM.tv_sec = t_now.tv_sec;
+        a->t_lastM.tv_usec = t_now.tv_usec;
+        a->t_nextM.tv_sec = 0;
+        a->t_nextM.tv_usec = 0;
+        NETSNMP_TIMERADD(&t_now, &a->t, &a->t_nextM);
         return 0;
     }
     DEBUGMSGTL(("snmp_alarm_reset", "alarm %d not found\n",
diff --git a/snmplib/snmp_api.c b/snmplib/snmp_api.c
index 0dcf66d..191debf 100644
--- a/snmplib/snmp_api.c
+++ b/snmplib/snmp_api.c
@@ -38,6 +38,7 @@
  * snmp_api.c - API for access to snmp.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <ctype.h>
@@ -135,8 +136,14 @@
 #include <net-snmp/library/snmp_service.h>
 #include <net-snmp/library/vacm.h>
 
+netsnmp_feature_child_of(statistics, libnetsnmp)
+netsnmp_feature_child_of(snmp_api, libnetsnmp)
+netsnmp_feature_child_of(oid_is_subtree, snmp_api)
+netsnmp_feature_child_of(snmpv3_probe_contextEngineID_rfc5343, snmp_api)
+
 #if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
 extern void netsnmp_certs_init(void);
+extern void netsnmp_certs_shutdown(void);
 #endif
 
 static void     _init_snmp(void);
@@ -187,7 +194,7 @@
 
 #define DEFAULT_COMMUNITY   "public"
 #define DEFAULT_RETRIES	    5
-#define DEFAULT_TIMEOUT	    1000000L
+#define DEFAULT_TIMEOUT	    ONE_SEC
 #define DEFAULT_REMPORT	    SNMP_PORT
 #define DEFAULT_ENTERPRISE  default_enterprise
 #define DEFAULT_TIME	    0
@@ -222,18 +229,6 @@
     size_t          packet_len, packet_size;
 };
 
-/*
- * The list of active/open sessions.
- */
-struct session_list {
-    struct session_list *next;
-    netsnmp_session *session;
-    netsnmp_transport *transport;
-    struct snmp_internal_session *internal;
-};
-
-
-
 static const char *api_errors[-SNMPERR_MAX + 1] = {
     "No error",                 /* SNMPERR_SUCCESS */
     "Generic error",            /* SNMPERR_GENERR */
@@ -353,7 +348,6 @@
 
 static void     snmpv3_calc_msg_flags(int, int, u_char *);
 static int      snmpv3_verify_msg(netsnmp_request_list *, netsnmp_pdu *);
-static int      snmpv3_build_probe_pdu(netsnmp_pdu **);
 static int      snmpv3_build(u_char ** pkt, size_t * pkt_len,
                              size_t * offset, netsnmp_session * session,
                              netsnmp_pdu *pdu);
@@ -391,12 +385,14 @@
         return "GET";
     case SNMP_MSG_GETNEXT:
         return "GETNEXT";
-    case SNMP_MSG_RESPONSE:
-        return "RESPONSE";
-    case SNMP_MSG_SET:
-        return "SET";
     case SNMP_MSG_GETBULK:
         return "GETBULK";
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    case SNMP_MSG_SET:
+        return "SET";
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    case SNMP_MSG_RESPONSE:
+        return "RESPONSE";
     case SNMP_MSG_INFORM:
         return "INFORM";
     case SNMP_MSG_TRAP2:
@@ -675,7 +671,7 @@
     tmpReqid = lrand48();
     tmpMsgid = lrand48();
 #else
-    srandom(tv.tv_sec ^ tv.tv_usec);
+    srandom((unsigned)(tv.tv_sec ^ tv.tv_usec));
     tmpReqid = random();
     tmpMsgid = random();
 #endif
@@ -711,6 +707,8 @@
 
     netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, 
                        NETSNMP_DS_LIB_HEX_OUTPUT_LENGTH, 16);
+    netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_RETRIES,
+                       DEFAULT_RETRIES);
 
 #ifdef NETSNMP_USE_REVERSE_ASNENCODING
     netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
@@ -787,6 +785,10 @@
                                "noContextEngineIDDiscovery",
                                NETSNMP_DS_LIBRARY_ID,
                                NETSNMP_DS_LIB_NO_DISCOVERY);
+    netsnmp_ds_register_config(ASN_INTEGER, "snmp", "timeout",
+		               NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_TIMEOUT);
+    netsnmp_ds_register_config(ASN_INTEGER, "snmp", "retries",
+		               NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_RETRIES);
 
     netsnmp_register_service_handlers();
 }
@@ -844,6 +846,11 @@
 #if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
     netsnmp_certs_init();
 #endif
+#ifdef DNSSEC_LOCAL_VALIDATION
+    netsnmp_ds_register_config(ASN_BOOLEAN, "snmp", "dnssecWarnOnly",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_DNSSEC_WARN_ONLY);
+#endif
 
     read_premib_configs();
 #ifndef NETSNMP_DISABLE_MIB_LOADING
@@ -905,6 +912,9 @@
 #ifndef NETSNMP_DISABLE_MIB_LOADING
     shutdown_mib();
 #endif /* NETSNMP_DISABLE_MIB_LOADING */
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+    netsnmp_certs_shutdown();
+#endif
     unregister_all_config_handlers();
     netsnmp_container_free_list();
     clear_sec_mod();
@@ -912,10 +922,9 @@
     netsnmp_clear_tdomain_list();
     clear_callback();
     netsnmp_ds_shutdown();
-    clear_user_list();
     netsnmp_clear_default_target();
     netsnmp_clear_default_domain();
-    free_etimelist();
+    shutdown_secmod();
 
     init_snmp_init_done  = 0;
     _init_snmp_init_done = 0;
@@ -949,6 +958,8 @@
 /*
  * extended open 
  */
+netsnmp_feature_child_of(snmp_open_ex, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_OPEN_EX
 netsnmp_session *
 snmp_open_ex(netsnmp_session *session,
              int (*fpre_parse)	(netsnmp_session *, netsnmp_transport *,
@@ -983,6 +994,7 @@
 
     return (slp->session);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_OPEN_EX */
 
 static struct session_list *
 _sess_copy(netsnmp_session * in_session)
@@ -1172,10 +1184,22 @@
         session->securityNameLen = strlen(cp);
     }
 
-    if (session->retries == SNMP_DEFAULT_RETRIES)
-        session->retries = DEFAULT_RETRIES;
-    if (session->timeout == SNMP_DEFAULT_TIMEOUT)
-        session->timeout = DEFAULT_TIMEOUT;
+    if (session->retries == SNMP_DEFAULT_RETRIES) {
+        int retry = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+                                       NETSNMP_DS_LIB_RETRIES);
+        if (retry < 0)
+            session->retries = DEFAULT_RETRIES;
+        else
+            session->retries = retry;
+    }
+    if (session->timeout == SNMP_DEFAULT_TIMEOUT) {
+        int timeout = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+                                         NETSNMP_DS_LIB_TIMEOUT);
+        if (timeout <= 0)
+            session->timeout = DEFAULT_TIMEOUT;
+        else
+            session->timeout = timeout * ONE_SEC;
+    }
     session->sessid = snmp_get_next_sessid();
 
     snmp_call_callbacks(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SESSION_INIT,
@@ -1227,6 +1251,7 @@
     return psl;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPV3_PROBE_CONTEXTENGINEID_RFC5343
 /**
  * probe for engineID using RFC 5343 probing mechanisms
  *
@@ -1318,6 +1343,7 @@
     }
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPV3_PROBE_CONTEXTENGINEID_RFC5343 */
 
 
 /**
@@ -1339,16 +1365,17 @@
 snmpv3_engineID_probe(struct session_list *slp,
                       netsnmp_session * in_session)
 {
-    netsnmp_pdu    *pdu = NULL, *response = NULL;
     netsnmp_session *session;
-    unsigned int    i;
     int             status;
+    struct snmp_secmod_def *sptr = NULL;
 
     if (slp == NULL || slp->session == NULL) {
         return 0;
     }
 
     session = slp->session;
+    netsnmp_assert_or_return(session != NULL, 0);
+    sptr = find_sec_mod(session->securityModel);
 
     /*
      * If we are opening a V3 session and we don't know engineID we must probe
@@ -1356,90 +1383,30 @@
      * list so that the response can handled correctly. 
      */
 
-    if ((session->flags & SNMP_FLAGS_DONT_PROBE) == SNMP_FLAGS_DONT_PROBE)
-        return 1;
-
-    if (session->version == SNMP_VERSION_3) {
-        struct snmp_secmod_def *sptr = find_sec_mod(session->securityModel);
-
+    if (session->version == SNMP_VERSION_3 &&
+        (0 == (session->flags & SNMP_FLAGS_DONT_PROBE))) {
         if (NULL != sptr && NULL != sptr->probe_engineid) {
             DEBUGMSGTL(("snmp_api", "probing for engineID using security model callback...\n"));
             /* security model specific mechanism of determining engineID */
-            status = (*sptr->probe_engineid) (slp, session);
-            if (status)
+            status = (*sptr->probe_engineid) (slp, in_session);
+            if (status != SNMPERR_SUCCESS)
                 return 0;
-            return 1; /* success! */
-        } else if (session->securityEngineIDLen == 0) {
-            if (snmpv3_build_probe_pdu(&pdu) != 0) {
-                DEBUGMSGTL(("snmp_api", "unable to create probe PDU\n"));
-                return 0;
-            }
-            DEBUGMSGTL(("snmp_api", "probing for engineID...\n"));
-            session->flags |= SNMP_FLAGS_DONT_PROBE; /* prevent recursion */
-            status = snmp_sess_synch_response(slp, pdu, &response);
-
-            if ((response == NULL) && (status == STAT_SUCCESS)) {
-                status = STAT_ERROR;
-            }
-
-            switch (status) {
-            case STAT_SUCCESS:
-                in_session->s_snmp_errno = SNMPERR_INVALID_MSG; /* XX?? */
-                DEBUGMSGTL(("snmp_sess_open",
-                            "error: expected Report as response to probe: %s (%ld)\n",
-                            snmp_errstring(response->errstat),
-                            response->errstat));
-                break;
-            case STAT_ERROR:   /* this is what we expected -> Report == STAT_ERROR */
-                in_session->s_snmp_errno = SNMPERR_UNKNOWN_ENG_ID;
-                break;
-            case STAT_TIMEOUT:
-                in_session->s_snmp_errno = SNMPERR_TIMEOUT;
-            default:
-                DEBUGMSGTL(("snmp_sess_open",
-                            "unable to connect with remote engine: %s (%d)\n",
-                            snmp_api_errstring(session->s_snmp_errno),
-                            session->s_snmp_errno));
-                break;
-            }
-
-            if (slp->session->securityEngineIDLen == 0) {
-                DEBUGMSGTL(("snmp_api",
-                            "unable to determine remote engine ID\n"));
-                /* clear the flag so that probe occurs on next inform */
-                session->flags &= ~SNMP_FLAGS_DONT_PROBE;
-                return 0;
-            }
-
-            in_session->s_snmp_errno = SNMPERR_SUCCESS;
-            if (snmp_get_do_debugging()) {
-                DEBUGMSGTL(("snmp_sess_open",
-                            "  probe found engineID:  "));
-                for (i = 0; i < slp->session->securityEngineIDLen; i++)
-                    DEBUGMSG(("snmp_sess_open", "%02x",
-                              slp->session->securityEngineID[i]));
-                DEBUGMSG(("snmp_sess_open", "\n"));
-            }
-        }
-
-        /*
-         * if boot/time supplied set it for this engineID 
-         */
-        if (session->engineBoots || session->engineTime) {
-            set_enginetime(session->securityEngineID,
-                           session->securityEngineIDLen,
-                           session->engineBoots, session->engineTime,
-                           TRUE);
-        }
-
-        if (create_user_from_session(slp->session) != SNMPERR_SUCCESS) {
-            in_session->s_snmp_errno = SNMPERR_UNKNOWN_USER_NAME;       /* XX?? */
-            DEBUGMSGTL(("snmp_api",
-                        "snmpv3_engine_probe(): failed(2) to create a new user from session\n"));
+        } else {
+            /* XXX: default to the default RFC5343 contextEngineID Probe? */
             return 0;
         }
     }
 
+    /*
+     * see if there is a hook to call now that we're done probing for an
+     * engineID
+     */
+    if (sptr && sptr->post_probe_engineid) {
+        status = (*sptr->post_probe_engineid)(slp, in_session);
+        if (status != SNMPERR_SUCCESS)
+            return 0;
+    }
+
     return 1;
 }
 
@@ -1589,12 +1556,12 @@
         if (in_session->flags & SNMP_FLAGS_STREAM_SOCKET) {
             transport =
                 netsnmp_tdomain_transport_full("snmp", in_session->peername,
-                                               in_session->local_port, "tcp",
+                                               in_session->local_port, "tcp,tcp6",
                                                NULL);
         } else {
             transport =
                 netsnmp_tdomain_transport_full("snmp", in_session->peername,
-                                               in_session->local_port, "udp",
+                                               in_session->local_port, "udp,udp6",
                                                NULL);
         }
 
@@ -1783,18 +1750,11 @@
     if (slp->session->version == SNMP_VERSION_3) {
         DEBUGMSGTL(("snmp_sess_add",
                     "adding v3 session -- maybe engineID probe now\n"));
-        if (!snmpv3_engineID_probe(slp, in_session)) {
+        if (!snmpv3_engineID_probe(slp, slp->session)) {
             DEBUGMSGTL(("snmp_sess_add", "engine ID probe failed\n"));
             snmp_sess_close(slp);
             return NULL;
         }
-        if (create_user_from_session(slp->session) != SNMPERR_SUCCESS) {
-            in_session->s_snmp_errno = SNMPERR_UNKNOWN_USER_NAME;
-            DEBUGMSGTL(("snmp_api",
-                        "snmp_sess_add(): failed(2) to create a new user from session\n"));
-            snmp_sess_close(slp);
-            return NULL;
-        }
     }
 
     slp->session->flags &= ~SNMP_FLAGS_DONT_PROBE;
@@ -1828,225 +1788,17 @@
     return pvoid;
 }
 
-
-
-/*
- * create_user_from_session(netsnmp_session *session):
- * 
- * creates a user in the usm table from the information in a session.
- * If the user already exists, it is updated with the current
- * information from the session
- * 
- * Parameters:
- * session -- IN: pointer to the session to use when creating the user.
- * 
- * Returns:
- * SNMPERR_SUCCESS
- * SNMPERR_GENERR 
- */
 int
-create_user_from_session(netsnmp_session * session)
-{
-    struct usmUser *user;
-    int             user_just_created = 0;
-    char *cp;
+create_user_from_session(netsnmp_session * session) {
+#ifdef NETSNMP_SECMOD_USM
+    return usm_create_user_from_session(session);
+#else
+    snmp_log(LOG_ERR, "create_user_from_session called when USM wasn't compiled in");
+    netsnmp_assert(0 == 1);
+    return SNMP_ERR_GENERR;
+#endif
+}
 
-    /*
-     * - don't create-another/copy-into user for this session by default
-     * - bail now (no error) if we don't have an engineID
-     */
-    if (SNMP_FLAGS_USER_CREATED == (session->flags & SNMP_FLAGS_USER_CREATED) ||
-        session->securityModel != SNMP_SEC_MODEL_USM ||
-        session->version != SNMP_VERSION_3 ||
-        session->securityNameLen == 0 ||
-        session->securityEngineIDLen == 0)
-        return SNMPERR_SUCCESS;
-
-    session->flags |= SNMP_FLAGS_USER_CREATED;
-
-    /*
-     * now that we have the engineID, create an entry in the USM list
-     * for this user using the information in the session 
-     */
-    user = usm_get_user_from_list(session->securityEngineID,
-                                  session->securityEngineIDLen,
-                                  session->securityName,
-                                  usm_get_userList(), 0);
-    if (user == NULL) {
-        DEBUGMSGTL(("snmp_api", "Building user %s...\n",
-                    session->securityName));
-        /*
-         * user doesn't exist so we create and add it 
-         */
-        user = (struct usmUser *) calloc(1, sizeof(struct usmUser));
-        if (user == NULL)
-            return SNMPERR_GENERR;
-
-        /*
-         * copy in the securityName 
-         */
-        if (session->securityName) {
-            user->name = strdup(session->securityName);
-            user->secName = strdup(session->securityName);
-            if (user->name == NULL || user->secName == NULL) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-        }
-
-        /*
-         * copy in the engineID 
-         */
-        user->engineID = netsnmp_memdup(session->securityEngineID,
-                                        session->securityEngineIDLen);
-        if (!user->engineID) {
-            usm_free_user(user);
-            return SNMPERR_GENERR;
-        }
-        user->engineIDLen = session->securityEngineIDLen;
-
-        user_just_created = 1;
-    }
-
-    /*
-     * copy the auth protocol 
-     */
-    if (user->authProtocol == NULL && session->securityAuthProto != NULL) {
-        SNMP_FREE(user->authProtocol);
-        user->authProtocol =
-            snmp_duplicate_objid(session->securityAuthProto,
-                                 session->securityAuthProtoLen);
-        if (user->authProtocol == NULL) {
-            usm_free_user(user);
-            return SNMPERR_GENERR;
-        }
-        user->authProtocolLen = session->securityAuthProtoLen;
-    }
-
-    /*
-     * copy the priv protocol 
-     */
-    if (user->privProtocol == NULL && session->securityPrivProto != NULL) {
-        SNMP_FREE(user->privProtocol);
-        user->privProtocol =
-            snmp_duplicate_objid(session->securityPrivProto,
-                                 session->securityPrivProtoLen);
-        if (user->privProtocol == NULL) {
-            usm_free_user(user);
-            return SNMPERR_GENERR;
-        }
-        user->privProtocolLen = session->securityPrivProtoLen;
-    }
-
-    /*
-     * copy in the authentication Key.  If not localized, localize it 
-     */
-    if (user->authKey == NULL) {
-        if (session->securityAuthLocalKey != NULL
-            && session->securityAuthLocalKeyLen != 0) {
-            /* already localized key passed in.  use it */
-            SNMP_FREE(user->authKey);
-            user->authKey = netsnmp_memdup(session->securityAuthLocalKey,
-                                           session->securityAuthLocalKeyLen);
-            if (!user->authKey) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-            user->authKeyLen = session->securityAuthLocalKeyLen;
-        } else if (session->securityAuthKey != NULL
-                   && session->securityAuthKeyLen != 0) {
-            SNMP_FREE(user->authKey);
-            user->authKey = (u_char *) calloc(1, USM_LENGTH_KU_HASHBLOCK);
-            if (user->authKey == NULL) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-            user->authKeyLen = USM_LENGTH_KU_HASHBLOCK;
-            if (generate_kul(user->authProtocol, user->authProtocolLen,
-                             session->securityEngineID,
-                             session->securityEngineIDLen,
-                             session->securityAuthKey,
-                             session->securityAuthKeyLen, user->authKey,
-                             &user->authKeyLen) != SNMPERR_SUCCESS) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-        } else if ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
-                                               NETSNMP_DS_LIB_AUTHLOCALIZEDKEY))) {
-            size_t buflen = USM_AUTH_KU_LEN;
-            SNMP_FREE(user->authKey);
-            user->authKey = (u_char *)malloc(buflen); /* max length needed */
-            user->authKeyLen = 0;
-            /* it will be a hex string */
-            if (!snmp_hex_to_binary(&user->authKey, &buflen, &user->authKeyLen,
-                                    0, cp)) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-        }
-    }
-
-    /*
-     * copy in the privacy Key.  If not localized, localize it 
-     */
-    if (user->privKey == NULL) {
-        if (session->securityPrivLocalKey != NULL
-            && session->securityPrivLocalKeyLen != 0) {
-            /* already localized key passed in.  use it */
-            SNMP_FREE(user->privKey);
-            user->privKey = netsnmp_memdup(session->securityPrivLocalKey,
-                                           session->securityPrivLocalKeyLen);
-            if (!user->privKey) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-            user->privKeyLen = session->securityPrivLocalKeyLen;
-        } else if (session->securityPrivKey != NULL
-                   && session->securityPrivKeyLen != 0) {
-            SNMP_FREE(user->privKey);
-            user->privKey = (u_char *) calloc(1, USM_LENGTH_KU_HASHBLOCK);
-            if (user->privKey == NULL) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-            user->privKeyLen = USM_LENGTH_KU_HASHBLOCK;
-            if (generate_kul(user->authProtocol, user->authProtocolLen,
-                             session->securityEngineID,
-                             session->securityEngineIDLen,
-                             session->securityPrivKey,
-                             session->securityPrivKeyLen, user->privKey,
-                             &user->privKeyLen) != SNMPERR_SUCCESS) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-        } else if ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
-                                               NETSNMP_DS_LIB_PRIVLOCALIZEDKEY))) {
-            size_t buflen = USM_PRIV_KU_LEN;
-            SNMP_FREE(user->privKey);
-            user->privKey = (u_char *)malloc(buflen); /* max length needed */
-            user->privKeyLen = 0;
-            /* it will be a hex string */
-            if (!snmp_hex_to_binary(&user->privKey, &buflen, &user->privKeyLen,
-                                    0, cp)) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-        }
-    }
-
-    if (user_just_created) {
-        /*
-         * add the user into the database 
-         */
-        user->userStatus = RS_ACTIVE;
-        user->userStorageType = ST_READONLY;
-        usm_add_user(user);
-    }
-
-    return SNMPERR_SUCCESS;
-
-
-}                               /* end create_user_from_session() */
 
 /*
  *  Do a "deep free()" of a netsnmp_session.
@@ -2208,49 +1960,6 @@
     return 1;
 }
 
-static int
-snmpv3_build_probe_pdu(netsnmp_pdu **pdu)
-{
-    struct usmUser *user;
-
-    /*
-     * create the pdu 
-     */
-    if (!pdu)
-        return -1;
-    *pdu = snmp_pdu_create(SNMP_MSG_GET);
-    if (!(*pdu))
-        return -1;
-    (*pdu)->version = SNMP_VERSION_3;
-    (*pdu)->securityName = strdup("");
-    (*pdu)->securityNameLen = strlen((*pdu)->securityName);
-    (*pdu)->securityLevel = SNMP_SEC_LEVEL_NOAUTH;
-    (*pdu)->securityModel = SNMP_SEC_MODEL_USM;
-
-    /*
-     * create the empty user 
-     */
-    user = usm_get_user(NULL, 0, (*pdu)->securityName);
-    if (user == NULL) {
-        user = (struct usmUser *) calloc(1, sizeof(struct usmUser));
-        if (user == NULL) {
-            snmp_free_pdu(*pdu);
-            *pdu = (netsnmp_pdu *) NULL;
-            return -1;
-        }
-        user->name = strdup((*pdu)->securityName);
-        user->secName = strdup((*pdu)->securityName);
-        user->authProtocolLen = sizeof(usmNoAuthProtocol) / sizeof(oid);
-        user->authProtocol =
-            snmp_duplicate_objid(usmNoAuthProtocol, user->authProtocolLen);
-        user->privProtocolLen = sizeof(usmNoPrivProtocol) / sizeof(oid);
-        user->privProtocol =
-            snmp_duplicate_objid(usmNoPrivProtocol, user->privProtocolLen);
-        usm_add_user(user);
-    }
-    return 0;
-}
-
 static void
 snmpv3_calc_msg_flags(int sec_level, int msg_command, u_char * flags)
 {
@@ -2340,9 +2049,13 @@
         /*
          * Fallthrough 
          */
+#ifndef NETSNMP_NOTIFY_ONLY
     case SNMP_MSG_GET:
     case SNMP_MSG_GETNEXT:
+#endif /* ! NETSNMP_NOTIFY_ONLY */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_SET:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     case SNMP_MSG_INFORM:
         if (pdu->errstat == SNMP_DEFAULT_ERRSTAT)
             pdu->errstat = 0;
@@ -2350,6 +2063,7 @@
             pdu->errindex = 0;
         break;
 
+#ifndef NETSNMP_NOTIFY_ONLY
     case SNMP_MSG_GETBULK:
         if (pdu->max_repetitions < 0) {
             session->s_snmp_errno = SNMPERR_BAD_REPETITIONS;
@@ -2360,6 +2074,7 @@
             return -1;
         }
         break;
+#endif /* ! NETSNMP_NOTIFY_ONLY */
 
     case SNMP_MSG_TRAP:
         session->s_snmp_errno = SNMPERR_V1_IN_V2;
@@ -3026,9 +2741,13 @@
         /*
          * Fallthrough 
          */
+#ifndef NETSNMP_NOTIFY_ONLY
     case SNMP_MSG_GET:
     case SNMP_MSG_GETNEXT:
+#endif /* ! NETSNMP_NOTIFY_ONLY */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_SET:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         /*
          * all versions support these PDU types 
          */
@@ -3063,6 +2782,7 @@
             pdu->errindex = 0;
         break;
 
+#ifndef NETSNMP_NOTIFY_ONLY
     case SNMP_MSG_GETBULK:
         /*
          * not supported in SNMPv1 and SNMPsec 
@@ -3082,6 +2802,7 @@
             return -1;
         }
         break;
+#endif /* ! NETSNMP_NOTIFY_ONLY */
 
     case SNMP_MSG_TRAP:
         /*
@@ -3165,7 +2886,6 @@
              */
             if (0 == session->community_len) {
                 SNMP_FREE(pdu->community);
-                pdu->community = NULL;
             } else if (pdu->community_len == session->community_len) {
                 memmove(pdu->community,
                         session->community, session->community_len);
@@ -4076,9 +3796,7 @@
             DEBUGINDENTADD(-4);
         }
 
-        if (mallocbuf) {
-            SNMP_FREE(mallocbuf);
-        }
+        SNMP_FREE(mallocbuf);
         return ret_val;
     }
 
@@ -4091,9 +3809,7 @@
     if (data == NULL) {
         snmp_increment_statistic(STAT_SNMPINASNPARSEERRS);
         DEBUGINDENTADD(-4);
-        if (mallocbuf) {
-            SNMP_FREE(mallocbuf);
-        }
+        SNMP_FREE(mallocbuf);
         return SNMPERR_ASN_PARSE_ERR;
     }
 
@@ -4116,15 +3832,11 @@
     if (ret != SNMPERR_SUCCESS) {
         ERROR_MSG("error parsing PDU");
         snmp_increment_statistic(STAT_SNMPINASNPARSEERRS);
-        if (mallocbuf) {
-            SNMP_FREE(mallocbuf);
-        }
+        SNMP_FREE(mallocbuf);
         return SNMPERR_ASN_PARSE_ERR;
     }
 
-    if (mallocbuf) {
-        SNMP_FREE(mallocbuf);
-    }
+    SNMP_FREE(mallocbuf);
     return SNMPERR_SUCCESS;
 }                               /* end snmpv3_parse() */
 
@@ -4236,7 +3948,11 @@
     /*
      * find the appropriate error counter  
      */
+#ifndef NETSNMP_FEATURE_REMOVE_STATISTICS
     ltmp = snmp_get_statistic(stat_ind);
+#else /* !NETSNMP_FEATURE_REMOVE_STATISTICS */
+    ltmp = 1;
+#endif /* !NETSNMP_FEATURE_REMOVE_STATISTICS */
 
     /*
      * return the appropriate error counter  
@@ -4715,12 +4431,16 @@
          * fallthrough 
          */
 
+#ifndef NETSNMP_NOTIFY_ONLY
     case SNMP_MSG_GET:
     case SNMP_MSG_GETNEXT:
     case SNMP_MSG_GETBULK:
+#endif /* ! NETSNMP_NOTIFY_ONLY */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    case SNMP_MSG_SET:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     case SNMP_MSG_TRAP2:
     case SNMP_MSG_INFORM:
-    case SNMP_MSG_SET:
         /*
          * PDU is not an SNMPv1 TRAP 
          */
@@ -4967,18 +4687,6 @@
     }
 
     /*
-     * check that it agrees with engineID returned from USM above
-     * * only a warning because this could be legal if we are a proxy
-     */
-    if (pdu->securityModel == NETSNMP_SECMOD_USM &&
-        (pdu->securityEngineIDLen != pdu->contextEngineIDLen ||
-         memcmp(pdu->securityEngineID, pdu->contextEngineID,
-                pdu->securityEngineIDLen) != 0)) {
-        DEBUGMSGTL(("scopedPDU_parse",
-                    "Note: security and context engineIDs differ\n"));
-    }
-
-    /*
      * parse contextName from scopedPdu
      */
     tmp_buf_len = SNMP_MAX_CONTEXT_SIZE;
@@ -5145,16 +4853,6 @@
             return 0; /* s_snmp_errno already set */
     }
 
-    /*
-     * check to see if we need to create a v3 user from the session info
-     */
-    if (create_user_from_session(session) != SNMPERR_SUCCESS) {
-        session->s_snmp_errno = SNMPERR_UNKNOWN_USER_NAME;  /* XX?? */
-        DEBUGMSGTL(("snmp_api",
-                    "snmp_send(): failed(2) to create a new user from session\n"));
-        return 0;
-    }
-
     if ((pktbuf = (u_char *)malloc(2048)) == NULL) {
         DEBUGMSGTL(("sess_async_send",
                     "couldn't malloc initial packet buffer\n"));
@@ -5175,8 +4873,10 @@
      */
     if (pdu->variables == NULL) {
         switch (pdu->command) {
-        case SNMP_MSG_GET:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case SNMP_MSG_SET:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+        case SNMP_MSG_GET:
         case SNMP_MSG_GETNEXT:
         case SNMP_MSG_GETBULK:
         case SNMP_MSG_RESPONSE:
@@ -5289,7 +4989,7 @@
             return 0;
         }
 
-        gettimeofday(&tv, (struct timezone *) 0);
+        netsnmp_get_monotonic_clock(&tv);
         rp->pdu = pdu;
         rp->request_id = pdu->reqid;
         rp->message_id = pdu->msgid;
@@ -5301,11 +5001,11 @@
         } else {
             rp->timeout = session->timeout;
         }
-        rp->time = tv;
+        rp->timeM = tv;
         tv.tv_usec += rp->timeout;
         tv.tv_sec += tv.tv_usec / 1000000L;
         tv.tv_usec %= 1000000L;
-        rp->expire = tv;
+        rp->expireM = tv;
 
         /*
          * XX lock should be per session ! 
@@ -5512,9 +5212,7 @@
   if (isp->hook_pre) {
     if (isp->hook_pre(sp, transport, opaque, olength) == 0) {
       DEBUGMSGTL(("sess_process_packet", "pre-parse fail\n"));
-      if (opaque != NULL) {
-	SNMP_FREE(opaque);
-      }
+      SNMP_FREE(opaque);
       return -1;
     }
   }
@@ -5527,9 +5225,7 @@
 
   if (pdu == NULL) {
     snmp_log(LOG_ERR, "pdu failed to be created\n");
-    if (opaque != NULL) {
-      SNMP_FREE(opaque);
-    }
+    SNMP_FREE(opaque);
     return -1;
   }
 
@@ -5715,19 +5411,14 @@
 	/*
 	 * Successful, so delete request.  
 	 */
-	if (isp->requests == rp) {
-	  isp->requests = rp->next_request;
-	  if (isp->requestsEnd == rp) {
-	    isp->requestsEnd = NULL;
-	  }
-	} else {
+	if (orp)
 	  orp->next_request = rp->next_request;
-	  if (isp->requestsEnd == rp) {
-	    isp->requestsEnd = orp;
-	  }
-	}
+        else
+	  isp->requests = rp->next_request;
+        if (isp->requestsEnd == rp)
+	  isp->requestsEnd = orp;
 	snmp_free_pdu(rp->pdu);
-	free((char *) rp);
+	free(rp);
 	/*
 	 * There shouldn't be any more requests with the same reqid.  
 	 */
@@ -5982,9 +5673,7 @@
         sp->s_errno = errno;
         snmp_set_detail(strerror(errno));
         SNMP_FREE(rxbuf);
-        if (opaque != NULL) {
-            SNMP_FREE(opaque);
-        }
+        SNMP_FREE(opaque);
         return -1;
     }
 
@@ -6018,9 +5707,7 @@
         DEBUGMSGTL(("sess_read", "fd %d closed\n", transport->sock));
         transport->f_close(transport);
         SNMP_FREE(isp->packet);
-        if (opaque != NULL) {
-            SNMP_FREE(opaque);
-        }
+        SNMP_FREE(opaque);
         return -1;
     }
 
@@ -6060,9 +5747,7 @@
 		}
 		DEBUGMSGTL(("sess_read", "fd %d closed\n", transport->sock));
                 transport->f_close(transport);
-                if (opaque != NULL) {
-                    SNMP_FREE(opaque);
-                }
+                SNMP_FREE(opaque);
                 /** XXX-rks: why no SNMP_FREE(isp->packet); ?? */
                 return -1;
             }
@@ -6082,9 +5767,7 @@
                 if (pptr != isp->packet)
                     break; /* opaque freed for us outside of loop. */
 
-                if (opaque != NULL) {
-                    SNMP_FREE(opaque);
-                }
+                SNMP_FREE(opaque);
                 return 0;
             }
 
@@ -6133,9 +5816,7 @@
 	    of the opaque pointer, so we still need to free() the opaque
 	    pointer itself.  */
 
-	if (opaque != NULL) {
-	    SNMP_FREE(opaque);
-	}
+	SNMP_FREE(opaque);
 
         if (isp->packet_len >= MAXIMUM_PACKET_SIZE) {
             /*
@@ -6156,7 +5837,6 @@
              * footprint down.
              */
             SNMP_FREE(isp->packet);
-            isp->packet = NULL;
             isp->packet_size = 0;
             isp->packet_len = 0;
             return rc;
@@ -6404,9 +6084,10 @@
              */
             requests++;
             for (rp = slp->internal->requests; rp; rp = rp->next_request) {
-                if ((!timerisset(&earliest)
-                     || (timercmp(&rp->expire, &earliest, <)))) {
-                    earliest = rp->expire;
+                if (!timerisset(&earliest)
+                    || (timerisset(&rp->expireM)
+                        && timercmp(&rp->expireM, &earliest, <))) {
+                    earliest = rp->expireM;
                     DEBUGMSG(("verbose:sess_select","(to in %d.%06d sec) ",
                                (int)earliest.tv_sec, (int)earliest.tv_usec));
                 }
@@ -6423,7 +6104,7 @@
     }
     DEBUGMSG(("sess_select", "\n"));
 
-    gettimeofday(&now, NULL);
+    netsnmp_get_monotonic_clock(&now);
 
     if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
                                NETSNMP_DS_LIB_ALARM_DONT_USE_SIG) &&
@@ -6451,7 +6132,7 @@
         time_t overdue_ms = -(earliest.tv_sec * 1000 + earliest.tv_usec / 1000);
         if (overdue_ms >= 10)
             DEBUGMSGT(("verbose:sess_select","timer overdue by %ld ms\n",
-                       overdue_ms));
+                       (long) overdue_ms));
         timerclear(&earliest);
     } else {
         DEBUGMSGT(("verbose:sess_select","timer due in %d.%06d sec\n",
@@ -6560,9 +6241,7 @@
          * This should never happen.  
          */
         DEBUGMSGTL(("sess_resend", "encoding failure\n"));
-        if (pktbuf != NULL) {
-            SNMP_FREE(pktbuf);
-        }
+        SNMP_FREE(pktbuf);
         return -1;
     }
 
@@ -6580,7 +6259,7 @@
 
     if (pktbuf != NULL) {
         SNMP_FREE(pktbuf);
-        pktbuf = packet = NULL;
+        packet = NULL;
     }
 
     if (result < 0) {
@@ -6589,13 +6268,13 @@
         snmp_set_detail(strerror(errno));
         return -1;
     } else {
-        gettimeofday(&now, (struct timezone *) 0);
+        netsnmp_get_monotonic_clock(&now);
         tv = now;
-        rp->time = tv;
+        rp->timeM = tv;
         tv.tv_usec += rp->timeout;
         tv.tv_sec += tv.tv_usec / 1000000L;
         tv.tv_usec %= 1000000L;
-        rp->expire = tv;
+        rp->expireM = tv;
     }
     return 0;
 }
@@ -6621,7 +6300,7 @@
         return;
     }
 
-    gettimeofday(&now, (struct timezone *) 0);
+    netsnmp_get_monotonic_clock(&now);
 
     /*
      * For each request outstanding, check to see if it has expired.
@@ -6635,7 +6314,7 @@
             freeme = NULL;
         }
 
-        if ((timercmp(&rp->expire, &now, <))) {
+        if ((timercmp(&rp->expireM, &now, <))) {
             if ((sptr = find_sec_mod(rp->pdu->securityModel)) != NULL &&
                 sptr->pdu_timeout != NULL) {
                 /*
@@ -6663,18 +6342,13 @@
                     callback(NETSNMP_CALLBACK_OP_TIMED_OUT, sp,
                              rp->pdu->reqid, rp->pdu, magic);
                 }
-                if (isp->requests == rp) {
-                    isp->requests = rp->next_request;
-                    if (isp->requestsEnd == rp) {
-                        isp->requestsEnd = NULL;
-                    }
-                } else {
+                if (orp)
                     orp->next_request = rp->next_request;
-                    if (isp->requestsEnd == rp) {
-                        isp->requestsEnd = orp;
-                    }
-                }
-                snmp_free_pdu(rp->pdu); /* FIX  rp is already free'd! */
+                else
+                    isp->requests = rp->next_request;
+                if (isp->requestsEnd == rp)
+                    isp->requestsEnd = orp;
+                snmp_free_pdu(rp->pdu);
                 freeme = rp;
                 continue;       /* don't update orp below */
             } else {
@@ -6927,6 +6601,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_OID_IS_SUBTREE
 /** Identical to netsnmp_oid_equals, except only the length up to len1 is compared.
  * Functionally, this determines if in_name2 is equal or a subtree of in_name1
  * @param in_name1 A pointer to the first oid.
@@ -6947,6 +6622,7 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_IS_SUBTREE */
 
 /** Given two OIDs, determine the common prefix to them both.
  * @param in_name1 A pointer to the first oid.
@@ -7690,6 +7366,7 @@
     return returnOid;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_STATISTICS
 /*
  * generic statistics counter functions 
  */
@@ -7728,5 +7405,5 @@
 {
     memset(statistics, 0, sizeof(statistics));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_STATISTICS */
 /**  @} */
-
diff --git a/snmplib/snmp_client.c b/snmplib/snmp_client.c
index bff325e..ab7a58c 100644
--- a/snmplib/snmp_client.c
+++ b/snmplib/snmp_client.c
@@ -40,6 +40,7 @@
  *  @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <errno.h>
@@ -98,6 +99,12 @@
 #include <net-snmp/library/snmp_assert.h>
 #include <net-snmp/pdu_api.h>
 
+netsnmp_feature_child_of(snmp_client_all, libnetsnmp)
+
+netsnmp_feature_child_of(snmp_split_pdu, snmp_client_all)
+netsnmp_feature_child_of(snmp_reset_var_types, snmp_client_all)
+netsnmp_feature_child_of(query_set_default_session, snmp_client_all)
+netsnmp_feature_child_of(row_create, snmp_client_all)
 
 #ifndef BSD4_3
 #define BSD4_2
@@ -587,6 +594,7 @@
  * Returns a pointer to the cloned PDU if successful.
  * Returns 0 if failure.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_SPLIT_PDU
 netsnmp_pdu    *
 snmp_split_pdu(netsnmp_pdu *pdu, int skip_count, int copy_count)
 {
@@ -597,6 +605,7 @@
 
     return newpdu;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_SPLIT_PDU */
 
 
 /*
@@ -735,6 +744,8 @@
     return count;
 }
 
+netsnmp_feature_child_of(count_varbinds_of_type, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_COUNT_VARBINDS_OF_TYPE
 int
 count_varbinds_of_type(netsnmp_variable_list * var_ptr, u_char type)
 {
@@ -746,7 +757,10 @@
 
     return count;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_COUNT_VARBINDS_OF_TYPE */
 
+netsnmp_feature_child_of(find_varind_of_type, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_FIND_VARIND_OF_TYPE
 netsnmp_variable_list *
 find_varbind_of_type(netsnmp_variable_list * var_ptr, u_char type)
 {
@@ -755,6 +769,7 @@
 
     return var_ptr;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_FIND_VARIND_OF_TYPE */
 
 netsnmp_variable_list*
 find_varbind_in_list( netsnmp_variable_list *vblist,
@@ -998,6 +1013,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_RESET_VAR_TYPES
 void
 snmp_reset_var_types(netsnmp_variable_list * vbl, u_char new_type)
 {
@@ -1006,6 +1022,7 @@
         vbl = vbl->next_variable;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_RESET_VAR_TYPES */
 
 int
 snmp_synch_response_cb(netsnmp_session * ss,
@@ -1213,12 +1230,16 @@
  *
  */
 #include <net-snmp/library/snmp_debug.h>
+
 static netsnmp_session *_def_query_session = NULL;
+
+#ifndef NETSNMP_FEATURE_REMOVE_QUERY_SET_DEFAULT_SESSION
 void
 netsnmp_query_set_default_session( netsnmp_session *sess) {
     DEBUGMSGTL(("iquery", "set default session %p\n", sess));
     _def_query_session = sess;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_QUERY_SET_DEFAULT_SESSION */
 
 /**
  * Return a pointer to the default internal query session.
@@ -1311,6 +1332,7 @@
                     DEBUGMSGVAR(("iquery:result", vtmp));
                 DEBUGMSG(("iquery:result", "\n"));
             }
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             if (request != SNMP_MSG_SET &&
                 response->errindex != 0) {
                 DEBUGMSGTL(("iquery", "retrying query (%d, %ld)\n", ret, response->errindex));
@@ -1320,6 +1342,7 @@
                 if ( pdu != NULL )
                     goto retry;
             }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         } else {
             for (vb1 = response->variables, vb2 = list;
                  vb1;
@@ -1359,10 +1382,12 @@
 }
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int netsnmp_query_set(netsnmp_variable_list *list,
                       netsnmp_session       *session){
     return _query( list, SNMP_MSG_SET, session );
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * A walk needs a bit more work.
@@ -1480,6 +1505,8 @@
     return input->last_run->result;
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+#ifndef NETSNMP_FEATURE_REMOVE_ROW_CREATE
 /** **************************************************************************
  *
  * row create state machine steps
@@ -1856,6 +1883,8 @@
 
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_ROW_CREATE */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 
 /** @} */
diff --git a/snmplib/snmp_enum.c b/snmplib/snmp_enum.c
index 39966fa..8a6bd38 100644
--- a/snmplib/snmp_enum.c
+++ b/snmplib/snmp_enum.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
@@ -22,6 +23,13 @@
 #include <net-snmp/library/tools.h>
 #include <net-snmp/library/snmp_assert.h>
 
+netsnmp_feature_child_of(snmp_enum_all, libnetsnmp)
+
+netsnmp_feature_child_of(se_find_free_value_in_slist, snmp_enum_all)
+netsnmp_feature_child_of(snmp_enum_store_list, snmp_enum_all)
+netsnmp_feature_child_of(snmp_enum_store_slist, snmp_enum_all)
+netsnmp_feature_child_of(snmp_enum_clear, snmp_enum_all)
+
 struct snmp_enum_list_str {
     char           *name;
     struct snmp_enum_list *list;
@@ -177,6 +185,7 @@
     read_config_store(type, line);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_ENUM_STORE_LIST
 void
 se_store_list(unsigned int major, unsigned int minor, const char *type)
 {
@@ -185,6 +194,7 @@
     snprintf(token, sizeof(token), "%d:%d", major, minor);
     se_store_enum_list(se_find_list(major, minor), token, type);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_ENUM_STORE_LIST */
 
 struct snmp_enum_list *
 se_find_list(unsigned int major, unsigned int minor)
@@ -331,18 +341,19 @@
     return (se_find_label_in_list(se_find_slist(listname), value));
 }
 
-
 int
 se_find_value_in_slist(const char *listname, const char *label)
 {
     return (se_find_value_in_list(se_find_slist(listname), label));
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SE_FIND_FREE_VALUE_IN_SLIST
 int
 se_find_free_value_in_slist(const char *listname)
 {
     return (se_find_free_value_in_list(se_find_slist(listname)));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SE_FIND_FREE_VALUE_IN_SLIST */
 
 int
 se_add_pair_to_slist(const char *listname, char *label, int value)
@@ -427,12 +438,7 @@
     return;
 }
 
-void
-se_clear_slist(const char *listname)
-{
-    se_clear_list(se_find_slist_ptr(listname));
-}
-
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_ENUM_STORE_SLIST
 void
 se_store_slist(const char *listname, const char *type)
 {
@@ -449,6 +455,14 @@
     se_store_slist((char *)clientargs, appname);
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_ENUM_STORE_SLIST */
+
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_ENUM_CLEAR
+void
+se_clear_slist(const char *listname)
+{
+    se_clear_list(se_find_slist_ptr(listname));
+}
 
 void
 se_clear_all_lists(void)
@@ -458,3 +472,4 @@
     for (sptr = sliststorage; sptr != NULL; sptr = sptr->next)
         se_clear_list(&(sptr->list));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_ENUM_CLEAR */
diff --git a/snmplib/snmp_logging.c b/snmplib/snmp_logging.c
index b30f165..a2cd55a 100644
--- a/snmplib/snmp_logging.c
+++ b/snmplib/snmp_logging.c
@@ -18,6 +18,7 @@
  *  @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <stdio.h>
 #if HAVE_MALLOC_H
 #include <malloc.h>
@@ -84,6 +85,22 @@
 #endif
 #endif
 
+netsnmp_feature_child_of(logging_all, libnetsnmp)
+
+netsnmp_feature_child_of(logging_outputs, logging_all)
+netsnmp_feature_child_of(logging_file, logging_outputs)
+netsnmp_feature_child_of(logging_stdio, logging_outputs)
+netsnmp_feature_child_of(logging_syslog, logging_outputs)
+netsnmp_feature_child_of(logging_external, logging_all)
+
+netsnmp_feature_child_of(enable_stderrlog, logging_all)
+
+netsnmp_feature_child_of(logging_enable_calllog, netsnmp_unused)
+netsnmp_feature_child_of(logging_enable_loghandler, netsnmp_unused)
+
+/* default to the file/stdio/syslog set */
+netsnmp_feature_want(logging_outputs)
+
 /*
  * logh_head:  A list of all log handlers, in increasing order of priority
  * logh_priorities:  'Indexes' into this list, by priority
@@ -92,7 +109,9 @@
 netsnmp_log_handler *logh_priorities[LOG_DEBUG+1];
 static int  logh_enabled = 0;
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 static char syslogname[64] = DEFAULT_LOG_ID;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
 void
 netsnmp_disable_this_loghandler(netsnmp_log_handler *logh)
@@ -113,8 +132,10 @@
     ++logh_enabled;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
 void
 netsnmp_enable_filelog(netsnmp_log_handler *logh, int dont_zero_log);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
 #ifndef HAVE_VSNPRINTF
                 /*
@@ -154,6 +175,7 @@
 /*
  * These definitions handle 4.2 systems without additional syslog facilities.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 #ifndef LOG_CONS
 #define LOG_CONS	0       /* Don't bother if not defined... */
 #endif
@@ -190,6 +212,7 @@
 #ifndef LOG_USER
 #define LOG_USER	0
 #endif
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
 /* Set line buffering mode for a stream. */
 void
@@ -285,6 +308,7 @@
     return pri_low;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 int
 decode_facility( char *optarg )
 {
@@ -319,6 +343,7 @@
         return -1;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
 int
 snmp_log_options(char *optarg, int argc, char *const *argv)
@@ -375,6 +400,7 @@
     DEBUGMSGT(("logging:options", "*cp: '%c'\n", *cp));
     switch (*cp) {
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
     /*
      * Log to Standard Error
      */
@@ -411,6 +437,7 @@
             logh->imagic  = 1;	    /* stdout, not stderr */
 	}
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
 
     /*
      * Log to a named file
@@ -420,6 +447,7 @@
         if (priority == -1 || !argv)  return -1;
         optarg = argv[++optind];
         /* Fallthrough */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
     case 'f':
         if (inc_optind)
             optind++;
@@ -436,7 +464,9 @@
                                                           NETSNMP_DS_LIB_APPEND_LOGFILES));
 	}
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
     /*
      * Log to syslog
      */
@@ -468,6 +498,7 @@
 	    snmp_enable_syslog_ident(snmp_log_syslogname(NULL), facility);
 	}
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
     /*
      * Don't log 
@@ -499,6 +530,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 char *
 snmp_log_syslogname(const char *pstr)
 {
@@ -507,20 +539,29 @@
 
   return syslogname;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
 void
 snmp_log_options_usage(const char *lead, FILE * outf)
 {
     const char *pri1_msg = " for level 'pri' and above";
     const char *pri2_msg = " for levels 'p1' to 'p2'";
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
     fprintf(outf, "%se:           log to standard error\n", lead);
     fprintf(outf, "%so:           log to standard output\n", lead);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
     fprintf(outf, "%sn:           don't log at all\n", lead);
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
     fprintf(outf, "%sf file:      log to the specified file\n", lead);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
     fprintf(outf, "%ss facility:  log to syslog (via the specified facility)\n", lead);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     fprintf(outf, "\n%s(variants)\n", lead);
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
     fprintf(outf, "%s[EON] pri:   log to standard error, output or /dev/null%s\n", lead, pri1_msg);
     fprintf(outf, "%s[EON] p1-p2: log to standard error, output or /dev/null%s\n", lead, pri2_msg);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
     fprintf(outf, "%s[FS] pri token:    log to file/syslog%s\n", lead, pri1_msg);
     fprintf(outf, "%s[FS] p1-p2 token:  log to file/syslog%s\n", lead, pri2_msg);
 }
@@ -555,6 +596,7 @@
     return sbuf;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 void
 snmp_disable_syslog_entry(netsnmp_log_handler *logh)
 {
@@ -584,7 +626,9 @@
         if (logh->enabled && logh->type == NETSNMP_LOGHANDLER_SYSLOG)
             snmp_disable_syslog_entry(logh);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
 void
 snmp_disable_filelog_entry(netsnmp_log_handler *logh)
 {
@@ -598,7 +642,9 @@
     }
     netsnmp_disable_this_loghandler(logh);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
 void
 snmp_disable_filelog(void)
 {
@@ -608,7 +654,9 @@
         if (logh->enabled && logh->type == NETSNMP_LOGHANDLER_FILE)
             snmp_disable_filelog_entry(logh);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
 /*
  * returns that status of stderr logging
  *
@@ -640,7 +688,9 @@
             netsnmp_disable_this_loghandler(logh);
 	}
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_CALLLOG
 void
 snmp_disable_calllog(void)
 {
@@ -651,6 +701,7 @@
             netsnmp_disable_this_loghandler(logh);
 	}
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_CALLLOG */
 
 void
 snmp_disable_log(void)
@@ -658,10 +709,14 @@
     netsnmp_log_handler *logh;
 
     for (logh = logh_head; logh; logh = logh->next) {
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
         if (logh->type == NETSNMP_LOGHANDLER_SYSLOG)
             snmp_disable_syslog_entry(logh);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
         if (logh->type == NETSNMP_LOGHANDLER_FILE)
             snmp_disable_filelog_entry(logh);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
         netsnmp_disable_this_loghandler(logh);
     }
 }
@@ -674,15 +729,20 @@
 netsnmp_logging_restart(void)
 {
     netsnmp_log_handler *logh;
+    int doneone = 0;
 
     for (logh = logh_head; logh; logh = logh->next) {
         if (0 == logh->enabled)
             continue;
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
         if (logh->type == NETSNMP_LOGHANDLER_SYSLOG) {
             snmp_disable_syslog_entry(logh);
             snmp_enable_syslog_ident(logh->token,(int)(intptr_t)logh->magic);
+            doneone = 1;
         }
-        else if (logh->type == NETSNMP_LOGHANDLER_FILE) {
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
+        if (logh->type == NETSNMP_LOGHANDLER_FILE && !doneone) {
             snmp_disable_filelog_entry(logh);
             /** hmm, don't zero status isn't saved.. i think it's
              * safer not to overwrite, in case a hup is just to
@@ -690,11 +750,13 @@
              */
             netsnmp_enable_filelog(logh, 1);
         }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
     }
 }
 
 /* ================================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 void
 snmp_enable_syslog(void)
 {
@@ -754,7 +816,9 @@
         }
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
 void
 netsnmp_enable_filelog(netsnmp_log_handler *logh, int dont_zero_log)
 {
@@ -804,8 +868,11 @@
                 netsnmp_enable_filelog(logh, dont_zero_log);
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_ENABLE_STDERRLOG
+/* used in the perl modules and ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c */
 void
 snmp_enable_stderrlog(void)
 {
@@ -826,8 +893,9 @@
             logh->token    = strdup("stderr");
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_ENABLE_STDERRLOG */
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_CALLLOG
 void
 snmp_enable_calllog(void)	/* XXX - or take a callback routine ??? */
 {
@@ -847,7 +915,7 @@
             logh->token    = strdup("callback");
     }
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_CALLLOG */
 
 
 /* ==================================================== */
@@ -933,17 +1001,23 @@
     case NETSNMP_LOGHANDLER_STDOUT:
         logh->imagic  = 1;
         /* fallthrough */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
     case NETSNMP_LOGHANDLER_STDERR:
         logh->handler = log_handler_stdouterr;
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
     case NETSNMP_LOGHANDLER_FILE:
         logh->handler = log_handler_file;
         logh->imagic  = 1;
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
     case NETSNMP_LOGHANDLER_SYSLOG:
         logh->handler = log_handler_syslog;
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     case NETSNMP_LOGHANDLER_CALLBACK:
         logh->handler = log_handler_callback;
         break;
@@ -961,6 +1035,7 @@
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_LOGHANDLER
 int
 netsnmp_enable_loghandler( const char *token )
 {
@@ -985,6 +1060,7 @@
     netsnmp_disable_this_loghandler(logh);
     return 1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_LOGHANDLER */
 
 int
 netsnmp_remove_loghandler( netsnmp_log_handler *logh )
@@ -1011,6 +1087,7 @@
 
 /* ==================================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
 int
 log_handler_stdouterr(  netsnmp_log_handler* logh, int pri, const char *str)
 {
@@ -1038,8 +1115,10 @@
 
     return 1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 #ifdef WIN32
 int
 log_handler_syslog(  netsnmp_log_handler* logh, int pri, const char *str)
@@ -1123,8 +1202,10 @@
     return 1;
 }
 #endif /* !WIN32 */
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
 int
 log_handler_file(    netsnmp_log_handler* logh, int pri, const char *str)
 {
@@ -1161,6 +1242,7 @@
     logh->imagic = str[strlen(str) - 1] == '\n';
     return 1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
 int
 log_handler_callback(netsnmp_log_handler* logh, int pri, const char *str)
@@ -1195,10 +1277,12 @@
 void
 snmp_log_string(int priority, const char *str)
 {
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
     static int stderr_enabled = 0;
     static netsnmp_log_handler lh = { 1, 0, 0, 0, "stderr",
                                       log_handler_stdouterr, 0, NULL,  NULL,
                                       NULL };
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
     netsnmp_log_handler *logh;
 
     /*
@@ -1206,21 +1290,23 @@
      * If you don't want stderr logging, then enable something else.
      */
     if (0 == logh_enabled) {
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
         if (!stderr_enabled) {
             ++stderr_enabled;
             netsnmp_set_line_buffering(stderr);
-            log_handler_stdouterr( &lh, LOG_WARNING,
-                                   "No log handling enabled - using stderr logging\n");
         }
         log_handler_stdouterr( &lh, priority, str );
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
 
         return;
     }
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
     else if (stderr_enabled) {
         stderr_enabled = 0;
         log_handler_stdouterr( &lh, LOG_INFO,
                                "Log handling defined - disabling stderr\n" );
     }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
         
 
     /*
@@ -1364,11 +1450,13 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_EXTERNAL
 /* external access to logh_head variable */
 netsnmp_log_handler  *
 get_logh_head(void)
 {
 	return logh_head;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_EXTERNAL */
 
 /**  @} */
diff --git a/snmplib/snmp_openssl.c b/snmplib/snmp_openssl.c
index e13e59e..3b0eaa8 100644
--- a/snmplib/snmp_openssl.c
+++ b/snmplib/snmp_openssl.c
@@ -6,7 +6,16 @@
 
 #include <net-snmp/net-snmp-includes.h>
 
-#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+#include <net-snmp/net-snmp-features.h>
+
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL) && !defined(NETSNMP_FEATURE_REMOVE_CERT_UTIL)
+
+netsnmp_feature_require(container_free_all)
+
+netsnmp_feature_child_of(openssl_cert_get_subjectAltNames, netsnmp_unused)
+netsnmp_feature_child_of(openssl_ht2nid, netsnmp_unused)
+netsnmp_feature_child_of(openssl_err_log, netsnmp_unused)
+netsnmp_feature_child_of(cert_dump_names, netsnmp_unused)
 
 #include <ctype.h>
 
@@ -131,6 +140,7 @@
     return _cert_get_name(ocert, NID_commonName, buf, len, 0);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CERT_DUMP_NAMES
 /** netsnmp_openssl_cert_dump_name: dump subject names in cert
  */
 void
@@ -174,6 +184,7 @@
                    prefix_short, ASN1_STRING_data(oname_entry->value)));
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CERT_DUMP_NAMES */
 
 static char *
 _cert_get_extension(X509_EXTENSION  *oext, char **buf, int *len, int flags)
@@ -368,8 +379,7 @@
     return rtn;
 }
 
-/**
- */
+#ifndef NETSNMP_FEATURE_REMOVE_OPENSSL_CERT_GET_SUBJECTALTNAMES
 /** netsnmp_openssl_cert_get_subjectAltName: get subjectAltName for cert.
  * if a pointer to a buffer and its length are specified, they will be
  * used. otherwise, a new buffer will be allocated, which the caller will
@@ -380,6 +390,7 @@
 {
     return _cert_get_extension_id_str(ocert, NID_subject_alt_name, buf, len, 0);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OPENSSL_CERT_GET_SUBJECTALTNAMES */
 
 void
 netsnmp_openssl_cert_dump_extensions(X509 *ocert)
@@ -440,6 +451,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_OPENSSL_HT2NID
 int
 _ht2nid(int ht)
 {
@@ -447,6 +459,7 @@
         return 0;
     return _htmap[ht];
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OPENSSL_HT2NID */
 
 /**
  * returns allocated pointer caller must free.
@@ -495,7 +508,7 @@
             digest = EVP_sha1();
             break;
 
-#ifndef OPENSSL_NO_SHA256
+#ifdef HAVE_EVP_SHA224
         case NS_HASH_SHA224:
             digest = EVP_sha224();
             break;
@@ -505,7 +518,7 @@
             break;
 
 #endif
-#ifndef OPENSSL_NO_SHA512
+#ifdef HAVE_EVP_SHA384
         case NS_HASH_SHA384:
             digest = EVP_sha384();
             break;
@@ -799,6 +812,7 @@
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_OPENSSL_ERR_LOG
 void
 netsnmp_openssl_err_log(const char *prefix)
 {
@@ -809,6 +823,7 @@
                  ERR_GET_LIB(err), ERR_GET_FUNC(err), ERR_GET_REASON(err));
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OPENSSL_ERR_LOG */
 
 void
 netsnmp_openssl_null_checks(SSL *ssl, int *null_auth, int *null_cipher)
@@ -861,4 +876,4 @@
     }
 }
 
-#endif /* NETSNMP_USE_OPENSSL && HAVE_LIBSSL */
+#endif /* NETSNMP_USE_OPENSSL && HAVE_LIBSSL && !defined(NETSNMP_FEATURE_REMOVE_CERT_UTIL) */
diff --git a/snmplib/snmp_parse_args.c b/snmplib/snmp_parse_args.c
index 947a78a..6842d0e 100644
--- a/snmplib/snmp_parse_args.c
+++ b/snmplib/snmp_parse_args.c
@@ -210,7 +210,7 @@
      * initialize session to default values 
      */
     snmp_sess_init(session);
-    strcpy(Opts, "Y:VhHm:M:O:I:P:D:dv:r:t:c:Z:e:E:n:u:l:x:X:a:A:p:T:-:3:s:S:L:");
+    strcpy(Opts, "Y:VhHm:M:O:I:P:D:dv:r:t:c:Z:e:E:n:u:l:x:X:a:A:p:T:-:3:L:");
     if (localOpts) {
         if (strlen(localOpts) + strlen(Opts) >= sizeof(Opts)) {
             snmp_log(LOG_ERR, "Too many localOpts in snmp_parse_args()\n");
@@ -557,6 +557,7 @@
 
             break;
 
+#ifdef NETSNMP_SECMOD_USM
         case 'a':
 #ifndef NETSNMP_DISABLE_MD5
             if (!strcasecmp(optarg, "MD5")) {
@@ -630,6 +631,7 @@
 	    }
             break;
 #endif                          /* SNMPV3_CMD_OPTIONS */
+#endif /* NETSNMP_SECMOD_USM */
 
         case '?':
             return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
@@ -690,6 +692,9 @@
         }
     }
 
+#ifdef NETSNMP_SECMOD_USM
+    /* XXX: this should ideally be moved to snmpusm.c somehow */
+
     /*
      * make master key from pass phrases 
      */
@@ -770,6 +775,8 @@
             return (NETSNMP_PARSE_ARGS_ERROR);
         }
     }
+#endif /* NETSNMP_SECMOD_USM */
+
     /*
      * get the hostname 
      */
diff --git a/snmplib/snmp_secmod.c b/snmplib/snmp_secmod.c
index a8cf928..9e60a42 100644
--- a/snmplib/snmp_secmod.c
+++ b/snmplib/snmp_secmod.c
@@ -32,6 +32,8 @@
 #include <net-snmp/library/snmp_secmod.h>
 #include <net-snmp/library/snmpv3-security-includes.h>
 
+#include <net-snmp/net-snmp-features.h>
+
 static struct snmp_secmod_list *registered_services = NULL;
 
 static SNMPCallback set_default_secmod;
@@ -51,6 +53,11 @@
 #include "snmpsm_init.h"
 }
 
+void
+shutdown_secmod(void)
+{
+    #include "snmpsm_shutdown.h"
+}
 
 int
 register_sec_mod(int secmod, const char *modname,
@@ -99,6 +106,8 @@
     return SNMPERR_SUCCESS;
 }
 
+netsnmp_feature_child_of(unregister_sec_mod, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_UNREGISTER_SEC_MOD
 int
 unregister_sec_mod(int secmod)
 {
@@ -121,6 +130,7 @@
      */
     return SNMPERR_GENERR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UNREGISTER_SEC_MOD */
 
 void            
 clear_sec_mod(void)
@@ -153,6 +163,19 @@
     return NULL;
 }
 
+/* try to pick a reasonable security module default based on what was
+   compiled into the net-snmp package */
+#ifdef USM_SEC_MODEL_NUMBER
+#define NETSNMP_SECMOD_DEFAULT_MODEL  USM_SEC_MODEL_NUMBER
+#elif defined(TSM_SEC_MODEL_NUMBER)
+#define NETSNMP_SECMOD_DEFAULT_MODEL  TSM_SEC_MODEL_NUMBER
+#elif defined(KSM_SEC_MODEL_NUMBER)
+#define NETSNMP_SECMOD_DEFAULT_MODEL  KSM_SEC_MODEL_NUMBER
+#else
+/* else we give up and leave it blank */
+#define NETSNMP_SECMOD_DEFAULT_MODEL  -1
+#endif
+
 static int
 set_default_secmod(int major, int minor, void *serverarg, void *clientarg)
 {
@@ -172,11 +195,11 @@
                 snmp_log(LOG_ERR,
                          "unknown security model name: %s.  Forcing USM instead.\n",
                          cptr);
-                sess->securityModel = USM_SEC_MODEL_NUMBER;
+                sess->securityModel = NETSNMP_SECMOD_DEFAULT_MODEL;
                 return SNMPERR_GENERR;
             }
         } else {
-            sess->securityModel = USM_SEC_MODEL_NUMBER;
+            sess->securityModel = NETSNMP_SECMOD_DEFAULT_MODEL;
         }
     }
     return SNMPERR_SUCCESS;
diff --git a/snmplib/snmp_transport.c b/snmplib/snmp_transport.c
index 4df9602..ada4781 100644
--- a/snmplib/snmp_transport.c
+++ b/snmplib/snmp_transport.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/types.h>
 #include <net-snmp/library/snmp_transport.h>
@@ -70,6 +71,11 @@
 #include <net-snmp/library/snmp_service.h>
 #include <net-snmp/library/read_config.h>
 
+netsnmp_feature_child_of(transport_all, libnetsnmp)
+
+netsnmp_feature_child_of(tdomain_support, transport_all)
+netsnmp_feature_child_of(tdomain_transport_oid, transport_all)
+netsnmp_feature_child_of(sockaddr_size, transport_all)
 
 /*
  * Our list of supported transport domains.  
@@ -99,9 +105,6 @@
 static void     netsnmp_tdomain_dump(void);
 
 
-/*
- * Make a deep copy of an netsnmp_transport.  
- */
 
 void
 init_snmp_transport(void)
@@ -112,16 +115,22 @@
                                NETSNMP_DS_LIB_DONT_LOAD_HOST_FILES);
 }
 
+/*
+ * Make a deep copy of an netsnmp_transport.  
+ */
 netsnmp_transport *
 netsnmp_transport_copy(netsnmp_transport *t)
 {
     netsnmp_transport *n = NULL;
 
-    n = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
+    if (t == NULL) {
+        return NULL;
+    }
+
+    n = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
     if (n == NULL) {
         return NULL;
     }
-    memset(n, 0, sizeof(netsnmp_transport));
 
     if (t->domain != NULL) {
         n->domain = t->domain;
@@ -180,6 +189,7 @@
     n->f_fmtaddr = t->f_fmtaddr;
     n->sock = t->sock;
     n->flags = t->flags;
+    n->base_transport = netsnmp_transport_copy(t->base_transport);
 
     /* give the transport a chance to do "special things" */
     if (t->f_copy)
@@ -196,15 +206,11 @@
     if (NULL == t)
         return;
 
-    if (t->local != NULL) {
-        SNMP_FREE(t->local);
-    }
-    if (t->remote != NULL) {
-        SNMP_FREE(t->remote);
-    }
-    if (t->data != NULL) {
-        SNMP_FREE(t->data);
-    }
+    SNMP_FREE(t->local);
+    SNMP_FREE(t->remote);
+    SNMP_FREE(t->data);
+    netsnmp_transport_free(t->base_transport);
+
     SNMP_FREE(t);
 }
 
@@ -230,6 +236,28 @@
 
     return str;
 }
+
+#ifndef NETSNMP_FEATURE_REMOVE_SOCKADDR_SIZE
+int
+netsnmp_sockaddr_size(struct sockaddr *sa)
+{
+    if (NULL == sa)
+        return 0;
+
+    switch (sa->sa_family) {
+        case AF_INET:
+            return sizeof(struct sockaddr_in);
+        break;
+#ifdef NETSNMP_ENABLE_IPV6
+        case AF_INET6:
+            return sizeof(struct sockaddr_in6);
+            break;
+#endif
+    }
+
+    return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_SOCKADDR_SIZE */
     
 int
 netsnmp_transport_send(netsnmp_transport *t, void *packet, int length,
@@ -299,6 +327,7 @@
 
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_TDOMAIN_SUPPORT
 int
 netsnmp_tdomain_support(const oid * in_oid,
                         size_t in_len,
@@ -317,7 +346,7 @@
     }
     return 0;
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_TDOMAIN_SUPPORT */
 
 
 void
@@ -395,6 +424,8 @@
 
 
 
+netsnmp_feature_child_of(tdomain_unregister, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_TDOMAIN_UNREGISTER
 int
 netsnmp_tdomain_unregister(netsnmp_tdomain *n)
 {
@@ -415,6 +446,7 @@
         return 0;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDOMAIN_UNREGISTER */
 
 
 static netsnmp_tdomain *
@@ -466,10 +498,7 @@
     const char * const *spec = NULL;
     int                 any_found = 0;
     char buf[SNMP_MAXPATH];
-    extern const char *curfilename;		/* from read_config.c */
-    const char        *prev_curfilename;
-
-    prev_curfilename = curfilename;
+    char **lspec = 0;
 
     DEBUGMSGTL(("tdomain",
                 "tdomain_transport_full(\"%s\", \"%s\", %d, \"%s\", \"%s\")\n",
@@ -559,7 +588,21 @@
             DEBUGMSGTL(("tdomain",
                         "Use user specified default domain \"%s\"\n",
                         default_domain));
-            match = find_tdomain(default_domain);
+            if (!strchr(default_domain, ','))
+                match = find_tdomain(default_domain);
+            else {
+                int commas = 0;
+                const char *cp = default_domain;
+                char *dup = strdup(default_domain);
+
+                while (*++cp) if (*cp == ',') commas++;
+                lspec = calloc(commas+2, sizeof(char *));
+                commas = 1;
+                lspec[0] = strtok(dup, ",");
+                while ((lspec[commas++] = strtok(NULL, ",")))
+                    ;
+                spec = (const char * const *)lspec;
+            }
         } else {
             spec = netsnmp_lookup_default_domains(application);
             if (spec == NULL) {
@@ -599,12 +642,19 @@
                         "default address \"%s\"\n",
                         match->prefix[0], addr ? addr : "[NIL]",
                         addr2 ? addr2 : "[NIL]"));
-            if (match->f_create_from_tstring)
+            if (match->f_create_from_tstring) {
+                NETSNMP_LOGONCE((LOG_WARNING,
+                                 "transport domain %s uses deprecated f_create_from_tstring\n",
+                                 match->prefix[0]));
                 t = match->f_create_from_tstring(addr, local);
+            }
             else
                 t = match->f_create_from_tstring_new(addr, local, addr2);
             if (t) {
-                curfilename = prev_curfilename;
+                if (lspec) {
+                    free(lspec[0]);
+                    free(lspec);
+                }
                 return t;
             }
         }
@@ -616,7 +666,10 @@
     }
     if (!any_found)
         snmp_log(LOG_ERR, "No support for any checked transport domain\n");
-    curfilename = prev_curfilename;
+    if (lspec) {
+        free(lspec[0]);
+        free(lspec);
+    }
     return NULL;
 }
 
@@ -630,6 +683,7 @@
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_TDOMAIN_TRANSPORT_OID
 netsnmp_transport *
 netsnmp_tdomain_transport_oid(const oid * dom,
                               size_t dom_len,
@@ -654,6 +708,7 @@
     snmp_log(LOG_ERR, "No support for requested transport domain\n");
     return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDOMAIN_TRANSPORT_OID */
 
 netsnmp_transport*
 netsnmp_transport_open(const char* application, const char* str, int local)
diff --git a/snmplib/snmpksm.c b/snmplib/snmpksm.c
index 4b64003..7d30612 100644
--- a/snmplib/snmpksm.c
+++ b/snmplib/snmpksm.c
@@ -66,6 +66,12 @@
 #define TICKET_CLIENT(x)	(x)->enc_part2->client
 #endif				/* NETSNMP_USE_KERBEROS_HEIMDAL */
 
+#if HAVE_ET_COM_ERR_H
+#include <et/com_err.h>
+#elif HAVE_COM_ERR_H
+#include <com_err.h>
+#endif
+
 #include <net-snmp/output_api.h>
 #include <net-snmp/config_api.h>
 #include <net-snmp/utilities.h>
@@ -253,6 +259,10 @@
     register_sec_mod(NETSNMP_SEC_MODEL_KSM, "ksm", def);
 }
 
+void shutdown_ksm(void)
+{
+}
+
 /*
  * These routines implement a simple cache for information we need to
  * process responses.  When we send out a request, it contains an AP_REQ;
diff --git a/snmplib/snmptsm.c b/snmplib/snmptsm.c
index a38c632..42de682 100644
--- a/snmplib/snmptsm.c
+++ b/snmplib/snmptsm.c
@@ -9,6 +9,7 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <net-snmp/library/snmptsm.h>
@@ -26,6 +27,9 @@
 #include <net-snmp/library/snmpDTLSSCTPDomain.h>
 #endif
 
+netsnmp_feature_require(snmpv3_probe_contextEngineID_rfc5343)
+netsnmp_feature_require(row_create)
+
 #include <unistd.h>
 
 static int      tsm_session_init(netsnmp_session *);
@@ -67,6 +71,12 @@
                                NETSNMP_DS_LIB_TSM_USE_PREFIX);
 }
 
+/** shutdown the TSM security module */
+void
+shutdown_tsm(void)
+{
+}
+
 /*
  * Initialize specific session information (right now, just set up things to
  * not do an engineID probe)
@@ -540,7 +550,7 @@
        message.*/
     if (parms->secLevel > tmStateRef->transportSecurityLevel) {
         snmp_increment_statistic(STAT_TSM_SNMPTSMINADEQUATESECURITYLEVELS);
-        DEBUGMSGTL(("tsm", "inadequate security level %d\n", parms->secLevel));
+        DEBUGMSGTL(("tsm", "inadequate security level: %d\n", parms->secLevel));
         /* net-snmp returns error codes not OIDs, which are dealt with later */
         return SNMPERR_UNSUPPORTED_SEC_LEVEL;
     }
diff --git a/snmplib/snmpusm.c b/snmplib/snmpusm.c
index 8780596..6a9cec3 100644
--- a/snmplib/snmpusm.c
+++ b/snmplib/snmpusm.c
@@ -22,6 +22,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #include <stdio.h>
@@ -71,6 +72,11 @@
 #include <net-snmp/library/snmp_secmod.h>
 #include <net-snmp/library/snmpusm.h>
 
+netsnmp_feature_child_of(usm_all, libnetsnmp)
+netsnmp_feature_child_of(usm_support, usm_all)
+
+netsnmp_feature_require(usm_support)
+
 oid             usmNoAuthProtocol[10] = { 1, 3, 6, 1, 6, 3, 10, 1, 1, 1 };
 #ifndef NETSNMP_DISABLE_MD5
 oid             usmHMACMD5AuthProtocol[10] =
@@ -89,6 +95,16 @@
 static u_int    dummy_etime, dummy_eboot;       /* For ISENGINEKNOWN(). */
 
 /*
+ * Set up default snmpv3 parameter value storage.
+ */
+#ifdef NETSNMP_SECMOD_USM
+static const oid *defaultAuthType = NULL;
+static size_t   defaultAuthTypeLen = 0;
+static const oid *defaultPrivType = NULL;
+static size_t   defaultPrivTypeLen = 0;
+#endif /* NETSNMP_SECMOD_USM */
+
+/*
  * Globals.
  */
 static u_int    salt_integer;
@@ -158,6 +174,21 @@
 }
 
 
+int
+free_enginetime_on_shutdown(int majorid, int minorid, void *serverarg,
+			    void *clientarg)
+{
+    u_char engineID[SNMP_MAX_ENG_SIZE];
+    size_t engineID_len = sizeof(engineID);
+
+    DEBUGMSGTL(("snmpv3", "free enginetime callback called\n"));
+
+    engineID_len = snmpv3_get_engineID(engineID, engineID_len);
+    if (engineID_len > 0)
+	free_enginetime(engineID, engineID_len);
+    return 0;
+}
+
 struct usmStateReference *
 usm_malloc_usmStateReference(void)
 {
@@ -2143,11 +2174,7 @@
         if (boots_uint == ENGINEBOOT_MAX
             || boots_uint != myBoots
             || time_difference > USM_TIME_WINDOW) {
-            if (snmp_increment_statistic(STAT_USMSTATSNOTINTIMEWINDOWS) ==
-                0) {
-                DEBUGMSGTL(("usm", "%s\n",
-                            "Failed to increment statistic."));
-            }
+            snmp_increment_statistic(STAT_USMSTATSNOTINTIMEWINDOWS);
 
             DEBUGMSGTL(("usm",
                         "boot_uint %u myBoots %u time_diff %u => not in time window\n",
@@ -2360,16 +2387,10 @@
             /*
              * This indicates a decryptionError.  
              */
-            if (snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS) ==
-                0) {
-                DEBUGMSGTL(("usm", "%s\n",
-                            "Failed to increment statistic."));
-            }
+            snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS);
             return SNMPERR_USM_DECRYPTIONERROR;
         }
-        if (snmp_increment_statistic(STAT_SNMPINASNPARSEERRS) == 0) {
-            DEBUGMSGTL(("usm", "%s\n", "Failed to increment statistic."));
-        }
+        snmp_increment_statistic(STAT_SNMPINASNPARSEERRS);
         return SNMPERR_USM_PARSEERROR;
     }
 
@@ -2380,10 +2401,7 @@
      * calling module.
      */
     if ((secLevel == SNMP_SEC_LEVEL_AUTHPRIV) && (salt_length != 8)) {
-        if (snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS) == 
-            0) {
-            DEBUGMSGTL(("usm", "%s\n", "Failed increment statistic."));
-        }
+        snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS);
         return SNMPERR_USM_DECRYPTIONERROR;
     }
 
@@ -2431,11 +2449,7 @@
         (!sess && (msg_flags & SNMP_MSG_FLAG_RPRT_BIT))) {
         if (ISENGINEKNOWN(secEngineID, *secEngineIDLen) == FALSE) {
             DEBUGMSGTL(("usm", "Unknown Engine ID.\n"));
-            if (snmp_increment_statistic(STAT_USMSTATSUNKNOWNENGINEIDS) ==
-                0) {
-                DEBUGMSGTL(("usm", "%s\n",
-                            "Failed to increment statistic."));
-            }
+            snmp_increment_statistic(STAT_USMSTATSUNKNOWNENGINEIDS);
             return SNMPERR_USM_UNKNOWNENGINEID;
         }
     } else {
@@ -2459,9 +2473,7 @@
                                          (!sess)) ? 0 : 1)))
         == NULL) {
         DEBUGMSGTL(("usm", "Unknown User(%s)\n", secName));
-        if (snmp_increment_statistic(STAT_USMSTATSUNKNOWNUSERNAMES) == 0) {
-            DEBUGMSGTL(("usm", "%s\n", "Failed to increment statistic."));
-        }
+        snmp_increment_statistic(STAT_USMSTATSUNKNOWNUSERNAMES);
         return SNMPERR_USM_UNKNOWNSECURITYNAME;
     }
 
@@ -2479,10 +2491,7 @@
     if (1 == rc) {
         DEBUGMSGTL(("usm", "Unsupported Security Level (%d).\n",
                     secLevel));
-        if (snmp_increment_statistic
-            (STAT_USMSTATSUNSUPPORTEDSECLEVELS) == 0) {
-            DEBUGMSGTL(("usm", "%s\n", "Failed to increment statistic."));
-        }
+        snmp_increment_statistic(STAT_USMSTATSUNSUPPORTEDSECLEVELS);
         return SNMPERR_USM_UNSUPPORTEDSECURITYLEVEL;
     } else if (rc != 0) {
         DEBUGMSGTL(("usm", "Unknown issue.\n"));
@@ -2500,10 +2509,7 @@
                                 signature, signature_length)
             != SNMP_ERR_NOERROR) {
             DEBUGMSGTL(("usm", "Verification failed.\n"));
-            if (snmp_increment_statistic(STAT_USMSTATSWRONGDIGESTS) == 0) {
-                DEBUGMSGTL(("usm", "%s\n",
-                            "Failed to increment statistic."));
-            }
+            snmp_increment_statistic(STAT_USMSTATSWRONGDIGESTS);
 	    snmp_log(LOG_WARNING, "Authentication failed for %s\n",
 				user->name);
             return SNMPERR_USM_AUTHENTICATIONFAILURE;
@@ -2594,9 +2600,7 @@
                                             "encrypted sPDU")) == NULL) {
             DEBUGMSGTL(("usm", "%s\n",
                         "Failed while parsing encrypted sPDU."));
-            if (snmp_increment_statistic(STAT_SNMPINASNPARSEERRS) == 0) {
-                DEBUGMSGTL(("usm", "%s\n", "Failed increment statistic."));
-            }
+            snmp_increment_statistic(STAT_SNMPINASNPARSEERRS);
             usm_free_usmStateReference(*secStateRef);
             *secStateRef = NULL;
             return SNMPERR_USM_PARSEERROR;
@@ -2617,10 +2621,7 @@
                 DEBUGMSGTL(("usm",
                             "Ciphertext is %lu bytes, not an integer multiple of 8 (rem %lu)\n",
                             (unsigned long)remaining, (unsigned long)remaining % 8));
-                if (snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS) ==
-                    0) {
-                    DEBUGMSGTL(("usm", "%s\n", "Failed increment statistic."));
-                }
+                snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS);
                 usm_free_usmStateReference(*secStateRef);
                 *secStateRef = NULL;
                 return SNMPERR_USM_DECRYPTIONERROR;
@@ -2630,10 +2631,7 @@
 
             if ( !user->privKey ) {
                 DEBUGMSGTL(("usm", "No privacy pass phrase for %s\n", user->secName));
-                if (snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS) ==
-                    0) {
-                    DEBUGMSGTL(("usm", "%s\n", "Failed increment statistic."));
-                }
+                snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS);
                 usm_free_usmStateReference(*secStateRef);
                 *secStateRef = NULL;
                 return SNMPERR_USM_DECRYPTIONERROR;
@@ -2665,10 +2663,7 @@
                        value_ptr, remaining, *scopedPdu, scopedPduLen)
             != SNMP_ERR_NOERROR) {
             DEBUGMSGTL(("usm", "%s\n", "Failed decryption."));
-            if (snmp_increment_statistic
-                (STAT_USMSTATSDECRYPTIONERRORS) == 0) {
-                DEBUGMSGTL(("usm", "%s\n", "Failed increment statistic."));
-            }
+            snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS);
             return SNMPERR_USM_DECRYPTIONERROR;
         }
 #ifdef NETSNMP_ENABLE_TESTING_CODE
@@ -2857,10 +2852,352 @@
     return SNMPERR_SUCCESS;
 }
 
+
+/*
+ * usm_create_user_from_session(netsnmp_session *session):
+ * 
+ * creates a user in the usm table from the information in a session.
+ * If the user already exists, it is updated with the current
+ * information from the session
+ * 
+ * Parameters:
+ * session -- IN: pointer to the session to use when creating the user.
+ * 
+ * Returns:
+ * SNMPERR_SUCCESS
+ * SNMPERR_GENERR 
+ */
+int
+usm_create_user_from_session(netsnmp_session * session)
+{
+    struct usmUser *user;
+    int             user_just_created = 0;
+    char *cp;
+
+    /*
+     * - don't create-another/copy-into user for this session by default
+     * - bail now (no error) if we don't have an engineID
+     */
+    if (SNMP_FLAGS_USER_CREATED == (session->flags & SNMP_FLAGS_USER_CREATED) ||
+        session->securityModel != SNMP_SEC_MODEL_USM ||
+        session->version != SNMP_VERSION_3 ||
+        session->securityNameLen == 0 ||
+        session->securityEngineIDLen == 0)
+        return SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("usm", "no flag defined...  continuing\n"));
+    session->flags |= SNMP_FLAGS_USER_CREATED;
+
+    /*
+     * now that we have the engineID, create an entry in the USM list
+     * for this user using the information in the session 
+     */
+    user = usm_get_user_from_list(session->securityEngineID,
+                                  session->securityEngineIDLen,
+                                  session->securityName,
+                                  usm_get_userList(), 0);
+    DEBUGMSGTL(("usm", "user exists? x=%p\n", user));
+    if (user == NULL) {
+        DEBUGMSGTL(("usm", "Building user %s...\n",
+                    session->securityName));
+        /*
+         * user doesn't exist so we create and add it 
+         */
+        user = (struct usmUser *) calloc(1, sizeof(struct usmUser));
+        if (user == NULL)
+            return SNMPERR_GENERR;
+
+        /*
+         * copy in the securityName 
+         */
+        if (session->securityName) {
+            user->name = strdup(session->securityName);
+            user->secName = strdup(session->securityName);
+            if (user->name == NULL || user->secName == NULL) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+        }
+
+        /*
+         * copy in the engineID 
+         */
+        user->engineID = netsnmp_memdup(session->securityEngineID,
+                                        session->securityEngineIDLen);
+        if (session->securityEngineID && !user->engineID) {
+            usm_free_user(user);
+            return SNMPERR_GENERR;
+        }
+        user->engineIDLen = session->securityEngineIDLen;
+
+        user_just_created = 1;
+    }
+
+    /*
+     * copy the auth protocol 
+     */
+    if (user->authProtocol == NULL && session->securityAuthProto != NULL) {
+        SNMP_FREE(user->authProtocol);
+        user->authProtocol =
+            snmp_duplicate_objid(session->securityAuthProto,
+                                 session->securityAuthProtoLen);
+        if (user->authProtocol == NULL) {
+            usm_free_user(user);
+            return SNMPERR_GENERR;
+        }
+        user->authProtocolLen = session->securityAuthProtoLen;
+    }
+
+    /*
+     * copy the priv protocol 
+     */
+    if (user->privProtocol == NULL && session->securityPrivProto != NULL) {
+        SNMP_FREE(user->privProtocol);
+        user->privProtocol =
+            snmp_duplicate_objid(session->securityPrivProto,
+                                 session->securityPrivProtoLen);
+        if (user->privProtocol == NULL) {
+            usm_free_user(user);
+            return SNMPERR_GENERR;
+        }
+        user->privProtocolLen = session->securityPrivProtoLen;
+    }
+
+    /*
+     * copy in the authentication Key.  If not localized, localize it 
+     */
+    if (user->authKey == NULL) {
+        if (session->securityAuthLocalKey != NULL
+            && session->securityAuthLocalKeyLen != 0) {
+            /* already localized key passed in.  use it */
+            SNMP_FREE(user->authKey);
+            user->authKey = netsnmp_memdup(session->securityAuthLocalKey,
+                                           session->securityAuthLocalKeyLen);
+            if (!user->authKey) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+            user->authKeyLen = session->securityAuthLocalKeyLen;
+        } else if (session->securityAuthKey != NULL
+                   && session->securityAuthKeyLen != 0) {
+            SNMP_FREE(user->authKey);
+            user->authKey = (u_char *) calloc(1, USM_LENGTH_KU_HASHBLOCK);
+            if (user->authKey == NULL) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+            user->authKeyLen = USM_LENGTH_KU_HASHBLOCK;
+            if (generate_kul(user->authProtocol, user->authProtocolLen,
+                             session->securityEngineID,
+                             session->securityEngineIDLen,
+                             session->securityAuthKey,
+                             session->securityAuthKeyLen, user->authKey,
+                             &user->authKeyLen) != SNMPERR_SUCCESS) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+        } else if ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+                                               NETSNMP_DS_LIB_AUTHLOCALIZEDKEY))) {
+            size_t buflen = USM_AUTH_KU_LEN;
+            SNMP_FREE(user->authKey);
+            user->authKey = (u_char *)malloc(buflen); /* max length needed */
+            user->authKeyLen = 0;
+            /* it will be a hex string */
+            if (!snmp_hex_to_binary(&user->authKey, &buflen, &user->authKeyLen,
+                                    0, cp)) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+        }
+    }
+
+    /*
+     * copy in the privacy Key.  If not localized, localize it 
+     */
+    if (user->privKey == NULL) {
+        if (session->securityPrivLocalKey != NULL
+            && session->securityPrivLocalKeyLen != 0) {
+            /* already localized key passed in.  use it */
+            SNMP_FREE(user->privKey);
+            user->privKey = netsnmp_memdup(session->securityPrivLocalKey,
+                                           session->securityPrivLocalKeyLen);
+            if (!user->privKey) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+            user->privKeyLen = session->securityPrivLocalKeyLen;
+        } else if (session->securityPrivKey != NULL
+                   && session->securityPrivKeyLen != 0) {
+            SNMP_FREE(user->privKey);
+            user->privKey = (u_char *) calloc(1, USM_LENGTH_KU_HASHBLOCK);
+            if (user->privKey == NULL) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+            user->privKeyLen = USM_LENGTH_KU_HASHBLOCK;
+            if (generate_kul(user->authProtocol, user->authProtocolLen,
+                             session->securityEngineID,
+                             session->securityEngineIDLen,
+                             session->securityPrivKey,
+                             session->securityPrivKeyLen, user->privKey,
+                             &user->privKeyLen) != SNMPERR_SUCCESS) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+        } else if ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+                                               NETSNMP_DS_LIB_PRIVLOCALIZEDKEY))) {
+            size_t buflen = USM_PRIV_KU_LEN;
+            SNMP_FREE(user->privKey);
+            user->privKey = (u_char *)malloc(buflen); /* max length needed */
+            user->privKeyLen = 0;
+            /* it will be a hex string */
+            if (!snmp_hex_to_binary(&user->privKey, &buflen, &user->privKeyLen,
+                                    0, cp)) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+        }
+    }
+
+    if (user_just_created) {
+        /*
+         * add the user into the database 
+         */
+        user->userStatus = RS_ACTIVE;
+        user->userStorageType = ST_READONLY;
+        usm_add_user(user);
+    }
+
+    return SNMPERR_SUCCESS;
+
+
+}
+
+/* A wrapper around the hook */
+int
+usm_create_user_from_session_hook(void *slp, netsnmp_session *session)
+{
+    DEBUGMSGTL(("usm", "potentially bootstrapping the USM table from session data\n"));
+    return usm_create_user_from_session(session);
+}
+
+static int
+usm_build_probe_pdu(netsnmp_pdu **pdu)
+{
+    struct usmUser *user;
+
+    /*
+     * create the pdu 
+     */
+    if (!pdu)
+        return -1;
+    *pdu = snmp_pdu_create(SNMP_MSG_GET);
+    if (!(*pdu))
+        return -1;
+    (*pdu)->version = SNMP_VERSION_3;
+    (*pdu)->securityName = strdup("");
+    (*pdu)->securityNameLen = strlen((*pdu)->securityName);
+    (*pdu)->securityLevel = SNMP_SEC_LEVEL_NOAUTH;
+    (*pdu)->securityModel = SNMP_SEC_MODEL_USM;
+
+    /*
+     * create the empty user 
+     */
+    user = usm_get_user(NULL, 0, (*pdu)->securityName);
+    if (user == NULL) {
+        user = (struct usmUser *) calloc(1, sizeof(struct usmUser));
+        if (user == NULL) {
+            snmp_free_pdu(*pdu);
+            *pdu = (netsnmp_pdu *) NULL;
+            return -1;
+        }
+        user->name = strdup((*pdu)->securityName);
+        user->secName = strdup((*pdu)->securityName);
+        user->authProtocolLen = sizeof(usmNoAuthProtocol) / sizeof(oid);
+        user->authProtocol =
+            snmp_duplicate_objid(usmNoAuthProtocol, user->authProtocolLen);
+        user->privProtocolLen = sizeof(usmNoPrivProtocol) / sizeof(oid);
+        user->privProtocol =
+            snmp_duplicate_objid(usmNoPrivProtocol, user->privProtocolLen);
+        usm_add_user(user);
+    }
+    return 0;
+}
+
+int usm_discover_engineid(void *slpv, netsnmp_session *session) {
+    netsnmp_pdu    *pdu = NULL, *response = NULL;
+    int status, i;
+    struct session_list *slp = (struct session_list *) slpv;
+
+    if (usm_build_probe_pdu(&pdu) != 0) {
+        DEBUGMSGTL(("snmp_api", "unable to create probe PDU\n"));
+        return SNMP_ERR_GENERR;
+    }
+    DEBUGMSGTL(("snmp_api", "probing for engineID...\n"));
+    session->flags |= SNMP_FLAGS_DONT_PROBE; /* prevent recursion */
+    status = snmp_sess_synch_response(slp, pdu, &response);
+
+    if ((response == NULL) && (status == STAT_SUCCESS)) {
+        status = STAT_ERROR;
+    }
+
+    switch (status) {
+    case STAT_SUCCESS:
+        session->s_snmp_errno = SNMPERR_INVALID_MSG; /* XX?? */
+        DEBUGMSGTL(("snmp_sess_open",
+                    "error: expected Report as response to probe: %s (%ld)\n",
+                    snmp_errstring(response->errstat),
+                    response->errstat));
+        break;
+    case STAT_ERROR:   /* this is what we expected -> Report == STAT_ERROR */
+        session->s_snmp_errno = SNMPERR_UNKNOWN_ENG_ID;
+        break;
+    case STAT_TIMEOUT:
+        session->s_snmp_errno = SNMPERR_TIMEOUT;
+        break;
+    default:
+        DEBUGMSGTL(("snmp_sess_open",
+                    "unable to connect with remote engine: %s (%d)\n",
+                    snmp_api_errstring(session->s_snmp_errno),
+                    session->s_snmp_errno));
+        break;
+    }
+
+    if (slp->session->securityEngineIDLen == 0) {
+        DEBUGMSGTL(("snmp_api",
+                    "unable to determine remote engine ID\n"));
+        /* clear the flag so that probe occurs on next inform */
+        session->flags &= ~SNMP_FLAGS_DONT_PROBE;
+        return SNMP_ERR_GENERR;
+    }
+
+    session->s_snmp_errno = SNMPERR_SUCCESS;
+    if (snmp_get_do_debugging()) {
+        DEBUGMSGTL(("snmp_sess_open",
+                    "  probe found engineID:  "));
+        for (i = 0; i < slp->session->securityEngineIDLen; i++)
+            DEBUGMSG(("snmp_sess_open", "%02x",
+                      slp->session->securityEngineID[i]));
+        DEBUGMSG(("snmp_sess_open", "\n"));
+    }
+
+    /*
+     * if boot/time supplied set it for this engineID 
+     */
+    if (session->engineBoots || session->engineTime) {
+        set_enginetime(session->securityEngineID,
+                       session->securityEngineIDLen,
+                       session->engineBoots, session->engineTime,
+                       TRUE);
+    }
+    return SNMPERR_SUCCESS;
+}
+
 void
 init_usm(void)
 {
     struct snmp_secmod_def *def;
+    char *type;
 
     DEBUGMSGTL(("init_usm", "unit_usm: %" NETSNMP_PRIo "u %" NETSNMP_PRIo "u\n",
                 usmNoPrivProtocol[0], usmNoPrivProtocol[1]));
@@ -2882,6 +3219,8 @@
     def->pdu_free_state_ref = usm_free_usmStateReference;
     def->session_setup = usm_session_init;
     def->handle_report = usm_handle_report;
+    def->probe_engineid = usm_discover_engineid;
+    def->post_probe_engineid = usm_create_user_from_session_hook;
     register_sec_mod(USM_SEC_MODEL_NUMBER, "usm", def);
 
     snmp_register_callback(SNMP_CALLBACK_LIBRARY,
@@ -2896,6 +3235,39 @@
                            SNMP_CALLBACK_SHUTDOWN,
                            free_engineID, NULL);
 
+    register_config_handler("snmp", "defAuthType", snmpv3_authtype_conf,
+                            NULL, "MD5|SHA");
+    register_config_handler("snmp", "defPrivType", snmpv3_privtype_conf,
+                            NULL,
+#ifdef HAVE_AES
+                            "DES|AES"
+#else
+                            "DES (AES support not available)"
+#endif
+                           );
+
+    /*
+     * Free stuff at shutdown time
+     */
+    snmp_register_callback(SNMP_CALLBACK_LIBRARY,
+                           SNMP_CALLBACK_SHUTDOWN,
+                           free_enginetime_on_shutdown, NULL);
+
+
+    type = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_APPTYPE);
+
+    register_config_handler(type, "userSetAuthPass", usm_set_password,
+                            NULL, NULL);
+    register_config_handler(type, "userSetPrivPass", usm_set_password,
+                            NULL, NULL);
+    register_config_handler(type, "userSetAuthKey", usm_set_password, NULL,
+                            NULL);
+    register_config_handler(type, "userSetPrivKey", usm_set_password, NULL,
+                            NULL);
+    register_config_handler(type, "userSetAuthLocalKey", usm_set_password,
+                            NULL, NULL);
+    register_config_handler(type, "userSetPrivLocalKey", usm_set_password,
+                            NULL, NULL);
 }
 
 void
@@ -3004,6 +3376,13 @@
 
 }
 
+void
+shutdown_usm(void)
+{
+    free_etimelist();
+    clear_user_list();
+}
+
 /*******************************************************************-o-******
  * usm_check_secLevel
  *
@@ -3409,6 +3788,7 @@
 
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 /*
  * take a given user and clone the security info into another 
  */
@@ -3472,6 +3852,7 @@
     }
     return to;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * usm_create_user(void):
@@ -3937,3 +4318,355 @@
         }
     }
 }                               /* end usm_set_password() */
+
+void
+usm_parse_create_usmUser(const char *token, char *line)
+{
+    char           *cp;
+    char            buf[SNMP_MAXBUF_MEDIUM];
+    struct usmUser *newuser;
+    u_char          userKey[SNMP_MAXBUF_SMALL], *tmpp;
+    size_t          userKeyLen = SNMP_MAXBUF_SMALL;
+    size_t          privKeyLen = 0;
+    size_t          ret;
+    int             ret2;
+    int             testcase;
+
+    newuser = usm_create_user();
+
+    /*
+     * READ: Security Name 
+     */
+    cp = copy_nword(line, buf, sizeof(buf));
+
+    /*
+     * might be a -e ENGINEID argument 
+     */
+    if (strcmp(buf, "-e") == 0) {
+        size_t          ebuf_len = 32, eout_len = 0;
+        u_char         *ebuf = (u_char *) malloc(ebuf_len);
+
+        if (ebuf == NULL) {
+            config_perror("malloc failure processing -e flag");
+            usm_free_user(newuser);
+            return;
+        }
+
+        /*
+         * Get the specified engineid from the line.  
+         */
+        cp = copy_nword(cp, buf, sizeof(buf));
+        if (!snmp_hex_to_binary(&ebuf, &ebuf_len, &eout_len, 1, buf)) {
+            config_perror("invalid EngineID argument to -e");
+            usm_free_user(newuser);
+            SNMP_FREE(ebuf);
+            return;
+        }
+
+        newuser->engineID = ebuf;
+        newuser->engineIDLen = eout_len;
+        cp = copy_nword(cp, buf, sizeof(buf));
+    } else {
+        newuser->engineID = snmpv3_generate_engineID(&ret);
+        if (ret == 0) {
+            usm_free_user(newuser);
+            return;
+        }
+        newuser->engineIDLen = ret;
+    }
+
+    newuser->secName = strdup(buf);
+    newuser->name = strdup(buf);
+
+    if (!cp)
+        goto add;               /* no authentication or privacy type */
+
+    /*
+     * READ: Authentication Type 
+     */
+#ifndef NETSNMP_DISABLE_MD5
+    if (strncmp(cp, "MD5", 3) == 0) {
+        memcpy(newuser->authProtocol, usmHMACMD5AuthProtocol,
+               sizeof(usmHMACMD5AuthProtocol));
+    } else
+#endif
+        if (strncmp(cp, "SHA", 3) == 0) {
+        memcpy(newuser->authProtocol, usmHMACSHA1AuthProtocol,
+               sizeof(usmHMACSHA1AuthProtocol));
+    } else {
+        config_perror("Unknown authentication protocol");
+        usm_free_user(newuser);
+        return;
+    }
+
+    cp = skip_token(cp);
+
+    /*
+     * READ: Authentication Pass Phrase or key
+     */
+    if (!cp) {
+        config_perror("no authentication pass phrase");
+        usm_free_user(newuser);
+        return;
+    }
+    cp = copy_nword(cp, buf, sizeof(buf));
+    if (strcmp(buf,"-m") == 0) {
+        /* a master key is specified */
+        cp = copy_nword(cp, buf, sizeof(buf));
+        ret = sizeof(userKey);
+        tmpp = userKey;
+        userKeyLen = 0;
+        if (!snmp_hex_to_binary(&tmpp, &ret, &userKeyLen, 0, buf)) {
+            config_perror("invalid key value argument to -m");
+            usm_free_user(newuser);
+            return;
+        }
+    } else if (strcmp(buf,"-l") != 0) {
+        /* a password is specified */
+        userKeyLen = sizeof(userKey);
+        ret2 = generate_Ku(newuser->authProtocol, newuser->authProtocolLen,
+                          (u_char *) buf, strlen(buf), userKey, &userKeyLen);
+        if (ret2 != SNMPERR_SUCCESS) {
+            config_perror("could not generate the authentication key from the "
+                          "supplied pass phrase.");
+            usm_free_user(newuser);
+            return;
+        }
+    }        
+        
+    /*
+     * And turn it into a localized key 
+     */
+    ret2 = sc_get_properlength(newuser->authProtocol,
+                               newuser->authProtocolLen);
+    if (ret2 <= 0) {
+        config_perror("Could not get proper authentication protocol key length");
+	usm_free_user(newuser);
+        return;
+    }
+    newuser->authKey = (u_char *) malloc(ret2);
+
+    if (strcmp(buf,"-l") == 0) {
+        /* a local key is directly specified */
+        cp = copy_nword(cp, buf, sizeof(buf));
+        newuser->authKeyLen = 0;
+        ret = ret2;
+        if (!snmp_hex_to_binary(&newuser->authKey, &ret,
+                                &newuser->authKeyLen, 0, buf)) {
+            config_perror("invalid key value argument to -l");
+            usm_free_user(newuser);
+            return;
+        }
+        if (ret != newuser->authKeyLen) {
+            config_perror("improper key length to -l");
+            usm_free_user(newuser);
+            return;
+        }
+    } else {
+        newuser->authKeyLen = ret2;
+        ret2 = generate_kul(newuser->authProtocol, newuser->authProtocolLen,
+                           newuser->engineID, newuser->engineIDLen,
+                           userKey, userKeyLen,
+                           newuser->authKey, &newuser->authKeyLen);
+        if (ret2 != SNMPERR_SUCCESS) {
+            config_perror("could not generate localized authentication key "
+                          "(Kul) from the master key (Ku).");
+            usm_free_user(newuser);
+            return;
+        }
+    }
+
+    if (!cp)
+        goto add;               /* no privacy type (which is legal) */
+
+    /*
+     * READ: Privacy Type 
+     */
+    testcase = 0;
+#ifndef NETSNMP_DISABLE_DES
+    if (strncmp(cp, "DES", 3) == 0) {
+        memcpy(newuser->privProtocol, usmDESPrivProtocol,
+               sizeof(usmDESPrivProtocol));
+        testcase = 1;
+	/* DES uses a 128 bit key, 64 bits of which is a salt */
+	privKeyLen = 16;
+    }
+#endif
+#ifdef HAVE_AES
+    if (strncmp(cp, "AES128", 6) == 0 ||
+               strncmp(cp, "AES", 3) == 0) {
+        memcpy(newuser->privProtocol, usmAESPrivProtocol,
+               sizeof(usmAESPrivProtocol));
+        testcase = 1;
+	privKeyLen = 16;
+    }
+#endif
+    if (testcase == 0) {
+        config_perror("Unknown privacy protocol");
+        usm_free_user(newuser);
+        return;
+    }
+
+    cp = skip_token(cp);
+    /*
+     * READ: Encryption Pass Phrase or key
+     */
+    if (!cp) {
+        /*
+         * assume the same as the authentication key 
+         */
+        newuser->privKey = netsnmp_memdup(newuser->authKey,
+                                          newuser->authKeyLen);
+        newuser->privKeyLen = newuser->authKeyLen;
+    } else {
+        cp = copy_nword(cp, buf, sizeof(buf));
+        
+        if (strcmp(buf,"-m") == 0) {
+            /* a master key is specified */
+            cp = copy_nword(cp, buf, sizeof(buf));
+            ret = sizeof(userKey);
+            tmpp = userKey;
+            userKeyLen = 0;
+            if (!snmp_hex_to_binary(&tmpp, &ret, &userKeyLen, 0, buf)) {
+                config_perror("invalid key value argument to -m");
+                usm_free_user(newuser);
+                return;
+            }
+        } else if (strcmp(buf,"-l") != 0) {
+            /* a password is specified */
+            userKeyLen = sizeof(userKey);
+            ret2 = generate_Ku(newuser->authProtocol, newuser->authProtocolLen,
+                              (u_char *) buf, strlen(buf), userKey, &userKeyLen);
+            if (ret2 != SNMPERR_SUCCESS) {
+                config_perror("could not generate the privacy key from the "
+                              "supplied pass phrase.");
+                usm_free_user(newuser);
+                return;
+            }
+        }        
+        
+        /*
+         * And turn it into a localized key 
+         */
+        ret2 = sc_get_properlength(newuser->authProtocol,
+                                   newuser->authProtocolLen);
+        if (ret2 < 0) {
+            config_perror("could not get proper key length to use for the "
+                          "privacy algorithm.");
+            usm_free_user(newuser);
+            return;
+        }
+        newuser->privKey = (u_char *) malloc(ret2);
+
+        if (strcmp(buf,"-l") == 0) {
+            /* a local key is directly specified */
+            cp = copy_nword(cp, buf, sizeof(buf));
+            ret = ret2;
+            newuser->privKeyLen = 0;
+            if (!snmp_hex_to_binary(&newuser->privKey, &ret,
+                                    &newuser->privKeyLen, 0, buf)) {
+                config_perror("invalid key value argument to -l");
+                usm_free_user(newuser);
+                return;
+            }
+        } else {
+            newuser->privKeyLen = ret2;
+            ret2 = generate_kul(newuser->authProtocol, newuser->authProtocolLen,
+                               newuser->engineID, newuser->engineIDLen,
+                               userKey, userKeyLen,
+                               newuser->privKey, &newuser->privKeyLen);
+            if (ret2 != SNMPERR_SUCCESS) {
+                config_perror("could not generate localized privacy key "
+                              "(Kul) from the master key (Ku).");
+                usm_free_user(newuser);
+                return;
+            }
+        }
+    }
+
+    if ((newuser->privKeyLen >= privKeyLen) || (privKeyLen == 0)){
+      newuser->privKeyLen = privKeyLen;
+    }
+    else {
+      /* The privKey length is smaller than required by privProtocol */
+      usm_free_user(newuser);
+      return;
+    }
+
+  add:
+    usm_add_user(newuser);
+    DEBUGMSGTL(("usmUser", "created a new user %s at ", newuser->secName));
+    DEBUGMSGHEX(("usmUser", newuser->engineID, newuser->engineIDLen));
+    DEBUGMSG(("usmUser", "\n"));
+}
+
+void
+snmpv3_authtype_conf(const char *word, char *cptr)
+{
+#ifndef NETSNMP_DISABLE_MD5
+    if (strcasecmp(cptr, "MD5") == 0)
+        defaultAuthType = usmHMACMD5AuthProtocol;
+    else
+#endif
+        if (strcasecmp(cptr, "SHA") == 0)
+        defaultAuthType = usmHMACSHA1AuthProtocol;
+    else
+        config_perror("Unknown authentication type");
+    defaultAuthTypeLen = USM_LENGTH_OID_TRANSFORM;
+    DEBUGMSGTL(("snmpv3", "set default authentication type: %s\n", cptr));
+}
+
+const oid      *
+get_default_authtype(size_t * len)
+{
+    if (defaultAuthType == NULL) {
+        defaultAuthType = SNMP_DEFAULT_AUTH_PROTO;
+        defaultAuthTypeLen = SNMP_DEFAULT_AUTH_PROTOLEN;
+    }
+    if (len)
+        *len = defaultAuthTypeLen;
+    return defaultAuthType;
+}
+
+void
+snmpv3_privtype_conf(const char *word, char *cptr)
+{
+    int testcase = 0;
+
+#ifndef NETSNMP_DISABLE_DES
+    if (strcasecmp(cptr, "DES") == 0) {
+        testcase = 1;
+        defaultPrivType = usmDESPrivProtocol;
+    }
+#endif
+
+#if HAVE_AES
+    /* XXX AES: assumes oid length == des oid length */
+    if (strcasecmp(cptr, "AES128") == 0 ||
+        strcasecmp(cptr, "AES") == 0) {
+        testcase = 1;
+        defaultPrivType = usmAES128PrivProtocol;
+    }
+#endif
+    if (testcase == 0)
+        config_perror("Unknown privacy type");
+    defaultPrivTypeLen = SNMP_DEFAULT_PRIV_PROTOLEN;
+    DEBUGMSGTL(("snmpv3", "set default privacy type: %s\n", cptr));
+}
+
+const oid      *
+get_default_privtype(size_t * len)
+{
+    if (defaultPrivType == NULL) {
+#ifndef NETSNMP_DISABLE_DES
+        defaultPrivType = usmDESPrivProtocol;
+#else
+        defaultPrivType = usmAESPrivProtocol;
+#endif
+        defaultPrivTypeLen = USM_LENGTH_OID_TRANSFORM;
+    }
+    if (len)
+        *len = defaultPrivTypeLen;
+    return defaultPrivType;
+}
+
diff --git a/snmplib/snmpv3.c b/snmplib/snmpv3.c
index 8b49362..435cafd 100644
--- a/snmplib/snmpv3.c
+++ b/snmplib/snmpv3.c
@@ -75,6 +75,8 @@
 #include <net-snmp/library/snmpusm.h>
 #include <net-snmp/library/transform_oids.h>
 
+#include <net-snmp/net-snmp-features.h>
+
 static u_long   engineBoots = 1;
 static unsigned int engineIDType = ENGINEID_TYPE_NETSNMP_RND;
 static unsigned char *engineID = NULL;
@@ -85,100 +87,10 @@
 static size_t   oldEngineIDLength = 0;
 static struct timeval snmpv3starttime;
 
-/*
- * Set up default snmpv3 parameter value storage.
- */
-static const oid *defaultAuthType = NULL;
-static size_t   defaultAuthTypeLen = 0;
-static const oid *defaultPrivType = NULL;
-static size_t   defaultPrivTypeLen = 0;
-
-/* this is probably an over-kill ifdef, but why not */
-#if defined(HAVE_SYS_TIMES_H) && defined(HAVE_UNISTD_H) && defined(HAVE_TIMES) && defined(_SC_CLK_TCK) && defined(HAVE_SYSCONF) && defined(UINT_MAX)
-
-#define SNMP_USE_TIMES 1
-
-static clock_t snmpv3startClock;
-static long clockticks = 0;
-static unsigned int lastcalltime = 0;
-static unsigned int wrapcounter = 0;
-
-#endif /* times() tests */
-
 #if defined(IFHWADDRLEN) && defined(SIOCGIFHWADDR)
 static int      getHwAddress(const char *networkDevice, char *addressOut);
 #endif
 
-void
-snmpv3_authtype_conf(const char *word, char *cptr)
-{
-#ifndef NETSNMP_DISABLE_MD5
-    if (strcasecmp(cptr, "MD5") == 0)
-        defaultAuthType = usmHMACMD5AuthProtocol;
-    else
-#endif
-        if (strcasecmp(cptr, "SHA") == 0)
-        defaultAuthType = usmHMACSHA1AuthProtocol;
-    else
-        config_perror("Unknown authentication type");
-    defaultAuthTypeLen = USM_LENGTH_OID_TRANSFORM;
-    DEBUGMSGTL(("snmpv3", "set default authentication type: %s\n", cptr));
-}
-
-const oid      *
-get_default_authtype(size_t * len)
-{
-    if (defaultAuthType == NULL) {
-        defaultAuthType = SNMP_DEFAULT_AUTH_PROTO;
-        defaultAuthTypeLen = SNMP_DEFAULT_AUTH_PROTOLEN;
-    }
-    if (len)
-        *len = defaultAuthTypeLen;
-    return defaultAuthType;
-}
-
-void
-snmpv3_privtype_conf(const char *word, char *cptr)
-{
-    int testcase = 0;
-
-#ifndef NETSNMP_DISABLE_DES
-    if (strcasecmp(cptr, "DES") == 0) {
-        testcase = 1;
-        defaultPrivType = usmDESPrivProtocol;
-    }
-#endif
-
-#if HAVE_AES
-    /* XXX AES: assumes oid length == des oid length */
-    if (strcasecmp(cptr, "AES128") == 0 ||
-        strcasecmp(cptr, "AES") == 0) {
-        testcase = 1;
-        defaultPrivType = usmAES128PrivProtocol;
-    }
-#endif
-    if (testcase == 0)
-        config_perror("Unknown privacy type");
-    defaultPrivTypeLen = SNMP_DEFAULT_PRIV_PROTOLEN;
-    DEBUGMSGTL(("snmpv3", "set default privacy type: %s\n", cptr));
-}
-
-const oid      *
-get_default_privtype(size_t * len)
-{
-    if (defaultPrivType == NULL) {
-#ifndef NETSNMP_DISABLE_DES
-        defaultPrivType = usmDESPrivProtocol;
-#else
-        defaultPrivType = usmAESPrivProtocol;
-#endif
-        defaultPrivTypeLen = USM_LENGTH_OID_TRANSFORM;
-    }
-    if (len)
-        *len = defaultPrivTypeLen;
-    return defaultPrivType;
-}
-
 /*******************************************************************-o-******
  * snmpv3_secLevel_conf
  *
@@ -352,6 +264,7 @@
 
         break;
 
+#ifdef NETSNMP_SECMOD_USM
     case 'a':
 #ifndef NETSNMP_DISABLE_MD5
         if (!strcasecmp(optarg, "MD5")) {
@@ -402,6 +315,7 @@
     case 'X':
         *Xpsz = optarg;
         break;
+#endif /* NETSNMP_SECMOD_USM */
 
     case 'm': {
         size_t bufSize = sizeof(session->securityAuthKey);
@@ -528,7 +442,7 @@
          * get the host name and save the information 
          */
         gethostname((char *) buf, sizeof(buf));
-        hent = gethostbyname((char *) buf);
+        hent = netsnmp_gethostbyname((char *) buf);
         if (hent && hent->h_addrtype == AF_INET6) {
             localEngineIDType = ENGINEID_TYPE_IPV6;
         } else {
@@ -551,7 +465,7 @@
          * get the host name and save the information 
          */
         gethostname((char *) buf, sizeof(buf));
-        hent = gethostbyname((char *) buf);
+        hent = netsnmp_gethostbyname((char *) buf);
     }
 #endif
 #endif                          /* HAVE_GETHOSTNAME */
@@ -744,297 +658,6 @@
     return 0;
 }
 
-int
-free_enginetime_on_shutdown(int majorid, int minorid, void *serverarg,
-			    void *clientarg)
-{
-    DEBUGMSGTL(("snmpv3", "free enginetime callback called\n"));
-    if (engineID != NULL)
-	free_enginetime(engineID, engineIDLength);
-    return 0;
-}
-
-void
-usm_parse_create_usmUser(const char *token, char *line)
-{
-    char           *cp;
-    char            buf[SNMP_MAXBUF_MEDIUM];
-    struct usmUser *newuser;
-    u_char          userKey[SNMP_MAXBUF_SMALL], *tmpp;
-    size_t          userKeyLen = SNMP_MAXBUF_SMALL;
-    size_t          privKeyLen = 0;
-    size_t          ret;
-    int             ret2;
-    int             testcase;
-
-    newuser = usm_create_user();
-
-    /*
-     * READ: Security Name 
-     */
-    cp = copy_nword(line, buf, sizeof(buf));
-
-    /*
-     * might be a -e ENGINEID argument 
-     */
-    if (strcmp(buf, "-e") == 0) {
-        size_t          ebuf_len = 32, eout_len = 0;
-        u_char         *ebuf = (u_char *) malloc(ebuf_len);
-
-        if (ebuf == NULL) {
-            config_perror("malloc failure processing -e flag");
-            usm_free_user(newuser);
-            return;
-        }
-
-        /*
-         * Get the specified engineid from the line.  
-         */
-        cp = copy_nword(cp, buf, sizeof(buf));
-        if (!snmp_hex_to_binary(&ebuf, &ebuf_len, &eout_len, 1, buf)) {
-            config_perror("invalid EngineID argument to -e");
-            usm_free_user(newuser);
-            SNMP_FREE(ebuf);
-            return;
-        }
-
-        newuser->engineID = ebuf;
-        newuser->engineIDLen = eout_len;
-        cp = copy_nword(cp, buf, sizeof(buf));
-    } else {
-        newuser->engineID = snmpv3_generate_engineID(&ret);
-        if (ret == 0) {
-            usm_free_user(newuser);
-            return;
-        }
-        newuser->engineIDLen = ret;
-    }
-
-    newuser->secName = strdup(buf);
-    newuser->name = strdup(buf);
-
-    if (!cp)
-        goto add;               /* no authentication or privacy type */
-
-    /*
-     * READ: Authentication Type 
-     */
-#ifndef NETSNMP_DISABLE_MD5
-    if (strncmp(cp, "MD5", 3) == 0) {
-        memcpy(newuser->authProtocol, usmHMACMD5AuthProtocol,
-               sizeof(usmHMACMD5AuthProtocol));
-    } else
-#endif
-        if (strncmp(cp, "SHA", 3) == 0) {
-        memcpy(newuser->authProtocol, usmHMACSHA1AuthProtocol,
-               sizeof(usmHMACSHA1AuthProtocol));
-    } else {
-        config_perror("Unknown authentication protocol");
-        usm_free_user(newuser);
-        return;
-    }
-
-    cp = skip_token(cp);
-
-    /*
-     * READ: Authentication Pass Phrase or key
-     */
-    if (!cp) {
-        config_perror("no authentication pass phrase");
-        usm_free_user(newuser);
-        return;
-    }
-    cp = copy_nword(cp, buf, sizeof(buf));
-    if (strcmp(buf,"-m") == 0) {
-        /* a master key is specified */
-        cp = copy_nword(cp, buf, sizeof(buf));
-        ret = sizeof(userKey);
-        tmpp = userKey;
-        userKeyLen = 0;
-        if (!snmp_hex_to_binary(&tmpp, &ret, &userKeyLen, 0, buf)) {
-            config_perror("invalid key value argument to -m");
-            usm_free_user(newuser);
-            return;
-        }
-    } else if (strcmp(buf,"-l") != 0) {
-        /* a password is specified */
-        userKeyLen = sizeof(userKey);
-        ret2 = generate_Ku(newuser->authProtocol, newuser->authProtocolLen,
-                          (u_char *) buf, strlen(buf), userKey, &userKeyLen);
-        if (ret2 != SNMPERR_SUCCESS) {
-            config_perror("could not generate the authentication key from the "
-                          "supplied pass phrase.");
-            usm_free_user(newuser);
-            return;
-        }
-    }        
-        
-    /*
-     * And turn it into a localized key 
-     */
-    ret2 = sc_get_properlength(newuser->authProtocol,
-                               newuser->authProtocolLen);
-    if (ret2 <= 0) {
-        config_perror("Could not get proper authentication protocol key length");
-	usm_free_user(newuser);
-        return;
-    }
-    newuser->authKey = (u_char *) malloc(ret2);
-
-    if (strcmp(buf,"-l") == 0) {
-        /* a local key is directly specified */
-        cp = copy_nword(cp, buf, sizeof(buf));
-        newuser->authKeyLen = 0;
-        ret = ret2;
-        if (!snmp_hex_to_binary(&newuser->authKey, &ret,
-                                &newuser->authKeyLen, 0, buf)) {
-            config_perror("invalid key value argument to -l");
-            usm_free_user(newuser);
-            return;
-        }
-        if (ret != newuser->authKeyLen) {
-            config_perror("improper key length to -l");
-            usm_free_user(newuser);
-            return;
-        }
-    } else {
-        newuser->authKeyLen = ret2;
-        ret2 = generate_kul(newuser->authProtocol, newuser->authProtocolLen,
-                           newuser->engineID, newuser->engineIDLen,
-                           userKey, userKeyLen,
-                           newuser->authKey, &newuser->authKeyLen);
-        if (ret2 != SNMPERR_SUCCESS) {
-            config_perror("could not generate localized authentication key "
-                          "(Kul) from the master key (Ku).");
-            usm_free_user(newuser);
-            return;
-        }
-    }
-
-    if (!cp)
-        goto add;               /* no privacy type (which is legal) */
-
-    /*
-     * READ: Privacy Type 
-     */
-    testcase = 0;
-#ifndef NETSNMP_DISABLE_DES
-    if (strncmp(cp, "DES", 3) == 0) {
-        memcpy(newuser->privProtocol, usmDESPrivProtocol,
-               sizeof(usmDESPrivProtocol));
-        testcase = 1;
-	/* DES uses a 128 bit key, 64 bits of which is a salt */
-	privKeyLen = 16;
-    }
-#endif
-#ifdef HAVE_AES
-    if (strncmp(cp, "AES128", 6) == 0 ||
-               strncmp(cp, "AES", 3) == 0) {
-        memcpy(newuser->privProtocol, usmAESPrivProtocol,
-               sizeof(usmAESPrivProtocol));
-        testcase = 1;
-	privKeyLen = 16;
-    }
-#endif
-    if (testcase == 0) {
-        config_perror("Unknown privacy protocol");
-        usm_free_user(newuser);
-        return;
-    }
-
-    cp = skip_token(cp);
-    /*
-     * READ: Encryption Pass Phrase or key
-     */
-    if (!cp) {
-        /*
-         * assume the same as the authentication key 
-         */
-        newuser->privKey = netsnmp_memdup(newuser->authKey,
-                                          newuser->authKeyLen);
-        newuser->privKeyLen = newuser->authKeyLen;
-    } else {
-        cp = copy_nword(cp, buf, sizeof(buf));
-        
-        if (strcmp(buf,"-m") == 0) {
-            /* a master key is specified */
-            cp = copy_nword(cp, buf, sizeof(buf));
-            ret = sizeof(userKey);
-            tmpp = userKey;
-            userKeyLen = 0;
-            if (!snmp_hex_to_binary(&tmpp, &ret, &userKeyLen, 0, buf)) {
-                config_perror("invalid key value argument to -m");
-                usm_free_user(newuser);
-                return;
-            }
-        } else if (strcmp(buf,"-l") != 0) {
-            /* a password is specified */
-            userKeyLen = sizeof(userKey);
-            ret2 = generate_Ku(newuser->authProtocol, newuser->authProtocolLen,
-                              (u_char *) buf, strlen(buf), userKey, &userKeyLen);
-            if (ret2 != SNMPERR_SUCCESS) {
-                config_perror("could not generate the privacy key from the "
-                              "supplied pass phrase.");
-                usm_free_user(newuser);
-                return;
-            }
-        }        
-        
-        /*
-         * And turn it into a localized key 
-         */
-        ret2 = sc_get_properlength(newuser->authProtocol,
-                                   newuser->authProtocolLen);
-        if (ret2 < 0) {
-            config_perror("could not get proper key length to use for the "
-                          "privacy algorithm.");
-            usm_free_user(newuser);
-            return;
-        }
-        newuser->privKey = (u_char *) malloc(ret2);
-
-        if (strcmp(buf,"-l") == 0) {
-            /* a local key is directly specified */
-            cp = copy_nword(cp, buf, sizeof(buf));
-            ret = ret2;
-            newuser->privKeyLen = 0;
-            if (!snmp_hex_to_binary(&newuser->privKey, &ret,
-                                    &newuser->privKeyLen, 0, buf)) {
-                config_perror("invalid key value argument to -l");
-                usm_free_user(newuser);
-                return;
-            }
-        } else {
-            newuser->privKeyLen = ret2;
-            ret2 = generate_kul(newuser->authProtocol, newuser->authProtocolLen,
-                               newuser->engineID, newuser->engineIDLen,
-                               userKey, userKeyLen,
-                               newuser->privKey, &newuser->privKeyLen);
-            if (ret2 != SNMPERR_SUCCESS) {
-                config_perror("could not generate localized privacy key "
-                              "(Kul) from the master key (Ku).");
-                usm_free_user(newuser);
-                return;
-            }
-        }
-    }
-
-    if ((newuser->privKeyLen >= privKeyLen) || (privKeyLen == 0)){
-      newuser->privKeyLen = privKeyLen;
-    }
-    else {
-      /* The privKey length is smaller than required by privProtocol */
-      usm_free_user(newuser);
-      return;
-    }
-
-  add:
-    usm_add_user(newuser);
-    DEBUGMSGTL(("usmUser", "created a new user %s at ", newuser->secName));
-    DEBUGMSGHEX(("usmUser", newuser->engineID, newuser->engineIDLen));
-    DEBUGMSG(("usmUser", "\n"));
-}
-
 /*******************************************************************-o-******
  * engineBoots_conf
  *
@@ -1120,9 +743,7 @@
         /*
          * See if already set if so erase & release it 
          */
-        if (NULL != engineIDNic) {
-            SNMP_FREE(engineIDNic);
-        }
+        SNMP_FREE(engineIDNic);
         engineIDNic = (u_char *) malloc(strlen(cptr) + 1);
         if (NULL != engineIDNic) {
             strcpy((char *) engineIDNic, cptr);
@@ -1227,6 +848,8 @@
 /*
  * merely call 
  */
+netsnmp_feature_child_of(get_enginetime_alarm, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_GET_ENGINETIME_ALARM
 void
 get_enginetime_alarm(unsigned int regnum, void *clientargs)
 {
@@ -1234,6 +857,7 @@
        wrapping of the times() output */
     snmpv3_local_snmpEngineTime();
 }
+#endif /* NETSNMP_FEATURE_REMOVE_GET_ENGINETIME_ALARM */
 
 /*******************************************************************-o-******
  * init_snmpv3
@@ -1248,19 +872,7 @@
 void
 init_snmpv3(const char *type)
 {
-#if SNMP_USE_TIMES
-  struct tms dummy;
-
-  /* fixme: -1 is fault code... */
-  snmpv3startClock = times(&dummy);
-
-  /* remember how many ticks per second there are, since times() returns this */
-
-  clockticks = sysconf(_SC_CLK_TCK);
-
-#endif /* SNMP_USE_TIMES */
-
-    gettimeofday(&snmpv3starttime, NULL);
+    netsnmp_get_monotonic_clock(&snmpv3starttime);
 
     if (!type)
         type = "__snmpapp__";
@@ -1282,13 +894,6 @@
                            snmpv3_store, (void *) strdup(type));
 
     /*
-     * Free stuff at shutdown time
-     */
-    snmp_register_callback(SNMP_CALLBACK_LIBRARY,
-                           SNMP_CALLBACK_SHUTDOWN,
-                           free_enginetime_on_shutdown, NULL);
-
-    /*
      * initialize submodules 
      */
     /*
@@ -1348,30 +953,9 @@
     register_config_handler("snmp", "defVersion", version_conf, NULL,
                             "1|2c|3");
 
-    register_config_handler("snmp", "defAuthType", snmpv3_authtype_conf,
-                            NULL, "MD5|SHA");
-    register_config_handler("snmp", "defPrivType", snmpv3_privtype_conf,
-                            NULL,
-#ifdef HAVE_AES
-                            "DES|AES");
-#else
-                            "DES (AES support not available)");
-#endif
     register_config_handler("snmp", "defSecurityLevel",
                             snmpv3_secLevel_conf, NULL,
                             "noAuthNoPriv|authNoPriv|authPriv");
-    register_config_handler(type, "userSetAuthPass", usm_set_password,
-                            NULL, NULL);
-    register_config_handler(type, "userSetPrivPass", usm_set_password,
-                            NULL, NULL);
-    register_config_handler(type, "userSetAuthKey", usm_set_password, NULL,
-                            NULL);
-    register_config_handler(type, "userSetPrivKey", usm_set_password, NULL,
-                            NULL);
-    register_config_handler(type, "userSetAuthLocalKey", usm_set_password,
-                            NULL, NULL);
-    register_config_handler(type, "userSetPrivLocalKey", usm_set_password,
-                            NULL, NULL);
 }
 
 /*
@@ -1406,12 +990,14 @@
         engineBoots = 1;
     }
 
+#ifdef NETSNMP_SECMOD_USM
     /*
-     * set our local engineTime in the LCD timing cache 
+     * for USM set our local engineTime in the LCD timing cache 
      */
     set_enginetime(c_engineID, engineIDLen,
                    snmpv3_local_snmpEngineBoots(),
                    snmpv3_local_snmpEngineTime(), TRUE);
+#endif /* NETSNMP_SECMOD_USM */
 
     SNMP_FREE(c_engineID);
     return SNMPERR_SUCCESS;
@@ -1525,10 +1111,7 @@
     if (!dest || !destlen)
         return 0;
 
-    if (*dest) {
-        SNMP_FREE(*dest);
-        *dest = NULL;
-    }
+    SNMP_FREE(*dest);
     *destlen = 0;
 
     if (srclen && src) {
@@ -1576,38 +1159,33 @@
 
 }                               /* end snmpv3_generate_engineID() */
 
-/*
- * snmpv3_local_snmpEngineTime(): return the number of seconds since the
- * snmpv3 engine last incremented engine_boots 
+/**
+ * Return the value of snmpEngineTime. According to RFC 3414 snmpEngineTime
+ * is a 31-bit counter. engineBoots must be incremented every time that
+ * counter wraps around.
+ *
+ * @see See also <a href="http://tools.ietf.org/html/rfc3414">RFC 3414</a>.
+ *
+ * @note It is assumed that this function is called at least once every
+ *   2**31 seconds.
  */
 u_long
 snmpv3_local_snmpEngineTime(void)
 {
-#ifdef SNMP_USE_TIMES
-  struct tms dummy;
-  clock_t now = times(&dummy);
-  /* fixme: -1 is fault code... */
-  unsigned int result;
+#ifdef NETSNMP_FEATURE_CHECKING
+    netsnmp_feature_require(calculate_sectime_diff)
+#endif /* NETSNMP_FEATURE_CHECKING */
 
-  if (now < snmpv3startClock) {
-      result = UINT_MAX - (snmpv3startClock - now);
-  } else {
-      result = now - snmpv3startClock;
-  }
-  if (result < lastcalltime) {
-      /* wrapped */
-      wrapcounter++;
-  }
-  lastcalltime = result;
-  result =  (UINT_MAX/clockticks)*wrapcounter + result/clockticks;
-
-  return result;
-#else /* !SNMP_USE_TIMES */
+    static uint32_t last_engineTime;
     struct timeval  now;
+    uint32_t engineTime;
 
-    gettimeofday(&now, NULL);
-    return calculate_sectime_diff(&now, &snmpv3starttime);
-#endif /* HAVE_SYS_TIMES_H */
+    netsnmp_get_monotonic_clock(&now);
+    engineTime = calculate_sectime_diff(&now, &snmpv3starttime) & 0x7fffffffL;
+    if (engineTime < last_engineTime)
+        engineBoots++;
+    last_engineTime = engineTime;
+    return engineTime;
 }
 
 
@@ -1679,18 +1257,17 @@
 #endif
 
 #ifdef NETSNMP_ENABLE_TESTING_CODE
-/*
- * snmpv3_set_engineBootsAndTime(): this function does not exist.  Go away. 
- */
-/*
- * It certainly should never be used, unless in a testing scenero,
- * which is why it was created 
+/**
+ * Set SNMPv3 engineBoots and start time.
+ *
+ * @note This function does not exist. Go away. It certainly should never be
+ *   used, unless in a testing scenario, which is why it was created
  */
 void
 snmpv3_set_engineBootsAndTime(int boots, int ttime)
 {
     engineBoots = boots;
-    gettimeofday(&snmpv3starttime, NULL);
+    netsnmp_get_monotonic_clock(&snmpv3starttime);
     snmpv3starttime.tv_sec -= ttime;
 }
 #endif
diff --git a/snmplib/strtoull.c b/snmplib/strtoull.c
index 6c98fc4..9ee53b4 100644
--- a/snmplib/strtoull.c
+++ b/snmplib/strtoull.c
@@ -20,6 +20,8 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#ifndef HAVE_STRTOULL
+
 #include <errno.h>
 #include <ctype.h>
 #include <limits.h>
@@ -156,3 +158,5 @@
         *endptr = (char *) nptr;
     return 0;
 }
+
+#endif /* HAVE_STRTOULL */
diff --git a/snmplib/system.c b/snmplib/system.c
index 42522c6..a82edcd 100644
--- a/snmplib/system.c
+++ b/snmplib/system.c
@@ -42,6 +42,7 @@
  * System dependent routines go here
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <stdio.h>
 #include <ctype.h>
 #include <errno.h>
@@ -162,6 +163,19 @@
 #include <limits.h>
 #endif
 
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#ifdef DNSSEC_LOCAL_VALIDATION
+#if 1 /*HAVE_ARPA_NAMESER_H*/
+#include <arpa/nameser.h>
+#endif
+#include <validator/validator.h>
+/* NetSNMP and DNSSEC-Tools both define FREE. We'll not use either here. */
+#undef FREE
+#endif
+
 #include <net-snmp/types.h>
 #include <net-snmp/output_api.h>
 #include <net-snmp/utilities.h>
@@ -170,6 +184,16 @@
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/read_config.h> /* for get_temp_file_pattern() */
 
+#include "inet_ntop.h"
+
+/* NetSNMP and DNSSEC-Tools both define FREE. We'll not use either here. */
+#undef FREE
+
+netsnmp_feature_child_of(system_all, libnetsnmp)
+
+netsnmp_feature_child_of(user_information, system_all)
+netsnmp_feature_child_of(calculate_sectime_diff, system_all)
+
 #ifndef IFF_LOOPBACK
 #	define IFF_LOOPBACK 0
 #endif
@@ -180,6 +204,10 @@
 # define LOOPBACK    0x7f000001
 #endif
 
+#ifndef EAI_FAIL
+# define EAI_FAIL    -4    /* Non-recoverable failure in name res.  */
+#endif
+
 #if defined(HAVE_FORK)
 static void
 _daemon_prep(int stderr_log)
@@ -564,14 +592,16 @@
     size_t          len;
 #elif defined(NETSNMP_CAN_USE_NLIST)
     int             kmem;
-    static struct nlist nl[] = {
 #if !defined(hpux)
-        {(char *) "_boottime"},
+    static char boottime_name[] = "_boottime";
 #else
-        {(char *) "boottime"},
+    static char boottime_name[] = "boottime";
 #endif
-        {(char *) ""}
-    };
+    static char empty_name[] = "";
+    struct nlist nl[2] = { };
+
+    nl[0].n_name = boottime_name;
+    nl[1].n_name = empty_name;
 #endif                          /* NETSNMP_CAN_USE_SYSCTL */
 #endif                          /* hpux10 || hpux 11 */
 
@@ -625,10 +655,11 @@
 get_uptime(void)
 {
 #if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
+    static char lbolt_name[] = "lbolt";
     struct nlist nl;
     int kmem;
     time_t lbolt;
-    nl.n_name = (char *) "lbolt";
+    nl.n_name = lbolt_name;
     if(knlist(&nl, 1, sizeof(struct nlist)) != 0) return(0);
     if(nl.n_type == 0 || nl.n_value == 0) return(0);
     if((kmem = open("/dev/mem", 0)) < 0) return 0;
@@ -687,10 +718,28 @@
 #endif                          /* ! WIN32 */
 /*******************************************************************/
 
+#ifdef DNSSEC_LOCAL_VALIDATION
+static val_context_t *_val_context = NULL;
+
+static val_context_t *
+netsnmp_validator_context(void)
+{
+    if (NULL == _val_context) {
+        int rc;
+        char *apptype = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+                                              NETSNMP_DS_LIB_APPTYPE);
+        DEBUGMSGTL(("dns:sec:context", "creating dnssec context for %s\n",
+                    apptype));
+        rc = val_create_context(apptype, &_val_context);
+    }
+
+    return _val_context;
+}
+#endif /* DNSSEC_LOCAL_VALIDATION */
+
 int
 netsnmp_gethostbyname_v4(const char* name, in_addr_t *addr_out)
 {
-
 #if HAVE_GETADDRINFO
     struct addrinfo *addrs = NULL;
     struct addrinfo hint;
@@ -702,17 +751,11 @@
     hint.ai_socktype = SOCK_DGRAM;
     hint.ai_protocol = 0;
 
-    err = getaddrinfo(name, NULL, &hint, &addrs);
+    err = netsnmp_getaddrinfo(name, NULL, &hint, &addrs);
     if (err != 0) {
-#if HAVE_GAI_STRERROR
-        snmp_log(LOG_ERR, "getaddrinfo: %s %s\n", name,
-                 gai_strerror(err));
-#else
-        snmp_log(LOG_ERR, "getaddrinfo: %s (error %d)\n", name,
-                 err);
-#endif
         return -1;
     }
+
     if (addrs != NULL) {
         memcpy(addr_out,
                &((struct sockaddr_in *) addrs->ai_addr)->sin_addr,
@@ -727,7 +770,7 @@
 #elif HAVE_GETHOSTBYNAME
     struct hostent *hp = NULL;
 
-    hp = gethostbyname(name);
+    hp = netsnmp_gethostbyname(name);
     if (hp == NULL) {
         DEBUGMSGTL(("get_thisaddr",
                     "hostname (couldn't resolve)\n"));
@@ -763,6 +806,196 @@
 #endif
 }
 
+int
+netsnmp_getaddrinfo(const char *name, const char *service,
+                    const struct addrinfo *hints, struct addrinfo **res)
+{
+#if HAVE_GETADDRINFO
+    struct addrinfo *addrs = NULL;
+    struct addrinfo hint;
+    int             err;
+#ifdef DNSSEC_LOCAL_VALIDATION
+    val_status_t    val_status;
+#endif
+
+    DEBUGMSGTL(("dns:getaddrinfo", "looking up "));
+    if (name)
+        DEBUGMSG(("dns:getaddrinfo", "\"%s\"", name));
+    else
+        DEBUGMSG(("dns:getaddrinfo", "<NULL>"));
+
+    if (service)
+	DEBUGMSG(("dns:getaddrinfo", ":\"%s\"", service));
+
+    if (hints)
+	DEBUGMSG(("dns:getaddrinfo", " with hint ({ ... })"));
+    else
+	DEBUGMSG(("dns:getaddrinfo", " with no hint"));
+
+    DEBUGMSG(("dns:getaddrinfo", "\n"));
+
+    if (NULL == hints) {
+        memset(&hint, 0, sizeof hint);
+        hint.ai_flags = 0;
+        hint.ai_family = PF_INET;
+        hint.ai_socktype = SOCK_DGRAM;
+        hint.ai_protocol = 0;
+        hints = &hint;
+    } else {
+        memcpy(&hint, hints, sizeof hint);
+    }
+
+#ifndef DNSSEC_LOCAL_VALIDATION
+    err = getaddrinfo(name, NULL, &hint, &addrs);
+#else /* DNSSEC_LOCAL_VALIDATION */
+    err = val_getaddrinfo(netsnmp_validator_context(), name, NULL, &hint,
+                          &addrs, &val_status);
+    DEBUGMSGTL(("dns:sec:val", "err %d, val_status %d / %s; trusted: %d\n",
+                err, val_status, p_val_status(val_status),
+                val_istrusted(val_status)));
+    if (! val_istrusted(val_status)) {
+        int rc;
+        if ((err != 0) && VAL_GETADDRINFO_HAS_STATUS(err)) {
+            snmp_log(LOG_WARNING,
+                     "WARNING: UNTRUSTED error in DNS resolution for %s!\n",
+                     name);
+            rc = EAI_FAIL;
+        } else {
+            snmp_log(LOG_WARNING,
+                     "The authenticity of DNS response is not trusted (%s)\n",
+                     p_val_status(val_status));
+            rc = EAI_NONAME;
+        }
+        /** continue anyways if DNSSEC_WARN_ONLY is set */
+        if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                    NETSNMP_DS_LIB_DNSSEC_WARN_ONLY))
+            return rc;
+    }
+
+
+#endif /* DNSSEC_LOCAL_VALIDATION */
+    *res = addrs;
+    if ((0 == err) && addrs && addrs->ai_addr) {
+        DEBUGMSGTL(("dns:getaddrinfo", "answer { AF_INET, %s:%hu }\n",
+                    inet_ntoa(((struct sockaddr_in*)addrs->ai_addr)->sin_addr),
+                    ntohs(((struct sockaddr_in*)addrs->ai_addr)->sin_port)));
+    }
+    return err;
+#else
+    NETSNMP_LOGONCE((LOG_ERR, "getaddrinfo not available"));
+    return EAI_FAIL;
+#endif /* getaddrinfo */
+}
+
+struct hostent *
+netsnmp_gethostbyname(const char *name)
+{
+#if HAVE_GETHOSTBYNAME
+#ifdef DNSSEC_LOCAL_VALIDATION
+    val_status_t val_status;
+#endif
+    struct hostent *hp = NULL;
+
+    if (NULL == name)
+        return NULL;
+
+    DEBUGMSGTL(("dns:gethostbyname", "looking up %s\n", name));
+
+#ifdef DNSSEC_LOCAL_VALIDATION
+    hp  = val_gethostbyname(netsnmp_validator_context(), name, &val_status);
+    DEBUGMSGTL(("dns:sec:val", "val_status %d / %s; trusted: %d\n",
+                val_status, p_val_status(val_status),
+                val_istrusted(val_status)));
+    if (!val_istrusted(val_status)) {
+        snmp_log(LOG_WARNING,
+                 "The authenticity of DNS response is not trusted (%s)\n",
+                 p_val_status(val_status));
+        /** continue anyways if DNSSEC_WARN_ONLY is set */
+        if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                    NETSNMP_DS_LIB_DNSSEC_WARN_ONLY))
+            hp = NULL;
+    }
+    else if (val_does_not_exist(val_status) && hp)
+        hp = NULL;
+#else
+    hp = gethostbyname(name);
+#endif
+    if (hp == NULL) {
+        DEBUGMSGTL(("dns:gethostbyname",
+                    "couldn't resolve %s\n", name));
+    } else if (hp->h_addrtype != AF_INET) {
+        DEBUGMSGTL(("dns:gethostbyname",
+                    "warning: response for %s not AF_INET!\n", name));
+    } else {
+        DEBUGMSGTL(("dns:gethostbyname",
+                    "%s resolved okay\n", name));
+    }
+    return hp;
+#else
+    NETSNMP_LOGONCE((LOG_ERR, "gethostbyname not available"));
+    return NULL;
+#endif /* HAVE_GETHOSTBYNAME */
+}
+
+/**
+ * Look up the host name via DNS.
+ *
+ * @param[in] addr Pointer to the address to resolve. This argument points e.g.
+ *   to a struct in_addr for AF_INET or to a struct in6_addr for AF_INET6.
+ * @param[in] len  Length in bytes of *addr.
+ * @param[in] type Address family, e.g. AF_INET or AF_INET6.
+ *
+ * @return Pointer to a hostent structure if address lookup succeeded or NULL
+ *   if the lookup failed.
+ *
+ * @see See also the gethostbyaddr() man page.
+ */
+struct hostent *
+netsnmp_gethostbyaddr(const void *addr, socklen_t len, int type)
+{
+#if HAVE_GETHOSTBYADDR
+    struct hostent *hp = NULL;
+    char buf[64];
+
+    DEBUGMSGTL(("dns:gethostbyaddr", "resolving %s\n",
+                inet_ntop(type, addr, buf, sizeof(buf))));
+
+#ifdef DNSSEC_LOCAL_VALIDATION
+    val_status_t val_status;
+    hp = val_gethostbyaddr(netsnmp_validator_context(), addr, len, type,
+                           &val_status);
+    DEBUGMSGTL(("dns:sec:val", "val_status %d / %s; trusted: %d\n",
+                val_status, p_val_status(val_status),
+                val_istrusted(val_status)));
+    if (!val_istrusted(val_status)) {
+        snmp_log(LOG_WARNING,
+                 "The authenticity of DNS response is not trusted (%s)\n",
+                 p_val_status(val_status));
+        /** continue anyways if DNSSEC_WARN_ONLY is set */
+        if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                    NETSNMP_DS_LIB_DNSSEC_WARN_ONLY))
+            hp = NULL;
+    }
+    else if (val_does_not_exist(val_status) && hp)
+        hp = NULL;
+#else
+    hp = gethostbyaddr(addr, len, type);
+#endif
+    if (hp == NULL) {
+        DEBUGMSGTL(("dns:gethostbyaddr", "couldn't resolve addr\n"));
+    } else if (hp->h_addrtype != AF_INET) {
+        DEBUGMSGTL(("dns:gethostbyaddr",
+                    "warning: response for addr not AF_INET!\n"));
+    } else {
+        DEBUGMSGTL(("dns:gethostbyaddr", "addr resolved okay\n"));
+    }
+    return hp;
+#else
+    NETSNMP_LOGONCE((LOG_ERR, "gethostbyaddr not available"));
+    return NULL;
+#endif
+}
+
 /*******************************************************************/
 
 #ifndef HAVE_STRNCASECMP
@@ -855,41 +1088,32 @@
 }
 #endif                          /* HAVE_SETENV */
 
-/* returns centiseconds */
+netsnmp_feature_child_of(calculate_time_diff, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_CALCULATE_TIME_DIFF
+/**
+ * Compute (*now - *then) in centiseconds.
+ */
 int
 calculate_time_diff(const struct timeval *now, const struct timeval *then)
 {
-    struct timeval  tmp, diff;
-    memcpy(&tmp, now, sizeof(struct timeval));
-    tmp.tv_sec--;
-    tmp.tv_usec += 1000000L;
-    diff.tv_sec = tmp.tv_sec - then->tv_sec;
-    diff.tv_usec = tmp.tv_usec - then->tv_usec;
-    if (diff.tv_usec > 1000000L) {
-        diff.tv_usec -= 1000000L;
-        diff.tv_sec++;
-    }
-    return ((diff.tv_sec * 100) + (diff.tv_usec / 10000));
-}
+    struct timeval  diff;
 
-/* returns diff in rounded seconds */
+    NETSNMP_TIMERSUB(now, then, &diff);
+    return (int)(diff.tv_sec * 100 + diff.tv_usec / 10000);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CALCULATE_TIME_DIFF */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CALCULATE_SECTIME_DIFF
+/** Compute rounded (*now - *then) in seconds. */
 u_int
 calculate_sectime_diff(const struct timeval *now, const struct timeval *then)
 {
-    struct timeval  tmp, diff;
-    memcpy(&tmp, now, sizeof(struct timeval));
-    tmp.tv_sec--;
-    tmp.tv_usec += 1000000L;
-    diff.tv_sec = tmp.tv_sec - then->tv_sec;
-    diff.tv_usec = tmp.tv_usec - then->tv_usec;
-    if (diff.tv_usec >= 1000000L) {
-        diff.tv_usec -= 1000000L;
-        diff.tv_sec++;
-    }
-    if (diff.tv_usec >= 500000L)
-        return diff.tv_sec + 1;
-    return  diff.tv_sec;
+    struct timeval  diff;
+
+    NETSNMP_TIMERSUB(now, then, &diff);
+    return diff.tv_sec + (diff.tv_usec >= 500000L);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CALCULATE_SECTIME_DIFF */
 
 #ifndef HAVE_STRCASESTR
 /*
@@ -1145,6 +1369,17 @@
 #endif
 }
 
+netsnmp_feature_child_of(str_to_uid, user_information)
+#ifndef NETSNMP_FEATURE_REMOVE_STR_TO_UID
+/**
+ * Convert a user name or number into numeric form.
+ *
+ * @param[in] useroruid Either a Unix user name or the ASCII representation
+ *   of a user number.
+ *
+ * @return Either a user number > 0 or 0 if useroruid is not a valid user
+ *   name, not a valid user number or the name of the root user.
+ */
 int netsnmp_str_to_uid(const char *useroruid) {
     int uid;
 #if HAVE_GETPWNAM && HAVE_PWD_H
@@ -1153,37 +1388,49 @@
 
     uid = atoi(useroruid);
 
-    if ( uid == 0 ) {
+    if (uid == 0) {
 #if HAVE_GETPWNAM && HAVE_PWD_H
-        pwd = getpwnam( useroruid );
-        if (pwd)
-            uid = pwd->pw_uid;
-        else
+        pwd = getpwnam(useroruid);
+        uid = pwd ? pwd->pw_uid : 0;
+        endpwent();
 #endif
+        if (uid == 0)
             snmp_log(LOG_WARNING, "Can't identify user (%s).\n", useroruid);
     }
     return uid;
     
 }
+#endif /* NETSNMP_FEATURE_REMOVE_STR_TO_UID */
 
-int netsnmp_str_to_gid(const char *grouporgid) {
+netsnmp_feature_child_of(str_to_gid, user_information)
+#ifndef NETSNMP_FEATURE_REMOVE_STR_TO_GID
+/**
+ * Convert a group name or number into numeric form.
+ *
+ * @param[in] grouporgid Either a Unix group name or the ASCII representation
+ *   of a group number.
+ *
+ * @return Either a group number > 0 or 0 if grouporgid is not a valid group
+ *   name, not a valid group number or the root group.
+ */
+int netsnmp_str_to_gid(const char *grouporgid)
+{
     int gid;
-#if HAVE_GETGRNAM && HAVE_GRP_H
-    struct group  *grp;
-#endif
 
     gid = atoi(grouporgid);
 
-    if ( gid == 0 ) {
+    if (gid == 0) {
 #if HAVE_GETGRNAM && HAVE_GRP_H
-        grp = getgrnam( grouporgid );
-        if (grp)
-            gid = grp->gr_gid;
-        else
+        struct group  *grp;
+
+        grp = getgrnam(grouporgid);
+        gid = grp ? grp->gr_gid : 0;
+        endgrent();
 #endif
-            snmp_log(LOG_WARNING, "Can't identify group (%s).\n",
-                     grouporgid);
+        if (gid == 0)
+            snmp_log(LOG_WARNING, "Can't identify group (%s).\n", grouporgid);
     }
 
     return gid;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_STR_TO_GID */
diff --git a/snmplib/test_binary_array.c b/snmplib/test_binary_array.c
deleted file mode 100644
index 44b1f0e..0000000
--- a/snmplib/test_binary_array.c
+++ /dev/null
@@ -1,171 +0,0 @@
-#include <net-snmp/net-snmp-config.h>
-
-#if HAVE_IO_H
-#include <io.h>
-#endif
-#include <stdio.h>
-#if HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-#include <sys/types.h>
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/types.h>
-#include <net-snmp/library/snmp_api.h>
-#include <net-snmp/library/container.h>
-#include <net-snmp/library/container_binary_array.h>
-#include <net-snmp/library/tools.h>
-#include <net-snmp/library/snmp_assert.h>
-
-#define TEST_SIZE 7
-
-void
-print_int(netsnmp_index *i, void *v)
-{
-    printf("item %p = %ld\n", i, i->oids[0]);
-}
-
-int
-test_int(void)
-{
-    oid o1 = 1;
-    oid o2 = 2;
-    oid o3 = 6;
-    oid o4 = 8;
-    oid o5 = 9;
-    oid ox = 7;
-    oid oy = 10;
-    netsnmp_index i1,i2,i3,i4,i5,ix,iy, *ip;
-    netsnmp_index *a[TEST_SIZE] = { &i1, &i2, &i3, &ix, &i4, &i5, &iy };
-    netsnmp_container *c = netsnmp_container_get_binary_array();
-    int i;
-
-    c->compare = netsnmp_compare_netsnmp_index;
-    
-    i1.oids = &o1;
-    i2.oids = &o2;
-    i3.oids = &o3;
-    i4.oids = &o4;
-    i5.oids = &o5;
-    ix.oids = &ox;
-    iy.oids = &oy;
-    i1.len = i2.len = i3.len = i4.len = i5.len = ix.len = iy.len = 1;
-
-    printf("Creating container...\n");
-
-    printf("Inserting data...\n");
-    CONTAINER_INSERT(c,&i4);
-    CONTAINER_INSERT(c,&i2);
-    CONTAINER_INSERT(c,&i3);
-    CONTAINER_INSERT(c,&i1);
-    CONTAINER_INSERT(c,&i5);
-
-    printf("For each...\n");
-    CONTAINER_FOR_EACH(c, print_int, NULL);
-    printf("Done.\n");
-
-    printf("\n");
-    ip = CONTAINER_FIRST(c);
-    printf("Find first = %p %ld\n",ip, ip->oids[0]);
-    while( ip ) {
-        ip = CONTAINER_NEXT(c,ip);
-        if(ip)
-            printf("Find next = %p %ld\n",ip, ip->oids[0]);
-        else
-            printf("Find next = %s\n",ip);
-    }
-
-    for( i=0; i < TEST_SIZE; ++i) {
-        printf("\n");
-        ip = CONTAINER_FIND(c,a[i]);
-        printf("Find %ld = %p %ld\n", a[i]->oids[0], ip, ip ? ip->oids[0] : 0);
-        ip = CONTAINER_NEXT(c,a[i]);
-        printf("Next %ld = %p %ld\n", a[i]->oids[0], ip, ip ? ip->oids[0] : 0);
-    }
-
-    printf("Done.\n");
-
-    return 0;
-}
-
-void
-print_string(char *i, void *v)
-{
-    printf("item %s\n", i);
-}
-
-int
-my_strcmp(char *lhs, char *rhs)
-{
-    int rc = strcmp(lhs,rhs);
-/*      printf("%s %d %s\n",lhs, rc, rhs); */
-    return rc;
-}
-
-int
-test_string()
-{
-    const char *o1 = "zebra";
-    const char *o2 = "b-two";
-    const char *o3 = "b";
-    const char *o4 = "cedar";
-    const char *o5 = "alpha";
-    const char *ox = "dev";
-    const char *oy = "aa";
-    const char * ip;
-    
-    const char *a[TEST_SIZE] = { o1, o2, o3, ox, o4, o5, oy };
-    netsnmp_container *c = netsnmp_container_get_binary_array();
-    int i;
-
-    c->compare = my_strcmp;
-    
-    printf("Creating container...\n");
-
-    printf("Inserting data...\n");
-    CONTAINER_INSERT(c,o4);
-    CONTAINER_INSERT(c,o2);
-    CONTAINER_INSERT(c,o3);
-    CONTAINER_INSERT(c,o1);
-    CONTAINER_INSERT(c,o5);
-    printf("\n");
-    printf("For each...\n");
-    CONTAINER_FOR_EACH(c, print_string, NULL);
-    printf("Done.\n");
-
-    printf("\n");
-    ip = CONTAINER_FIRST(c);
-    printf("Find first = %s\n",ip);
-    while( ip ) {
-        ip = CONTAINER_NEXT(c,ip);
-        printf("Find next = %s\n",ip);
-    }
-
-    for( i=0; i < TEST_SIZE; ++i) {
-        printf("\n");
-        ip = CONTAINER_FIND(c,a[i]);
-        printf("Find %s = %s\n", a[i], ip);
-        ip = CONTAINER_NEXT(c,a[i]);
-        printf("Next %s = %s\n", a[i], ip);
-    }
-
-    printf("Done.\n");
-
-    return 0;
-}
-
-int
-main(int argc, char** argv)
-{
-
-    test_int();
-    test_string();
-}
diff --git a/snmplib/text_utils.c b/snmplib/text_utils.c
index 7148dcc..32596be 100644
--- a/snmplib/text_utils.c
+++ b/snmplib/text_utils.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <stdio.h>
@@ -42,7 +43,14 @@
 #include <net-snmp/library/file_utils.h>
 #include <net-snmp/library/text_utils.h>
 
+netsnmp_feature_child_of(text_utils, libnetsnmp)
 
+netsnmp_feature_provide(text_utils)
+#ifdef NETSNMP_FEATURE_REQUIRE_TEXT_UTILS
+netsnmp_feature_require(file_utils)
+#endif /* NETSNMP_FEATURE_REQUIRE_TEXT_UTILS */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TEXT_UTILS
 /*------------------------------------------------------------------
  *
  * Prototypes
@@ -147,6 +155,8 @@
     return c;
 }
 
+netsnmp_feature_child_of(text_token_container_from_file, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_TEXT_TOKEN_CONTAINER_FROM_FILE
 netsnmp_container *
 netsnmp_text_token_container_from_file(const char *file, u_int flags,
                                        netsnmp_container *cin, void *context)
@@ -199,6 +209,7 @@
     
     return c;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TEXT_TOKEN_CONTAINER_FROM_FILE */
 
 
 /*------------------------------------------------------------------
@@ -510,3 +521,6 @@
     return PMLP_RC_MEMORY_USED;
 }
 
+#else  /* ! NETSNMP_FEATURE_REMOVE_TEXT_UTILS */
+netsnmp_feature_unused(text_utils);
+#endif /* ! NETSNMP_FEATURE_REMOVE_TEXT_UTILS */
diff --git a/snmplib/tools.c b/snmplib/tools.c
index f9951b9..29e5fef 100644
--- a/snmplib/tools.c
+++ b/snmplib/tools.c
@@ -14,6 +14,7 @@
 #endif
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <ctype.h>
 #include <stdio.h>
@@ -48,6 +49,9 @@
 #ifdef HAVE_ARPA_INET_H
 #include <arpa/inet.h>
 #endif
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+#include <valgrind/memcheck.h>
+#endif
 #ifdef cygwin
 #include <windows.h>
 #endif
@@ -68,6 +72,23 @@
 #include <net-snmp/library/mib.h>
 #include <net-snmp/library/scapi.h>
 
+netsnmp_feature_child_of(tools_all, libnetsnmp)
+
+netsnmp_feature_child_of(memory_wrappers, tools_all)
+netsnmp_feature_child_of(valgrind, tools_all)
+netsnmp_feature_child_of(string_time_to_secs, tools_all)
+netsnmp_feature_child_of(netsnmp_check_definedness, valgrind)
+
+netsnmp_feature_child_of(uatime_ready, netsnmp_unused)
+netsnmp_feature_child_of(timeval_tticks, netsnmp_unused)
+
+netsnmp_feature_child_of(memory_strdup, memory_wrappers)
+netsnmp_feature_child_of(memory_calloc, memory_wrappers)
+netsnmp_feature_child_of(memory_malloc, memory_wrappers)
+netsnmp_feature_child_of(memory_realloc, memory_wrappers)
+netsnmp_feature_child_of(memory_free, memory_wrappers)
+
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_WRAPPERS
 /**
  * This function is a wrapper for the strdup function.
  *
@@ -78,6 +99,8 @@
 {
     return strdup(ptr);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_STRDUP */
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_CALLOC
 /**
  * This function is a wrapper for the calloc function.
  */
@@ -85,7 +108,8 @@
 {
     return calloc(nmemb, size);
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_CALLOC */
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_MALLOC
 /**
  * This function is a wrapper for the malloc function.
  */
@@ -93,7 +117,8 @@
 {
     return malloc(size);
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_MALLOC */
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_REALLOC
 /**
  * This function is a wrapper for the realloc function.
  */
@@ -101,7 +126,8 @@
 {
     return realloc(ptr, size);
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_REALLOC */
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_FREE
 /**
  * This function is a wrapper for the free function.
  * It calls free only if the calling parameter has a non-zero value.
@@ -111,6 +137,7 @@
     if (ptr)
         free(ptr);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_FREE */
 
 /**
  * This function increase the size of the buffer pointed at by *buf, which is
@@ -180,6 +207,9 @@
         }
     }
 
+    if (!*buf)
+        return 0;
+
     strcpy((char *) (*buf + *out_len), (const char *) s);
     *out_len += strlen((char *) (*buf + *out_len));
     return 1;
@@ -200,6 +230,7 @@
 
 }                               /* end free_zero() */
 
+#ifndef NETSNMP_FEATURE_REMOVE_USM_SCAPI
 /**
  * Returns pointer to allocaed & set buffer on success, size contains
  * number of random bytes filled.  buf is NULL and *size set to KMT
@@ -230,6 +261,7 @@
     return buf;
 
 }                               /* end malloc_random() */
+#endif /* NETSNMP_FEATURE_REMOVE_USM_SCAPI */
 
 /**
  * Duplicates a memory block.
@@ -252,6 +284,39 @@
     return to;
 }                               /* end netsnmp_memdup() */
 
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_CHECK_DEFINEDNESS
+/**
+ * When running under Valgrind, check whether all bytes in the range [packet,
+ * packet+length) are defined. Let Valgrind print a backtrace if one or more
+ * bytes with uninitialized values have been found. This function can help to
+ * find the cause of undefined value errors if --track-origins=yes is not
+ * sufficient. Does nothing when not running under Valgrind.
+ *
+ * Note: this requires a fairly recent valgrind.
+ */
+void
+netsnmp_check_definedness(const void *packet, size_t length)
+{
+#if defined(__VALGRIND_MAJOR__) && defined(__VALGRIND_MINOR__)   \
+    && (__VALGRIND_MAJOR__ > 3                                   \
+        || (__VALGRIND_MAJOR__ == 3 && __VALGRIND_MINOR__ >= 6))
+
+    if (RUNNING_ON_VALGRIND) {
+        int i;
+        char vbits;
+
+        for (i = 0; i < length; ++i) {
+            if (VALGRIND_GET_VBITS((const char *)packet + i, &vbits, 1) == 1
+                && vbits)
+                VALGRIND_PRINTF_BACKTRACE("Undefined: byte %d/%d", i,
+                                          (int)length);
+        }
+    }
+
+#endif
+}
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_CHECK_DEFINEDNESS */
+
 /** copies a (possible) unterminated string of a given length into a
  *  new buffer and null terminates it as well (new buffer MAY be one
  *  byte longer to account for this */
@@ -370,11 +435,14 @@
 hex_to_binary2(const u_char * input, size_t len, char **output)
 {
     u_int           olen = (len / 2) + (len % 2);
-    char           *s = (char *) calloc(1, (olen) ? olen : 1), *op = s;
+    char           *s = calloc(1, olen ? olen : 1), *op = s;
     const u_char   *ip = input;
 
 
     *output = NULL;
+    if (!s)
+        goto hex_to_binary2_quit;
+
     *op = 0;
     if (len % 2) {
         if (!isxdigit(*ip))
@@ -383,7 +451,7 @@
         ip++;
     }
 
-    while (ip - input < (int) len) {
+    while (ip < input + len) {
         if (!isxdigit(*ip))
             goto hex_to_binary2_quit;
         *op = HEX2VAL(*ip) << 4;
@@ -806,8 +874,11 @@
 
 
 /**
- * create a new time marker.
- * NOTE: Caller must free time marker when no longer needed.
+ * Create a new real-time marker.
+ *
+ * \deprecated Use netsnmp_set_monotonic_marker() instead.
+ *
+ * @note Caller must free time marker when no longer needed.
  */
 marker_t
 atime_newMarker(void)
@@ -818,7 +889,8 @@
 }
 
 /**
- * set a time marker.
+ * Set a time marker to the current value of the real-time clock.
+ * \deprecated Use netsnmp_set_monotonic_marker() instead.
  */
 void
 atime_setMarker(marker_t pm)
@@ -829,9 +901,88 @@
     gettimeofday((struct timeval *) pm, NULL);
 }
 
+/**
+ * Query the current value of the monotonic clock.
+ *
+ * Returns the current value of a monotonic clock if such a clock is provided by
+ * the operating system or the wall clock time if no such clock is provided by
+ * the operating system. A monotonic clock is a clock that is never adjusted
+ * backwards and that proceeds at the same rate as wall clock time.
+ *
+ * @param[out] tv Pointer to monotonic clock time.
+ */
+void netsnmp_get_monotonic_clock(struct timeval* tv)
+{
+#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC)
+    struct timespec ts;
+    int res;
+
+    res = clock_gettime(CLOCK_MONOTONIC, &ts);
+    if (res >= 0) {
+        tv->tv_sec = ts.tv_sec;
+        tv->tv_usec = ts.tv_nsec / 1000;
+    } else {
+        gettimeofday(tv, NULL);
+    }
+#elif defined(WIN32)
+    /*
+     * Windows: return tick count. Note: the rate at which the tick count
+     * increases is not adjusted by the time synchronization algorithm, so
+     * expect an error of <= 100 ppm for the rate at which this clock
+     * increases.
+     */
+    typedef ULONGLONG (WINAPI * pfGetTickCount64)(void);
+    static int s_initialized;
+    static pfGetTickCount64 s_pfGetTickCount64;
+    uint64_t now64;
+
+    if (!s_initialized) {
+        HMODULE hKernel32 = GetModuleHandle("kernel32");
+        s_pfGetTickCount64 =
+            (pfGetTickCount64) GetProcAddress(hKernel32, "GetTickCount64");
+        s_initialized = TRUE;
+    }
+
+    if (s_pfGetTickCount64) {
+        /* Windows Vista, Windows 2008 or any later Windows version */
+        now64 = (*s_pfGetTickCount64)();
+    } else {
+        /* Windows XP, Windows 2003 or any earlier Windows version */
+        static uint32_t s_wraps, s_last;
+        uint32_t now;
+
+        now = GetTickCount();
+        if (now < s_last)
+            s_wraps++;
+        s_last = now;
+        now64 = ((uint64_t)s_wraps << 32) | now;
+    }
+    tv->tv_sec = now64 / 1000;
+    tv->tv_usec = (now64 % 1000) * 1000;
+#else
+    /* At least FreeBSD 4 doesn't provide monotonic clock support. */
+#warning Not sure how to query a monotonically increasing clock on your system. \
+Timers will not work correctly if the system clock is adjusted by e.g. ntpd.
+    gettimeofday(tv, NULL);
+#endif
+}
+
+/**
+ * Set a time marker to the current value of the monotonic clock.
+ */
+void
+netsnmp_set_monotonic_marker(marker_t *pm)
+{
+    if (!*pm)
+        *pm = malloc(sizeof(struct timeval));
+    if (*pm)
+        netsnmp_get_monotonic_clock(*pm);
+}
 
 /**
  * Returns the difference (in msec) between the two markers
+ *
+ * \deprecated Don't use in new code.
  */
 long
 atime_diff(const_marker_t first, const_marker_t second)
@@ -840,11 +991,13 @@
 
     NETSNMP_TIMERSUB((const struct timeval *) second, (const struct timeval *) first, &diff);
 
-    return (diff.tv_sec * 1000 + diff.tv_usec / 1000);
+    return (long)(diff.tv_sec * 1000 + diff.tv_usec / 1000);
 }
 
 /**
  * Returns the difference (in u_long msec) between the two markers
+ *
+ * \deprecated Don't use in new code.
  */
 u_long
 uatime_diff(const_marker_t first, const_marker_t second)
@@ -859,6 +1012,8 @@
 /**
  * Returns the difference (in u_long 1/100th secs) between the two markers
  * (functionally this is what sysUpTime needs)
+ *
+ * \deprecated Don't use in new code.
  */
 u_long
 uatime_hdiff(const_marker_t first, const_marker_t second)
@@ -872,6 +1027,8 @@
 /**
  * Test: Has (marked time plus delta) exceeded current time ?
  * Returns 0 if test fails or cannot be tested (no marker).
+ *
+ * \deprecated Use netsnmp_ready_monotonic() instead.
  */
 int
 atime_ready(const_marker_t pm, int delta_ms)
@@ -891,9 +1048,12 @@
     return 1;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_UATIME_READY
 /**
  * Test: Has (marked time plus delta) exceeded current time ?
  * Returns 0 if test fails or cannot be tested (no marker).
+ *
+ * \deprecated Use netsnmp_ready_monotonic() instead.
  */
 int
 uatime_ready(const_marker_t pm, unsigned int delta_ms)
@@ -912,6 +1072,33 @@
 
     return 1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UATIME_READY */
+
+/**
+ * Is the current time past (marked time plus delta) ?
+ *
+ * @param[in] pm Pointer to marked time as obtained via
+ *   netsnmp_set_monotonic_marker().
+ * @param[in] delta_ms Time delta in milliseconds.
+ *
+ * @return pm != NULL && now >= (*pm + delta_ms)
+ */
+int
+netsnmp_ready_monotonic(const_marker_t pm, int delta_ms)
+{
+    struct timeval  now, diff, delta;
+
+    netsnmp_assert(delta_ms >= 0);
+    if (pm) {
+        netsnmp_get_monotonic_clock(&now);
+        NETSNMP_TIMERSUB(&now, (const struct timeval *) pm, &diff);
+        delta.tv_sec = delta_ms / 1000;
+        delta.tv_usec = (delta_ms % 1000) * 1000UL;
+        return timercmp(&diff, &delta, >=) ? TRUE : FALSE;
+    } else {
+        return FALSE;
+    }
+}
 
 
         /*
@@ -919,7 +1106,9 @@
          */
 
 /**
- * Return the number of timeTicks since the given marker 
+ * Return the number of timeTicks since the given marker
+ *
+ * \deprecated Don't use in new code.
  */
 int
 marker_tticks(const_marker_t pm)
@@ -932,11 +1121,16 @@
     return res / 10;            /* atime_diff works in msec, not csec */
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TIMEVAL_TTICKS
+/**
+ * \deprecated Don't use in new code.
+ */
 int
 timeval_tticks(const struct timeval *tv)
 {
     return marker_tticks((const_marker_t) tv);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TIMEVAL_TTICKS */
 
 /**
  * Non Windows:  Returns a pointer to the desired environment variable  
@@ -995,8 +1189,7 @@
             NULL,               /* Just get the size */
             &key_value_size) == ERROR_SUCCESS) {
 
-        if (key_value)
-          SNMP_FREE(key_value);
+        SNMP_FREE(key_value);
 
         /* Allocate memory needed +1 to allow RegQueryValueExA to NULL terminate the
          * string data in registry is missing one (which is unlikely).
@@ -1037,8 +1230,7 @@
             NULL,               /* Just get the size */
             &key_value_size) == ERROR_SUCCESS) {
 
-        if (key_value)
-          SNMP_FREE(key_value);
+        SNMP_FREE(key_value);
 
         /* Allocate memory needed +1 to allow RegQueryValueExA to NULL terminate the
          * string data in registry is missing one (which is unlikely).
@@ -1120,3 +1312,65 @@
 
     return 0;
 }
+
+#ifndef NETSNMP_FEATURE_REMOVE_STRING_TIME_TO_SECS
+/**
+ * Takes a time string like 4h and converts it to seconds.
+ * The string time given may end in 's' for seconds (the default
+ * anyway if no suffix is specified),
+ * 'm' for minutes, 'h' for hours, 'd' for days, or 'w' for weeks.  The
+ * upper case versions are also accepted.
+ *
+ * @param time_string The time string to convert.
+ *
+ * @return seconds converted from the string
+ * @return -1  : on failure
+ */
+int
+netsnmp_string_time_to_secs(const char *time_string) {
+    int secs = -1;
+    if (!time_string || !time_string[0])
+        return secs;
+
+    secs = atoi(time_string);
+
+    if (isdigit((unsigned char)time_string[strlen(time_string)-1]))
+        return secs; /* no letter specified, it's already in seconds */
+    
+    switch (time_string[strlen(time_string)-1]) {
+    case 's':
+    case 'S':
+        /* already in seconds */
+        break;
+
+    case 'm':
+    case 'M':
+        secs = secs * 60;
+        break;
+
+    case 'h':
+    case 'H':
+        secs = secs * 60 * 60;
+        break;
+
+    case 'd':
+    case 'D':
+        secs = secs * 60 * 60 * 24;
+        break;
+
+    case 'w':
+    case 'W':
+        secs = secs * 60 * 60 * 24 * 7;
+        break;
+
+    default:
+        snmp_log(LOG_ERR, "time string %s contains an invalid suffix letter\n",
+                 time_string);
+        return -1;
+    }
+
+    DEBUGMSGTL(("string_time_to_secs", "Converted time string %s to %d\n",
+                time_string, secs));
+    return secs;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_STRING_TIME_TO_SECS */
diff --git a/snmplib/transports/snmpAAL5PVCDomain.c b/snmplib/transports/snmpAAL5PVCDomain.c
index 2b28cb3..5ac69a1 100644
--- a/snmplib/transports/snmpAAL5PVCDomain.c
+++ b/snmplib/transports/snmpAAL5PVCDomain.c
@@ -32,6 +32,7 @@
 #include <net-snmp/config_api.h>
 
 #include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/tools.h>
 
 
 oid netsnmp_AAL5PVCDomain[10] = { NETSNMP_ENTERPRISE_MIB, 3, 3, 3 };
@@ -172,11 +173,16 @@
 {
     netsnmp_transport *t = NULL;
 
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
     if (addr == NULL || addr->sap_family != AF_ATMPVC) {
         return NULL;
     }
 
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
     if (t == NULL) {
         return NULL;
     }
@@ -189,8 +195,6 @@
         free(str);
     }
 
-    memset(t, 0, sizeof(netsnmp_transport));
-
     t->domain = netsnmp_AAL5PVCDomain;
     t->domain_length =
         sizeof(netsnmp_AAL5PVCDomain) / sizeof(netsnmp_AAL5PVCDomain[0]);
@@ -224,6 +228,7 @@
     }
 
     if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
         t->local = (unsigned char*)malloc(8);
         if (t->local == NULL) {
             netsnmp_transport_free(t);
@@ -247,6 +252,9 @@
             netsnmp_transport_free(t);
             return NULL;
         }
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     } else {
         t->remote = (unsigned char*)malloc(8);
         if (t->remote == NULL) {
diff --git a/snmplib/transports/snmpCallbackDomain.c b/snmplib/transports/snmpCallbackDomain.c
index 175c228..95018b8 100644
--- a/snmplib/transports/snmpCallbackDomain.c
+++ b/snmplib/transports/snmpCallbackDomain.c
@@ -289,10 +289,7 @@
         /*
          * we don't need the transport data any more 
          */
-        if (*opaque) {
-            SNMP_FREE(*opaque);
-            *opaque = NULL;
-        }
+        SNMP_FREE(*opaque);
     } else {
         /*
          * we're the server, send it to the person that sent us the request 
@@ -301,10 +298,7 @@
         /*
          * we don't need the transport data any more 
          */
-        if (*opaque) {
-            SNMP_FREE(*opaque);
-            *opaque = NULL;
-        }
+        SNMP_FREE(*opaque);
         other_side = find_transport_from_callback_num(from);
         if (!other_side) {
             snmp_free_pdu(cp->pdu);
@@ -359,7 +353,7 @@
 {
     DEBUGMSGTL(("transport_callback", "hook_accept enter\n"));
     DEBUGMSGTL(("transport_callback", "hook_accept exit\n"));
-    return 0;
+    return -1;
 }
 
 
diff --git a/snmplib/transports/snmpDTLSUDPDomain.c b/snmplib/transports/snmpDTLSUDPDomain.c
index a50918b..b7dc767 100644
--- a/snmplib/transports/snmpDTLSUDPDomain.c
+++ b/snmplib/transports/snmpDTLSUDPDomain.c
@@ -18,7 +18,13 @@
 
 #ifdef HAVE_LIBSSL_DTLS
 
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(cert_util)
+netsnmp_feature_require(sockaddr_size)
+
 #include <net-snmp/library/snmpDTLSUDPDomain.h>
+#include <net-snmp/library/snmpUDPIPv6Domain.h>
 
 #include <stdio.h>
 #include <sys/types.h>
@@ -80,10 +86,6 @@
 #define INADDR_NONE	-1
 #endif
 
-#ifndef MSG_DONTWAIT
-#define MSG_DONTWAIT 0
-#endif
-
 #define WE_ARE_SERVER 0
 #define WE_ARE_CLIENT 1
 
@@ -91,6 +93,9 @@
 size_t          netsnmpDTLSUDPDomain_len = OID_LENGTH(netsnmpDTLSUDPDomain);
 
 static netsnmp_tdomain dtlsudpDomain;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+static int openssl_addr_index6 = 0;
+#endif
 
 /* this stores openssl credentials for each connection since openssl
    can't do it for us at the moment; hopefully future versions will
@@ -98,9 +103,7 @@
 typedef struct bio_cache_s {
    BIO *read_bio;  /* OpenSSL will read its incoming SSL packets from here */
    BIO *write_bio; /* OpenSSL will write its outgoing SSL packets to here */
-   struct sockaddr_in sockaddr;
-   uint32_t ipv4addr;
-   u_short portnum;
+   netsnmp_sockaddr_storage sas;
    u_int flags;
    struct bio_cache_s *next;
    int msgnum;
@@ -123,24 +126,36 @@
 static int netsnmp_dtls_gen_cookie(SSL *ssl, unsigned char *cookie,
                                    unsigned int *cookie_len);
 
-
 /* this stores remote connections in a list to search through */
 /* XXX: optimize for searching */
 /* XXX: handle state issues for new connections to reduce DOS issues */
 /*      (TLS should do this, but openssl can't do more than one ctx per sock */
 /* XXX: put a timer on the cache for expirary purposes */
-static bio_cache *find_bio_cache(struct sockaddr_in *from_addr) {
+static bio_cache *find_bio_cache(netsnmp_sockaddr_storage *from_addr) {
     bio_cache *cachep = NULL;
-    cachep = biocache;
-    while(cachep) {
+    
+    for(cachep = biocache; cachep; cachep = cachep->next) {
 
-        if (cachep->ipv4addr == from_addr->sin_addr.s_addr &&
-            cachep->portnum == from_addr->sin_port) {
-            /* found an existing connection */
-            break;
-        }
-            
-        cachep = cachep->next;
+        if (cachep->sas.sa.sa_family != from_addr->sa.sa_family)
+            continue;
+
+        if ((from_addr->sa.sa_family == AF_INET) &&
+            ((cachep->sas.sin.sin_addr.s_addr !=
+              from_addr->sin.sin_addr.s_addr) ||
+             (cachep->sas.sin.sin_port != from_addr->sin.sin_port)))
+                continue;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+        else if ((from_addr->sa.sa_family == AF_INET6) &&
+                 ((cachep->sas.sin6.sin6_port != from_addr->sin6.sin6_port) ||
+                  (cachep->sas.sin6.sin6_scope_id !=
+                   from_addr->sin6.sin6_scope_id) ||
+                  (memcmp(cachep->sas.sin6.sin6_addr.s6_addr,
+                          from_addr->sin6.sin6_addr.s6_addr,
+                          sizeof(from_addr->sin6.sin6_addr.s6_addr)) != 0)))
+            continue;
+#endif
+        /* found an existing connection */
+        break;
     }
     return cachep;
 }
@@ -193,7 +208,7 @@
 
 static bio_cache *
 start_new_cached_connection(netsnmp_transport *t,
-                            struct sockaddr_in *remote_addr,
+                            netsnmp_sockaddr_storage *remote_addr,
                             int we_are_client) {
     bio_cache *cachep = NULL;
     _netsnmpTLSBaseData *tlsdata;
@@ -270,9 +285,14 @@
     cachep->next = biocache;
     biocache = cachep;
 
-    cachep->ipv4addr = remote_addr->sin_addr.s_addr;
-    cachep->portnum = remote_addr->sin_port;
-    memcpy(&cachep->sockaddr, remote_addr, sizeof(*remote_addr));
+    if (remote_addr->sa.sa_family == AF_INET)
+        memcpy(&cachep->sas.sin, &remote_addr->sin, sizeof(remote_addr->sin));
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    else if (remote_addr->sa.sa_family == AF_INET6)
+        memcpy(&cachep->sas.sin6, &remote_addr->sin6, sizeof(remote_addr->sin6));
+#endif
+    else
+        DIEHERE("unknown address family");
 
     /* create caching memory bios for OpenSSL to read and write to */
 
@@ -386,7 +406,8 @@
 }
 
 static bio_cache *
-find_or_create_bio_cache(netsnmp_transport *t, struct sockaddr_in *from_addr,
+find_or_create_bio_cache(netsnmp_transport *t,
+                         netsnmp_sockaddr_storage *from_addr,
                          int we_are_client) {
     bio_cache *cachep = find_bio_cache(from_addr);
     if (NULL == cachep) {
@@ -401,6 +422,47 @@
     return cachep;
 }
 
+static netsnmp_indexed_addr_pair *
+_extract_addr_pair(netsnmp_transport *t, void *opaque, int olen)
+{
+    netsnmp_indexed_addr_pair *addr_pair = NULL;
+
+    if (opaque && olen == sizeof(netsnmp_tmStateReference)) {
+        netsnmp_tmStateReference *tmStateRef =
+            (netsnmp_tmStateReference *) opaque;
+
+        if (tmStateRef->have_addresses)
+            addr_pair = &(tmStateRef->addresses);
+    }
+    if ((NULL == addr_pair) && (NULL != t)) {
+        if (t->data != NULL &&
+            t->data_length == sizeof(netsnmp_indexed_addr_pair))
+            addr_pair = (netsnmp_indexed_addr_pair *) (t->data);
+        else if (t->data != NULL &&
+                 t->data_length == sizeof(_netsnmpTLSBaseData)) {
+            _netsnmpTLSBaseData *tlsdata = (_netsnmpTLSBaseData *) t->data;
+            addr_pair = (netsnmp_indexed_addr_pair *) (tlsdata->addr);
+        }
+    }
+
+    return addr_pair;
+}
+
+static struct sockaddr *
+_find_remote_sockaddr(netsnmp_transport *t, void *opaque, int olen, int *socklen)
+{
+    netsnmp_indexed_addr_pair *addr_pair = _extract_addr_pair(t, opaque, olen);
+    struct sockaddr *sa = NULL;
+
+    if (NULL == addr_pair)
+        return NULL;
+
+    sa = &addr_pair->remote_addr.sa;
+    *socklen = netsnmp_sockaddr_size(sa);
+    return sa;
+}
+
+
 /*
  * Reads data from our internal openssl outgoing BIO and sends any
  * queued packets out the UDP port
@@ -421,17 +483,14 @@
         DEBUGMSGTL(("dtlsudp", "have %d bytes to send\n", outsize));
 
         /* should always be true. */
-#if defined(XXXFIXME) && defined(linux) && defined(IP_PKTINFO)
-        /* XXX: before this can work, we need to remember address we
-           received it from (addr_pair) */
-        rc2 = netsnmp_udp_sendto(t->sock, addr_pair->local_addr,
-                                 addr_pair->if_index, addr_pair->remote_addr,
-                                 outbuf, outsize);
-#else
-        rc2 = sendto(t->sock, outbuf, outsize, 0,
-                     (struct sockaddr *)&cachep->sockaddr, sizeof(struct sockaddr));
-#endif /* linux && IP_PKTINFO */
-
+        int socksize;
+        struct sockaddr *sa;
+        sa = _find_remote_sockaddr(t, NULL, 0, &socksize);
+        if (NULL == sa)
+            sa = &cachep->sas.sa;
+        socksize = netsnmp_sockaddr_size(sa);
+        rc2 = t->base_transport->f_send(t, outbuf, outsize, (void**)&sa,
+                                        &socksize);
         if (rc2 == -1) {
             snmp_log(LOG_ERR, "failed to send a DTLS specific packet\n");
         }
@@ -545,7 +604,6 @@
                      void **opaque, int *olength)
 {
     int             rc = -1;
-    socklen_t       fromlen = sizeof(struct sockaddr);
     netsnmp_indexed_addr_pair *addr_pair = NULL;
     struct sockaddr *from;
     netsnmp_tmStateReference *tmStateRef = NULL;
@@ -577,14 +635,12 @@
     from = (struct sockaddr *) &(addr_pair->remote_addr);
 
     while (rc < 0) {
-#if defined(linux) && defined(IP_PKTINFO)
-        socklen_t local_addr_len = sizeof(addr_pair->local_addr);
-        rc = netsnmp_udp_recvfrom(t->sock, buf, size, from, &fromlen,
-                                  (struct sockaddr*)&(addr_pair->local_addr),
-                                  &local_addr_len, &(addr_pair->if_index));
-#else
-        rc = recvfrom(t->sock, buf, size, MSG_DONTWAIT, from, &fromlen);
-#endif /* linux && IP_PKTINFO */
+        char *opaque = NULL;
+        int olen;
+        rc = t->base_transport->f_recv(t, buf, size, (void**)&opaque, &olen);
+        if (rc > 0)
+            memcpy(from, opaque, olen);
+        SNMP_FREE(opaque);
         if (rc < 0 && errno != EINTR) {
             break;
         }
@@ -877,6 +933,7 @@
             tlsdata->flags |= NETSNMP_TLSBASE_CERT_FP_VERIFIED;
             DEBUGMSGTL(("dtlsudp", "Verified the server's certificate\n"));
         } else {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
             /* verify that the client's certificate is the correct one */
         
             if ((verifyresult = netsnmp_tlsbase_verify_client_cert(tlsdata->ssl, tlsdata))
@@ -900,6 +957,9 @@
             }
             tlsdata->flags |= NETSNMP_TLSBASE_CERT_FP_VERIFIED;
             DEBUGMSGTL(("dtlsudp", "Verified the client's certificate\n"));
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+            return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
         }
     }
 
@@ -911,7 +971,9 @@
     }
 
     DEBUGIF ("9:dtlsudp") {
-        char *str = netsnmp_udp_fmtaddr(NULL, addr_pair, sizeof(netsnmp_indexed_addr_pair));
+        char *str =
+            t->base_transport->f_fmtaddr(t, addr_pair,
+                                        sizeof(netsnmp_indexed_addr_pair));
         DEBUGMSGTL(("9:dtlsudp",
                     "recvfrom fd %d got %d bytes (from %s)\n",
                     t->sock, rc, str));
@@ -959,39 +1021,25 @@
 {
     int rc = -1;
     netsnmp_indexed_addr_pair *addr_pair = NULL;
-    struct sockaddr *to = NULL;
     bio_cache *cachep = NULL;
     netsnmp_tmStateReference *tmStateRef = NULL;
     u_char outbuf[65535];
     _netsnmpTLSBaseData *tlsdata = NULL;
+    int socksize;
+    struct sockaddr *sa;
     
     DEBUGTRACETOK("9:dtlsudp");
     DEBUGMSGTL(("dtlsudp", "sending %d bytes\n", size));
 
-    /* determine remote addresses */
-    if (opaque != NULL && *opaque != NULL &&
-        *olength == sizeof(netsnmp_tmStateReference)) {
-        tmStateRef = (netsnmp_tmStateReference *) *opaque;
-
-        if (tmStateRef->have_addresses)
-            addr_pair = &(tmStateRef->addresses);
-        else if (t != NULL && t->data != NULL &&
-                 t->data_length == sizeof(netsnmp_indexed_addr_pair))
-            addr_pair = (netsnmp_indexed_addr_pair *) (t->data);
-        else if (t != NULL && t->data != NULL &&
-                 t->data_length == sizeof(_netsnmpTLSBaseData)) {
-            tlsdata = (_netsnmpTLSBaseData *) t->data;
-            addr_pair = (netsnmp_indexed_addr_pair *) (tlsdata->remote_addr);
-        }
-    } else if (t != NULL && t->data != NULL &&
-               t->data_length == sizeof(netsnmp_indexed_addr_pair)) {
-        addr_pair = (netsnmp_indexed_addr_pair *) (t->data);
-    } else if (t != NULL && t->data != NULL &&
-               t->data_length == sizeof(_netsnmpTLSBaseData)) {
-        tlsdata = (_netsnmpTLSBaseData *) t->data;
-        addr_pair = (netsnmp_indexed_addr_pair *) (tlsdata->remote_addr);
+    if (NULL == t || t->sock <= 0) {
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONINVALIDCACHES);
+        snmp_log(LOG_ERR, "invalid netsnmp_dtlsudp_send usage\n");
+        return -1;
     }
 
+    /* determine remote addresses */
+    addr_pair = _extract_addr_pair(t, opaque ? *opaque : NULL,
+                                   olength ? *olength : 0);
     if (NULL == addr_pair) {
       /* RFC5953: section 5.2, step 1:
        1)  If tmStateReference does not refer to a cache containing values
@@ -1006,14 +1054,6 @@
         return -1;
     }
 
-    to = (struct sockaddr *) &(addr_pair->remote_addr);
-
-    if (NULL == to || NULL == t || t->sock <= 0) {
-        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONINVALIDCACHES);
-        snmp_log(LOG_ERR, "invalid netsnmp_dtlsudp_send usage\n");
-        return -1;
-    }
-
     /* RFC5953: section 5.2, step 2:
        2)  Extract the tmSessionID, tmTransportDomain, tmTransportAddress,
            tmSecurityName, tmRequestedSecurityLevel, and tmSameSecurity
@@ -1027,6 +1067,9 @@
        - if we don't have a session yet (eg, no tmSessionID from the
          specs) then we create one automatically here.
     */
+    if (opaque != NULL && *opaque != NULL &&
+        olength != NULL && *olength == sizeof(netsnmp_tmStateReference))
+        tmStateRef = (netsnmp_tmStateReference *) *opaque;
 
 
     /* RFC5953: section 5.2, step 3:
@@ -1108,7 +1151,7 @@
     }
 
     DEBUGIF ("9:dtlsudp") {
-        char *str = netsnmp_udp_fmtaddr(NULL, (void *) addr_pair,
+        char *str = t->base_transport->f_fmtaddr(t, (void *) addr_pair,
                                         sizeof(netsnmp_indexed_addr_pair));
         DEBUGMSGTL(("9:dtlsudp", "send %d bytes from %p to %s on fd %d\n",
                     size, buf, str, t->sock));
@@ -1176,14 +1219,9 @@
         /* in theory an ok thing */
         return 0;
     }
-#if defined(FIXME) && defined(linux) && defined(IP_PKTINFO)
-    /* XXX: before this can work, we need to remember address we
-       received it from (addr_pair) */
-    rc = netsnmp_udpbase_sendto(t->sock, &cachep->sockaddr  remote  addr_pair ? &(addr_pair->local_addr) : NULL, to, outbuf, rc);
-#else
-    rc = sendto(t->sock, outbuf, rc, 0, (struct sockaddr *)&cachep->sockaddr,
-                sizeof(struct sockaddr));
-#endif /* linux && IP_PKTINFO */
+    socksize = netsnmp_sockaddr_size(&cachep->sas.sa);
+    sa = &cachep->sas.sa;
+    rc = t->base_transport->f_send(t, outbuf, rc, (void**)&sa, &socksize);
 
     return rc;
 }
@@ -1207,7 +1245,7 @@
             snmpTlstmSessionServerCloses counter as appropriate.
     */
     snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONCLIENTCLOSES);
-    
+
     /* RFC5953: section 5.4, step 2:
         2)  Look up the session using the tmSessionID.
     */
@@ -1217,8 +1255,8 @@
     if (NULL != t->data && t->data_length == sizeof(_netsnmpTLSBaseData)) {
         tlsbase = (_netsnmpTLSBaseData *) t->data;
 
-        if (tlsbase->remote_addr)
-            cachep = find_bio_cache((struct sockaddr_in *)tlsbase->remote_addr);
+        if (tlsbase->addr)
+            cachep = find_bio_cache(&tlsbase->addr->remote_addr);
     }
 
     /* RFC5953: section 5.4, step 3:
@@ -1237,11 +1275,11 @@
         int opaque_len = 0;
         fd_set readfs;
         struct timeval tv;
-
+ 
         DEBUGMSGTL(("dtlsudp:close",
 		    "%" NETSNMP_PRIz "d bytes remain in write_cache\n",
                     cachep->write_cache_len));
-
+ 
         /*
          * if negotiations have completed and we've received data, try and
          * send any queued packets.
@@ -1258,7 +1296,7 @@
                 _netsnmp_bio_try_and_write_buffered(t, cachep);
                 if (cachep->write_cache_len == 0)
                     break;
-
+ 
                 /* if we've failed that, we probably need to wait for packets */
                 FD_ZERO(&readfs);
                 FD_SET(t->sock, &readfs);
@@ -1308,6 +1346,13 @@
 char *
 netsnmp_dtlsudp_fmtaddr(netsnmp_transport *t, void *data, int len)
 {
+    int              sa_len;
+    struct sockaddr *sa = _find_remote_sockaddr(t, data, len, &sa_len);
+    if (sa) {
+        data = sa;
+        len = sa_len;
+    }
+
     return netsnmp_ipv4_fmtaddr("DTLSUDP", t, data, len);
 }
 
@@ -1317,46 +1362,44 @@
  * the remote address to send things to.  
  */
 
-netsnmp_transport *
-netsnmp_dtlsudp_transport(struct sockaddr_in *addr, int local)
+static netsnmp_transport *
+_transport_common(netsnmp_transport *t, int local)
 {
-    netsnmp_transport *t = NULL;
+    char *tmp = NULL;
+    int tmp_len;
 
     DEBUGTRACETOK("9:dtlsudp");
 
-    t = netsnmp_udpipv4base_transport(addr, local);
     if (NULL == t)
         return NULL;
 
+    /** save base transport for clients; need in send/recv functions later */
+    if (t->data) { /* don't copy data */
+        tmp = t->data;
+        tmp_len = t->data_length;
+        t->data = NULL;
+    }
+    t->base_transport = netsnmp_transport_copy(t);
+
+    if (tmp) {
+        t->data = tmp;
+        t->data_length = tmp_len;
+    }
     if (NULL != t->data &&
         t->data_length == sizeof(netsnmp_indexed_addr_pair)) {
         _netsnmpTLSBaseData *tlsdata =
             netsnmp_tlsbase_allocate_tlsdata(t, local);
-        tlsdata->remote_addr = t->data;
+        tlsdata->addr = t->data;
         t->data = tlsdata;
         t->data_length = sizeof(_netsnmpTLSBaseData);
     }
 
-    if (!local) {
-        /* dtls needs to bind the socket for SSL_write to work */
-        if (connect(t->sock, (struct sockaddr *) addr, sizeof(*addr)) == -1)
-            snmp_log(LOG_ERR, "dtls: failed to connect\n");
-    }
-
-    /* XXX: Potentially set sock opts here (SO_SNDBUF/SO_RCV_BUF) */      
-    /* XXX: and buf size */        
-
     /*
      * Set Domain
      */
     t->domain = netsnmpDTLSUDPDomain;                                     
     t->domain_length = netsnmpDTLSUDPDomain_len;     
 
-    /*
-     * 16-bit length field, 8 byte DTLS header, 20 byte IPv4 header  
-     */
-    t->msgMaxSize      = 0xffff - 8 - 20;
-
     t->f_recv          = netsnmp_dtlsudp_recv;
     t->f_send          = netsnmp_dtlsudp_send;
     t->f_close         = netsnmp_dtlsudp_close;
@@ -1370,29 +1413,100 @@
     return t;
 }
 
-
-void
-netsnmp_dtlsudp_agent_config_tokens_register(void)
+netsnmp_transport *
+netsnmp_dtlsudp_transport(struct sockaddr_in *addr, int local)
 {
+    netsnmp_transport *t = NULL;
+
+    DEBUGTRACETOK("dtlsudp");
+
+    t = netsnmp_udp_transport(addr, local);
+    if (NULL == t)
+        return NULL;
+
+    _transport_common(t, local);
+
+    if (!local) {
+        /* dtls needs to bind the socket for SSL_write to work */
+        if (connect(t->sock, (struct sockaddr *) addr, sizeof(*addr)) == -1)
+            snmp_log(LOG_ERR, "dtls: failed to connect\n");
+    }
+
+    return t;
 }
 
 
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+
+char *
+netsnmp_dtlsudp6_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    int              sa_len;
+    struct sockaddr *sa = _find_remote_sockaddr(t, data, len, &sa_len);
+    if (sa) {
+        data = sa;
+        len = sa_len;
+    }
+
+    return netsnmp_ipv6_fmtaddr("DTLSUDP6", t, data, len);
+}
+
+/*
+ * Open a DTLS-based transport for SNMP.  Local is TRUE if addr is the local
+ * address to bind to (i.e. this is a server-type session); otherwise addr is 
+ * the remote address to send things to.  
+ */
+
+netsnmp_transport *
+netsnmp_dtlsudp6_transport(struct sockaddr_in6 *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+
+    DEBUGTRACETOK("dtlsudp");
+
+    t = netsnmp_udp6_transport(addr, local);
+    if (NULL == t)
+        return NULL;
+
+    _transport_common(t, local);
+
+    if (!local) {
+        /* dtls needs to bind the socket for SSL_write to work */
+        if (connect(t->sock, (struct sockaddr *) addr, sizeof(*addr)) == -1)
+            snmp_log(LOG_ERR, "dtls: failed to connect\n");
+    }
+
+    /* XXX: Potentially set sock opts here (SO_SNDBUF/SO_RCV_BUF) */      
+    /* XXX: and buf size */        
+
+    t->f_fmtaddr       = netsnmp_dtlsudp6_fmtaddr;
+
+    return t;
+}
+#endif
 
 
 netsnmp_transport *
 netsnmp_dtlsudp_create_tstring(const char *str, int isserver,
                                const char *default_target)
 {
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    struct sockaddr_in6 addr6;
+#endif
     struct sockaddr_in addr;
     netsnmp_transport *t;
     _netsnmpTLSBaseData *tlsdata;
     char buf[SPRINT_MAX_LEN], *cp;
 
-    if (netsnmp_sockaddr_in2(&addr, str, default_target)) {
+    if (netsnmp_sockaddr_in2(&addr, str, default_target))
         t = netsnmp_dtlsudp_transport(&addr, isserver);
-    } else {
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    else if (netsnmp_sockaddr_in6_2(&addr6, str, default_target))
+        t = netsnmp_dtlsudp6_transport(&addr6, isserver);
+#endif
+    else
         return NULL;
-    }
+
 
     /* see if we can extract the remote hostname */
     if (!isserver && t && t->data && str) {
@@ -1423,6 +1537,16 @@
         addr.sin_port = htons(porttmp);
         return netsnmp_dtlsudp_transport(&addr, local);
     }
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    else if (o_len == 18) {
+        struct sockaddr_in6 addr6;
+        unsigned short porttmp = (o[16] << 8) + o[17];
+        addr6.sin6_family = AF_INET6;
+        memcpy((u_char *) & (addr6.sin6_addr.s6_addr), o, 4);
+        addr6.sin6_port = htons(porttmp);
+        return netsnmp_dtlsudp6_transport(&addr6, local);
+    }
+#endif
     return NULL;
 }
 
@@ -1430,16 +1554,32 @@
 netsnmp_dtlsudp_ctor(void)
 {
     char indexname[] = "_netsnmp_addr_info";
+    static const char *prefixes[] = { "dtlsudp", "dtls"
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+                                      , "dtlsudp6", "dtls6"
+#endif
+    };
+    int i, num_prefixes = sizeof(prefixes) / sizeof(char *);
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    char indexname6[] = "_netsnmp_addr_info6";
+#endif
 
     DEBUGMSGTL(("dtlsudp", "registering DTLS constructor\n"));
 
     /* config settings */
 
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    if (!openssl_addr_index6)
+        openssl_addr_index6 =
+            SSL_get_ex_new_index(0, indexname6, NULL, NULL, NULL);
+#endif
+
     dtlsudpDomain.name = netsnmpDTLSUDPDomain;
     dtlsudpDomain.name_length = netsnmpDTLSUDPDomain_len;
-    dtlsudpDomain.prefix = (const char**)calloc(3, sizeof(char *));
-    dtlsudpDomain.prefix[0] = "dtlsudp";
-    dtlsudpDomain.prefix[1] = "dtls";
+    dtlsudpDomain.prefix = (const char**)calloc(num_prefixes + 1,
+                                                sizeof(char *));
+    for (i = 0; i < num_prefixes; ++ i)
+        dtlsudpDomain.prefix[i] = prefixes[i];
 
     dtlsudpDomain.f_create_from_tstring     = NULL;
     dtlsudpDomain.f_create_from_tstring_new = netsnmp_dtlsudp_create_tstring;
@@ -1463,6 +1603,9 @@
 typedef union {
        struct sockaddr sa;
        struct sockaddr_in s4;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+       struct sockaddr_in6 s6;
+#endif
 } _peer_union;
 
 int netsnmp_dtls_gen_cookie(SSL *ssl, unsigned char *cookie,
@@ -1490,7 +1633,7 @@
         snmp_log(LOG_ERR, "dtls: failed to get the peer address\n");
         return 0;
     }
-    peer = (_peer_union *)&cachep->sockaddr;
+    peer = (_peer_union *)&cachep->sas;
 
     /* Create buffer with peer's address and port */
     length = 0;
@@ -1499,6 +1642,12 @@
         length += sizeof(struct in_addr);
         length += sizeof(peer->s4.sin_port);
         break;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    case AF_INET6:
+        length += sizeof(struct in6_addr);
+        length += sizeof(peer->s6.sin6_port);
+        break;
+#endif
     default:
         snmp_log(LOG_ERR, "dtls generating cookie: unknown family: %d\n",
                  peer->sa.sa_family);
@@ -1519,6 +1668,16 @@
                &peer->s4.sin_addr,
                sizeof(struct in_addr));
         break;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    case AF_INET6:
+        memcpy(buffer,
+               &peer->s6.sin6_port,
+               sizeof(peer->s6.sin6_port));
+        memcpy(buffer + sizeof(peer->s6.sin6_port),
+               &peer->s6.sin6_addr,
+               sizeof(struct in6_addr));
+        break;
+#endif
     default:
         snmp_log(LOG_ERR, "dtls: unknown address family generating a cookie\n");
         return 0;
@@ -1556,7 +1715,7 @@
         snmp_log(LOG_ERR, "dtls: failed to get the peer address\n");
         return 0;
     }
-    peer = (_peer_union *)&cachep->sockaddr;
+    peer = (_peer_union *)&cachep->sas;
 
     /* Create buffer with peer's address and port */
     length = 0;
@@ -1565,6 +1724,12 @@
         length += sizeof(struct in_addr);
         length += sizeof(peer->s4.sin_port);
         break;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    case AF_INET6:
+        length += sizeof(struct in6_addr);
+        length += sizeof(peer->s6.sin6_port);
+        break;
+#endif
     default:
         snmp_log(LOG_ERR,
                  "dtls: unknown address family %d generating a cookie\n",
@@ -1586,6 +1751,16 @@
                &peer->s4.sin_addr,
                sizeof(struct in_addr));
         break;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    case AF_INET6:
+        memcpy(buffer,
+               &peer->s6.sin6_port,
+               sizeof(peer->s6.sin6_port));
+        memcpy(buffer + sizeof(peer->s6.sin6_port),
+               &peer->s6.sin6_addr,
+               sizeof(struct in6_addr));
+        break;
+#endif
     default:
         snmp_log(LOG_ERR,
                  "dtls: unknown address family %d generating a cookie\n",
diff --git a/snmplib/transports/snmpIPXDomain.c b/snmplib/transports/snmpIPXDomain.c
index fdc8071..1346156 100644
--- a/snmplib/transports/snmpIPXDomain.c
+++ b/snmplib/transports/snmpIPXDomain.c
@@ -34,6 +34,7 @@
 #include <net-snmp/config_api.h>
 
 #include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/tools.h>
 
 #define SNMP_IPX_DEFAULT_PORT	36879   /*  Specified in RFC 1420.  */
 static netsnmp_tdomain ipxDomain;
@@ -182,11 +183,16 @@
     netsnmp_transport *t = NULL;
     int             rc = 0;
 
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
     if (addr == NULL || addr->sipx_family != AF_IPX) {
         return NULL;
     }
 
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
     if (t == NULL) {
         return NULL;
     }
@@ -199,8 +205,6 @@
         free(str);
     }
 
-    memset(t, 0, sizeof(netsnmp_transport));
-
     t->domain = netsnmpIPXDomain;
     t->domain_length = netsnmpIPXDomain_len;
 
@@ -211,6 +215,7 @@
     }
 
     if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
         t->local = (unsigned char*)malloc(12);
         if (t->local == NULL) {
             netsnmp_transport_free(t);
@@ -236,6 +241,9 @@
         }
         t->data = NULL;
         t->data_length = 0;
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     } else {
         t->remote = (unsigned char*)malloc(12);
         if (t->remote == NULL) {
diff --git a/snmplib/transports/snmpIPv4BaseDomain.c b/snmplib/transports/snmpIPv4BaseDomain.c
index 9f4b6a9..05e150b 100644
--- a/snmplib/transports/snmpIPv4BaseDomain.c
+++ b/snmplib/transports/snmpIPv4BaseDomain.c
@@ -202,19 +202,19 @@
         to = (struct sockaddr_in *) &(addr_pair->remote_addr);
         if (to == NULL) {
             snprintf(tmp, sizeof(tmp), "%s: unknown->[%s]:%hu", prefix,
-                     inet_ntoa(addr_pair->local_addr.sin_addr),
-                     ntohs(addr_pair->local_addr.sin_port));
+                     inet_ntoa(addr_pair->local_addr.sin.sin_addr),
+                     ntohs(addr_pair->local_addr.sin.sin_port));
         } else if ( t && t->flags & NETSNMP_TRANSPORT_FLAG_HOSTNAME ) {
             /* XXX: hmm...  why isn't this prefixed */
             /* assuming intentional */
-            host = gethostbyaddr((char *)&to->sin_addr, 4, AF_INET);
+            host = netsnmp_gethostbyaddr((char *)&to->sin_addr, sizeof(struct in_addr), AF_INET);
             return (host ? strdup(host->h_name) : NULL); 
         } else {
             snprintf(tmp, sizeof(tmp), "%s: [%s]:%hu->", prefix,
                      inet_ntoa(to->sin_addr), ntohs(to->sin_port));
             snprintf(tmp + strlen(tmp), sizeof(tmp)-strlen(tmp), "[%s]:%hu",
-                     inet_ntoa(addr_pair->local_addr.sin_addr),
-                     ntohs(addr_pair->local_addr.sin_port));
+                     inet_ntoa(addr_pair->local_addr.sin.sin_addr),
+                     ntohs(addr_pair->local_addr.sin.sin_port));
         }
     }
     tmp[sizeof(tmp)-1] = '\0';
diff --git a/snmplib/transports/snmpIPv6BaseDomain.c b/snmplib/transports/snmpIPv6BaseDomain.c
index 01f81b9..1ad6888 100644
--- a/snmplib/transports/snmpIPv6BaseDomain.c
+++ b/snmplib/transports/snmpIPv6BaseDomain.c
@@ -3,8 +3,11 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#ifdef NETSNMP_ENABLE_IPV6
+
 #include <net-snmp/types.h>
 #include <net-snmp/library/snmpIPv6BaseDomain.h>
+#include <net-snmp/library/system.h>
 
 #include <stddef.h>
 #include <stdio.h>
@@ -90,7 +93,7 @@
     char addr[INET6_ADDRSTRLEN];
     char tmp[INET6_ADDRSTRLEN + 18];
 
-    DEBUGMSGTL(("netsnmp_udp6", "fmtaddr: t = %p, data = %p, len = %d\n", t,
+    DEBUGMSGTL(("netsnmp_ipv6", "fmtaddr: t = %p, data = %p, len = %d\n", t,
                 data, len));
     if (data != NULL && len == sizeof(struct sockaddr_in6)) {
         to = (struct sockaddr_in6 *) data;
@@ -340,16 +343,9 @@
             hint.ai_socktype = SOCK_DGRAM;
             hint.ai_protocol = 0;
 
-            err = getaddrinfo(peername, NULL, &hint, &addrs);
+            err = netsnmp_getaddrinfo(peername, NULL, &hint, &addrs);
         }
         if (err != 0) {
-#if HAVE_GAI_STRERROR
-            snmp_log(LOG_ERR, "getaddrinfo(\"%s\", NULL, ...): %s\n", peername,
-                     gai_strerror(err));
-#else
-            snmp_log(LOG_ERR, "getaddrinfo(\"%s\", NULL, ...): (error %d)\n",
-                     peername, err);
-#endif
             free(peername);
             return 0;
         }
@@ -374,7 +370,7 @@
         DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "hostname (resolved okay)\n"));
         memcpy(&(addr->sin6_addr), hp->h_addr, hp->h_length);
 #elif HAVE_GETHOSTBYNAME
-        hp = gethostbyname(peername);
+        hp = netsnmp_gethostbyname(peername);
         if (hp == NULL) {
             DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
                         "hostname (couldn't resolve)\n"));
@@ -423,3 +419,5 @@
     sprintf(buf, ":%u", remote_port);
     return netsnmp_sockaddr_in6_2(addr, inpeername, remote_port ? buf : NULL);
 }
+
+#endif /* NETSNMP_ENABLE_IPV6 */
diff --git a/snmplib/transports/snmpSSHDomain.c b/snmplib/transports/snmpSSHDomain.c
index 7f51f86..a9ed81f 100644
--- a/snmplib/transports/snmpSSHDomain.c
+++ b/snmplib/transports/snmpSSHDomain.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/library/snmpSSHDomain.h>
 
@@ -60,6 +61,8 @@
 #include <net-snmp/library/snmpSocketBaseDomain.h>
 #include <net-snmp/library/read_config.h>
 
+netsnmp_feature_require(user_information)
+
 #define MAX_NAME_LENGTH 127
 
 #define NETSNMP_SSHTOSNMP_VERSION1      1
@@ -80,10 +83,6 @@
 const oid netsnmp_snmpSSHDomain[] = { TRANSPORT_DOMAIN_SSH_IP };
 static netsnmp_tdomain sshDomain;
 
-const char *keyfile1="/home/hardaker/.ssh/id_rsa.pub";
-const char *keyfile2="/home/hardaker/.ssh/id_rsa";
-const char *username="hardaker";
-
 #define SNMPSSHDOMAIN_USE_EXTERNAL_PIPE 1
 
 /*
@@ -584,6 +583,11 @@
                               NETSNMP_DS_LIB_SSHTOSNMP_SOCKET);
     char tmpsockpath[MAXPATHLEN];
 
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
     if (addr == NULL || addr->sin_family != AF_INET) {
         return NULL;
     }
@@ -592,7 +596,6 @@
     if (t == NULL) {
         return NULL;
     }
-    memset(t, 0, sizeof(netsnmp_transport));
 
     t->domain = netsnmp_snmpSSHDomain;
     t->domain_length = netsnmp_snmpSSHDomain_len;
@@ -607,6 +610,7 @@
     t->data_length = sizeof(netsnmp_ssh_addr_pair);
 
     if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
 #ifdef SNMPSSHDOMAIN_USE_EXTERNAL_PIPE
 
         /* XXX: set t->local and t->local_length */
@@ -715,9 +719,42 @@
         /* XXX: verify we're inside ssh */
         t->sock = STDIN_FILENO;
 #endif /* ! SNMPSSHDOMAIN_USE_EXTERNAL_PIPE */
-
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     } else {
-        /* XXX: need an ipv6 friendly one too (sigh) */
+        char *username;
+        char *keyfilepub;
+        char *keyfilepriv;
+        
+        /* use the requested user name */
+        /* XXX: default to the current user name on the system like ssh does */
+        username = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                         NETSNMP_DS_LIB_SSH_USERNAME);
+        if (!username || 0 == *username) {
+            snmp_log(LOG_ERR, "You must specify a ssh username to use.  See the snmp.conf manual page\n");
+            return NULL;
+        }
+
+        /* use the requested public key file */
+        keyfilepub = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                           NETSNMP_DS_LIB_SSH_PUBKEY);
+        if (!keyfilepub || 0 == *keyfilepub) {
+            /* XXX: default to ~/.ssh/id_rsa.pub */
+            snmp_log(LOG_ERR, "You must specify a ssh public key file to use.  See the snmp.conf manual page\n");
+            return NULL;
+        }
+
+        /* use the requested private key file */
+        keyfilepriv = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                            NETSNMP_DS_LIB_SSH_PRIVKEY);
+        if (!keyfilepriv || 0 == *keyfilepriv) {
+            /* XXX: default to keyfilepub without the .pub suffix */
+            snmp_log(LOG_ERR, "You must specify a ssh private key file to use.  See the snmp.conf manual page\n");
+            return NULL;
+        }
+
+        /* xxx: need an ipv6 friendly one too (sigh) */
 
         /* XXX: not ideal when structs don't actually match size wise */
         memcpy(&(addr_pair->remote_addr), addr, sizeof(struct sockaddr_in));
@@ -804,7 +841,7 @@
             /* public key */
             if (libssh2_userauth_publickey_fromfile(addr_pair->session,
                                                     username,
-                                                    keyfile1, keyfile2,
+                                                    keyfilepub, keyfilepriv,
                                                     NULL)) {
                 snmp_log(LOG_ERR,"Authentication by public key failed!\n");
                 goto shutdown;
@@ -954,6 +991,18 @@
                                NETSNMP_DS_LIBRARY_ID,
                                NETSNMP_DS_LIB_SSHTOSNMP_SOCKET);
 
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "sshusername",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_SSH_USERNAME);
+
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "sshpublickey",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_SSH_PUBKEY);
+
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "sshprivatekey",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_SSH_PRIVKEY);
+
     DEBUGMSGTL(("ssh", "registering the ssh domain\n"));
     netsnmp_tdomain_register(&sshDomain);
 }
diff --git a/snmplib/transports/snmpSTDDomain.c b/snmplib/transports/snmpSTDDomain.c
index 21e0d79..0a1c3f9 100644
--- a/snmplib/transports/snmpSTDDomain.c
+++ b/snmplib/transports/snmpSTDDomain.c
@@ -154,11 +154,10 @@
 {
     netsnmp_transport *t;
 
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
     if (t == NULL) {
         return NULL;
     }
-    memset(t, 0, sizeof(netsnmp_transport));
 
     t->domain = netsnmp_snmpSTDDomain;
     t->domain_length =
diff --git a/snmplib/transports/snmpTCPDomain.c b/snmplib/transports/snmpTCPDomain.c
index a103f06..7feb028 100644
--- a/snmplib/transports/snmpTCPDomain.c
+++ b/snmplib/transports/snmpTCPDomain.c
@@ -41,6 +41,7 @@
 #include <net-snmp/library/snmpIPv4BaseDomain.h>
 #include <net-snmp/library/snmpSocketBaseDomain.h>
 #include <net-snmp/library/snmpTCPBaseDomain.h>
+#include <net-snmp/library/tools.h>
 
 /*
  * needs to be in sync with the definitions in snmplib/snmpUDPDomain.c
@@ -76,10 +77,9 @@
     struct sockaddr *farend = NULL;
     netsnmp_udp_addr_pair *addr_pair = NULL;
     int             newsock = -1;
-    socklen_t       farendlen = sizeof(struct sockaddr_in);
+    socklen_t       farendlen = sizeof(netsnmp_udp_addr_pair);
 
-    addr_pair = (netsnmp_udp_addr_pair *)malloc(sizeof(netsnmp_udp_addr_pair));
-
+    addr_pair = (netsnmp_udp_addr_pair *)malloc(farendlen);
     if (addr_pair == NULL) {
         /*
          * Indicate that the acceptance of this socket failed.  
@@ -88,7 +88,7 @@
         return -1;
     }
     memset(addr_pair, 0, sizeof *addr_pair);
-    farend = (struct sockaddr *) &(addr_pair->remote_addr);
+    farend = &addr_pair->remote_addr.sa;
 
     if (t != NULL && t->sock >= 0) {
         newsock = accept(t->sock, farend, &farendlen);
@@ -96,7 +96,7 @@
         if (newsock < 0) {
             DEBUGMSGTL(("netsnmp_tcp", "accept failed rc %d errno %d \"%s\"\n",
 			newsock, errno, strerror(errno)));
-            free(farend);
+            free(addr_pair);
             return newsock;
         }
 
@@ -130,7 +130,7 @@
 
         return newsock;
     } else {
-        free(farend);
+        free(addr_pair);
         return -1;
     }
 }
@@ -150,16 +150,19 @@
     netsnmp_udp_addr_pair *addr_pair = NULL;
     int rc = 0;
 
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
 
     if (addr == NULL || addr->sin_family != AF_INET) {
         return NULL;
     }
 
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
     if (t == NULL) {
         return NULL;
     }
-    memset(t, 0, sizeof(netsnmp_transport));
 
     addr_pair = (netsnmp_udp_addr_pair *)malloc(sizeof(netsnmp_udp_addr_pair));
     if (addr_pair == NULL) {
@@ -184,6 +187,7 @@
     t->flags = NETSNMP_TRANSPORT_FLAG_STREAM;
 
     if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
         int opt = 1;
 
         /*
@@ -242,7 +246,9 @@
         /*
          * no buffer size on listen socket - doesn't make sense
          */
-
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     } else {
       t->remote = (u_char *)malloc(6);
         if (t->remote == NULL) {
diff --git a/snmplib/transports/snmpTCPIPv6Domain.c b/snmplib/transports/snmpTCPIPv6Domain.c
index 2a59eea..d2e0a2d 100644
--- a/snmplib/transports/snmpTCPIPv6Domain.c
+++ b/snmplib/transports/snmpTCPIPv6Domain.c
@@ -47,6 +47,7 @@
 #include <net-snmp/library/snmp_transport.h>
 #include <net-snmp/library/snmpSocketBaseDomain.h>
 #include <net-snmp/library/snmpTCPBaseDomain.h>
+#include <net-snmp/library/tools.h>
 
 #include "inet_ntop.h"
 
@@ -140,15 +141,19 @@
     netsnmp_transport *t = NULL;
     int             rc = 0;
 
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
     if (addr == NULL || addr->sin6_family != AF_INET6) {
         return NULL;
     }
 
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
     if (t == NULL) {
         return NULL;
     }
-    memset(t, 0, sizeof(netsnmp_transport));
 
     DEBUGIF("netsnmp_tcp6") {
         char *str = netsnmp_tcp6_fmtaddr(NULL, (void *)addr,
@@ -158,14 +163,12 @@
         free(str);
     }
 
-    memset(t, 0, sizeof(netsnmp_transport));
-
-    t->data = malloc(sizeof(struct sockaddr_in6));
+    t->data = malloc(sizeof(netsnmp_indexed_addr_pair));
     if (t->data == NULL) {
         netsnmp_transport_free(t);
         return NULL;
     }
-    t->data_length = sizeof(struct sockaddr_in6);
+    t->data_length = sizeof(netsnmp_indexed_addr_pair);
     memcpy(t->data, addr, sizeof(struct sockaddr_in6));
 
     t->domain = netsnmp_TCPIPv6Domain;
@@ -180,6 +183,7 @@
     t->flags = NETSNMP_TRANSPORT_FLAG_STREAM;
 
     if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
         int opt = 1;
 
         /*
@@ -248,7 +252,9 @@
         /*
          * no buffer size on listen socket - doesn't make sense
          */
-
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     } else {
         t->remote = (unsigned char*)malloc(18);
         if (t->remote == NULL) {
diff --git a/snmplib/transports/snmpTLSBaseDomain.c b/snmplib/transports/snmpTLSBaseDomain.c
index b1e9465..c54d6ad 100644
--- a/snmplib/transports/snmpTLSBaseDomain.c
+++ b/snmplib/transports/snmpTLSBaseDomain.c
@@ -1,5 +1,9 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(cert_util)
+
 #include <net-snmp/library/snmpTLSBaseDomain.h>
 
 #if HAVE_DMALLOC_H
@@ -34,6 +38,7 @@
 #include <openssl/x509v3.h>
 
 #include <net-snmp/types.h>
+#include <net-snmp/config_api.h>
 #include <net-snmp/library/cert_util.h>
 #include <net-snmp/library/snmp_openssl.h>
 #include <net-snmp/library/default_store.h>
@@ -45,6 +50,7 @@
 #include <net-snmp/library/snmp_assert.h>
 #include <net-snmp/library/snmp_transport.h>
 #include <net-snmp/library/snmp_secmod.h>
+#include <net-snmp/library/read_config.h>
 #include <net-snmp/library/system.h>
 
 #define LOGANDDIE(msg) do { snmp_log(LOG_ERR, "%s\n", msg); return 0; } while(0)
@@ -151,26 +157,26 @@
 
     if (!tlsdata->their_fingerprint && tlsdata->their_identity) {
         /* we have an identity; try and find it's fingerprint */
-        netsnmp_cert *their_cert;
-        their_cert =
+        netsnmp_cert *peer_cert;
+        peer_cert =
             netsnmp_cert_find(NS_CERT_REMOTE_PEER, NS_CERTKEY_MULTIPLE,
                               tlsdata->their_identity);
 
-        if (their_cert)
+        if (peer_cert)
             tlsdata->their_fingerprint =
-                netsnmp_openssl_cert_get_fingerprint(their_cert->ocert, -1);
+                netsnmp_openssl_cert_get_fingerprint(peer_cert->ocert, -1);
     }
 
     if (!tlsdata->their_fingerprint && try_default) {
         /* try for the default instead */
-        netsnmp_cert *their_cert;
-        their_cert =
+        netsnmp_cert *peer_cert;
+        peer_cert =
             netsnmp_cert_find(NS_CERT_REMOTE_PEER, NS_CERTKEY_DEFAULT,
                               NULL);
 
-        if (their_cert)
+        if (peer_cert)
             tlsdata->their_fingerprint =
-                netsnmp_openssl_cert_get_fingerprint(their_cert->ocert, -1);
+                netsnmp_openssl_cert_get_fingerprint(peer_cert->ocert, -1);
     }
     
     if (tlsdata->their_fingerprint) {
@@ -579,8 +585,7 @@
         LOGANDDIE("can't create a new context");
     }
 
-    id_cert = netsnmp_cert_find(NS_CERT_IDENTITY, NS_CERTKEY_DEFAULT,
-                                (void*)1);
+    id_cert = netsnmp_cert_find(NS_CERT_IDENTITY, NS_CERTKEY_DEFAULT, NULL);
     if (!id_cert)
         LOGANDDIE ("error finding server identity keys");
 
@@ -621,24 +626,28 @@
 
     tlsdata = t->data;
 
-    if (strcmp(token, "our_identity") == 0) {
+    if ((strcmp(token, "localCert") == 0) ||
+        (strcmp(token, "our_identity") == 0)) {
         SNMP_FREE(tlsdata->our_identity);
         tlsdata->our_identity = strdup(value);
         DEBUGMSGT(("tls:config","our identity %s\n", value));
     }
 
-    if (strcmp(token, "their_identity") == 0) {
+    if ((strcmp(token, "peerCert") == 0) ||
+        (strcmp(token, "their_identity") == 0)) {
         SNMP_FREE(tlsdata->their_identity);
         tlsdata->their_identity = strdup(value);
         DEBUGMSGT(("tls:config","their identity %s\n", value));
     }
 
-    if (strcmp(token, "their_hostname") == 0) {
+    if ((strcmp(token, "peerHostname") == 0) ||
+        (strcmp(token, "their_hostname") == 0)) {
         SNMP_FREE(tlsdata->their_hostname);
         tlsdata->their_hostname = strdup(value);
     }
 
-    if (strcmp(token, "trust_cert") == 0) {
+    if ((strcmp(token, "trust_cert") == 0) ||
+        (strcmp(token, "trustCert") == 0)) {
         SNMP_FREE(tlsdata->trust_cert);
         tlsdata->trust_cert = strdup(value);
     }
@@ -705,6 +714,32 @@
     return openssl_local_index;
 }
 
+static void _parse_client_cert(const char *tok, char *line)
+{
+    config_pwarn("clientCert is deprecated. Clients should use localCert, servers should use peerCert");
+    if (*line == '"') {
+        char buf[SNMP_MAXBUF];
+        copy_nword(line, buf, sizeof(buf));
+        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                              NETSNMP_DS_LIB_X509_CLIENT_PUB, buf);
+    } else
+        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                              NETSNMP_DS_LIB_X509_CLIENT_PUB, line);
+}
+
+static void _parse_server_cert(const char *tok, char *line)
+{
+    config_pwarn("serverCert is deprecated. Clients should use peerCert, servers should use localCert.");
+    if (*line == '"') {
+        char buf[SNMP_MAXBUF];
+        copy_nword(line, buf, sizeof(buf));
+        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                              NETSNMP_DS_LIB_X509_CLIENT_PUB, buf);
+    } else
+        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                              NETSNMP_DS_LIB_X509_SERVER_PUB, line);
+}
+
 void
 netsnmp_tlsbase_ctor(void) {
 
@@ -731,26 +766,25 @@
      */
 
     /* the public client cert to authenticate with */
-    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "clientCert",
-                               NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_X509_CLIENT_PUB);
-    /* XXX: this one needs to go away before 5.6 final */
-    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ClientPub",
-                               NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_X509_CLIENT_PUB);
+    register_config_handler("snmp", "clientCert", _parse_client_cert, NULL,
+                            NULL);
 
     /*
      * for the server
      */
 
     /* The X509 server key to use */
-    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "serverCert",
+    register_config_handler("snmp", "serverCert", _parse_server_cert, NULL,
+                            NULL);
+    /*
+     * remove cert config ambiguity: localCert, peerCert
+     */
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "localCert",
                                NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_X509_SERVER_PUB);
-    /* XXX: this one needs to go away before 5.6 final */
-    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ServerPub",
+                               NETSNMP_DS_LIB_TLS_LOCAL_CERT);
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "peerCert",
                                NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_X509_SERVER_PUB);
+                               NETSNMP_DS_LIB_TLS_PEER_CERT);
 
     /*
      * register our boot-strapping needs
@@ -900,6 +934,8 @@
     return SNMPERR_SUCCESS;
 }
 
+netsnmp_feature_child_of(_x509_get_error, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE__X509_GET_ERROR
 const char * _x509_get_error(int x509failvalue, const char *location) {
     static const char *reason = NULL;
     
@@ -1055,6 +1091,7 @@
 
     return reason;
 }
+#endif /* NETSNMP_FEATURE_REMOVE__X509_GET_ERROR */
 
 void _openssl_log_error(int rc, SSL *con, const char *location) {
     const char     *reason, *file, *data;
diff --git a/snmplib/transports/snmpTLSTCPDomain.c b/snmplib/transports/snmpTLSTCPDomain.c
index e380bd5..473d02c 100644
--- a/snmplib/transports/snmpTLSTCPDomain.c
+++ b/snmplib/transports/snmpTLSTCPDomain.c
@@ -9,6 +9,10 @@
  */
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(cert_util)
+
 #include <net-snmp/library/snmpTLSTCPDomain.h>
 
 #include <stdio.h>
@@ -129,9 +133,9 @@
         newtlsdata->their_hostname = strdup(oldtlsdata->their_hostname);
     if (oldtlsdata->trust_cert)
         newtlsdata->trust_cert = strdup(oldtlsdata->trust_cert);
-    if (oldtlsdata->remote_addr)
-        newtlsdata->remote_addr = netsnmp_memdup(oldtlsdata->remote_addr,
-               sizeof(netsnmp_indexed_addr_pair));
+    if (oldtlsdata->addr)
+        newtlsdata->addr = netsnmp_memdup(oldtlsdata->addr,
+                                          sizeof(*oldtlsdata->addr));
 
     return 0;
 }
@@ -723,8 +727,6 @@
             snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONOPENERRORS);
             snmp_log(LOG_ERR, "tlstcp: failed to create bio\n");
             _openssl_log_error(rc, NULL, "BIO creation");
-            SNMP_FREE(tlsdata);
-            SNMP_FREE(t);
             return NULL;
         }
             
@@ -736,8 +738,6 @@
 		     tlsdata->addr_string);
             _openssl_log_error(rc, NULL, "BIO_do_connect");
             BIO_free(bio);
-            SNMP_FREE(tlsdata);
-            SNMP_FREE(t);
             return NULL;
         }
 
@@ -747,8 +747,6 @@
             snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONOPENERRORS);
             snmp_log(LOG_ERR, "tlstcp: failed to create a SSL connection\n");
             BIO_free(bio);
-            SNMP_FREE(tlsdata);
-            SNMP_FREE(t);
             return NULL;
         }
         
@@ -762,8 +760,6 @@
             snmp_log(LOG_ERR, "tlstcp: failed to create a SSL connection\n");
             SSL_shutdown(ssl);
             BIO_free(bio);
-            SNMP_FREE(tlsdata);
-            SNMP_FREE(t);
             return NULL;
         }
 
@@ -774,8 +770,6 @@
             snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONOPENERRORS);
             snmp_log(LOG_ERR, "tlstcp: failed to ssl_connect\n");
             BIO_free(bio);
-            SNMP_FREE(tlsdata);
-            SNMP_FREE(t);
             return NULL;
         }
 
@@ -830,8 +824,6 @@
             snmp_log(LOG_ERR, "tlstcp: failed to verify ssl certificate\n");
             SSL_shutdown(ssl);
             BIO_free(bio);
-            SNMP_FREE(tlsdata);
-            SNMP_FREE(t);
             return NULL;
         }
 
@@ -869,6 +861,7 @@
         t->sock = BIO_get_fd(bio, NULL);
 
     } else {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
         /* Is the server */
         
         /* Create the socket bio */
@@ -878,8 +871,6 @@
         t->local = (void *) strdup(tlsdata->addr_string);
         t->local_length = strlen(tlsdata->addr_string)+1;
         if (NULL == tlsdata->accept_bio) {
-            SNMP_FREE(t);
-            SNMP_FREE(tlsdata);
             snmp_log(LOG_ERR, "TLSTCP: Falied to create a accept BIO\n");
             return NULL;
         }
@@ -887,8 +878,6 @@
         /* openssl requires an initial accept to bind() the socket */
         if (BIO_do_accept(tlsdata->accept_bio) <= 0) {
 	    _openssl_log_error(rc, tlsdata->ssl, "BIO_do__accept");
-            SNMP_FREE(t);
-            SNMP_FREE(tlsdata);
             snmp_log(LOG_ERR, "TLSTCP: Falied to do first accept on the TLS accept BIO\n");
             return NULL;
         }
@@ -899,6 +888,9 @@
 
         t->sock = BIO_get_fd(tlsdata->accept_bio, NULL);
         t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     }
     return t;
 }
@@ -917,12 +909,16 @@
     char *cp;
     char buf[SPRINT_MAX_LEN];
     
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (isserver)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
     /* allocate our transport structure */
     t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
     if (NULL == t) {
         return NULL;
     }
-    memset(t, 0, sizeof(netsnmp_transport));
 
     /* allocate our TLS specific data */
     if (NULL == (tlsdata = netsnmp_tlsbase_allocate_tlsdata(t, isserver)))
diff --git a/snmplib/transports/snmpUDPBaseDomain.c b/snmplib/transports/snmpUDPBaseDomain.c
index 5cb28d6..8497f71 100644
--- a/snmplib/transports/snmpUDPBaseDomain.c
+++ b/snmplib/transports/snmpUDPBaseDomain.c
@@ -3,6 +3,9 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpUDPBaseDomain.h>
+
 #include <stddef.h>
 #include <stdio.h>
 #include <sys/types.h>
@@ -15,9 +18,6 @@
 #else
 #include <strings.h>
 #endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -37,7 +37,6 @@
 
 #include <net-snmp/types.h>
 #include <net-snmp/library/snmpSocketBaseDomain.h>
-#include <net-snmp/library/snmpUDPBaseDomain.h>
 #include <net-snmp/library/snmpUDPDomain.h>
 #include <net-snmp/library/snmp_debug.h>
 #include <net-snmp/library/tools.h>
@@ -53,12 +52,6 @@
 #define MSG_NOSIGNAL 0
 #endif
 
-#if defined(IP_RECVDSTADDR) && defined(__DragonFly__)
-# ifndef IP_SENDSRCADDR
-#  define IP_SENDSRCADDR IP_RECVDSTADDR /* DragonFly BSD */
-# endif
-#endif
-
 void
 _netsnmp_udp_sockopt_set(int fd, int local)
 {
@@ -393,7 +386,7 @@
                      void **opaque, int *olength)
 {
     int             rc = -1;
-    socklen_t       fromlen = sizeof(struct sockaddr);
+    socklen_t       fromlen = sizeof(netsnmp_sockaddr_storage);
     netsnmp_indexed_addr_pair *addr_pair = NULL;
     struct sockaddr *from;
 
@@ -405,7 +398,7 @@
             return -1;
         } else {
             memset(addr_pair, 0, sizeof(netsnmp_indexed_addr_pair));
-            from = (struct sockaddr *) &(addr_pair->remote_addr);
+            from = &addr_pair->remote_addr.sa;
         }
 
 	while (rc < 0) {
@@ -452,14 +445,15 @@
     struct sockaddr *to = NULL;
 
     if (opaque != NULL && *opaque != NULL &&
-        *olength == sizeof(netsnmp_indexed_addr_pair)) {
+        ((*olength == sizeof(netsnmp_indexed_addr_pair) ||
+          (*olength == sizeof(struct sockaddr_in))))) {
         addr_pair = (netsnmp_indexed_addr_pair *) (*opaque);
     } else if (t != NULL && t->data != NULL &&
                 t->data_length == sizeof(netsnmp_indexed_addr_pair)) {
         addr_pair = (netsnmp_indexed_addr_pair *) (t->data);
     }
 
-    to = (struct sockaddr *) &(addr_pair->remote_addr);
+    to = &addr_pair->remote_addr.sa;
 
     if (to != NULL && t != NULL && t->sock >= 0) {
         DEBUGIF("netsnmp_udp") {
@@ -472,7 +466,7 @@
 	while (rc < 0) {
 #ifdef netsnmp_udpbase_recvfrom_sendto_defined
             rc = netsnmp_udp_sendto(t->sock,
-                    addr_pair ? &(addr_pair->local_addr.sin_addr) : NULL,
+                    addr_pair ? &(addr_pair->local_addr.sin.sin_addr) : NULL,
                     addr_pair ? addr_pair->if_index : 0, to, buf, size);
 #else
             rc = sendto(t->sock, buf, size, 0, to, sizeof(struct sockaddr));
diff --git a/snmplib/transports/snmpUDPDomain.c b/snmplib/transports/snmpUDPDomain.c
index 7fa2efd..a0abd8c 100644
--- a/snmplib/transports/snmpUDPDomain.c
+++ b/snmplib/transports/snmpUDPDomain.c
@@ -11,6 +11,10 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpUDPDomain.h>
+#include <net-snmp/library/snmpUDPIPv4BaseDomain.h>
+
 #include <stddef.h>
 #include <stdio.h>
 #include <sys/types.h>
@@ -53,8 +57,6 @@
 #include <net-snmp/config_api.h>
 
 #include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpUDPDomain.h>
-#include <net-snmp/library/snmpUDPIPv4BaseDomain.h>
 #include <net-snmp/library/snmpSocketBaseDomain.h>
 #include <net-snmp/library/system.h>
 #include <net-snmp/library/tools.h>
@@ -70,12 +72,6 @@
 #define INET_ADDRSTRLEN 16
 #endif
 
-#if defined(IP_RECVDSTADDR) && defined(__DragonFly__)
-# ifndef IP_SENDSRCADDR
-#  define IP_SENDSRCADDR IP_RECVDSTADDR /* DragonFly BSD */
-# endif
-#endif
-
 static netsnmp_tdomain udpDomain;
 
 /*
diff --git a/snmplib/transports/snmpUDPIPv4BaseDomain.c b/snmplib/transports/snmpUDPIPv4BaseDomain.c
index 7809cae..8c0fb05 100644
--- a/snmplib/transports/snmpUDPIPv4BaseDomain.c
+++ b/snmplib/transports/snmpUDPIPv4BaseDomain.c
@@ -3,6 +3,9 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpUDPIPv4BaseDomain.h>
+
 #include <stddef.h>
 #include <stdio.h>
 #include <sys/types.h>
@@ -36,17 +39,8 @@
 #include <net-snmp/library/default_store.h>
 
 #include <net-snmp/library/snmpSocketBaseDomain.h>
-#include <net-snmp/library/snmpUDPIPv4BaseDomain.h>
-#include <net-snmp/library/snmpUDPBaseDomain.h>
-
-#if defined(IP_RECVDSTADDR) && defined(__DragonFly__)
-# ifndef IP_SENDSRCADDR
-#  define IP_SENDSRCADDR IP_RECVDSTADDR /* DragonFly BSD */
-# endif
-#endif
 
 #if defined(HAVE_IP_PKTINFO) || defined(HAVE_IP_RECVDSTADDR)
-
 int netsnmp_udpipv4_recvfrom(int s, void *buf, int len, struct sockaddr *from,
                              socklen_t *fromlen, struct sockaddr *dstip,
                              socklen_t *dstlen, int *if_index)
@@ -71,6 +65,11 @@
     netsnmp_indexed_addr_pair addr_pair;
     socklen_t       local_addr_len;
 
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
     if (addr == NULL || addr->sin_family != AF_INET) {
         return NULL;
     }
@@ -99,13 +98,14 @@
     _netsnmp_udp_sockopt_set(t->sock, local);
 
     if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
         /*
          * This session is inteneded as a server, so we must bind on to the
          * given IP address, which may include an interface address, or could
          * be INADDR_ANY, but certainly includes a port number.
          */
 
-      t->local = (u_char *) malloc(6);
+        t->local = (u_char *) malloc(6);
         if (t->local == NULL) {
             netsnmp_transport_free(t);
             return NULL;
@@ -160,6 +160,9 @@
         }
         t->data = NULL;
         t->data_length = 0;
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     } else {
         /*
          * This is a client session.  If we've been given a
diff --git a/snmplib/transports/snmpUDPIPv6Domain.c b/snmplib/transports/snmpUDPIPv6Domain.c
index 55e3610..18de876 100644
--- a/snmplib/transports/snmpUDPIPv6Domain.c
+++ b/snmplib/transports/snmpUDPIPv6Domain.c
@@ -1,6 +1,7 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <net-snmp/library/snmpUDPIPv6Domain.h>
+#include <net-snmp/library/system.h>
 
 #include <net-snmp/types.h>
 
@@ -64,6 +65,7 @@
 
 #include <net-snmp/library/snmp_transport.h>
 #include <net-snmp/library/snmpSocketBaseDomain.h>
+#include <net-snmp/library/tools.h>
 
 #include "inet_ntop.h"
 #include "inet_pton.h"
@@ -152,7 +154,8 @@
         *olength == sizeof(struct sockaddr_in6)) {
         to = (struct sockaddr *) (*opaque);
     } else if (t != NULL && t->data != NULL &&
-               t->data_length == sizeof(struct sockaddr_in6)) {
+               ((t->data_length == sizeof(struct sockaddr_in6)) ||
+                (t->data_length == sizeof(netsnmp_indexed_addr_pair)))) {
         to = (struct sockaddr *) (t->data);
     }
 
@@ -188,11 +191,16 @@
     netsnmp_transport *t = NULL;
     int             rc = 0;
 
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
     if (addr == NULL || addr->sin6_family != AF_INET6) {
         return NULL;
     }
 
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
     if (t == NULL) {
         return NULL;
     }
@@ -205,8 +213,6 @@
         free(str);
     }
 
-    memset(t, 0, sizeof(netsnmp_transport));
-
     t->domain = netsnmp_UDPIPv6Domain;
     t->domain_length =
         sizeof(netsnmp_UDPIPv6Domain) / sizeof(netsnmp_UDPIPv6Domain[0]);
@@ -220,8 +226,9 @@
     _netsnmp_udp_sockopt_set(t->sock, local);
 
     if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
         /*
-         * This session is inteneded as a server, so we must bind on to the
+         * This session is intended as a server, so we must bind on to the
          * given IP address, which may include an interface address, or could
          * be INADDR_ANY, but certainly includes a port number.
          */
@@ -255,20 +262,23 @@
         t->local_length = 18;
         t->data = NULL;
         t->data_length = 0;
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     } else {
         /*
          * This is a client session.  Save the address in the
          * transport-specific data pointer for later use by netsnmp_udp6_send.
          */
 
-        t->data = malloc(sizeof(struct sockaddr_in6));
+        t->data = malloc(sizeof(netsnmp_indexed_addr_pair));
         if (t->data == NULL) {
             netsnmp_socketbase_close(t);
             netsnmp_transport_free(t);
             return NULL;
         }
         memcpy(t->data, addr, sizeof(struct sockaddr_in6));
-        t->data_length = sizeof(struct sockaddr_in6);
+        t->data_length = sizeof(netsnmp_indexed_addr_pair);
         t->remote = (unsigned char*)malloc(18);
         if (t->remote == NULL) {
             netsnmp_socketbase_close(t);
@@ -540,7 +550,7 @@
 
                 hints.ai_family = AF_INET6;
                 hints.ai_socktype = SOCK_DGRAM;
-                gai_error = getaddrinfo(source, NULL, &hints, &res);
+                gai_error = netsnmp_getaddrinfo(source, NULL, &hints, &res);
                 if (gai_error != 0) {
                     config_perror(gai_strerror(gai_error));
                     return;
diff --git a/snmplib/transports/snmpUnixDomain.c b/snmplib/transports/snmpUnixDomain.c
index 1bd5ef6..47dffc1 100644
--- a/snmplib/transports/snmpUnixDomain.c
+++ b/snmplib/transports/snmpUnixDomain.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #include <net-snmp/library/snmpUnixDomain.h>
@@ -34,7 +35,10 @@
 #include <net-snmp/library/snmp_transport.h>
 #include <net-snmp/library/snmpSocketBaseDomain.h>
 #include <net-snmp/library/system.h> /* mkdirhier */
+#include <net-snmp/library/tools.h>
 
+netsnmp_feature_child_of(transport_unix_socket_all, transport_all)
+netsnmp_feature_child_of(unix_socket_paths, transport_unix_socket_all)
 
 #ifndef NETSNMP_STREAM_QUEUE_LEN
 #define NETSNMP_STREAM_QUEUE_LEN  5
@@ -259,6 +263,7 @@
 static int create_path = 0;
 static mode_t create_mode;
 
+#ifndef NETSNMP_FEATURE_REMOVE_UNIX_SOCKET_PATHS
 /** If trying to create unix sockets in nonexisting directories then
  *  try to create the directory with mask mode.
  */
@@ -275,6 +280,7 @@
 {
     create_path = 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UNIX_SOCKET_PATHS */
 
 /*
  * Open a Unix-domain transport for SNMP.  Local is TRUE if addr is the local
@@ -290,11 +296,18 @@
     sockaddr_un_pair *sup = NULL;
     int             rc = 0;
 
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    /* SPECIAL CIRCUMSTANCE: We still want AgentX to be able to operate,
+       so we allow for unix domain socktes to still listen when everything
+       else isn't allowed to.  Thus, we ignore this define in this file.
+    */
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
     if (addr == NULL || addr->sun_family != AF_UNIX) {
         return NULL;
     }
 
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
     if (t == NULL) {
         return NULL;
     }
@@ -307,8 +320,6 @@
         free(str);
     }
 
-    memset(t, 0, sizeof(netsnmp_transport));
-
     t->domain = netsnmp_UnixDomain;
     t->domain_length =
         sizeof(netsnmp_UnixDomain) / sizeof(netsnmp_UnixDomain[0]);
diff --git a/snmplib/ucd_compat.c b/snmplib/ucd_compat.c
index bf21be8..64c1e13 100644
--- a/snmplib/ucd_compat.c
+++ b/snmplib/ucd_compat.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/types.h>
 #include <net-snmp/session_api.h>
@@ -11,6 +12,9 @@
 #include <net-snmp/library/mib.h>	/* for OID O/P format enums */
 #include <net-snmp/library/ucd_compat.h>
 
+netsnmp_feature_child_of(ucd_compatibility, libnetsnmp)
+
+#ifndef NETSNMP_FEATURE_REMOVE_UCD_COMPATIBILITY
 /*
  * use <netsnmp_session *)->s_snmp_errno instead 
  */
@@ -221,3 +225,6 @@
 {
   netsnmp_ds_shutdown();
 }
+#else /* !NETSNMP_FEATURE_REMOVE_UCD_COMPATIBILITY */
+netsnmp_feature_unused(ucd_compatibility);
+#endif /* !NETSNMP_FEATURE_REMOVE_UCD_COMPATIBILITY */
diff --git a/snmplib/vacm.c b/snmplib/vacm.c
index 2da1df9..c639785 100644
--- a/snmplib/vacm.c
+++ b/snmplib/vacm.c
@@ -842,6 +842,7 @@
     return gp;
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 void
 vacm_destroyGroupEntry(int securityModel, const char *securityName)
 {
@@ -867,6 +868,7 @@
     free(vp);
     return;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 void
 vacm_destroyAllGroupEntries(void)
@@ -1038,6 +1040,7 @@
     return vp;
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 void
 vacm_destroyAccessEntry(const char *groupName,
                         const char *contextPrefix,
@@ -1069,6 +1072,7 @@
     free(vp);
     return;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 void
 vacm_destroyAllAccessEntries(void)
@@ -1142,12 +1146,14 @@
                                 viewSubtreeLen);
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 void
 vacm_destroyViewEntry(const char *viewName,
                       oid * viewSubtree, size_t viewSubtreeLen)
 {
     netsnmp_view_destroy( &viewList, viewName, viewSubtree, viewSubtreeLen);
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 void
 vacm_destroyAllViewEntries(void)
diff --git a/testing/RUNTESTS b/testing/RUNTESTS
index 69fbae4..4933307 100755
--- a/testing/RUNTESTS
+++ b/testing/RUNTESTS
@@ -12,13 +12,17 @@
 
 # Make sure MinGW / MSYS users have the pskill.exe program to stop the agent and
 # snmptrapd
-if [ "x$OSTYPE" = "xmsys" -a "x`type pskill.exe 2>/dev/null`" = "x" ]; then
-    echo "Could not find pskill.exe. Aborting tests."
-    echo "pskill.exe can be installed as follows:"
-    echo " - Download pskill.exe from http://technet.microsoft.com/en-us/sysinternals/default.aspx."
-    echo " - Copy pskill.exe to C:\\MinGW\\msys\\1.0\\bin."
-    exit 1
-fi 
+if [ "x$OSTYPE" = "xmsys" ]; then
+    for e in pskill.exe pslist.exe; do
+	if [ "x`type $e 2>/dev/null`" = "x" ]; then
+	    echo "Could not find $e. Aborting tests."
+	    echo "$e can be installed as follows:"
+	    echo "- Download PSTools.zip from http://technet.microsoft.com/en-us/sysinternals/default."
+	    echo "- Copy $e to C:\\MinGW\\msys\\1.0\\bin."
+	    exit 1
+	fi
+    done
+fi
 
 success_count=0
 failed_count=0
diff --git a/testing/fulltests/default/Sv3config b/testing/fulltests/default/Sv3config
index 43a7fb2..55df5b4 100644
--- a/testing/fulltests/default/Sv3config
+++ b/testing/fulltests/default/Sv3config
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+SKIPIFNOT NETSNMP_SECMOD_USM
+
 [ "x$SNMP_SMUX_SOCKET" = "x" ] && SNMP_SMUX_SOCKET=1.0.0.0
 
 CONFIGAGENT [snmp] persistentdir $SNMP_TMP_PERSISTENTDIR
diff --git a/testing/fulltests/default/Sv3usmconfigbase b/testing/fulltests/default/Sv3usmconfigbase
index 99bda04..b2e1eb2 100644
--- a/testing/fulltests/default/Sv3usmconfigbase
+++ b/testing/fulltests/default/Sv3usmconfigbase
@@ -22,6 +22,8 @@
 #   TESTPRIVARGS[NOPASS][2]
 #
 
+SKIPIFNOT NETSNMP_SECMOD_USM
+
 ## Defaults
 [ "x$DEFSECURITYLEVEL" = "x" ] && DEFSECURITYLEVEL=authPriv
 
diff --git a/testing/fulltests/default/Sv3vacmconfig b/testing/fulltests/default/Sv3vacmconfig
index 3d7bf95..7c35e36 100644
--- a/testing/fulltests/default/Sv3vacmconfig
+++ b/testing/fulltests/default/Sv3vacmconfig
@@ -10,6 +10,7 @@
 # XXX: do autoselection of supported algorithms
 SKIPIF NETSNMP_DISABLE_MD5
 SKIPIF NETSNMP_DISABLE_DES
+SKIPIFNOT NETSNMP_SECMOD_USM
 
 CONFIGAGENT [snmp] persistentdir $SNMP_TMP_PERSISTENTDIR
 
diff --git a/testing/fulltests/default/Svanyconfig b/testing/fulltests/default/Svanyconfig
index b91eb0f..8cb53dc 100644
--- a/testing/fulltests/default/Svanyconfig
+++ b/testing/fulltests/default/Svanyconfig
@@ -26,4 +26,4 @@
 
 CONFIGAGENT group   testcommunitygroup  $snmp_version     testcommunitysec
 CONFIGAGENT view    all     included .1 80
-CONFIGAGENT "access  testcommunitygroup  "'""'" any noauth exact all $snmp_write_access none"
+CONFIGAGENT "access  testcommunitygroup  '' any noauth exact all $snmp_write_access none"
diff --git a/testing/fulltests/default/T0141snmpv2cset_simple b/testing/fulltests/default/T0141snmpv2cset_simple
new file mode 100644
index 0000000..18d9bae
--- /dev/null
+++ b/testing/fulltests/default/T0141snmpv2cset_simple
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2c set of system.sysContact.0
+
+SKIPIF NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF NETSNMP_NO_WRITE_SUPPORT
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V2C configuration: testcomunnity
+snmp_write_access='all'
+. ./Sv2cconfig
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0"
+
+CHECK ".1.3.6.1.2.1.1.4.0 = STRING:"
+
+CAPTURE "snmpset -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0 s foobartestingbaz"
+
+CHECK ".1.3.6.1.2.1.1.4.0 = STRING:"
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0"
+
+CHECK "STRING: foobartestingbaz"
+
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/default/T016snmpv2cgetfail_simple b/testing/fulltests/default/T016snmpv2cgetfail_simple
index 6e3b814..1cd0e94 100644
--- a/testing/fulltests/default/T016snmpv2cgetfail_simple
+++ b/testing/fulltests/default/T016snmpv2cgetfail_simple
@@ -10,6 +10,7 @@
 
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+SKIPIFNOT USING_MIBII_VACM_CONF_MODULE
 
 #
 # Begin test
diff --git a/testing/fulltests/default/T025snmpv3getSHADES_simple b/testing/fulltests/default/T025snmpv3getSHADES_simple
index a59b69b..d01a4ef 100755
--- a/testing/fulltests/default/T025snmpv3getSHADES_simple
+++ b/testing/fulltests/default/T025snmpv3getSHADES_simple
@@ -17,6 +17,7 @@
 DEFPRIVTYPE="DES"
 . ./Sv3config
 
+AGENT_FLAGS="$AGENT_FLAGS -I-winExtDLL"
 STARTAGENT
 
 CAPTURE "snmpget -On $SNMP_FLAGS $PRIVTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
diff --git a/testing/fulltests/default/T026snmpv3getSHAAES_simple b/testing/fulltests/default/T026snmpv3getSHAAES_simple
index cbfcca7..561cdab 100644
--- a/testing/fulltests/default/T026snmpv3getSHAAES_simple
+++ b/testing/fulltests/default/T026snmpv3getSHAAES_simple
@@ -17,6 +17,7 @@
 DEFAUTHTYPE="SHA"
 . ./Sv3config
 
+AGENT_FLAGS="$AGENT_FLAGS -I-winExtDLL"
 STARTAGENT
 
 CAPTURE "snmpget -On $SNMP_FLAGS $PRIVTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
diff --git a/testing/fulltests/default/T027snmpv3Defaults_simple b/testing/fulltests/default/T027snmpv3Defaults_simple
new file mode 100644
index 0000000..3bbf5e0
--- /dev/null
+++ b/testing/fulltests/default/T027snmpv3Defaults_simple
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 get using default config of .1.3.6.1.2.1.1.3.0
+
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
+SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
+SKIPIFNOT HAVE_AES_CFB128_ENCRYPT
+
+#
+# Begin test
+#
+
+# standard V3 configuration for templateSHA user
+DEFPRIVTYPE="AES"
+DEFAUTHTYPE="SHA"
+. ./Sv3config
+
+STARTAGENT
+
+CONFIGAPP defVersion 3
+CONFIGAPP defPrivType AES
+CONFIGAPP defAuthType SHA
+CONFIGAPP defContext \"\"
+CONFIGAPP defAuthPassPhrase initial_test_pass_auth
+CONFIGAPP defPrivPassPhrase initial_test_pass_auth
+CONFIGAPP defSecurityLevel authPriv
+CONFIGAPP defSecurityName initial
+
+# make sure that the above configuration tokens properly set things up so that
+# no flags are needed
+CAPTURE "snmpget -On $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
diff --git a/testing/fulltests/default/T030snmpv3usercreation_simple b/testing/fulltests/default/T030snmpv3usercreation_simple
index 40e4cac..28eaae8 100644
--- a/testing/fulltests/default/T030snmpv3usercreation_simple
+++ b/testing/fulltests/default/T030snmpv3usercreation_simple
@@ -5,6 +5,7 @@
 HEADER SNMPv3 agent USM user management with snmpusm
 
 SKIPIF NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF NETSNMP_NO_WRITE_SUPPORT
 SKIPIFNOT USING_SNMPV3_USMUSER_MODULE
 SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
 SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
diff --git a/testing/fulltests/default/T035snmpv3trapdusermgmt_simple b/testing/fulltests/default/T035snmpv3trapdusermgmt_simple
index ca33dc9..be7aab6 100644
--- a/testing/fulltests/default/T035snmpv3trapdusermgmt_simple
+++ b/testing/fulltests/default/T035snmpv3trapdusermgmt_simple
@@ -9,7 +9,8 @@
 SKIPIFNOT USING_SNMPV3_USMUSER_MODULE
 SKIPIF    NETSNMP_SNMPTRAPD_DISABLE_AGENTX
 SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
-SKIPIFNOT NETSNMP_USE_OPENSSL
+SKIPIF    NETSNMP_NO_WRITE_SUPPORT
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
 SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
 
 #
diff --git a/testing/fulltests/default/T049snmpv3inform_simple b/testing/fulltests/default/T049snmpv3inform_simple
index 3237efa..99cb5eb 100644
--- a/testing/fulltests/default/T049snmpv3inform_simple
+++ b/testing/fulltests/default/T049snmpv3inform_simple
@@ -2,6 +2,8 @@
 
 . ../support/simple_eval_tools.sh
 
+SKIPIFNOT NETSNMP_SECMOD_USM
+
 DEFSECURITYLEVEL=noAuthNoPriv
 
 HEADER "SNMPv3 informs (noAuthNoPriv) received and sent by tools"
diff --git a/testing/fulltests/default/T049snmpv3informauth_simple b/testing/fulltests/default/T049snmpv3informauth_simple
index d14afba..0f18577 100644
--- a/testing/fulltests/default/T049snmpv3informauth_simple
+++ b/testing/fulltests/default/T049snmpv3informauth_simple
@@ -2,6 +2,8 @@
 
 . ../support/simple_eval_tools.sh
 
+SKIPIFNOT NETSNMP_SECMOD_USM
+
 DEFSECURITYLEVEL=authNoPriv
 
 HEADER "SNMPv3 informs (authNoPriv) received and sent by tools"
diff --git a/testing/fulltests/default/T051snmpv2ctrap_simple b/testing/fulltests/default/T051snmpv2ctrap_simple
index 743171a..8e1be6b 100644
--- a/testing/fulltests/default/T051snmpv2ctrap_simple
+++ b/testing/fulltests/default/T051snmpv2ctrap_simple
@@ -5,6 +5,7 @@
 HEADER SNMPv2c traps received and sent by tools
 
 SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_VACM_CONF_MODULE
 
 #
 # Begin test
diff --git a/testing/fulltests/default/T052snmpv2cinform_simple b/testing/fulltests/default/T052snmpv2cinform_simple
index 77f3a4c..4208df8 100644
--- a/testing/fulltests/default/T052snmpv2cinform_simple
+++ b/testing/fulltests/default/T052snmpv2cinform_simple
@@ -5,6 +5,7 @@
 HEADER SNMPv2c informs received and sent by tools
 
 SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_VACM_CONF_MODULE
 
 #
 # Begin test
diff --git a/testing/fulltests/default/T057trapdauthtest2_simple b/testing/fulltests/default/T057trapdauthtest2_simple
index 073d3c4..6a43989 100644
--- a/testing/fulltests/default/T057trapdauthtest2_simple
+++ b/testing/fulltests/default/T057trapdauthtest2_simple
@@ -2,6 +2,8 @@
 
 . ../support/simple_eval_tools.sh
 
+SKIPIFNOT NETSNMP_SECMOD_USM
+
 HEADER snmptrapd discards of unauthorized notification types 
 
 #
diff --git a/testing/fulltests/default/T057trapdauthtest3_simple b/testing/fulltests/default/T057trapdauthtest3_simple
index 1426b4a..078ef38 100644
--- a/testing/fulltests/default/T057trapdauthtest3_simple
+++ b/testing/fulltests/default/T057trapdauthtest3_simple
@@ -2,6 +2,8 @@
 
 . ../support/simple_eval_tools.sh
 
+SKIPIFNOT NETSNMP_SECMOD_USM
+
 HEADER snmptrapd discards of incorrect view types 
 
 #
diff --git a/testing/fulltests/default/T057trapdauthtest_simple b/testing/fulltests/default/T057trapdauthtest_simple
index e25e39e..4e2fc10 100644
--- a/testing/fulltests/default/T057trapdauthtest_simple
+++ b/testing/fulltests/default/T057trapdauthtest_simple
@@ -2,6 +2,8 @@
 
 . ../support/simple_eval_tools.sh
 
+SKIPIFNOT NETSNMP_SECMOD_USM
+
 HEADER snmptrapd authorization failure of non authorized users
 
 #
diff --git a/testing/fulltests/default/T059trapdtraphandle_simple b/testing/fulltests/default/T059trapdtraphandle_simple
index 2c1f7a6..53d5b90 100755
--- a/testing/fulltests/default/T059trapdtraphandle_simple
+++ b/testing/fulltests/default/T059trapdtraphandle_simple
@@ -19,6 +19,7 @@
 
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 SKIPIFNOT USING_UTILITIES_EXECUTE_MODULE
+SKIPIFNOT HAVE_SIGHUP
 
 #
 # Begin test
diff --git a/testing/fulltests/default/T060trapdperl_simple b/testing/fulltests/default/T060trapdperl_simple
index 7e723bb..70decf4 100755
--- a/testing/fulltests/default/T060trapdperl_simple
+++ b/testing/fulltests/default/T060trapdperl_simple
@@ -7,6 +7,7 @@
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 SKIPIFNOT NETSNMP_EMBEDDED_PERL
 SKIPIFNOT HAVE_SIGHUP
+SKIPIFNOT NETSNMP_SECMOD_USM
 
 #
 # Begin test
diff --git a/testing/fulltests/default/T061agentperl_simple b/testing/fulltests/default/T061agentperl_simple
index 5ebf863..c20a3ff 100755
--- a/testing/fulltests/default/T061agentperl_simple
+++ b/testing/fulltests/default/T061agentperl_simple
@@ -7,6 +7,7 @@
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 SKIPIFNOT NETSNMP_EMBEDDED_PERL
 SKIPIFNOT HAVE_SIGHUP
+SKIPIFNOT NETSNMP_SECMOD_USM
 
 #
 # Begin test
diff --git a/testing/fulltests/default/T065agentextend_simple b/testing/fulltests/default/T065agentextend_simple
index 68c38f9..f419266 100644
--- a/testing/fulltests/default/T065agentextend_simple
+++ b/testing/fulltests/default/T065agentextend_simple
@@ -21,11 +21,10 @@
 # Begin test
 #
 
+index='"hello"'
 if [ "x$OSTYPE" = "xmsys" ]; then
-    index='\"hello\"'
     CONFIGAGENT extend hello $MSYS_SH -c "'" echo hello_world "'"
 else
-    index='"hello"'
     CONFIGAGENT extend hello /usr/bin/env echo hello_world
 fi
 
@@ -33,15 +32,15 @@
 
 # NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello" = STRING: "hello_world"
 CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.8072.1.3.2.3.1.1.$index"
-CHECKORDIE "hello_world"
+CHECKORDIE "STRING: hello_world"
 
 #NET-SNMP-EXTEND-MIB::nsExtendOutputFull."hello" = STRING: "hello_world"
 CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.8072.1.3.2.3.1.2.$index"
-CHECKORDIE "hello_world"
+CHECKORDIE "STRING: hello_world"
 
 #NET-SNMP-EXTEND-MIB::nsExtendOutLine."hello".1 = STRING: "hello_world"
 CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.8072.1.3.2.4.1.2.$index.1"
-CHECKORDIE "hello_world"
+CHECKORDIE "STRING: hello_world"
 
 #NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."hello" = INTEGER: 1
 CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.8072.1.3.2.3.1.3.$index"
diff --git a/testing/fulltests/default/T111agentxset_simple b/testing/fulltests/default/T111agentxset_simple
index c767064..87939bd 100644
--- a/testing/fulltests/default/T111agentxset_simple
+++ b/testing/fulltests/default/T111agentxset_simple
@@ -8,6 +8,7 @@
 SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
 SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
 SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF    NETSNMP_NO_WRITE_SUPPORT
 
 #
 # Begin test
diff --git a/testing/fulltests/default/T112agentxsetfail_simple b/testing/fulltests/default/T112agentxsetfail_simple
index 4f1f0cb..d610b41 100644
--- a/testing/fulltests/default/T112agentxsetfail_simple
+++ b/testing/fulltests/default/T112agentxsetfail_simple
@@ -8,6 +8,7 @@
 SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
 SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
 SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF    NETSNMP_NO_WRITE_SUPPORT
 
 #
 # Begin test
diff --git a/testing/fulltests/default/T113agentxtrap_simple b/testing/fulltests/default/T113agentxtrap_simple
index be2b9be..4fa5e2f 100644
--- a/testing/fulltests/default/T113agentxtrap_simple
+++ b/testing/fulltests/default/T113agentxtrap_simple
@@ -7,6 +7,7 @@
 SKIPIFNOT USING_AGENTX_MASTER_MODULE
 SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
 SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
+SKIPIFNOT NETSNMP_SECMOD_USM
 
 #
 # Begin test
diff --git a/testing/fulltests/default/T114agentxagentxtrap_simple b/testing/fulltests/default/T114agentxagentxtrap_simple
index 380c0ef..58475d0 100644
--- a/testing/fulltests/default/T114agentxagentxtrap_simple
+++ b/testing/fulltests/default/T114agentxagentxtrap_simple
@@ -5,6 +5,7 @@
 HEADER AgentX trap sending support using agentxtrap
 
 SKIPIFNOT USING_AGENTX_MASTER_MODULE
+SKIPIFNOT NETSNMP_SECMOD_USM
 
 #
 # Begin test
@@ -37,7 +38,7 @@
 STOPTRAPD
 
 # Check that the trap was received
-CHECKTRAPD "mostly_harmless"
+CHECKTRAPD "= STRING: \"*mostly_harmless\"*"
 
 # all done (whew)
 FINISHED
diff --git a/testing/fulltests/default/T121proxyset_simple b/testing/fulltests/default/T121proxyset_simple
index c87668c..dd19641 100644
--- a/testing/fulltests/default/T121proxyset_simple
+++ b/testing/fulltests/default/T121proxyset_simple
@@ -8,6 +8,7 @@
 SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
 SKIPIF    NETSNMP_DISABLE_SNMPV2C
 SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF    NETSNMP_NO_WRITE_SUPPORT
 
 # XXX: ucd-snmp/proxy doesn't properly support TCP -- remove this once it does
 [ "x$SNMP_TRANSPORT_SPEC" = "xtcp" -o "x$SNMP_TRANSPORT_SPEC" = "xtcp6" ] && SKIP Test does not support TCP
diff --git a/testing/fulltests/default/T122proxysetfail_simple b/testing/fulltests/default/T122proxysetfail_simple
index 7f57be9..7f27873 100644
--- a/testing/fulltests/default/T122proxysetfail_simple
+++ b/testing/fulltests/default/T122proxysetfail_simple
@@ -8,6 +8,7 @@
 SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
 SKIPIF    NETSNMP_DISABLE_SNMPV2C
 SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF    NETSNMP_NO_WRITE_SUPPORT
 
 # XXX: ucd-snmp/proxy doesn't properly support TCP -- remove this once it does
 [ "x$SNMP_TRANSPORT_SPEC" = "xtcp" ] && SKIP Test does not support TCP
diff --git a/testing/fulltests/default/T130snmpv1vacmget_simple b/testing/fulltests/default/T130snmpv1vacmget_simple
index 1974b7f..80623f4 100644
--- a/testing/fulltests/default/T130snmpv1vacmget_simple
+++ b/testing/fulltests/default/T130snmpv1vacmget_simple
@@ -16,6 +16,7 @@
 snmp_version=v1
 . ./Svacmconfig
 
+AGENT_FLAGS="$AGENT_FLAGS -I-winExtDLL"
 STARTAGENT
 
 CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity1 -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0" 
diff --git a/testing/fulltests/default/T141snmpv2cvacmgetfail_simple b/testing/fulltests/default/T141snmpv2cvacmgetfail_simple
index 5f665ba..cd362aa 100644
--- a/testing/fulltests/default/T141snmpv2cvacmgetfail_simple
+++ b/testing/fulltests/default/T141snmpv2cvacmgetfail_simple
@@ -6,6 +6,8 @@
 
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 SKIPIF NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF NETSNMP_NO_WRITE_SUPPORT
+SKIPIFNOT USING_MIBII_VACM_CONF_MODULE
 
 #
 # Begin test
diff --git a/testing/fulltests/default/T154dismanpingmib_simple b/testing/fulltests/default/T154dismanpingmib_simple
new file mode 100644
index 0000000..45cffe0
--- /dev/null
+++ b/testing/fulltests/default/T154dismanpingmib_simple
@@ -0,0 +1,116 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DISMAN PING MIB
+
+[ "$UID" = 0 ] || SKIP "Not permitted to create raw sockets"
+SKIPIFNOT USING_DISMAN_PING_MIB_MODULE
+SKIPIF NETSNMP_DISABLE_SNMPV1
+
+# SNMPv2-TC
+active=1
+createAndWait=5
+destroy=6
+# DISMAN-PING-MIB
+DISMAN_PING_MIB=.1.3.6.1.2.1.80.1
+pingCtlEntry=${DISMAN_PING_MIB}.2.1
+pingCtlTargetAddressType=${pingCtlEntry}.3
+pingCtlTargetAddresTypeIpv4=1
+pingCtlTargetAddress=${pingCtlEntry}.4
+pingCtlProbeCount=${pingCtlEntry}.7
+pingCtlAdminStatus=${pingCtlEntry}.8
+pingCtlAdminStatusEnabled=1
+pingCtlFrequency=${pingCtlEntry}.10
+pingCtlDescr=${pingCtlEntry}.17
+pingCtlRowStatus=${pingCtlEntry}.23
+pingResultsEntry=${DISMAN_PING_MIB}.3.1
+pingResultsProbeResponses=${pingResultsEntry}.7
+pingResultsSentProbes=${pingResultsEntry}.8
+# Test configuration
+TARGET_ADDRESS=127.0.0.1
+IDXPFX=8.78.101.116.45.83.78.77.80.6.84.49.53.52 # "Net-SNMP"."T154"
+IDXS="${IDXPFX}.95.49 ${IDXPFX}.95.50 ${IDXPFX}.95.51"
+PROBE_COUNT=5
+
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity
+snmp_write_access='all'
+. ./Sv1config
+
+STARTAGENT
+
+for IDX in $IDXS; do
+
+CAPTURE "snmpset -One $SNMP_FLAGS -c testcommunity -v1          \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingCtlRowStatus.$IDX i $destroy"
+
+CHECK "^$pingCtlRowStatus.$IDX = INTEGER: $destroy"
+
+CAPTURE "snmpset -One $SNMP_FLAGS -c testcommunity -v1          \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingCtlRowStatus.$IDX i $createAndWait"
+
+CHECK "^$pingCtlRowStatus.$IDX = INTEGER: $createAndWait"
+
+CAPTURE "snmpset -One $SNMP_FLAGS -c testcommunity -v1                   \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT           \
+         $pingCtlTargetAddressType.$IDX i $pingCtlTargetAddresTypeIpv4  \
+         $pingCtlTargetAddress.$IDX s $TARGET_ADDRESS                   \
+         $pingCtlFrequency.$IDX u 1                                     \
+         $pingCtlDescr.$IDX s ScriptGenerated                           \
+         $pingCtlProbeCount.$IDX u ${PROBE_COUNT}                       \
+         $pingCtlAdminStatus.$IDX i $pingCtlAdminStatusEnabled"
+
+CHECK "^$pingCtlAdminStatus.$IDX = INTEGER: $pingCtlAdminStatusEnabled"
+
+CAPTURE "snmpset -One $SNMP_FLAGS -c testcommunity -v1          \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingCtlRowStatus.$IDX i $active"
+
+CHECK "^$pingCtlRowStatus.$IDX = INTEGER: $active"
+
+done
+
+sleep ${PROBE_COUNT}
+sleep 2
+
+for IDX in $IDXS; do
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v1           \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingResultsSentProbes.$IDX"
+
+CHECK "^$pingResultsSentProbes.$IDX = Gauge32: ${PROBE_COUNT}"
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v1           \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingResultsProbeResponses.$IDX"
+
+CHECK "^$pingResultsProbeResponses.$IDX = Gauge32: ${PROBE_COUNT}"
+
+done
+
+# Delete first row and leave the remaining rows in the table.
+
+for IDX in $IDXS; do
+
+CAPTURE "snmpset -One $SNMP_FLAGS -c testcommunity -v1          \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingCtlRowStatus.$IDX i $destroy"
+
+CHECK "^$pingCtlRowStatus.$IDX = INTEGER: $destroy"
+
+break
+
+done
+
+STOPAGENT
+
+
+FINISHED
diff --git a/testing/fulltests/default/T161snmpTargetAddr_simple b/testing/fulltests/default/T161snmpTargetAddr_simple
index c7caa6a..00e094e 100644
--- a/testing/fulltests/default/T161snmpTargetAddr_simple
+++ b/testing/fulltests/default/T161snmpTargetAddr_simple
@@ -32,11 +32,24 @@
 
 CHECKORDIE "noCreation"
 
+# Create an entry with index 'B\0A'
+CAPTURE "snmpset -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.9.66.0.65 i 5"
+
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.9.66.0.65 = INTEGER: 5"
+
+# Check that the table contains the 'B\0A' entry and no other
+CAPTURE "snmpwalk -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.9"
+
+CHECK "^.1.3.6.1.6.3.12.1.2.1.9"
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.9.66.0.65 ="
+
+# Delete an entry with index 'B\0A'
+CAPTURE "snmpset -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.9.66.0.65 i 6"
+
 # Create an entry with index 'A'
 CAPTURE "snmpset -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.9.65 i 5"
 
 CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.9.65 = INTEGER: 5"
-CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.9.65 ="
 
 # Check that the table contains one and only one entry
 CAPTURE "snmpwalk -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.9"
diff --git a/testing/fulltests/read-only/T0141snmpv2csetfail_simple b/testing/fulltests/read-only/T0141snmpv2csetfail_simple
new file mode 100644
index 0000000..9705f49
--- /dev/null
+++ b/testing/fulltests/read-only/T0141snmpv2csetfail_simple
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2c set failure to system.sysContact.0
+
+SKIPIFNOT NETSNMP_NO_WRITE_SUPPORT
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V2C configuration: testcomunnity
+snmp_write_access='all'
+(cd ../default ; . ./Sv2cconfig)
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0"
+
+CHECK ".1.3.6.1.2.1.1.4.0 = STRING:"
+
+CAPTURE "snmpset -r 0 -t 1 -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0 s foobartestingbaz"
+
+CHECK "Timeout: No Response"
+
+STOPAGENT
+
+CHECKAGENT 'Bad PDU type received'
+
+FINISHED
diff --git a/testing/fulltests/snmpv3/T040keymanagetest_capp.c b/testing/fulltests/snmpv3/T040keymanagetest_capp.c
index 3e0fd58..d68f663 100644
--- a/testing/fulltests/snmpv3/T040keymanagetest_capp.c
+++ b/testing/fulltests/snmpv3/T040keymanagetest_capp.c
@@ -401,9 +401,7 @@
         fprintf(stdout, "# engineID%s (len=%d):  %s\n",
                 (isdefault) ? " (default)" : "",
                 engineID_len, ((s != 0) ? ((u_char *) s) : engineID));
-    if (s) {
-        SNMP_FREE(s);
-    }
+    SNMP_FREE(s);
 
 
 
diff --git a/testing/fulltests/support/simple_TESTCONF.sh b/testing/fulltests/support/simple_TESTCONF.sh
index 5d1dc50..2a0a8af 100644
--- a/testing/fulltests/support/simple_TESTCONF.sh
+++ b/testing/fulltests/support/simple_TESTCONF.sh
@@ -7,6 +7,28 @@
 #  *SNMP_PERSISTENT_FILE: where to store the agent's persistent information
 #                         (XXX: this should be specific to just the agent)
 
+# MinGW/MSYS only: translate an MSYS path back into a DOS path such that snmpd
+# and the Net-SNMP applications can understand it. One of the features of MSYS
+# is that if a POSIX-style path is passed as a command-line argument to an
+# executable that MSYS translates that path to a DOS-style path before
+# starting the executable. This is a key feature of MSYS that makes it
+# possible to run shell scripts unmodified and at the same time to use
+# executables that accept DOS-style paths. There is no support however for
+# automatical translation of environment variables that contain paths. Hence
+# this function that translates paths explicitly.
+translate_path() {
+  if [ "$OSTYPE" = msys ]; then
+    local t=`set \
+             | sed -n -e "s/^$1='\(.*\)'$/${SNMP_ENV_SEPARATOR}\1/p" \
+                      -e "s/^$1=\(.*\)$/${SNMP_ENV_SEPARATOR}\1/p" \
+             | sed -e "s|${SNMP_ENV_SEPARATOR}/c/|${SNMP_ENV_SEPARATOR}c:/|g" \
+                   -e "s|${SNMP_ENV_SEPARATOR}/tmp/|${SNMP_ENV_SEPARATOR}c:/windows/temp/|g" \
+             | sed -e "s/^${SNMP_ENV_SEPARATOR}//" \
+            `
+    eval "$1='$t'"
+  fi
+}
+
 #
 # Only allow ourselves to be eval'ed once
 #
@@ -48,6 +70,8 @@
     export SNMP_VERBOSE
 fi
 
+SNMP_ENV_SEPARATOR="`${builddir}/net-snmp-config --env-separator`"
+
 if [ "x$MIBDIRS" = "x" ]; then
   if [ "x$SNMP_PREFER_NEAR_MIBS" = "x1" ]; then
     MIBDIRS=${srcdir}/mibs
@@ -103,6 +127,7 @@
         testnum=0
     fi
     SNMP_TMPDIR="/tmp/snmp-test-$testnum-$$"
+    translate_path SNMP_TMPDIR
     export SNMP_TMPDIR
     if [ -d $SNMP_TMPDIR ]; then
 	echo "$0: ERROR: $SNMP_TMPDIR already existed."
@@ -110,7 +135,7 @@
     fi
   fi
   if [ ! -d $SNMP_TMPDIR ]; then
-    mkdir $SNMP_TMPDIR
+    mkdir -p $SNMP_TMPDIR
     chmod 0700 $SNMP_TMPDIR
   fi
   if [ "x$SNMP_TMP_PERSISTENTDIR" = "x" ]; then
@@ -130,7 +155,6 @@
 
 SNMP_IGNORE_WINDOWS_REGISTRY="true"
 export SNMP_IGNORE_WINDOWS_REGISTRY
-SNMP_ENV_SEPARATOR="`${builddir}/net-snmp-config --env-separator`"
 SNMP_PERLPROG="`${builddir}/net-snmp-config --perlprog`"
 SNMP_TESTDIR="$SNMP_BASEDIR/tests"
 SNMP_CONFIG_FILE="$SNMP_TMPDIR/snmpd.conf"
@@ -144,8 +168,10 @@
 SNMP_AGENTX_PID_FILE="$SNMP_TMPDIR/agentx.pid"
 SNMP_AGENTX_LOG_FILE="$SNMP_TMPDIR/agentx.log"
 SNMPCONFPATH="${SNMP_TMPDIR}${SNMP_ENV_SEPARATOR}${SNMP_TMP_PERSISTENTDIR}"
+translate_path SNMPCONFPATH
 export SNMPCONFPATH
 SNMP_PERSISTENT_DIR=$SNMP_TMP_PERSISTENTDIR
+translate_path SNMP_PERSISTENT_DIR
 export SNMP_PERSISTENT_DIR
 #SNMP_PERSISTENT_FILE="$SNMP_TMP_PERSISTENTDIR/persistent-store.conf"
 #export SNMP_PERSISTENT_FILE
@@ -175,8 +201,12 @@
 fi
 
 if [ "x$OSTYPE" = "xmsys" ]; then
-    # To do: make configure find out the path of MSYS' sh.exe.
-    MSYS_SH="c:/msys/1.0/bin/sh.exe"
+    # Obtain the MSYS installation path from the !C: environment variable,
+    # remove surrounding single quotes and convert backslashes into forward
+    # slashes.
+    MSYS_PATH="$(set \
+                 | sed -n 's|^\!C:='"'"'\(.*\)'"'"'$|\1|p' | sed 's|\\|/|g')"
+    MSYS_SH="$MSYS_PATH/sh.exe"
 fi
 
 PROBE_FOR_PORT() {
diff --git a/testing/fulltests/support/simple_eval_tools.sh b/testing/fulltests/support/simple_eval_tools.sh
index 2df2c95..718edc4 100644
--- a/testing/fulltests/support/simple_eval_tools.sh
+++ b/testing/fulltests/support/simple_eval_tools.sh
@@ -68,8 +68,8 @@
 }
 
 CAN_USLEEP() {
-   if [ "$SNMP_CAN_USLEEP" = 0 -o "$SNMP_CAN_USLEEP" = 0 ] ; then
-     return $SNMP_CAN_USLEEP
+   if [ "$SNMP_CAN_USLEEP" = 0 -o "$SNMP_CAN_USLEEP" = 1 ] ; then
+     return 0
    fi
    sleep .1 > /dev/null 2>&1
    if [ $? = 0 ] ; then
@@ -134,7 +134,7 @@
 	missingfiles=""
 
 	for f in $*; do
-		[ -e "$f" ] && continue
+		[ -f "$f" ] && continue
 		echo "FAILED: Cannot find file \"$f\"."
 		missingfiles=true
 	done
@@ -151,7 +151,7 @@
 #
 STARTTEST() {
         NEWOUTPUTFILE
-	[ ! -e "$junkoutputfile" ] && {
+	[ ! -f "$junkoutputfile" ] && {
 		touch $junkoutputfile
 		return
 	}
@@ -286,7 +286,7 @@
     shift
     shift
     if [ $SNMP_VERBOSE -gt 0 ]; then
-	echo -n "checking output for \"$*\"..."
+	echo -n "checking $chkfile for $ckfcount \"$*\"..."
     fi
 
     if [ -f $chkfile ]; then
@@ -356,85 +356,83 @@
     CHECKFILECOUNT $SNMP_SNMPD_LOG_FILE $count $@
 }
 
-WAITFORAGENTSHUTTINGDOWN() {
-    if [ "x$OSTYPE" != "xmsys" ]; then
-        WAITFORAGENT "shutting down"
+# Return 0 (true) if a process with pid $1 exists and 1 (false) if no process
+# with pid $1 exists.
+ISRUNNING() {
+    if [ "x$OSTYPE" = "xmsys" ]; then
+	pslist.exe "$1" 2>&1 | while read name pspid rest; do
+	    if [ "$1" = "$pspid" ]; then
+		return 0
+	    fi
+	done
+	return 1
     else
-	CAN_USLEEP
-	if [ $SNMP_CAN_USLEEP = 1 ] ; then
-	  sleeptime=`expr $SNMP_SLEEP '*' 50`
-	else 
-	  sleeptime=`expr $SNMP_SLEEP '*' 5`
-	fi
-        snmpd_pid=`cat $SNMP_SNMPD_PID_FILE`
-        while [ $sleeptime -gt 0 ] && kill -0 "$snmpd_pid" 2>/dev/null; do
-            if [ $SNMP_CAN_USLEEP = 1 ]; then
-                sleep .1
-            else
-                sleep 1
-            fi
-            sleeptime=`expr $sleeptime - 1`
-        done
+        kill -0 "$1" 2>/dev/null
     fi
 }
 
+# Echo a command that asks the process with pid $1 to stop.
+ECHOSENDSIGTERM() {
+    if [ "x$OSTYPE" = "xmsys" ]; then
+        echo pskill.exe $1
+    else
+        echo kill -TERM $1
+    fi
+}
+
+# Echo a command that stops the process with pid $1 forcibly.
+ECHOSENDSIGKILL() {
+    if [ "x$OSTYPE" = "xmsys" ]; then
+        echo pskill.exe $1
+    else
+        echo kill -KILL $1
+    fi
+}
+
+# Wait until the shell statement "$@" evaluates to false.
+WAITFORNOTCOND() {
+    CAN_USLEEP
+    if [ $SNMP_CAN_USLEEP = 1 ] ; then
+        sleeptime=`expr $SNMP_SLEEP '*' 50`
+    else 
+        sleeptime=`expr $SNMP_SLEEP '*' 5`
+    fi
+    while [ $sleeptime -gt 0 ] && eval "$@"; do
+        if [ $SNMP_CAN_USLEEP = 1 ]; then
+            sleep .1
+        else
+            sleep 1
+        fi
+        sleeptime=`expr $sleeptime - 1`
+    done
+}
+
+# Wait until the shell statement "$@" evaluates to true.
+WAITFORCOND() {
+    WAITFORNOTCOND if "$@;" then false ";" else true ";" fi
+}
+
 WAITFORAGENT() {
     WAITFOR "$@" $SNMP_SNMPD_LOG_FILE
+    if [ $SNMP_CAN_USLEEP = 1 ]; then
+        sleep .1
+    else
+        sleep 1
+    fi
 }
 
 WAITFORTRAPD() {
     WAITFOR "$@" $SNMP_SNMPTRAPD_LOG_FILE
+    if [ $SNMP_CAN_USLEEP = 1 ]; then
+        sleep .1
+    else
+        sleep 1
+    fi
 }
 
+# Wait until pattern "$1" appears in file "$2".
 WAITFOR() {
-  ## save the previous save state and test result
-    save_state=$OK_TO_SAVE_RESULT
-    save_test=$snmp_last_test_result
-    OK_TO_SAVE_RESULT=0
-
-    sleeptime=$SNMP_SLEEP
-    oldsleeptime=$SNMP_SLEEP
-    if [ "$1" != "" ] ; then
-	CAN_USLEEP
-	if [ $SNMP_CAN_USLEEP = 1 ] ; then
-	  sleeptime=`expr $SNMP_SLEEP '*' 50`
-          SNMP_SLEEP=.1
-	else 
-	  sleeptime=`expr $SNMP_SLEEP '*' 5`
-	  SNMP_SLEEP=1
-	fi
-        while [ $sleeptime -gt 0 ] ; do
-	  if [ "$2" = "" ] ; then
-            CHECKCOUNT noerror "$@"
-          else
-	    CHECKFILECOUNT "$2" noerror "$1"
-	  fi
-          if [ "$snmp_last_test_result" != "" ] ; then
-              if [ "$snmp_last_test_result" -gt 0 ] ; then
-	         break;
-              fi
-	  fi
-          DELAY
-          sleeptime=`expr $sleeptime - 1`
-        done
-
-	# the above multi-check/sleep doesn't report errors out of TAP
-        # this final check will report only 1 
-	if [ "$2" = "" ] ; then
-          CHECKCOUNT atleastone "$@"
-        else
-	  CHECKFILECOUNT "$2" atleastone "$1"
-	fi
-        SNMP_SLEEP=$oldsleeptime
-    else
-        if [ $SNMP_SLEEP -ne 0 ] ; then
-	    sleep $SNMP_SLEEP
-        fi
-    fi
-
-  ## restore the previous save state and test result
-    OK_TO_SAVE_RESULT=$save_state
-    snmp_last_test_result=$save_test
+    WAITFORCOND grep "$1" "$2" ">/dev/null" "2>&1"
 }
 
 GOOD() {
@@ -455,16 +453,6 @@
     echo "# $@" >> $SNMP_TMPDIR/invoked
 }
 
-# WAITFORORDIE "grep string" ["file"]
-WAITFORORDIE() {
-    WAITFOR "$1" "$2"
-    if [ "$snmp_last_test_result" != 0 ] ; then
-        BAD
-        FINISHED
-    fi
-    GOOD
-}
-
 # CHECKORDIE "grep string" ["file"] .. FAIL if "grep string" is *not* found
 CHECKORDIE() {
     if [ "x$2" = "x" ]; then
@@ -520,7 +508,6 @@
 #
 # common to STARTAGENT and STARTTRAPD
 # log command to "invoked" file
-# delay after command to allow for settle
 #
 STARTPROG() {
     if [ "x$DYNAMIC_ANALYZER" != "x" ]; then
@@ -568,7 +555,8 @@
         PORT_SPEC="${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${PORT_SPEC}"
     fi
     STARTPROG
-    WAITFORAGENT "NET-SNMP version"
+    WAITFORCOND test -f $SNMP_SNMPD_PID_FILE
+    WAITFORAGENT "NET-SNMP.version"
 }
 
 #------------------------------------ -o-
@@ -582,7 +570,8 @@
         PORT_SPEC="${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${PORT_SPEC}"
     fi
     STARTPROG
-    WAITFORTRAPD "NET-SNMP version"
+    WAITFORCOND test -f $SNMP_SNMPTRAPD_PID_FILE
+    WAITFORTRAPD "NET-SNMP.version"
 }
 
 ## sending SIGHUP for reconfiguration
@@ -595,6 +584,7 @@
           COMMAND="kill -HUP `cat $1`"
         fi
 	echo $COMMAND >> $SNMP_TMPDIR/invoked
+	VERBOSE_OUT 0 $COMMAND
 	$COMMAND > /dev/null 2>&1
     fi
 }
@@ -619,14 +609,13 @@
 #    this is especially important for interaction between
 #    master agent and sub agent.
 STOPPROG() {
-    if [ -f $1 ]; then
-        if [ "x$OSTYPE" = "xmsys" ]; then
-          COMMAND="pskill.exe `cat $1`"
-        else
-          COMMAND="kill -TERM `cat $1`"
-        fi
-	echo $COMMAND >> $SNMP_TMPDIR/invoked
-	$COMMAND > /dev/null 2>&1
+    pid="`cat $1 2>/dev/null`"
+    if [ "x$pid" != "x" ]; then
+	COMMAND="`ECHOSENDSIGTERM $pid`"
+	echo "$COMMAND ($1)" >> $SNMP_TMPDIR/invoked
+	VERBOSE_OUT 0 "$COMMAND ($1)"
+        $COMMAND >/dev/null 2>&1
+        WAITFORNOTCOND "ISRUNNING $pid"
     fi
 }
 
@@ -635,7 +624,6 @@
 STOPAGENT() {
     SAVE_RESULTS
     STOPPROG $SNMP_SNMPD_PID_FILE
-    WAITFORAGENTSHUTTINGDOWN
     if [ $SNMP_VERBOSE -gt 1 ]; then
 	echo "Agent Output:"
 	echo "$separator [stdout]"
@@ -651,9 +639,6 @@
 STOPTRAPD() {
     SAVE_RESULTS
     STOPPROG $SNMP_SNMPTRAPD_PID_FILE
-    if [ "x$OSTYPE" != "xmsys" ]; then
-        WAITFORTRAPD "Stopped"
-    fi
     if [ $SNMP_VERBOSE -gt 1 ]; then
 	echo "snmptrapd Output:"
 	echo "$separator [stdout]"
@@ -671,33 +656,19 @@
     ## no more changes to test result.
     OK_TO_SAVE_RESULT=0
 
+    pids="`cat $SNMP_TMPDIR/*pid* 2>/dev/null`"
     if [ "$SNMPDSTARTED" = "1" ] ; then
       STOPAGENT
     fi
     if [ "$TRAPDSTARTED" = "1" ] ; then
       STOPTRAPD
     fi
-    for pfile in $SNMP_TMPDIR/*pid* ; do
-        if [ "x$pfile" = "x$SNMP_TMPDIR/*pid*" ]; then
-            BAD "(no pid file(s) found) "
-            break
-        fi
-        if [ ! -f $pfile ]; then
-            BAD "('$pfile' disappeared) "
-            continue
-        fi
-	pid=`cat $pfile`
-        # When not running on MinGW, check whether snmpd is still running.
-        if [ "x$OSTYPE" = "xmsys" ] || { ps -e 2>/dev/null | egrep "^[	 ]*$pid[	 ]+" > /dev/null 2>&1; }; then
-            if [ "x$OSTYPE" != "xmsys" ]; then
-                SNMP_SAVE_TMPDIR=yes
-            fi
-            if [ "x$OSTYPE" = "xmsys" ]; then
-              COMMAND="pskill.exe $pid"
-            else
-              COMMAND="kill -9 $pid"
-            fi
-	    echo $COMMAND "($pfile)" >> $SNMP_TMPDIR/invoked
+    for pid in $pids; do
+        if ISRUNNING $pid; then
+	    SNMP_SAVE_TMPDIR=yes
+	    COMMAND="`ECHOSENDSIGKILL $pid`"
+	    echo "$COMMAND ($pfile)" >> $SNMP_TMPDIR/invoked
+	    VERBOSE_OUT 0 "$COMMAND ($pfile)"
 	    $COMMAND > /dev/null 2>&1
 	    return_value=1
 	fi
@@ -728,7 +699,7 @@
 #------------------------------------ -o-
 #
 VERBOSE_OUT() {
-    if [ $SNMP_VERBOSE > $1 ]; then
+    if [ $SNMP_VERBOSE -gt $1 ]; then
 	shift
 	echo "$*"
     fi
diff --git a/testing/fulltests/support/simple_run b/testing/fulltests/support/simple_run
index eb37e96..1978009 100755
--- a/testing/fulltests/support/simple_run
+++ b/testing/fulltests/support/simple_run
@@ -11,7 +11,8 @@
     if cd testing 2>/dev/null; then
        :
     else
-       echo "Error: $0 must be started from inside the testing directory."
+       echo "Error: $0 must be started from inside the testing directory in the source tree."
+       echo "The builddir environment variable can be set to point to the build directory."
        exit 1
     fi
 fi
@@ -24,7 +25,8 @@
     if cd testing 2>/dev/null; then
        :
     else
-       echo "Error: $0 must be started from inside the testing directory."
+       echo "Error: $0 must be started from inside the testing directory in the source tree."
+       echo "The builddir environment variable can be set to point to the build directory."
        exit 1
     fi
 fi
@@ -47,7 +49,12 @@
 export SNMP_ORIGDIR
 
 SNMP_UPDIR=${builddir}          ## build directory
-SNMP_SLEEP=${SNMP_SLEEP:=1} 	## default seconds to sleep
+if [ "x$DYNAMIC_ANALYZER" = "x" ]; then
+    SNMP_SLEEP_DEFAULT=1
+else
+    SNMP_SLEEP_DEFAULT=10
+fi
+SNMP_SLEEP=${SNMP_SLEEP:=$SNMP_SLEEP_DEFAULT} 	## default seconds to sleep
 export SNMP_SLEEP
 
 # Find executables in source first, then build, then existing PATH.
diff --git a/testing/fulltests/unit-tests/T004snmp_enum_clib.c b/testing/fulltests/unit-tests/T004snmp_enum_clib.c
index 72ee5c9..d28b19b 100644
--- a/testing/fulltests/unit-tests/T004snmp_enum_clib.c
+++ b/testing/fulltests/unit-tests/T004snmp_enum_clib.c
@@ -87,10 +87,10 @@
 OK(se_find_list(2, 3), "list (2, 3) should be present");
 if (se_find_list(2, 3)) {
   OK(se_find_value(2, 3, "kiwifruit") == 3,
-     "lookup by string should return the proper value")
+     "lookup by string should return the proper value");
   se_find_result = se_find_label(2, 3, 2);
   OK(se_find_result && strcmp(se_find_result, "pear") == 0,
-     "lookup by label should return the proper string")
+     "lookup by label should return the proper string");
 }
 
 se_read_conf("enum",
diff --git a/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c b/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c
index f906c55..cac940e 100644
--- a/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c
+++ b/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c
@@ -15,6 +15,7 @@
 int32_t ival;
 int32_t i, j;
 
+init_agent("snmpd");
 init_snmp("snmpd");
 
 tds = netsnmp_create_table_data_set("table_dataset unit-test");
@@ -52,5 +53,6 @@
 netsnmp_delete_table_data_set(tds);
 
 snmp_shutdown("snmpd");
+shutdown_agent();
 
 OK(TRUE, "done");
diff --git a/testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c b/testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c
index aef42d1..ed7ae68 100644
--- a/testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c
+++ b/testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c
@@ -1,24 +1,41 @@
 /* HEADER Testing SNMP handler registration */
 
 static oid Oid[] = { 1, 3, 6, 1, 3, 327 }; /* experimental.327 */
-netsnmp_handler_registration *handler;
-netsnmp_mib_handler *dh = NULL;
+netsnmp_handler_registration *handler, *handler2;
+netsnmp_mib_handler *dh;
+netsnmp_cache *nc, *nc2;
 
 init_snmp("snmp");
 
 handler = netsnmp_create_handler_registration("experimental.327", NULL,
 	Oid, OID_LENGTH(Oid), HANDLER_CAN_RWRITE);
 OK(handler != NULL, "Handler creation.");
-handler->handler->myvoid = malloc(329);
-handler->handler->data_free = free;
+
+nc = netsnmp_cache_create(10, NULL, NULL, Oid, OID_LENGTH(Oid));
+OK(nc, "netsnmp_cache allocation");
+OK(snmp_oid_compare(nc->rootoid, nc->rootoid_len, Oid, OID_LENGTH(Oid)) == 0,
+   "Handler private OID.");
+
+handler->handler->myvoid = nc;
+netsnmp_cache_handler_owns_cache(handler->handler);
+
+nc2 = handler->handler->myvoid;
+OK(nc2, "Handler private data");
+OK(snmp_oid_compare(nc2->rootoid, nc2->rootoid_len, Oid, OID_LENGTH(Oid)) == 0,
+   "Handler private OID.");
 
 OK(netsnmp_register_instance(handler) == MIB_REGISTERED_OK,
    "MIB registration.");
 
-#if 0
+handler2 = netsnmp_create_handler_registration("experimental.327", NULL,
+        Oid, OID_LENGTH(Oid), HANDLER_CAN_RWRITE);
+OK(handler2 != NULL, "Second registration");
+
+OK(netsnmp_register_instance(handler2) == MIB_DUPLICATE_REGISTRATION,
+   "Duplicate MIB registration.");
+
 dh = netsnmp_handler_dup(handler->handler);
 OK(dh, "Handler duplication.");
-#endif
 
 OK(netsnmp_unregister_handler(handler) == SNMPERR_SUCCESS,
    "Handler unregistration.");
diff --git a/testing/fulltests/unit-tests/T010netsnmp_string_time_to_secs_clib.c b/testing/fulltests/unit-tests/T010netsnmp_string_time_to_secs_clib.c
new file mode 100644
index 0000000..e31aeeb
--- /dev/null
+++ b/testing/fulltests/unit-tests/T010netsnmp_string_time_to_secs_clib.c
@@ -0,0 +1,45 @@
+/* HEADER Testing the netsnmp_string_time_to_secs API */
+int secs;
+
+#define TESTIT(x,y) \
+    OKF(y == (secs = netsnmp_string_time_to_secs(x)), \
+        ("netsnmp_string_time_to_secs of %s returned %d, not 5", x, secs))
+
+TESTIT("5", 5);
+TESTIT("5", 5);
+
+TESTIT("5s", 5);
+TESTIT("5S", 5);
+
+TESTIT("5m", 5 * 60);
+TESTIT("5M", 5 * 60);
+
+TESTIT("5h", 5 * 60 * 60);
+TESTIT("5H", 5 * 60 * 60);
+
+TESTIT("5d", 5 * 60 * 60 * 24);
+TESTIT("5D", 5 * 60 * 60 * 24);
+
+TESTIT("5w", 5 * 60 * 60 * 24 * 7);
+TESTIT("5W", 5 * 60 * 60 * 24 * 7);
+
+/* now with longer times */
+TESTIT("1234", 1234);
+TESTIT("1234", 1234);
+
+TESTIT("1234s", 1234);
+TESTIT("1234S", 1234);
+
+TESTIT("1234m", 1234 * 60);
+TESTIT("1234M", 1234 * 60);
+
+TESTIT("1234h", 1234 * 60 * 60);
+TESTIT("1234H", 1234 * 60 * 60);
+
+TESTIT("1234d", 1234 * 60 * 60 * 24);
+TESTIT("1234D", 1234 * 60 * 60 * 24);
+
+TESTIT("1234w", 1234 * 60 * 60 * 24 * 7);
+TESTIT("1234W", 1234 * 60 * 60 * 24 * 7);
+
+
diff --git a/testing/fulltests/unit-tests/T011snmp_old_api_registration_cagentlib.c b/testing/fulltests/unit-tests/T011snmp_old_api_registration_cagentlib.c
new file mode 100644
index 0000000..6f1d449
--- /dev/null
+++ b/testing/fulltests/unit-tests/T011snmp_old_api_registration_cagentlib.c
@@ -0,0 +1,46 @@
+/* HEADER Testing SNMP handler registration via the old API */
+
+static oid Oid[] = { 1, 3, 6, 1, 3, 327 }; /* experimental.327 */
+struct variable var_array[] = {
+    { 0, 0/*type*/, 0/*acl*/, NULL/*findVar*/, 7, { 1, 3, 6, 1, 3, 327, 1 } },
+    { 0, 0/*type*/, 0/*acl*/, NULL/*findVar*/, 7, { 1, 3, 6, 1, 3, 327, 2 } },
+    { 0, 0/*type*/, 0/*acl*/, NULL/*findVar*/, 7, { 1, 3, 6, 1, 3, 327, 3 } },
+};
+netsnmp_session *sess;
+int res;
+
+init_snmp("snmp");
+
+sess = calloc(1, sizeof(*sess));
+snmp_sess_init(sess);
+
+res = 
+netsnmp_register_old_api("exp.327.a",
+                         var_array,
+                         sizeof(var_array[0]),
+                         sizeof(var_array)/sizeof(var_array[0]),
+                         Oid,
+                         sizeof(Oid)/sizeof(Oid[0]),
+                         2, /* priority */
+                         0, /* range_subid */
+                         0, /* range_ubound */
+                         sess,
+                         "context", 5/*timeout*/, 0/*flags - ignored*/);
+OK(res == SNMPERR_SUCCESS, "Handler registration (1).");
+
+/* Verify that duplicate registration does not cause any havoc. */
+res = 
+netsnmp_register_old_api("exp.327.b",
+                         var_array,
+                         sizeof(var_array[0]),
+                         sizeof(var_array)/sizeof(var_array[0]),
+                         Oid,
+                         sizeof(Oid)/sizeof(Oid[0]),
+                         2, /* priority */
+                         0, /* range_subid */
+                         0, /* range_ubound */
+                         sess,
+                         "context", 5/*timeout*/, 0/*flags - ignored*/);
+OK(res == SNMPERR_SUCCESS, "Handler registration (2).");
+
+snmp_shutdown("snmp");
diff --git a/testing/fulltests/unit-tests/T012binary_array_oid_clib.c b/testing/fulltests/unit-tests/T012binary_array_oid_clib.c
new file mode 100644
index 0000000..aeeb502
--- /dev/null
+++ b/testing/fulltests/unit-tests/T012binary_array_oid_clib.c
@@ -0,0 +1,72 @@
+/* HEADER Testing binary OID array */
+
+static const char test_name[] = "binary-array-of-OIDs-test";
+oid o1 = 1;
+oid o2 = 2;
+oid o3 = 6;
+oid o4 = 8;
+oid o5 = 9;
+oid ox = 7;
+oid oy = 10;
+netsnmp_index i1, i2, i3, i4, i5, ix, iy, *ip;
+const netsnmp_index *const i_last = &i5;
+netsnmp_index *a[] = { &ix, &iy };
+netsnmp_index *b[] = { &i4, &i2, &i3, &i1, &i5 };
+netsnmp_container *c;
+int i;
+
+init_snmp(test_name);
+
+c = netsnmp_container_get_binary_array();
+c->compare = netsnmp_compare_netsnmp_index;
+    
+i1.oids = &o1;
+i2.oids = &o2;
+i3.oids = &o3;
+i4.oids = &o4;
+i5.oids = &o5;
+ix.oids = &ox;
+iy.oids = &oy;
+i1.len = i2.len = i3.len = i4.len = i5.len = ix.len = iy.len = 1;
+
+for (i = 0; i < sizeof(b)/sizeof(b[0]); ++i)
+    CONTAINER_INSERT(c, b[i]);
+
+for (ip = CONTAINER_FIRST(c); ip; ip = CONTAINER_NEXT(c, ip)) {
+    for (i = sizeof(b)/sizeof(b[0]) - 1; i >= 0; --i)
+        if (c->compare(ip, b[i]) == 0)
+            break;
+    OKF(i >= 0, ("OID b[%d] = %" NETSNMP_PRIo "d present", i, b[i]->oids[0]));
+}
+
+for (i = 0; i < sizeof(b)/sizeof(b[0]); ++i) {
+    ip = CONTAINER_FIND(c, b[i]);
+    OKF(ip, ("Value b[%d] = %" NETSNMP_PRIo "d present", i, b[i]->oids[0]));
+    ip = CONTAINER_NEXT(c, b[i]);
+    if (c->compare(b[i], i_last) < 0)
+        OKF(ip && c->compare(b[i], ip) < 0,
+            ("Successor of b[%d] = %" NETSNMP_PRIo "d is %" NETSNMP_PRIo "d",
+             i, b[i]->oids[0], ip->oids[0]));
+    else
+        OKF(!ip, ("No successor found for b[%d] = %" NETSNMP_PRIo "d", i,
+                  b[i]->oids[0]));
+}
+
+for (i = 0; i < sizeof(a)/sizeof(a[0]); ++i) {
+    ip = CONTAINER_FIND(c, a[i]);
+    OKF(!ip, ("a[%d] = %" NETSNMP_PRIo "d absent", i, a[i]->oids[0]));
+    ip = CONTAINER_NEXT(c, a[i]);
+    if (c->compare(a[i], i_last) < 0)
+        OKF(ip && c->compare(ip, a[i]) > 0,
+            ("Successor of a[%d] = %" NETSNMP_PRIo "d is %" NETSNMP_PRIo "d",
+             i, a[i]->oids[0], ip->oids[0]));
+    else
+        OKF(!ip, ("No successor found for a[%d] = %" NETSNMP_PRIo "d", i,
+                  a[i]->oids[0]));
+}
+
+while ((ip = CONTAINER_FIRST(c)))
+  CONTAINER_REMOVE(c, ip);
+CONTAINER_FREE(c);
+
+snmp_shutdown(test_name);
diff --git a/testing/fulltests/unit-tests/T013binary_array_string_clib.c b/testing/fulltests/unit-tests/T013binary_array_string_clib.c
new file mode 100644
index 0000000..cc4361b
--- /dev/null
+++ b/testing/fulltests/unit-tests/T013binary_array_string_clib.c
@@ -0,0 +1,59 @@
+/* HEADER Testing binary string array */
+
+static const char test_name[] = "binary-array-of-strings-test";
+const char o1[] = "zebra";
+const char o2[] = "b-two";
+const char o3[] = "b";
+const char o4[] = "cedar";
+const char o5[] = "alpha";
+const char ox[] = "dev";
+const char oy[] = "aa";
+const char* const o_last = o1;
+const char *ip;
+const char *const a[] = { ox, oy };
+const char *const b[] = { o4, o2, o3, o1, o5 };
+netsnmp_container *c;
+int i;
+
+init_snmp(test_name);
+
+c = netsnmp_container_get_binary_array();
+c->compare = (netsnmp_container_compare*)strcmp;
+    
+for (i = 0; i < sizeof(b)/sizeof(b[0]); ++i)
+    CONTAINER_INSERT(c, b[i]);
+
+for (ip = CONTAINER_FIRST(c); ip; ip = CONTAINER_NEXT(c, ip)) {
+    for (i = sizeof(b)/sizeof(b[0]) - 1; i >= 0; --i)
+        if (c->compare(ip, b[i]) == 0)
+            break;
+    OKF(i >= 0, ("string b[%d] = \"%s\" present", i, b[i]));
+}
+
+for (i = 0; i < sizeof(b)/sizeof(b[0]); ++i) {
+    ip = CONTAINER_FIND(c, b[i]);
+    OKF(ip, ("b[%d] = \"%s\" present", i, b[i]));
+    ip = CONTAINER_NEXT(c, b[i]);
+    if (c->compare(b[i], o_last) < 0)
+        OKF(ip && c->compare(b[i], ip) < 0,
+            ("Successor of b[%d] = \"%s\" is \"%s\"", i, b[i], ip));
+    else
+        OKF(!ip, ("No successor found for b[%d] = \"%s\"", i, b[i]));
+}
+
+for (i = 0; i < sizeof(a)/sizeof(a[0]); ++i) {
+    ip = CONTAINER_FIND(c, a[i]);
+    OKF(!ip, ("a[%d] = \"%s\" absent", i, a[i]));
+    ip = CONTAINER_NEXT(c, a[i]);
+    if (c->compare(a[i], o_last) < 0)
+        OKF(ip && c->compare(ip, a[i]) > 0,
+            ("Successor of a[%d] = \"%s\" is \"%s\"", i, a[i], ip));
+    else
+        OKF(!ip, ("No successor found for a[%d] = \"%s\"", i, a[i]));
+}
+
+while ((ip = CONTAINER_FIRST(c)))
+  CONTAINER_REMOVE(c, ip);
+CONTAINER_FREE(c);
+
+snmp_shutdown(test_name);
diff --git a/testing/fulltests/unit-tests/T014gethostbyaddr_clib.c b/testing/fulltests/unit-tests/T014gethostbyaddr_clib.c
new file mode 100644
index 0000000..41a578e
--- /dev/null
+++ b/testing/fulltests/unit-tests/T014gethostbyaddr_clib.c
@@ -0,0 +1,97 @@
+/*
+ * HEADER Testing netsnmp_gethostbyaddr() 
+ */
+
+SOCK_STARTUP;
+
+{
+    int             ran_test = 0;
+#ifdef HAVE_GETHOSTBYADDR
+    struct hostent *h, *h2 = NULL;
+    struct in_addr  v4loop;
+    struct sockaddr_in sin_addr;
+    int             s;
+
+    v4loop.s_addr = htonl(INADDR_LOOPBACK);
+    memset(&sin_addr, 0, sizeof(sin_addr));
+    sin_addr.sin_family = AF_INET;
+    sin_addr.sin_addr = v4loop;
+    s = socket(AF_INET, SOCK_DGRAM, 0);
+    if (s >= 0) {
+        if (bind(s, (struct sockaddr *) &sin_addr, sizeof(sin_addr)) >= 0) {
+            h = netsnmp_gethostbyaddr(&v4loop, sizeof(v4loop), AF_INET);
+            if (h)
+                h2 = gethostbyname(h->h_name);
+            OKF(h && (strcmp(h->h_name, "localhost") == 0 ||
+                      (h2 && memcmp(h2->h_addr, &v4loop.s_addr,
+                                    sizeof(v4loop.s_addr)) == 0)),
+                ("127.0.0.1 lookup (%s -> %s)", h ? h->h_name : "(failed)",
+                 h2 ? inet_ntoa(*(struct in_addr *) h2->
+                                h_addr) : "(failed)"));
+            ran_test = 1;
+        }
+        close(s);
+    }
+#endif
+    if (!ran_test)
+        OKF(1, ("Skipped IPv4 test"));
+}
+
+{
+    struct hostent *h;
+#ifdef cygwin
+    static const struct in6_addr v6loop = { { IN6ADDR_LOOPBACK_INIT } };
+#else
+    static const struct in6_addr v6loop = IN6ADDR_LOOPBACK_INIT;
+#endif
+    struct sockaddr_in6 sin6_addr;
+    struct addrinfo hints, *addr = NULL, *ap;
+    char            buf[64];
+    int             s, res, ran_test = 0;
+
+    memset(&sin6_addr, 0, sizeof(sin6_addr));
+    sin6_addr.sin6_family = AF_INET6;
+    sin6_addr.sin6_addr = v6loop;
+    s = socket(AF_INET6, SOCK_DGRAM, 0);
+    if (s >= 0) {
+        if (bind(s, (struct sockaddr *) &sin6_addr, sizeof(sin6_addr)) >=
+            0) {
+            strcpy(buf, "(failed)");
+            h = netsnmp_gethostbyaddr(&v6loop, sizeof(v6loop), AF_INET6);
+            if (h) {
+                memset(&hints, 0, sizeof(hints));
+                hints.ai_family = AF_INET6;
+                res = getaddrinfo(h->h_name, NULL, &hints, &addr);
+                if (res == 0) {
+                    for (ap = addr; ap; ap = ap->ai_next) {
+                        if (ap->ai_family == AF_INET6) {
+                            inet_ntop(ap->ai_family,
+                                      &((struct sockaddr_in6 *) ap->
+                                        ai_addr)->sin6_addr, buf,
+                                      sizeof(buf));
+                            break;
+                        }
+                    }
+                    if (!ap)
+                        strcpy(buf, "no AF_INET6 address found");
+                    if (addr)
+                        freeaddrinfo(addr);
+                } else {
+                    snprintf(buf, sizeof(buf), "getaddrinfo() failed: %s",
+                             strerror(errno));
+                }
+            }
+            OKF(h && (strcmp(h->h_name, "localhost") == 0 ||
+                      (res == 0 && memcmp(addr->ai_addr, &sin6_addr,
+                                          sizeof(sin6_addr)) == 0)),
+                ("::1 lookup (%s -> %s)", h ? h->h_name : "(failed)",
+                 buf));
+            ran_test = 1;
+        }
+        close(s);
+    }
+    if (!ran_test)
+        OKF(1, ("Skipped IPv6 test"));
+}
+
+SOCK_CLEANUP;
diff --git a/testing/fulltests/unit-tests/T101pdu_type_clib.c b/testing/fulltests/unit-tests/T101pdu_type_clib.c
new file mode 100644
index 0000000..771aa61
--- /dev/null
+++ b/testing/fulltests/unit-tests/T101pdu_type_clib.c
@@ -0,0 +1,13 @@
+/* HEADER PDU type descriptions */
+const char *pdu_description;
+pdu_description = snmp_pdu_type(SNMP_MSG_GET);
+OKF((strcmp(pdu_description, "GET") == 0),
+    ("SNMP GET PDU type did not return the expected identifier (GET): %s",
+     pdu_description));
+
+#ifdef NETSNMP_NO_WRITE_SUPPORT
+pdu_description = snmp_pdu_type(163);
+OKF((strcmp(pdu_description, "?0xA3?") == 0),
+    ("SNMP SET PDU type did not return the expected unknown identifier (?0xA3?): %s",
+     pdu_description));
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
diff --git a/testing/fulltests/unit-tests/T102pdu_build_clib.c b/testing/fulltests/unit-tests/T102pdu_build_clib.c
new file mode 100644
index 0000000..1fba69e
--- /dev/null
+++ b/testing/fulltests/unit-tests/T102pdu_build_clib.c
@@ -0,0 +1,67 @@
+/* HEADER PDU building */
+
+SOCK_STARTUP;
+
+netsnmp_pdu *pdu;
+u_char *packet;
+size_t packet_len, offset = 0;
+netsnmp_session session, *ss;
+int rc;
+
+/* prototype copied from snmp_api.c */
+int             snmp_build(u_char ** pkt, size_t * pkt_len,
+                           size_t * offset, netsnmp_session * pss,
+                           netsnmp_pdu *pdu);
+
+init_snmp("testing");
+snmp_sess_init(&session);
+session.version = SNMP_VERSION_2c;
+session.peername = strdup("udp:127.0.0.1"); /* we won't actually connect */
+session.community = (u_char *) strdup("bogus");
+session.community_len = strlen((char *) session.community);
+ss = snmp_open(&session);
+
+OKF((ss != NULL), ("Creating a session failed"));
+if (ss == NULL)
+    snmp_perror("ack");
+
+packet_len = 4096;
+packet = malloc(packet_len);
+
+pdu = snmp_pdu_create(SNMP_MSG_GET);
+pdu->version = session.version;
+
+OKF((pdu != NULL), ("Creating a GET PDU failed"));
+
+rc = snmp_build(&packet, &packet_len, &offset, ss, pdu);
+
+#ifndef NETSNMP_NOTIFY_ONLY
+OKF((rc == SNMPERR_SUCCESS),
+    ("Building a GET PDU/packet should have worked: %d", rc));
+#else /* NETSNMP_NOTIFY_ONLY */
+OKF((rc != SNMPERR_SUCCESS),
+    ("Building a GET PDU/packet should have failed: %d", rc));
+#endif /* NETSNMP_NOTIFY_ONLY */
+
+offset = 0;
+pdu->command = 163; /* a SET message */
+rc = snmp_build(&packet, &packet_len, &offset, ss, pdu);
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+OKF((rc == SNMPERR_SUCCESS),
+    ("Building a SET PDU/packet should have succeeded: %d", rc));
+#else /* NETSNMP_NO_WRITE_SUPPORT */
+OKF((rc != SNMPERR_SUCCESS),
+    ("Building a SET PDU/packet should have failed: %d", rc));
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+
+
+offset = 0;
+pdu->command = SNMP_MSG_INFORM;
+rc = snmp_build(&packet, &packet_len, &offset, ss, pdu);
+
+OKF((rc == SNMPERR_SUCCESS),
+    ("Building an INFORM PDU/packet should have succeed: %d", rc));
+
+SOCK_CLEANUP;
diff --git a/testing/fulltests/unit-tests/T103pdu_parse_clib.c b/testing/fulltests/unit-tests/T103pdu_parse_clib.c
new file mode 100644
index 0000000..8d5882d
--- /dev/null
+++ b/testing/fulltests/unit-tests/T103pdu_parse_clib.c
@@ -0,0 +1,22 @@
+/* HEADER Parsing of PDUs */
+netsnmp_pdu pdu;
+int rc;
+u_char data[] = { 
+    0xA2, 0x1D, 0x02, 0x04, 0x4E, 0x39,
+    0xB2, 0x8E, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00,
+    0x30, 0x0F, 0x30, 0x0D, 0x06, 0x08, 0x2B, 0x06,
+    0x01, 0x02, 0x01, 0x01, 0x04, 0x00, 0x04, 0x01,
+    0x66
+};
+size_t data_length=sizeof(data);
+
+rc = snmp_pdu_parse(&pdu, data, &data_length);
+
+OKF((rc == 0), ("Parsing of a generic PDU failed"));
+
+#ifdef NETSNMP_NO_WRITE_SUPPORT
+data[0] = 0xA3; /* changes it to a SET pdu */
+rc = snmp_pdu_parse(&pdu, data, &data_length);
+
+OKF((rc != 0), ("Parsing of a generic SET PDU succeeded"));
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
diff --git a/win32/Configure b/win32/Configure
old mode 100644
new mode 100755
index bc68afe..a36db0b
--- a/win32/Configure
+++ b/win32/Configure
@@ -104,47 +104,55 @@
   }
 }
 
-###############################################
-#
-# Create main Makefile
-#
-###############################################
+# Arguments:
+# $1: Name of output file
+# $2: Name of input file
+# $3: Reference to a hash with substitutions. A substitution is an array with
+#     two elements where element [0] is the pattern to search for and element
+#     [1] the replacement text.
+sub substitute
 {
-  my $makefile_out = "Makefile";
-  my $makefile_in  = "Makefile.in";
+  my $out  = shift;
+  my $in   = shift;
+  my $subs = shift;
 
-  open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-  open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
+  open (OUT, ">$out") || die "Can't open $out\n";
+  open (IN,  "<$in")  || die "Can't open $in\n";
 
-  print "creating $makefile_out\n";
+  print "creating $out\n";
 
-  while (<MAKE_IN>)
-  {
+  while (<IN>) {
     chomp;
-    if ($sdk == 1) {
-      s/^SDK=/SDK=true/;
+    foreach my $e (keys %$subs) {
+        my $p = $$subs{$e}[0];
+        my $q = $$subs{$e}[1];
+        s/$p/$q/;
     }
-    else {
-      s/^SDK=/SDK=false/;
-    }
-
-    s/^LINKTYPE=/LINKTYPE=$linktype/;
-    s/^CFG=/CFG=$config/;
-    s/^PREFIX=/PREFIX=$prefix/;
-    s/^PREFIX_DOS=/PREFIX_DOS=$prefixdos/;
-    s/^SSL=.*/SSL=$openssl/;
-
-    print MAKE_OUT $_ . "\n";
+    print OUT $_ . "\n";
   }
+
+  close IN;
+  close OUT;
 }
 
 ###############################################
 #
-# Create Makefiles for applications from
-# Makefile-apps.in
-# (except for snmpnetstat)
+# Perform substitutions
 #
 ###############################################
+my %subs = (
+    "cfg" => [ "^CFG=",        "CFG=$config"                        ],
+    "int" => [ "^INTDIR=",     "INTDIR=.\\$config"                  ],
+    "lnk" => [ "^LINKTYPE=",   "LINKTYPE=$linktype"                 ],
+    "out" => [ "^OUTDIR=",     "OUTDIR=.\\$config"                  ],
+    "pfx" => [ "^PREFIX=",     "PREFIX=$prefix"                     ],
+    "dos" => [ "^PREFIX_DOS=", "PREFIX_DOS=$prefixdos"              ],
+    "sdk" => [ "^SDK=",        $sdk == 1 ? "SDK=true" : "SDK=false" ],
+    );
+
+substitute("Makefile", "Makefile.in", \%subs);
+substitute("local/Makefile", "local/Makefile.in", \%subs);
+
 my @programs = qw
 /encode_keychange
 snmpbulkget
@@ -165,240 +173,51 @@
 /;
 
 foreach my $progName (@programs) {
-
-  my $makefile_out = "$progName\\Makefile";
-  my $makefile_in = "Makefile-apps.in";
-
-  my $outdir = $config;
-  my $intdir = $config;
-
-  open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-  open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
-
-  print "creating $makefile_out\n";
-
-  while (<MAKE_IN>)
-  {
-    chomp;
-
-    s/^LINKTYPE=/LINKTYPE=$linktype/;
-    s/^PROGNAME=/PROGNAME=$progName/;
-    s/^CFG=/CFG=$config/;
-    s/^OUTDIR=/OUTDIR=.\\$outdir/;
-    s/^INTDIR=/INTDIR=.\\$intdir/;
-    s/^SSL=.*/SSL=$openssl/;
-
-    print MAKE_OUT $_ . "\n";
-  }
+    $subs{"prg"} = [ "^PROGNAME=", "PROGNAME=$progName" ];
+    substitute("$progName/Makefile", "Makefile-apps.in", \%subs);
 }
 
-###############################################
-#
-# Create Makefiles for snmpnetstat from
-# snmpnetstat\Makefile.in
-#
-###############################################
-my @programs = qw
-/snmpnetstat
-/;
-
-foreach my $progName (@programs) {
-
-  my $makefile_out = "$progName\\Makefile";
-  my $makefile_in = "$progName\\Makefile.in";
-
-  my $outdir = $config;
-  my $intdir = $config;
-
-  open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-  open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
-
-  print "creating $makefile_out\n";
-
-  while (<MAKE_IN>)
-  {
-    chomp;
-
-    s/^LINKTYPE=/LINKTYPE=$linktype/;
-    s/^PROGNAME=/PROGNAME=$progName/;
-    s/^CFG=/CFG=$config/;
-    s/^OUTDIR=/OUTDIR=.\\$outdir/;
-    s/^INTDIR=/INTDIR=.\\$intdir/;
-    s/^SSL=.*/SSL=$openssl/;
-
-    print MAKE_OUT $_ . "\n";
-  }
+foreach my $progName ("libagent", "libnetsnmptrapd", "local",
+                      "netsnmpmibs", "snmpd", "snmptrapd", "snmpnetstat",
+                      $linktype eq "dynamic" ? "libsnmp_dll" : "libsnmp") {
+    $subs{"prg"} = [ "^PROGNAME=", "PROGNAME=$progName" ];
+    substitute("$progName/Makefile", "$progName/Makefile.in", \%subs);
 }
 
+my %subs = (
+    "env" => [ "\@ENV_SEPARATOR\@", ";" ]
+);
 
-###############################################
-#
-# Create Makefiles for libraries
-# from name\Makefile.in
-#
-###############################################
-my @programs = qw
-/libagent
-libnetsnmptrapd
-netsnmpmibs
-/;
+substitute("../local/snmpconf", "../local/snmpconf.in", \%subs);
 
+
+my %subs = (
+    "ver" => [ "^#define PACKAGE_VERSION.*",
+               "#define PACKAGE_VERSION \"$version\"" ]
+    );
+if ($prefix ne "") {
+    $subs{"pfx"} = [ "^#define INSTALL_BASE.*", "#define INSTALL_BASE \"$prefix\"" ];
+}
 if ($linktype eq "dynamic") {
-  push (@programs, "libsnmp_dll");
+    $subs{"dll"} = [ "^.*#undef NETSNMP_USE_DLL.*", "#define NETSNMP_USE_DLL 1" ];
 }
-else {
-  push (@programs, "libsnmp");
+if ($sdk == 1) {
+    $subs{"sdk"} = [ "^.*#undef HAVE_WIN32_PLATFORM_SDK.*", "#define HAVE_WIN32_PLATFORM_SDK 1" ];
+}
+if ($openssl == 1) {
+    $subs{"ssl"} = [ "^.*#undef NETSNMP_USE_OPENSSL.*", "#define NETSNMP_USE_OPENSSL 1" ];
+} else {
+    $subs{"ssl"} = [ "^.*#undef NETSNMP_USE_INTERNAL_MD5.*", "#define NETSNMP_USE_INTERNAL_MD5 1" ];
+}
+if ($b_ipv6 == 1) {
+    $subs{"ipv6"} = [ "^.*#undef NETSNMP_ENABLE_IPV6.*", "#define NETSNMP_ENABLE_IPV6 1" ];
+}
+if ($b_winextdll == 1) {
+    $subs{"winextdll"} = [ "^.*#undef USING_WINEXTDLL_MODULE.*", "#define USING_WINEXTDLL_MODULE 1" ];
 }
 
-foreach my $progName (@programs) {
-
-  my $makefile_out = "$progName\\Makefile";
-  my $makefile_in = "$progName\\Makefile.in";
-
-  my $outdir = $config;
-  my $intdir = $config;
-
-  open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-  open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
-
-  print "creating $makefile_out\n";
-
-  while (<MAKE_IN>)
-  {
-    chomp;
-
-    if ($sdk == 1) {
-      s/^SDK=/SDK=true/;
-    }
-    else {
-      s/^SDK=/SDK=false/;
-    }
-
-    s/^PROGNAME=/PROGNAME=$progName/;
-    s/^CFG=/CFG=$config/;
-    s/^OUTDIR=/OUTDIR=.\\$outdir/;
-    s/^INTDIR=/INTDIR=.\\$intdir/;
-    s/^SSL=.*/SSL=$openssl/;
-    print MAKE_OUT $_ . "\n";
-  }
-}
-
-###############################################
-#
-# Create Makefiles for daemons
-# from name\Makefile.in
-#
-###############################################
-my @programs = qw
-/snmpd
-snmptrapd
-/;
-
-foreach my $progName (@programs) {
-
-  my $makefile_out = "$progName\\Makefile";
-  my $makefile_in = "$progName\\Makefile.in";
-
-  my $outdir = $config;
-  my $intdir = $config;
-
-  open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-  open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
-
-  print "creating $makefile_out\n";
-
-  while (<MAKE_IN>)
-  {
-    chomp;
-
-    if ($sdk == 1) {
-      s/^SDK=/SDK=true/;
-    }
-    else {
-      s/^SDK=/SDK=false/;
-    }
-
-    s/^LINKTYPE=/LINKTYPE=$linktype/;
-    s/^PROGNAME=/PROGNAME=$progName/;
-    s/^CFG=/CFG=$config/;
-    s/^OUTDIR=/OUTDIR=.\\$outdir/;
-    s/^INTDIR=/INTDIR=.\\$intdir/;
-    s/^SSL=.*/SSL=$openssl/;
-
-    print MAKE_OUT $_ . "\n";
-  }
-}
-
-###############################################
-#
-# Create Makefile for Perl scripts in local
-# from local\Makefile.in
-#
-###############################################
-
-my $makefile_out = "local\\Makefile";
-my $makefile_in = "local\\Makefile.in";
-
-my $outdir = $config;
-
-open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
-
-print "creating $makefile_out\n";
-
-while (<MAKE_IN>)
-{
-  chomp;
-
-  s/^OUTDIR=/OUTDIR=.\\$outdir/;
-  s/^PREFIX=/PREFIX=$prefix/;
-  s/^PREFIX_DOS=/PREFIX_DOS=$prefixdos/;
-
-  print MAKE_OUT $_ . "\n";
-}
-
-
-###############################################
-#
-# Create net-snmp-config.h
-#
-###############################################
-{
-  my $file_out = "net-snmp\\net-snmp-config.h";
-  my $file_in = "net-snmp\\net-snmp-config.h.in";
-
-  open (FILE_OUT, ">$file_out") || die "Can't Open $file_out\n";
-  open (FILE_IN, "<$file_in") || die "Can't Open $file_in\n";
-
-  print "creating $file_out\n";
-
-  while (<FILE_IN>)
-  {
-    chomp;
-    s/^#define PACKAGE_VERSION.*/#define PACKAGE_VERSION \"$version\"/;
-    if ($prefix ne "") {
-      s/^#define INSTALL_BASE.*/#define INSTALL_BASE \"$prefix\"/;
-    }
-    if ($linktype eq "dynamic") {
-      s/^.*#undef NETSNMP_USE_DLL.*/#define NETSNMP_USE_DLL 1/;
-    }
-    if ($sdk == 1) {
-      s/^.*#undef HAVE_WIN32_PLATFORM_SDK.*/#define HAVE_WIN32_PLATFORM_SDK 1/;
-    }
-    if ($openssl == 1) {
-      s/^.*#undef NETSNMP_USE_OPENSSL.*/#define NETSNMP_USE_OPENSSL 1/;
-    }
-    if ($b_ipv6 == 1) {
-      s/^.*#undef NETSNMP_ENABLE_IPV6.*/#define NETSNMP_ENABLE_IPV6 1/;
-    }
-    if ($b_winextdll == 1) {
-      s/^.*#undef USING_WINEXTDLL_MODULE.*/#define USING_WINEXTDLL_MODULE 1/;
-    }
-
-    print FILE_OUT $_ . "\n";
-  }
-}
-
+substitute("net-snmp/net-snmp-config.h", "net-snmp/net-snmp-config.h.in",
+           \%subs);
 
 print qq/
 ---------------------------------------------------------
diff --git a/win32/Makefile-apps.in b/win32/Makefile-apps.in
index 2113ade..bcfb26e 100644
--- a/win32/Makefile-apps.in
+++ b/win32/Makefile-apps.in
@@ -3,7 +3,6 @@
 OUTDIR=
 INTDIR=
 LINKTYPE=
-SSL=
 
 # Set to 1 to allow the building using the DLL version of SNMPLIB.
 ALLOW_DLL=1
diff --git a/win32/build.pl b/win32/build.pl
index c191f28..4007fae 100644
--- a/win32/build.pl
+++ b/win32/build.pl
@@ -5,32 +5,49 @@
 # March 12th, 2004
 #
 use strict;
-my $openssl = "disabled";
-my $b_ipv6 = "disabled";
-my $b_winextdll = "disabled";
-my $sdk = "disabled";
+use warnings;
+use Config;
+use Cwd 'abs_path';
+use File::Basename;
+use constant false => 0;
+use constant true => 1;
+my $target_arch = $ENV{TARGET_CPU} ? $ENV{TARGET_CPU} : $ENV{Platform} ?
+                  $ENV{Platform} : "x86";
+if ($target_arch ne "x86" && $target_arch ne "x64") {
+    print "Error: unsupported target architecture $target_arch\n";
+    die;
+}
+my @perl_arch = split(/-/, $Config{archname});
+if ($perl_arch[1] ne $target_arch) {
+    print "perl_arch = $perl_arch[1] does not match target_arch = $target_arch\n";
+    die;
+}
+my $openssl = false;
+my $default_openssldir = $target_arch eq "x64" ?
+    "C:\\OpenSSL-Win64" : "C:\\OpenSSL-Win32";
+my $default_opensslincdir = $default_openssldir . "\\include";
+my $opensslincdir = $default_opensslincdir;
+my $default_openssllibdir = $default_openssldir . "\\lib\\VC";
+my $openssllibdir = $default_openssllibdir;
+my $b_ipv6 = false;
+my $b_winextdll = false;
+my $sdk = false;
 my $default_install_base = "c:/usr";
 my $install_base = $default_install_base;
-my $install = "enabled";
-my $install_devel = "disabled";
-my $perl = "disabled";
-my $perl_install = "disabled";
-my $logging = "enabled";
-my $debug = "disabled";
+my $install = true;
+my $install_devel = false;
+my $perl = false;
+my $perl_install = false;
+my $logging = true;
+my $debug = false;
 my $configOpts = "";
-my $linktype = "static";
+my $link_dynamic = false;
 my $option;
 
-# Prepend win32\ if running from main directory
-my $current_pwd = `%COMSPEC% /c cd`;
-chomp $current_pwd;
-if (! ($current_pwd =~ /\\win32$/)) {
-  chdir ("win32");
-  $current_pwd = `%COMSPEC% /c cd`;
-  chomp $current_pwd;
-}
+# Path of this script (source tree path + "win32").
+my $current_pwd = dirname(abs_path($0));
 
-if ( -d $ENV{MSVCDir} || -d $ENV{VCINSTALLDIR}) {
+if ( -d $ENV{MSVCDir} || -d $ENV{VCINSTALLDIR} || defined($ENV{TARGET_CPU}) ) {
 }
 else {
   print "\nPlease run VCVARS32.BAT first to set up the Visual Studio build\n" .
@@ -42,132 +59,89 @@
 while (1) {
   print "\n\nNet-SNMP build and install options\n";
   print "==================================\n\n";
-  print "1.  OpenSSL support:                " . $openssl. "\n";
-  print "2.  Platform SDK support:           " . $sdk . "\n";
+  print "1.  OpenSSL support:                " . ($openssl ? "enabled" : "disabled"). "\n";
+  print "2.  OpenSSL include directory:      " . $opensslincdir. "\n";
+  print "3.  OpenSSL library director:       " . $openssllibdir. "\n";
+  print "4.  Platform SDK support:           " . ($sdk ? "enabled" : "disabled") . "\n";
   print "\n";
-  print "3.  Install path:                   " . $install_base . "\n";
-  print "4.  Install after build:            " . $install . "\n";
+  print "5.  Install path:                   " . $install_base . "\n";
+  print "6.  Install after build:            " . ($install ? "enabled" : "disabled") . "\n";
   print "\n";
-  print "5.  Perl modules:                   " . $perl . "\n";
-  print "6.  Install perl modules:           " . $perl_install . "\n";
+  print "7.  Perl modules:                   " . ($perl ? "enabled" : "disabled") . "\n";
+  print "8.  Install perl modules:           " . ($perl_install ? "enabled" : "disabled") . "\n";
   print "\n";
-  print "7.  Quiet build (logged):           " . $logging . "\n";
-  print "8.  Debug mode:                     " . $debug . "\n";
+  print "9.  Quiet build (logged):           " . ($logging ? "enabled" : "disabled") . "\n";
+  print "10. Debug mode:                     " . ($debug ? "enabled" : "disabled") . "\n";
   print "\n";
-  print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
-  print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
+  print "11. IPv6 transports (requires SDK): " . ($b_ipv6 ? "enabled" : "disabled") . "\n";
+  print "12. winExtDLL agent (requires SDK): " . ($b_winextdll ? "enabled" : "disabled") . "\n";
   print "\n";
-  print "11. Link type:                      " . $linktype . "\n";
+  print "13. Link type:                      " . ($link_dynamic ? "dynamic" : "static") . "\n";
   print "\n";
-  print "12. Install development files       " . $install_devel . "\n";
+  print "14. Install development files       " . ($install_devel ? "enabled" : "disabled") . "\n";
   print "\nF.  Finished - start build\n";
   print "Q.  Quit - abort build\n\n";
   print "Select option to set / toggle: ";
 
   chomp ($option = <>);
   if ($option eq "1") {
-    if ($openssl eq "enabled") {
-      $openssl = "disabled";
-    }
-    else {
-      $openssl = "enabled";
-    }
+    $openssl = !$openssl;
   }
   elsif ($option eq "2") {
-    if ($sdk eq "enabled") {
-      $sdk = "disabled";
-    }
-    else {
-      $sdk = "enabled";
-    }
-  }
-  elsif ($option eq "9") {
-    if ($b_ipv6 eq "enabled") {
-      $b_ipv6 = "disabled";
-    }
-    else {
-      $b_ipv6 = "enabled";
-      if ($sdk = "disabled") {
-        print "\n\n* SDK required for IPv6 and has been automatically enabled";
-        $sdk = "enabled";
-      }
-    }
-  }
-  elsif ($option eq "10") {
-    if ($b_winextdll eq "enabled") {
-      $b_winextdll = "disabled";
-    }
-    else {
-      $b_winextdll = "enabled";
-      if ($sdk = "disabled") {
-        print "\n\n* SDK required for IPv6 and has been automatically enabled";
-        $sdk = "enabled";
-      }
-    }
+    print "Please enter the OpenSSL include directory [$opensslincdir]: ";
+    chomp ($opensslincdir = <>);
+    $opensslincdir =~ s/\\/\//g;
+    $opensslincdir = $default_opensslincdir if ($opensslincdir eq "");
   }
   elsif ($option eq "3") {
-    print "Please enter the new install path [$default_install_base]: ";
-    chomp ($install_base = <>);
-    if ($install_base eq "") {
-      $install_base = $default_install_base;
-    }
-    $install_base =~ s/\\/\//g;
+    print "Please enter the OpenSSL library directory [$openssllibdir]: ";
+    chomp ($openssllibdir = <>);
+    $openssllibdir =~ s/\\/\//g;
+    $openssllibdir = $default_openssllibdir if ($openssllibdir eq "");
   }
   elsif ($option eq "4") {
-    if ($install eq "enabled") {
-      $install = "disabled";
-    }
-    else {
-      $install = "enabled";
+    $sdk = !$sdk;
+  }
+  elsif ($option eq "11") {
+    $b_ipv6 = !$b_ipv6;
+    if ($b_ipv6 && !$sdk) {
+      print "\n\n* SDK required for IPv6 and has been automatically enabled";
+      $sdk = true;
     }
   }
   elsif ($option eq "12") {
-    if ($install_devel eq "enabled") {
-      $install_devel = "disabled";
-    }
-    else {
-      $install_devel = "enabled";
+    $b_winextdll = !$b_winextdll;
+    if ($b_winextdll && !$sdk) {
+      print "\n\n* SDK required for IPv6 and has been automatically enabled";
+      $sdk = true;
     }
   }
   elsif ($option eq "5") {
-    if ($perl eq "enabled") {
-      $perl = "disabled";
-    }
-    else {
-      $perl = "enabled";
-    }
+    print "Please enter the new install path [$default_install_base]: ";
+    chomp ($install_base = <>);
+    $install_base =~ s/\\/\//g;
+    $install_base = $default_install_base if ($install_base eq "");
   }
   elsif ($option eq "6") {
-    if ($perl_install eq "enabled") {
-      $perl_install = "disabled";
-    }
-    else {
-      $perl_install = "enabled";
-    }
+    $install = !$install;
+  }
+  elsif ($option eq "14") {
+    $install_devel = !$install_devel;
   }
   elsif ($option eq "7") {
-    if ($logging eq "enabled") {
-      $logging = "disabled";
-    }
-    else {
-      $logging = "enabled";
-    }
+    $perl = !$perl;
   }
   elsif ($option eq "8") {
-    if ($debug eq "enabled") {
-      $debug = "disabled";
-    }
-    else {
-      $debug = "enabled";
-    }
+    $perl_install = !$perl_install;
   }
-  elsif ($option eq "11") {
-    if ($linktype eq "static") {
-      $linktype = "dynamic";
-    }
-    else {
-      $linktype = "static";
-    }
+  elsif ($option eq "9") {
+    $logging = !$logging;
+  }
+  elsif ($option eq "10") {
+    $debug = !$debug;
+  }
+  elsif ($option eq "13") {
+    $link_dynamic = !$link_dynamic;
   }
   elsif (lc($option) eq "f") {
     last;
@@ -177,15 +151,16 @@
   }
 }
 
-$configOpts .= $openssl eq "enabled" ? "--with-ssl" : "";
+my $linktype = $link_dynamic ? "dynamic" : "static";
+$configOpts .= $openssl ? "--with-ssl" : "";
 $configOpts .= " ";
-$configOpts .= $sdk eq "enabled" ? "--with-sdk" : "";
+$configOpts .= $sdk ? "--with-sdk" : "";
 $configOpts .= " ";
-$configOpts .= $b_ipv6 eq "enabled" ? "--with-ipv6" : "";
+$configOpts .= $b_ipv6 ? "--with-ipv6" : "";
 $configOpts .= " ";
-$configOpts .= $b_winextdll eq "enabled" ? "--with-winextdll" : "";
+$configOpts .= $b_winextdll ? "--with-winextdll" : "";
 $configOpts .= " ";
-$configOpts .= $debug eq "enabled" ? "--config=debug" : "--config=release";
+$configOpts .= $debug ? "--config=debug" : "--config=release";
 
 # Set environment variables
 
@@ -193,144 +168,94 @@
 $ENV{NO_EXTERNAL_DEPS}="1";
 
 # Set PATH environment variable so Perl make tests can locate the DLL
-$ENV{PATH} = "$current_pwd\\bin\\" . ($debug eq "enabled" ? "debug" : "release" ) . ";$ENV{PATH}";
+$ENV{PATH} = "$current_pwd\\bin\\" . ($debug ? "debug" : "release" ) . ";$ENV{PATH}";
+
+$ENV{INCLUDE} .= ";$opensslincdir";
+$ENV{LIB}     .= ";$openssllibdir";
 
 # Set MIBDIRS environment variable so Perl make tests can locate the mibs
-my $temp_mibdir = "$current_pwd/../mibs";
-$temp_mibdir =~ s/\\/\//g;
-$ENV{MIBDIRS}=$temp_mibdir;
+$ENV{MIBDIRS} = dirname($current_pwd) . "/mibs";
 
 # Set SNMPCONFPATH environment variable so Perl conf.t test can locate
 # the configuration files.
 # See the note about environment variables in the Win32 section of
 # perl/SNMP/README for details on why this is needed.
-$ENV{SNMPCONFPATH}="t";$ENV{SNMPCONFPATH};
+$ENV{SNMPCONFPATH}="t";
 
 print "\nBuilding...\n";
 
-if ($logging eq "enabled") {
-  print "\nCreating *.out log files.\n\n";
+print "\nCreating *.out log files.\n\n";
+
+print "Deleting old log files...\n";
+system("del *.out" . ($logging ? " > NUL: 2>&1" : ""));
+
+# Delete net-snmp-config.h from main include folder just in case it was created by a Cygwin or MinGW build
+unlink "../include/net-snmp/net-snmp-config.h";
+unlink "../snmplib/transports/snmp_transport_inits.h";
+
+print "Running Configure...\n";
+system("perl Configure $configOpts --linktype=$linktype --prefix=\"$install_base\"" . ($logging ? " > configure.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see configure.out)" : "Build error (see above)");
+
+print "Cleaning...\n";
+system("nmake /nologo clean" . ($logging ? " > clean.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see clean.out)" : "Build error (see above)");
+
+print "Building main package...\n";
+system("nmake /nologo" . ($logging ? " > make.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see make.out)" : "Build error (see above)");
+
+if ($perl) {
+  if (!$link_dynamic) {
+    print "Running Configure for DLL...\n";
+    system("perl Configure $configOpts --linktype=dynamic --prefix=\"$install_base\"" . ($logging ? " > perlconfigure.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see perlconfigure.out)" : "Build error (see above)");
+
+    print "Cleaning libraries...\n";
+    system("nmake /nologo libs_clean" . ($logging ? " >> clean.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see clean.out)" : "Build error (see above)");
+
+    print "Building DLL libraries...\n";
+    system("nmake /nologo libs" . ($logging ? " > dll.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see dll.out)" : "Build error (see above)");
+  }
+
+  print "Cleaning Perl....\n";
+  system("nmake /nologo perl_clean" . ($logging ? " >> clean.out 2>&1" : "")); # If already cleaned, Makefile is gone so don't worry about errors!
+
+  print "Building Perl modules...\n";
+  system("nmake /nologo perl" . ($logging ? " > perlmake.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see perlmake.out)" : "Build error (see above)");
+
+  print "Testing Perl modules...\n";
+  system("nmake /nologo perl_test" . ($logging ? " > perltest.out 2>&1" : "")); # Don't die if all the tests don't pass..
+
+  if ($perl_install) {
+    print "Installing Perl modules...\n";
+    system("nmake /nologo perl_install" . ($logging ? " > perlinstall.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see perlinstall.out)" : "Build error (see above)");
+  }
+
+  print "\nSee perltest.out for Perl test results\n";
 }
 
-if ($logging eq "enabled") {
-  print "Deleting old log files...\n";
-  system("del *.out > NUL: 2>&1");
-
-  # Delete net-snmp-config.h from main include folder just in case it was created by a Cygwin or MinGW build
-  system("del ..\\include\\net-snmp\\net-snmp-config.h > NUL: 2>&1");
-  unlink "../snmplib/transports/snmp_transport_inits.h";
-
-  print "Running Configure...\n";
-  system("perl Configure $configOpts --linktype=$linktype --prefix=\"$install_base\" > configure.out 2>&1") == 0 || die "Build error (see configure.out)";
-
-  print "Cleaning...\n";
-  system("nmake /nologo clean > clean.out 2>&1") == 0 || die "Build error (see clean.out)";
-
-  print "Building main package...\n";
-  system("nmake /nologo > make.out 2>&1") == 0 || die "Build error (see make.out)";
-
-  if ($perl eq "enabled") {
-    if ($linktype eq "static") {
-      print "Running Configure for DLL...\n";
-      system("perl Configure $configOpts --linktype=dynamic --prefix=\"$install_base\" > perlconfigure.out 2>&1") == 0 || die "Build error (see perlconfigure.out)";
-
-      print "Cleaning libraries...\n";
-      system("nmake /nologo libs_clean >> clean.out 2>&1") == 0 || die "Build error (see clean.out)";
-
-      print "Building DLL libraries...\n";
-      system("nmake /nologo libs > dll.out 2>&1") == 0 || die "Build error (see dll.out)";
-    }
-
-    print "Cleaning Perl....\n";
-    system("nmake /nologo perl_clean >> clean.out 2>&1"); # If already cleaned, Makefile is gone so don't worry about errors!
-
-    print "Building Perl modules...\n";
-    system("nmake /nologo perl > perlmake.out 2>&1") == 0 || die "Build error (see perlmake.out)";
-
-    print "Testing Perl modules...\n";
-    system("nmake /nologo perl_test > perltest.out 2>&1"); # Don't die if all the tests don't pass..
-
-    if ($perl_install eq "enabled") {
-      print "Installing Perl modules...\n";
-      system("nmake /nologo perl_install > perlinstall.out 2>&1") == 0 || die "Build error (see perlinstall.out)";
-    }
-
-    print "\nSee perltest.out for Perl test results\n";
-  }
-
-  print "\n";
-  if ($install eq "enabled") {
-    print "Installing main package...\n";
-    system("nmake /nologo install > install.out 2>&1") == 0 || die "Build error (see install.out)";
-  }
-  else {
-    print "Type nmake install to install the package to $install_base\n";
-  }
-
-  if ($install_devel eq "enabled") {
-    print "Installing development files...\n";
-    system("nmake /nologo install_devel > install_devel.out 2>&1") == 0 || die "Build error (see install_devel.out)";
-  }
-  else {
-    print "Type nmake install_devel to install the development files to $install_base\n";
-  }
-
-  if ($perl_install eq "disabled" && $perl eq "enabled") {
-    print "Type nmake perl_install to install the Perl modules\n";
-  }
+print "\n";
+if ($install) {
+  print "Installing main package...\n";
+  system("nmake /nologo install" . ($logging ? " > install.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see install.out)" : "Build error (see above)");
 }
 else {
-  system("del *.out");
+  print "Type nmake install to install the package to $install_base\n";
+}
 
-  # Delete net-snmp-config.h from main include folder just in case it was created by a Cygwin or MinGW build
-  system("del ..\\include\\net-snmp\\net-snmp-config.h > NUL: 2>&1");
+if ($install_devel) {
+  print "Installing development files...\n";
+  system("nmake /nologo install_devel > install_devel.out 2>&1") == 0 || die "Build error (see install_devel.out)";
+}
+else {
+  print "Type nmake install_devel to install the development files to $install_base\n";
+}
 
-  system("perl Configure $configOpts --linktype=$linktype --prefix=\"$install_base\"") == 0 || die "Build error (see above)";
-  system("nmake /nologo clean") == 0 || die "Build error (see above)";
-  system("nmake /nologo") == 0 || die "Build error (see above)";
-
-  if ($perl eq "enabled") {
-    if ($linktype eq "static") {
-      system("perl Configure $configOpts --linktype=dynamic --prefix=\"$install_base\"") == 0 || die "Build error (see above)";
-      system("nmake /nologo libs_clean") == 0 || die "Build error (see above)";
-      system("nmake /nologo libs") == 0 || die "Build error (see above)";
-    }
-
-    system("nmake /nologo perl_clean"); # If already cleaned, Makefile is gone so don't worry about errors!
-    system("nmake /nologo perl") == 0 || die "Build error (see above)";
-
-    my $path_old = $ENV{PATH};
-    $ENV{PATH} = "$current_pwd\\bin\\" . ($debug eq "enabled" ? "debug" : "release" ) . ";$ENV{PATH}";
-    system("nmake /nologo perl_test"); # Don't die if all the tests don't pass..
-    $ENV{PATH} = $path_old;
-
-    if ($perl_install eq "enabled") {
-      print "Installing Perl modules...\n";
-      system("nmake /nologo perl_install") == 0 || die "Build error (see above)";
-    }
-  }
-
-  print "\n";
-  if ($install eq "enabled") {
-    print "Installing main package...\n";
-    system("nmake /nologo install") == 0 || die "Build error (see above)";
-  }
-  else {
-    print "Type nmake install to install the package to $install_base\n";
-  }
-
-  if ($install_devel eq "enabled") {
-    print "Installing development files...\n";
-    system("nmake /nologo install_devel > install_devel.out 2>&1") == 0 || die "Build error (see install_devel.out)";
-  }
-  else {
-    print "Type nmake install_devel to install the development files to $install_base\n";
-  }
-
-  if ($perl_install eq "disabled" && $perl eq "enabled") {
-    print "Type nmake perl_install to install the Perl modules\n";
-  }
+if ($perl && !$perl_install) {
+  print "Type nmake perl_install to install the Perl modules\n";
 }
 
 print "\nDone!\n";
 
+# Local Variables:
+# mode: perl
+# perl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
diff --git a/win32/config.h b/win32/config.h
deleted file mode 100644
index 941cb9a..0000000
--- a/win32/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
- * Everyone should be including the new style config header.
- * For now, we'll do it for them for backwards compatability.
- */
-#include <net-snmp/net-snmp-config.h>
diff --git a/win32/dist/build-binary.bat b/win32/dist/build-binary.bat
index ba234ba..60e1728 100755
--- a/win32/dist/build-binary.bat
+++ b/win32/dist/build-binary.bat
@@ -1,5 +1,3 @@
 @echo off
 
-cd win32 > NUL: 2>&1
-perl build-binary.pl
-
+perl %~dp0\build-binary.pl
diff --git a/win32/dist/build-binary.pl b/win32/dist/build-binary.pl
index d102dfb..b064cc8 100755
--- a/win32/dist/build-binary.pl
+++ b/win32/dist/build-binary.pl
@@ -5,27 +5,48 @@
 # May 10th, 2009
 #
 use strict;
+use File::Basename;
 use File::Copy;
+use File::Spec;
 use Cwd 'abs_path';
 
 print "------------------------------------------------------\n";
 
-my $tar_command = 'C:\msys\1.0\bin\tar.exe';
-my $gzip_command = 'C:\msys\1.0\bin\gzip.exe';
+my $tar_command;
+my $gzip_command;
+for my $msysbindir (("C:\\msys\\1.0\\bin", "C:\\mingw\\msys\\1.0\\bin")) {
+    $tar_command = File::Spec->catfile($msysbindir, "tar.exe");
+    $gzip_command = File::Spec->catfile($msysbindir, "gzip.exe");
+    last if (-f $tar_command);
+}
 
 if (! (-f $tar_command)) {
-  die ("Could not find tar command ($tar_command)");
+  die ("Could not find tar command");
 }
 else {
   print "tar command:  $tar_command\n";
 }
 if (! (-f $gzip_command)) {
-  die ("Could not find gzip command ($gzip_command)");
+  die ("Could not find gzip command");
 }
 else {
   print "gzip command: $gzip_command\n";
 }
 
+my $makensis;
+for my $nsisdir (("C:\\Program Files\\NSIS", "C:\\Program Files (x86)\\NSIS")) {
+    $makensis = File::Spec->catfile($nsisdir, "makensis.exe");
+    last if (-f $makensis);
+}
+die("makensis.exe not found") if (!(-f $makensis));
+
+my $target_arch = $ENV{TARGET_CPU} ? $ENV{TARGET_CPU} : $ENV{Platform} ?
+                  $ENV{Platform} : "x86";
+my $openssldir = $target_arch eq "x64" ? "C:\\OpenSSL-Win64" :
+                 "C:\\OpenSSL-Win32";
+my $opensslincdir = $openssldir . "\\include";
+my $openssllibdir = $openssldir . "\\lib\\VC";
+
 my $version = "unknown";
 my $version_for_perl = "unknown";
 my $version_maj;
@@ -49,33 +70,10 @@
 my $linktype = "static";
 my $option;
 
-# Prepend win32\ if running from main directory
-my $current_pwd = `%COMSPEC% /c cd`;
-chomp $current_pwd;
-my $top_dir;
-my $win32_dir;
-my $perl_dir;
-
-if ($current_pwd =~ /\\win32\\dist$/) {
-  $win32_dir = "$current_pwd/../";
-  $top_dir = "$current_pwd/../../";
-  $perl_dir = "$current_pwd/../../perl/";
-}
-elsif ($current_pwd =~ /\\win32$/) {
-  $win32_dir = $current_pwd;
-  $top_dir = "$current_pwd/../";
-  $perl_dir = "$current_pwd/../perl/";
-}
-else {  # Assume top level folder
-  $win32_dir = "$current_pwd/win32/";
-  $top_dir = $current_pwd;
-  $perl_dir = "$current_pwd/perl/";
-}
-
-$top_dir = abs_path($top_dir);
-$win32_dir = abs_path($win32_dir);
-$perl_dir = abs_path($perl_dir);
-
+my $scriptdir = dirname(abs_path($0));
+my $win32_dir = dirname($scriptdir);
+my $top_dir = dirname($win32_dir);
+my $perl_dir = File::Spec->catdir($top_dir, "perl");
 
 print "\ntop_dir:      $top_dir\n";
 print "win32_dir:    $win32_dir\n";
@@ -90,9 +88,7 @@
   exit;
 }
 
-if ( -d $ENV{MSVCDir} || -d $ENV{VCINSTALLDIR}) {
-}
-else {
+if (!(-d $ENV{MSVCDir}) && !(-d $ENV{VCINSTALLDIR}) && !defined($ENV{TARGET_CPU})) {
   print "\nPlease run VCVARS32.BAT first to set up the Visual Studio build\n" .
         "environment.\n\n";
   exit;
@@ -189,27 +185,6 @@
 $install = "enabled";
 $install_devel = "enabled";
 
-print "\n\nBuilding with options:\n";
-print "======================\n\n";
-print "1.  OpenSSL support:                " . $openssl. "\n";
-print "2.  Platform SDK support:           " . $sdk . "\n";
-print "\n";
-print "3.  Install path:                   " . $install_base . "\n";
-print "4.  Install after build:            " . $install . "\n";
-print "\n";
-print "5.  Perl modules:                   " . $perl . "\n";
-print "6.  Install perl modules:           " . $perl_install . "\n";
-print "\n";
-print "7.  Quiet build (logged):           " . $logging . "\n";
-print "8.  Debug mode:                     " . $debug . "\n";
-print "\n";
-print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
-print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
-print "\n";
-print "11. Link type:                      " . $linktype . "\n";
-print "\n";
-print "12. Install development files       " . $install_devel . "\n";
-
 chdir $win32_dir;
 &build();
 &create_perl_package();
@@ -228,27 +203,6 @@
 $install = "disabled";
 $install_devel = "disabled";
 
-print "\n\nBuilding with options:\n";
-print "======================\n\n";
-print "1.  OpenSSL support:                " . $openssl. "\n";
-print "2.  Platform SDK support:           " . $sdk . "\n";
-print "\n";
-print "3.  Install path:                   " . $install_base . "\n";
-print "4.  Install after build:            " . $install . "\n";
-print "\n";
-print "5.  Perl modules:                   " . $perl . "\n";
-print "6.  Install perl modules:           " . $perl_install . "\n";
-print "\n";
-print "7.  Quiet build (logged):           " . $logging . "\n";
-print "8.  Debug mode:                     " . $debug . "\n";
-print "\n";
-print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
-print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
-print "\n";
-print "11. Link type:                      " . $linktype . "\n";
-print "\n";
-print "12. Install development files       " . $install_devel . "\n";
-
 chdir $win32_dir;
 &build();
 
@@ -280,27 +234,6 @@
 $install = "enabled";
 $install_devel = "enabled";
 
-print "\n\nBuilding with options:\n";
-print "======================\n\n";
-print "1.  OpenSSL support:                " . $openssl. "\n";
-print "2.  Platform SDK support:           " . $sdk . "\n";
-print "\n";
-print "3.  Install path:                   " . $install_base . "\n";
-print "4.  Install after build:            " . $install . "\n";
-print "\n";
-print "5.  Perl modules:                   " . $perl . "\n";
-print "6.  Install perl modules:           " . $perl_install . "\n";
-print "\n";
-print "7.  Quiet build (logged):           " . $logging . "\n";
-print "8.  Debug mode:                     " . $debug . "\n";
-print "\n";
-print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
-print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
-print "\n";
-print "11. Link type:                      " . $linktype . "\n";
-print "\n";
-print "12. Install development files       " . $install_devel . "\n";
-
 chdir $win32_dir;
 &build();
 &create_perl_package();
@@ -319,27 +252,6 @@
 $install = "disabled";
 $install_devel = "disabled";
 
-print "\n\nBuilding with options:\n";
-print "======================\n\n";
-print "1.  OpenSSL support:                " . $openssl. "\n";
-print "2.  Platform SDK support:           " . $sdk . "\n";
-print "\n";
-print "3.  Install path:                   " . $install_base . "\n";
-print "4.  Install after build:            " . $install . "\n";
-print "\n";
-print "5.  Perl modules:                   " . $perl . "\n";
-print "6.  Install perl modules:           " . $perl_install . "\n";
-print "\n";
-print "7.  Quiet build (logged):           " . $logging . "\n";
-print "8.  Debug mode:                     " . $debug . "\n";
-print "\n";
-print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
-print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
-print "\n";
-print "11. Link type:                      " . $linktype . "\n";
-print "\n";
-print "12. Install development files       " . $install_devel . "\n";
-
 chdir $win32_dir;
 &build();
 
@@ -376,7 +288,7 @@
 
 chdir $top_dir;
 copy('win32\dist\installer\SetEnVar.nsi',"$install_base/") || die ("Could not copy file: $?");
-copy('win32\dist\installer\net-snmp.nsi',"$install_base/net-snmp.nsi.in") || die ("Could not copy file: $?");
+copy('win32\dist\installer\net-snmp.nsi',"$install_base/net-snmp.nsi") || die ("Could not copy file: $?");
 copy('win32\dist\installer\Add2Path.nsi',"$install_base/") || die ("Could not copy file: $?");
 copy('win32\dist\installer\net-snmp-header1.bmp',"$install_base/") || die ("Could not copy file: $?");
 
@@ -391,42 +303,20 @@
 open (TEMP, ">$install_base/etc/snmp/snmp.conf") || die ("Could not create file: $?");
 close TEMP;
 
-#
-# Build net-snmp.nsi file
-#
-  {
-    my $file_out = "$install_base/net-snmp.nsi";
-    my $file_in = "$install_base/net-snmp.nsi.in";
-  
-    open (FILE_OUT, ">$file_out") || die "Can't Open $file_out\n";
-    open (FILE_IN, "<$file_in") || die "Can't Open $file_in\n";
-    
-    print "creating $file_out\n";
-	  
-    while (<FILE_IN>)
-    {
-      chomp;
-      s/!define PRODUCT_MAJ_VERSION.*/!define PRODUCT_MAJ_VERSION \"$version_maj\"/;
-      s/!define PRODUCT_MIN_VERSION.*/!define PRODUCT_MIN_VERSION \"$version_min\"/;
-      s/!define PRODUCT_REVISION.*/!define PRODUCT_REVISION \"$version_rev\"/;
-      s/!define PRODUCT_EXE_VERSION.*/!define PRODUCT_EXE_VERSION \"$installer_exe_version\"/;
-	  if ($ENV{LIB} =~ /\\x64/) {
-            s/!define INSTALLER_PLATFORM.*/!define INSTALLER_PLATFORM \"x64\"/;
-            s/!define PRODUCT_EXE_SUFFIX.*/!define PRODUCT_EXE_SUFFIX \".x64.exe\"/;
-            s/!define WIN32_PLATFORM.*/!define PRODUCT_EXE_SUFFIX \"x64\"/;
-	  }
-	  else {
-            s/!define INSTALLER_PLATFORM.*/!define INSTALLER_PLATFORM \"x86\"/;
-            s/!define PRODUCT_EXE_SUFFIX.*/!define PRODUCT_EXE_SUFFIX \".x86.exe"/;
-            s/!define PRODUCT_EXE_SUFFIX.*/!define PRODUCT_EXE_SUFFIX \".x86.exe"/;
-            s/!define WIN32_PLATFORM.*/!define PRODUCT_EXE_SUFFIX \"x86\"/;
-	  }
-  
-      print FILE_OUT $_ . "\n";
-    }
-    close FILE_IN;
-    close FILE_OUT;
-  }
+print "\n\nCopying documentation:\n";
+print "=============================\n\n";
+
+# To do: replace the two lines below with commands that build the .chm file.
+open out, ">$install_base/docs/net-snmp.chm";
+close out;
+
+print "\n\nBuilding installer:\n";
+print "=============================\n\n";
+
+my $suffix = $ENV{LIB} =~ /\\x64|\\amd64/ ? "x64" : "x86";
+if (system("\"$makensis\" /DPRODUCT_MAJ_VERSION=\"$version_maj\" /DPRODUCT_MIN_VERSION=\"$version_min\" /DPRODUCT_REVISION=\"$version_rev\" /DPRODUCT_EXE_VERSION=\"$installer_exe_version\" /DINSTALLER_PLATFORM=\"$suffix\" \"$install_base/net-snmp.nsi\"") != 0) {
+    die("Building installer failed");
+}
 
 print "\n=======\n";
 print "Done!!!\n";
@@ -457,6 +347,26 @@
 
 #***************************************************************
 sub build {
+  print "\n\nBuilding with options:\n";
+  print "======================\n\n";
+  print "1.  OpenSSL support:                " . $openssl. "\n";
+  print "2.  Platform SDK support:           " . $sdk . "\n";
+  print "\n";
+  print "3.  Install path:                   " . $install_base . "\n";
+  print "4.  Install after build:            " . $install . "\n";
+  print "\n";
+  print "5.  Perl modules:                   " . $perl . "\n";
+  print "6.  Install perl modules:           " . $perl_install . "\n";
+  print "\n";
+  print "7.  Quiet build (logged):           " . $logging . "\n";
+  print "8.  Debug mode:                     " . $debug . "\n";
+  print "\n";
+  print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
+  print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
+  print "\n";
+  print "11. Link type:                      " . $linktype . "\n";
+  print "\n";
+  print "12. Install development files       " . $install_devel . "\n";
 
   $cTmp = ($openssl eq "enabled" ? "--with-ssl" : "" );
   $configOpts = "$cTmp";
@@ -473,12 +383,15 @@
   
   # Set to not search for non-existent ".dep" files
   $ENV{NO_EXTERNAL_DEPS}="1";
-  
+
+  $ENV{INCLUDE} .= ";$opensslincdir";
+  $ENV{LIB}     .= ";$openssllibdir";
+
   # Set PATH environment variable so Perl make tests can locate the DLL
-  $ENV{PATH} = "$current_pwd\\bin\\" . ($debug eq "enabled" ? "debug" : "release" ) . ";$ENV{PATH}";
+  $ENV{PATH} = File::Spec->catdir($top_dir, "bin", $debug eq "enabled" ? "debug" : "release") . ";$ENV{PATH}";
   
   # Set MIBDIRS environment variable so Perl make tests can locate the mibs
-  my $temp_mibdir = "$current_pwd/../mibs";
+  my $temp_mibdir = File::Spec->catdir($top_dir, "mibs");
   $temp_mibdir =~ s/\\/\//g;
   $ENV{MIBDIRS}=$temp_mibdir;
   
diff --git a/win32/dist/installer/net-snmp.nsi b/win32/dist/installer/net-snmp.nsi
index 5e6fc75..2403d77 100644
--- a/win32/dist/installer/net-snmp.nsi
+++ b/win32/dist/installer/net-snmp.nsi
@@ -3,17 +3,14 @@
 
 !include x64.nsh
 !include "Sections.nsh"
-
-; Building a x86 or x64 binary
-!define INSTALLER_PLATFORM "x64"		
+!include FileFunc.nsh
+!insertmacro GetParameters
+!insertmacro GetOptions
+var cmdLineParameters
 
 ; HM NIS Edit Wizard helper defines
 !define PRODUCT_NAME "Net-SNMP"
-!define PRODUCT_MAJ_VERSION "5"
-!define PRODUCT_MIN_VERSION "5"
-!define PRODUCT_REVISION "pre2"
-!define PRODUCT_EXE_VERSION "1"
-!define PRODUCT_EXE_SUFFIX ".x64.exe"
+!define PRODUCT_EXE_SUFFIX ".${INSTALLER_PLATFORM}.exe"
 !define PRODUCT_WEB_SITE "http://www.net-snmp.org"
 !define PRODUCT_DIR_REGKEY "Software\Net-SNMP"
 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
@@ -75,7 +72,7 @@
 ; MUI end ------
 
 Name "${PRODUCT_NAME} ${PRODUCT_MAJ_VERSION}.${PRODUCT_MIN_VERSION}.${PRODUCT_REVISION}"
-OutFile "..\\net-snmp-${PRODUCT_MAJ_VERSION}.\
+OutFile "net-snmp-${PRODUCT_MAJ_VERSION}.\
                   ${PRODUCT_MIN_VERSION}.\
                   ${PRODUCT_REVISION}\
                   -${PRODUCT_EXE_VERSION}\
@@ -101,11 +98,6 @@
   File "README.txt"
   SetOutPath "$INSTDIR\bin"
 
-  File "bin\msvcm90.dll"
-  File "bin\msvcp90.dll"
-  File "bin\msvcr90.dll"
-  File "bin\Microsoft.VC90.CRT.manifest"
-
   File "bin\netsnmp.dll"
   File "bin\encode_keychange.exe"
   File "bin\snmpvacm.exe"
@@ -132,11 +124,6 @@
   File "README.txt"
   SetOutPath "$INSTDIR\bin"
 
-  File "bin\msvcm90.dll"
-  File "bin\msvcp90.dll"
-  File "bin\msvcr90.dll"
-  File "bin\Microsoft.VC90.CRT.manifest"
-
   File "bin.ssl\netsnmp.dll"
   File "bin.ssl\encode_keychange.exe"
   File "bin.ssl\snmpvacm.exe"
@@ -208,11 +195,6 @@
     ; Delete agent otherwise re-installing a different agent may not work because of date stamps
     Delete "$INSTDIR\bin\snmpd.exe"  
 
-    File "bin\msvcm90.dll"
-    File "bin\msvcp90.dll"
-    File "bin\msvcr90.dll"
-    File "bin\Microsoft.VC90.CRT.manifest"
-
     StrCmp $openSSL "false" SEC02_noOpenSSL SEC02_OpenSSL
     SEC02_noOpenSSL:
       File "bin\snmpd.exe"
@@ -233,6 +215,8 @@
     File "unregisteragent.bat"
     Call CreateAgentBats
 
+	ClearErrors
+	StrCmp $ICONS_GROUP "" SEC02_NoService
     CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Service"
     CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Register Agent Service.lnk" "$INSTDIR\registeragent.bat"
     CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Agent Service.lnk" "$INSTDIR\unregisteragent.bat"
@@ -248,11 +232,6 @@
     ; Delete agent otherwise re-installing a different agent may not work because of date stamps
     Delete "$INSTDIR\bin\snmpd.exe"  
 
-    File "bin\msvcm90.dll"
-    File "bin\msvcp90.dll"
-    File "bin\msvcr90.dll"
-    File "bin\Microsoft.VC90.CRT.manifest"
-
     StrCmp $openSSL "false" SEC03_noOpenSSL SEC03_OpenSSL
     SEC03_noOpenSSL:
       File /oname=snmpd.exe "bin\snmpd-winExtDLL.exe"
@@ -273,6 +252,8 @@
     File "unregisteragent.bat"
     Call CreateAgentBats
 
+	ClearErrors
+	StrCmp $ICONS_GROUP "" SEC03_NoService
     CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Service"
     CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Register Agent Service.lnk" "$INSTDIR\registeragent.bat"
     CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Agent Service.lnk" "$INSTDIR\unregisteragent.bat"
@@ -289,11 +270,6 @@
 
   StrCmp $openSSL "false" SEC04_noOpenSSL SEC04_OpenSSL
 
-  File "bin\msvcm90.dll"
-  File "bin\msvcp90.dll"
-  File "bin\msvcr90.dll"
-  File "bin\Microsoft.VC90.CRT.manifest"
-
   SEC04_noOpenSSL:
   File "bin\snmptrapd.exe"
   goto SEC04_continue
@@ -317,6 +293,8 @@
   File "unregistertrapd.bat"
   Call CreateTrapdBats
   
+  ClearErrors
+  StrCmp $ICONS_GROUP "" NoTrapService
   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Register Trap Service.lnk" "$INSTDIR\registertrapd.bat"
   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Trap Service.lnk" "$INSTDIR\unregistertrapd.bat"
   
@@ -378,10 +356,14 @@
 SectionEnd
 
 Section -AdditionalIcons
+  ClearErrors
+  StrCmp $ICONS_GROUP "" noAdditionalItems
   CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Net-SNMP Help.lnk" "$INSTDIR\docs\Net-SNMP.chm"
   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\README.lnk" "$INSTDIR\README.txt"
+  
+  noAdditionalItems:
 SectionEnd
 
 Section -Post
@@ -689,6 +671,16 @@
 SetRegView 64		; Prevent the installer from using the Wow6432Node HKLM subkey on 64-bit systems
 Push $0
 Push $R0
+Push $R1
+
+; Check for /? command line usage option
+${GetParameters} $R1
+StrCpy $cmdLineParameters $R1
+ClearErrors
+${GetOptions} $cmdLineParameters '/?' $R0
+IfErrors +3 0
+MessageBox MB_OK "Options:$\n  \StartMenu={GroupName}$\n  \Agent=standard|extDLL|none   (default standard)$\n  \noTrapd$\t(default \Trapd)$\n  \noPerl$\t$\t(default \Perl)$\n  \Dev$\t$\t(default \noDev)$\n  \OpenSSL$\t(default \noOpenSSL)"
+Abort
 
 ; Make sure we're running Windows 2000 (5.0) or higher
 ClearErrors
@@ -746,10 +738,121 @@
 ; Store current status of SEC07 (SSL).  Used for checking if OpenSSL is installed.
 SectionGetFlags ${SEC07} $R9
 
+; process other command line parameters
+Call parseParameters
+
 Pop $R0
 Pop $0
 FunctionEnd
 
+Function parseParameters
+  Push $R0
+  Push $0
+
+  ; /StartMenu=
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/StartMenu="  $R0
+  IfErrors +2 0
+  StrCpy $ICONS_GROUP $R0
+
+  ; /{no,}Trapd  
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/Trapd"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC04} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC04} $0
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/noTrapd"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC04} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC04} $0
+
+  ; /{no,}Perl  
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/Perl"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC05} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC05} $0
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/noPerl"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC05} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC05} $0
+
+  ; /{no,}Dev  
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/Dev"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC06} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC06} $0
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/noDev"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC06} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC06} $0
+
+  ; /{no,}OpenSSL  
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/OpenSSL"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC07} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC07} $0
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/noOpenSSL"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC07} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC07} $0
+
+  ; /Agent=  
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/Agent="  $R0
+  IfErrors endOfAgent 0
+  ; /Agent=none
+  ClearErrors
+  StrCmp $R0 "none" 0 standardAgent
+  SectionGetFlags ${SEC02} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC02} $0
+  SectionGetFlags ${SEC03} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC03} $0
+  Goto endOfAgent
+  
+  standardAgent:
+  ; /Agent=standard
+  ClearErrors
+  StrCmp $R0 "standard" 0 winExtDLLAgent
+  SectionGetFlags ${SEC02} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC02} $0
+  SectionGetFlags ${SEC03} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC03} $0
+  Goto endOfAgent
+  
+  winExtDLLAgent:
+  ; /Agent=extDLL
+  ClearErrors
+  StrCmp $R0 "extDLL" 0 endOfAgent
+  SectionGetFlags ${SEC02} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC02} $0
+  SectionGetFlags ${SEC03} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC03} $0
+  endOfAgent:
+  
+  Pop $R0  
+FunctionEnd
+
 Function .onSelChange
 
 ;  !insertmacro StartRadioButtons $2
@@ -839,11 +942,8 @@
   Delete "$INSTDIR\docs\COPYING"
   Delete "$INSTDIR\docs\Net-SNMP.chm"
   Delete "$INSTDIR\bin\net-snmp-perl-test.pl"
-
-  Delete "$INSTDIR\bin\msvcm90.dll"
-  Delete "$INSTDIR\bin\msvcp90.dll"
-  Delete "$INSTDIR\bin\msvcr90.dll"
-  Delete "$INSTDIR\bin\Microsoft.VC90.CRT.manifest"
+  ; ideally we should check whether this file has changed
+  Delete "$INSTDIR\etc\snmp\snmp.conf"
 
   Delete "$INSTDIR\bin\snmptrapd.exe"
   Delete "$INSTDIR\bin\snmpd.exe"
@@ -893,6 +993,7 @@
   Delete "$INSTDIR\share\snmp\snmpconf-data\snmptrapd-data\logging"
   Delete "$INSTDIR\share\snmp\snmpconf-data\snmptrapd-data\runtime"
   Delete "$INSTDIR\share\snmp\mibs\AGENTX-MIB.txt"
+  Delete "$INSTDIR\share\snmp\mibs\BRIDGE-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\DISMAN-EVENT-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\DISMAN-EXPRESSION-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\DISMAN-NSLOOKUP-MIB.txt"
@@ -927,6 +1028,7 @@
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-MONITOR-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-PASS-MIB.txt"
+  Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-PERIODIC-NOTIFY-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-SYSTEM-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-TC.txt"
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-VACM-MIB.txt"
@@ -944,6 +1046,8 @@
   Delete "$INSTDIR\share\snmp\mibs\SNMP-NOTIFICATION-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\SNMP-PROXY-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\SNMP-TARGET-MIB.txt"
+  Delete "$INSTDIR\share\snmp\mibs\SNMP-TLS-TM-MIB.txt"
+  Delete "$INSTDIR\share\snmp\mibs\SNMP-TSM-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\SNMP-USER-BASED-SM-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\SNMP-USM-AES-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\SNMP-USM-DH-OBJECTS-MIB.txt"
@@ -965,8 +1069,8 @@
   Delete "$INSTDIR\share\snmp\mibs\UCD-SNMP-MIB-OLD.txt"
   Delete "$INSTDIR\share\snmp\mibs\UDP-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\.index"
+  Delete "$INSTDIR\snmp\persist\mib_indexes\0"
 
-  SetOutPath "$INSTDIR\share\snmp"
   Delete "$INSTDIR\share\snmp\mib2c.access_functions.conf"
   Delete "$INSTDIR\share\snmp\mib2c.array-user.conf"
   Delete "$INSTDIR\share\snmp\mib2c.check_values.conf"
@@ -991,7 +1095,6 @@
   Delete "$INSTDIR\share\snmp\mib2c.scalar.conf"
   Delete "$INSTDIR\share\snmp\mib2c.table_data.conf"
 
-  SetOutPath "$INSTDIR\share\snmp\mib2c-data"
   Delete "$INSTDIR\share\snmp\mib2c-data\default-mfd-top.m2c"
   Delete "$INSTDIR\share\snmp\mib2c-data\details-enums.m2i"
   Delete "$INSTDIR\share\snmp\mib2c-data\details-node.m2i"
@@ -1034,7 +1137,7 @@
   Delete "$INSTDIR\share\snmp\mib2c-data\mfd-interactive-setup.m2c"
   Delete "$INSTDIR\share\snmp\mib2c-data\mfd-interface.m2c"
   Delete "$INSTDIR\share\snmp\mib2c-data\mfd-makefile.m2m"
-  Delete "$INSTDIR\share\snmp\mib2c-data\mfd-persistence.m2m"
+  Delete "$INSTDIR\share\snmp\mib2c-data\mfd-persistence.m2i"
   Delete "$INSTDIR\share\snmp\mib2c-data\mfd-readme.m2c"
   Delete "$INSTDIR\share\snmp\mib2c-data\mfd-top.m2c"
   Delete "$INSTDIR\share\snmp\mib2c-data\node-get.m2i"
@@ -1058,7 +1161,6 @@
   Delete "$INSTDIR\share\snmp\mib2c-data\syntax-RowStatus-varbind-validate.m2i"
   Delete "$INSTDIR\share\snmp\mib2c-data\syntax-StorageType-dependencies.m2i"
   Delete "$INSTDIR\share\snmp\mib2c-data\syntax-TestAndIncr-get.m2i"
-  Delete "$INSTDIR\share\snmp\mib2c-data\"
 
   Delete "$SMPROGRAMS\$ICONS_GROUP\Net-SNMP Help.lnk"
   Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
@@ -1270,8 +1372,6 @@
   Delete "$INSTDIR\lib\netsnmpmibs.lib"
   Delete "$INSTDIR\lib\netsnmp.exp"
   
-  RMDir "$SMPROGRAMS\$ICONS_GROUP\Service"
-  RMDir "$SMPROGRAMS\$ICONS_GROUP"
   RMDir "$INSTDIR\perl\x86"
   RMDir "$INSTDIR\perl"
   RMDir "$INSTDIR\lib"
@@ -1295,6 +1395,7 @@
   RMDir "$INSTDIR\share"
 
   RMDir "$INSTDIR\temp"
+  RMDir "$INSTDIR\snmp\persist\mib_indexes"
   RMDir "$INSTDIR\snmp\persist"
   RMDir "$INSTDIR\snmp"
   RMDir "$INSTDIR\etc\snmp"
@@ -1304,6 +1405,31 @@
   RMDir "$INSTDIR\include"
   RMDir "$INSTDIR\log"
   RMDir "$INSTDIR"
+  
+  ; Start Menu entries may have been installed for the current user only,
+  ; or for All Users.  So let's delete both sets....
+  SetShellVarContext current
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Net-SNMP Help.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\README.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Register Agent Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Agent Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Register Trap Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Trap Service.lnk"
+  RMDir "$SMPROGRAMS\$ICONS_GROUP\Service"
+  RMDir "$SMPROGRAMS\$ICONS_GROUP"
+
+  SetShellVarContext all
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Net-SNMP Help.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\README.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Register Agent Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Agent Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Register Trap Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Trap Service.lnk"
+  RMDir "$SMPROGRAMS\$ICONS_GROUP\Service"
+  RMDir "$SMPROGRAMS\$ICONS_GROUP"
+  
   ; Delete the environment variables
   ;Push "SNMPCONFPATH"
   ;Call un.DeleteEnvStr
@@ -1321,13 +1447,23 @@
 
 Function IsSSLInstalled
   Push $R0
-  ReadEnvStr $R0 "OPENSSL_CONF"
-  IfFileExists "$R0" 0 noSSL
-    Goto continueInstall
+  Push $R1
+
+  GetDLLVersion libeay32.dll $R0 $R1
+  IfErrors noSSL
+
+  ; Continue installing if the DLL version is >= 1.0.0.0
+  IntCmpU 65536 $R0 continueInstall continueInstall
+
+  MessageBox MB_OK "This package is known not to work with OpenSSL versions before 1.0.0.  Please install the latest OpenSSL version from http://www.slproweb.com/products/Win32OpenSSL.html and try again."
+  Quit
+
   noSSL:
     MessageBox MB_YESNO|MB_ICONQUESTION "OpenSSL does not appear to be installed.  OpenSSL is required for this installation of Net-SNMP.  Please install OpenSSL from http://www.slproweb.com/products/Win32OpenSSL.html and try again.  Would you like to continue installing anyways?" IDYES continueInstall
   Quit
+  
   continueInstall:
+  Pop $R1
   Pop $R0
 FunctionEnd
 
diff --git a/win32/encode_keychange/encode_keychange.dsp b/win32/encode_keychange/encode_keychange.dsp
index 5e19366..5a252f5 100644
--- a/win32/encode_keychange/encode_keychange.dsp
+++ b/win32/encode_keychange/encode_keychange.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/encode_keychange.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/encode_keychange.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "encode_keychange - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/encode_keychange.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/encode_keychange.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/libagent/Makefile.in b/win32/libagent/Makefile.in
index 30a6cf6..abcd82e 100644
--- a/win32/libagent/Makefile.in
+++ b/win32/libagent/Makefile.in
@@ -35,6 +35,7 @@
 	"$(INTDIR)\scalar_group.obj" \
 	"$(INTDIR)\serialize.obj" \
 	"$(INTDIR)\snmp_agent.obj" \
+	"$(INTDIR)\snmp_get_statistic.obj" \
 	"$(INTDIR)\snmp_vars.obj" \
 	"$(INTDIR)\stash_cache.obj" \
 	"$(INTDIR)\stash_to_next.obj" \
@@ -236,6 +237,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\agent\helpers\snmp_get_statistic.c
+
+"$(INTDIR)\snmp_get_statistic.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\agent\helpers\stash_cache.c
 
 "$(INTDIR)\stash_cache.obj" : $(SOURCE) "$(INTDIR)"
diff --git a/win32/libagent/libagent.dsp b/win32/libagent/libagent.dsp
index 892e8d3..63642c2 100644
--- a/win32/libagent/libagent.dsp
+++ b/win32/libagent/libagent.dsp
@@ -177,6 +177,10 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\agent\helpers\snmp_get_statistic.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\agent\helpers\stash_cache.c

 # End Source File

 # Begin Source File

diff --git a/win32/libsnmp/Makefile.in b/win32/libsnmp/Makefile.in
index 51f5d4f..98d83c8 100644
--- a/win32/libsnmp/Makefile.in
+++ b/win32/libsnmp/Makefile.in
@@ -17,7 +17,6 @@
 	"$(INTDIR)\callback.obj" \
 	"$(INTDIR)\check_varbind.obj" \
 	"$(INTDIR)\closedir.obj" \
-	"$(INTDIR)\cmu_compat.obj" \
 	"$(INTDIR)\container.obj" \
 	"$(INTDIR)\container_binary_array.obj" \
 	"$(INTDIR)\container_iterator.obj" \
@@ -95,9 +94,9 @@
 
 CPP=cl.exe
 !IF  "$(CFG)" == "release"
-CPP_PROJ=/nologo /MD /W3 /EHsc /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "NDEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+CPP_PROJ=/nologo /MD /W3 /EHsc /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
 !ELSEIF  "$(CFG)" == "debug"
-CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "_DEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
 !ENDIF
 
 .c{$(INTDIR)}.obj::
@@ -158,12 +157,6 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\cmu_compat.c
-
-"$(INTDIR)\cmu_compat.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
 SOURCE=..\..\snmplib\container.c
 
 "$(INTDIR)\container.obj" : $(SOURCE) "$(INTDIR)"
diff --git a/win32/libsnmp/libsnmp.dsp b/win32/libsnmp/libsnmp.dsp
index 6448802..2386331 100644
--- a/win32/libsnmp/libsnmp.dsp
+++ b/win32/libsnmp/libsnmp.dsp
@@ -101,10 +101,6 @@
 # End Source File

 # Begin Source File

 

-SOURCE=..\..\snmplib\cmu_compat.c

-# End Source File

-# Begin Source File

-

 SOURCE=..\..\snmplib\container.c

 # End Source File

 # Begin Source File

@@ -369,10 +365,6 @@
 # End Source File

 # Begin Source File

 

-SOURCE="..\..\include\net-snmp\library\cmu_compat.h"

-# End Source File

-# Begin Source File

-

 SOURCE="..\..\include\net-snmp\library\container.h"

 # End Source File

 # Begin Source File

diff --git a/win32/libsnmp_dll/Makefile.in b/win32/libsnmp_dll/Makefile.in
index 31ae1bd..0aaf41b 100644
--- a/win32/libsnmp_dll/Makefile.in
+++ b/win32/libsnmp_dll/Makefile.in
@@ -2,7 +2,6 @@
 CFG=
 OUTDIR=
 INTDIR=
-SSL=
 SDK=
 
 !IF "$(OS)" == "Windows_NT"
@@ -18,7 +17,6 @@
 	"$(INTDIR)\callback.obj" \
 	"$(INTDIR)\check_varbind.obj" \
 	"$(INTDIR)\closedir.obj" \
-	"$(INTDIR)\cmu_compat.obj" \
 	"$(INTDIR)\container.obj" \
 	"$(INTDIR)\container_binary_array.obj" \
 	"$(INTDIR)\container_iterator.obj" \
@@ -174,12 +172,6 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\cmu_compat.c
-
-"$(INTDIR)\cmu_compat.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
 SOURCE=..\..\snmplib\container.c
 
 "$(INTDIR)\container.obj" : $(SOURCE) "$(INTDIR)"
diff --git a/win32/libsnmp_dll/libsnmp_dll.dsp b/win32/libsnmp_dll/libsnmp_dll.dsp
index 6407d42..12c0414 100644
--- a/win32/libsnmp_dll/libsnmp_dll.dsp
+++ b/win32/libsnmp_dll/libsnmp_dll.dsp
@@ -108,10 +108,6 @@
 # End Source File

 # Begin Source File

 

-SOURCE=..\..\snmplib\cmu_compat.c

-# End Source File

-# Begin Source File

-

 SOURCE=..\..\snmplib\container.c

 # End Source File

 # Begin Source File

@@ -376,10 +372,6 @@
 # End Source File

 # Begin Source File

 

-SOURCE="..\..\include\net-snmp\library\cmu_compat.h"

-# End Source File

-# Begin Source File

-

 SOURCE="..\..\include\net-snmp\library\container.h"

 # End Source File

 # Begin Source File

diff --git a/win32/net-snmp/net-snmp-config.h b/win32/net-snmp/net-snmp-config.h
index 7d6e3b7..1608563 100644
--- a/win32/net-snmp/net-snmp-config.h
+++ b/win32/net-snmp/net-snmp-config.h
@@ -5,12 +5,14 @@
 #define NET_SNMP_CONFIG_H
 
 /* _MSC_VER values
-   1600 = 10.0 (2010)
-   1500 =  9.0 (2008)
-   1400 =  8.0 (2005)
-   1310 =  7.1 (2003)
-   1300 =  7.0 (2002)
-   1200 =  6.0
+   1800 = MSVC++ 12.0 (Visual Studio 2013)
+   1700 = MSVC++ 11.0 (Visual Studio 2012)
+   1600 = MSVC++ 10.0 (Visual Studio 2010)
+   1500 = MSVC++  9.0 (Visual Studio 2008)
+   1400 = MSVC++  8.0 (Visual Studio 2005)
+   1310 = MSVC++  7.1 (Visual Studio 2003)
+   1300 = MSVC++  7.0 (Visual Studio 2002)
+   1200 = MSVC++  6.0
 */
 
 #ifdef _MSC_VER
@@ -1582,15 +1584,14 @@
 #ifndef HAVE_STDINT_H
 typedef unsigned char uint8_t;
 typedef char int8_t;
-typedef unsigned short uint16_t;
-typedef short int16_t;
+typedef unsigned __int16 uint16_t;
+typedef __int16 int16_t;
 typedef unsigned __int32 uint32_t;
-typedef long int32_t;
+typedef __int32 int32_t;
 typedef unsigned __int64 uint64_t;
 typedef __int64 int64_t;
 typedef unsigned __int64 uintmax_t;
 typedef __int64 intmax_t;
-typedef unsigned short   uint16_t;
 #else /* HAVE_STDINT_H */
 #include <stdint.h>
 #endif /* HAVE_STDINT_H */
@@ -1617,10 +1618,17 @@
 #endif
 
 #ifndef __cplusplus
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable: 4804) // '-' : unsafe use of type 'bool' in operation
+#endif
 enum {
     netsnmp_compile_time_uintptr_t_size_check
         = sizeof(struct netsnmp_compile_time_uintptr_t_size_check_s { int:-!(sizeof(uintptr_t) == sizeof(void*)); })
 };
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
 #endif
 
 /* Define if you have the closesocket function.  */
@@ -1677,7 +1685,7 @@
 /* MSVC OpenSSL linker settings. */
 #if defined(_MSC_VER)
 #  if defined(NETSNMP_USE_OPENSSL)
-#    ifdef NETSNMP_USE_DLL
+#    ifdef _DLL
 #      ifdef _DEBUG
 #        pragma comment(lib, "libeay32MDd.lib")
 #      else
@@ -1691,6 +1699,7 @@
 #      endif
 #    endif
 #    pragma comment(lib, "gdi32.lib")
+#    pragma comment(lib, "user32.lib")
 #  endif
 #endif
 
@@ -1751,7 +1760,11 @@
 #endif
 
 /* Define to 1 if you have the `strtoull' function. */
+#if _MSC_VER >= 1800
+#define HAVE_STRTOULL 1
+#else
 /* #undef HAVE_STRTOULL */
+#endif
 
 /*
  * Module configuration and control starts here.
diff --git a/win32/net-snmp/net-snmp-config.h.in b/win32/net-snmp/net-snmp-config.h.in
index 04aa99c..9693730 100644
--- a/win32/net-snmp/net-snmp-config.h.in
+++ b/win32/net-snmp/net-snmp-config.h.in
@@ -5,12 +5,14 @@
 #define NET_SNMP_CONFIG_H
 
 /* _MSC_VER values
-   1600 = 10.0 (2010)
-   1500 =  9.0 (2008)
-   1400 =  8.0 (2005)
-   1310 =  7.1 (2003)
-   1300 =  7.0 (2002)
-   1200 =  6.0
+   1800 = MSVC++ 12.0 (Visual Studio 2013)
+   1700 = MSVC++ 11.0 (Visual Studio 2012)
+   1600 = MSVC++ 10.0 (Visual Studio 2010)
+   1500 = MSVC++  9.0 (Visual Studio 2008)
+   1400 = MSVC++  8.0 (Visual Studio 2005)
+   1310 = MSVC++  7.1 (Visual Studio 2003)
+   1300 = MSVC++  7.0 (Visual Studio 2002)
+   1200 = MSVC++  6.0
 */
 
 #ifdef _MSC_VER
@@ -1582,15 +1584,14 @@
 #ifndef HAVE_STDINT_H
 typedef unsigned char uint8_t;
 typedef char int8_t;
-typedef unsigned short uint16_t;
-typedef short int16_t;
+typedef unsigned __int16 uint16_t;
+typedef __int16 int16_t;
 typedef unsigned __int32 uint32_t;
-typedef long int32_t;
+typedef __int32 int32_t;
 typedef unsigned __int64 uint64_t;
 typedef __int64 int64_t;
 typedef unsigned __int64 uintmax_t;
 typedef __int64 intmax_t;
-typedef unsigned short   uint16_t;
 #else /* HAVE_STDINT_H */
 #include <stdint.h>
 #endif /* HAVE_STDINT_H */
@@ -1617,10 +1618,17 @@
 #endif
 
 #ifndef __cplusplus
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable: 4804) // '-' : unsafe use of type 'bool' in operation
+#endif
 enum {
     netsnmp_compile_time_uintptr_t_size_check
         = sizeof(struct netsnmp_compile_time_uintptr_t_size_check_s { int:-!(sizeof(uintptr_t) == sizeof(void*)); })
 };
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
 #endif
 
 /* Define if you have the closesocket function.  */
@@ -1677,7 +1685,7 @@
 /* MSVC OpenSSL linker settings. */
 #if defined(_MSC_VER)
 #  if defined(NETSNMP_USE_OPENSSL)
-#    ifdef NETSNMP_USE_DLL
+#    ifdef _DLL
 #      ifdef _DEBUG
 #        pragma comment(lib, "libeay32MDd.lib")
 #      else
@@ -1691,6 +1699,7 @@
 #      endif
 #    endif
 #    pragma comment(lib, "gdi32.lib")
+#    pragma comment(lib, "user32.lib")
 #  endif
 #endif
 
@@ -1751,7 +1760,11 @@
 #endif
 
 /* Define to 1 if you have the `strtoull' function. */
+#if _MSC_VER >= 1800
+#define HAVE_STRTOULL
+#else
 /* #undef HAVE_STRTOULL */
+#endif
 
 /*
  * Module configuration and control starts here.
diff --git a/win32/snmpbulkget/snmpbulkget.dsp b/win32/snmpbulkget/snmpbulkget.dsp
index fe5e5ae..39599db 100644
--- a/win32/snmpbulkget/snmpbulkget.dsp
+++ b/win32/snmpbulkget/snmpbulkget.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpbulkget.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpbulkget.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpbulkget - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpbulkget.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpbulkget.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmpbulkwalk/snmpbulkwalk.dsp b/win32/snmpbulkwalk/snmpbulkwalk.dsp
index ea8bb0c..91e94d3 100644
--- a/win32/snmpbulkwalk/snmpbulkwalk.dsp
+++ b/win32/snmpbulkwalk/snmpbulkwalk.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpbulkwalk.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpbulkwalk.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpbulkwalk - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpbulkwalk.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpbulkwalk.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmpd/Makefile.in b/win32/snmpd/Makefile.in
index 652dd80..1b1b3ac 100644
--- a/win32/snmpd/Makefile.in
+++ b/win32/snmpd/Makefile.in
@@ -3,7 +3,6 @@
 OUTDIR=
 INTDIR=
 SDK=
-SSL=
 LINKTYPE=
 
 # Set to 1 to allow the building using the DLL version of SNMPLIB.
diff --git a/win32/snmpd/snmpd.dsp b/win32/snmpd/snmpd.dsp
index 5534306..45e2cad 100644
--- a/win32/snmpd/snmpd.dsp
+++ b/win32/snmpd/snmpd.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib netsnmpagent.lib netsnmpmibs.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpd.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpd.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpd - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib netsnmpagent.lib netsnmpmibs.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpd.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpd.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmpdelta/snmpdelta.dsp b/win32/snmpdelta/snmpdelta.dsp
index b17b822..7f5a5d3 100644
--- a/win32/snmpdelta/snmpdelta.dsp
+++ b/win32/snmpdelta/snmpdelta.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpdelta.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpdelta.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpdelta - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpdelta.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpdelta.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmpdf/snmpdf.dsp b/win32/snmpdf/snmpdf.dsp
index 88c3f6d..e2e4b94 100644
--- a/win32/snmpdf/snmpdf.dsp
+++ b/win32/snmpdf/snmpdf.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpdf.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpdf.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpdf - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpdf.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpdf.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmpget/snmpget.dsp b/win32/snmpget/snmpget.dsp
index 64980ed..0603232 100644
--- a/win32/snmpget/snmpget.dsp
+++ b/win32/snmpget/snmpget.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpget.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpget.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpget - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpget.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpget.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmpgetnext/snmpgetnext.dsp b/win32/snmpgetnext/snmpgetnext.dsp
index 233199d..cb63c84 100644
--- a/win32/snmpgetnext/snmpgetnext.dsp
+++ b/win32/snmpgetnext/snmpgetnext.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpgetnext.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpgetnext.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpgetnext - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpgetnext.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpgetnext.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmpnetstat/Makefile.in b/win32/snmpnetstat/Makefile.in
index e27d97d..05a01e8 100644
--- a/win32/snmpnetstat/Makefile.in
+++ b/win32/snmpnetstat/Makefile.in
@@ -2,7 +2,6 @@
 CFG=
 OUTDIR=
 INTDIR=
-SSL=
 LINKTYPE=
 
 # Set to 1 to allow the building using the DLL version of SNMPLIB.
@@ -23,8 +22,10 @@
 	-@erase "$(INTDIR)\if.obj"
 	-@erase "$(INTDIR)\inet.obj"
 	-@erase "$(INTDIR)\inet6.obj"
+	-@erase "$(INTDIR)\inetx.obj"
 	-@erase "$(INTDIR)\main.obj"
 	-@erase "$(INTDIR)\route.obj"
+	-@erase "$(INTDIR)\routex.obj"
 	-@erase "$(INTDIR)\ffs.obj"
 	-@erase "$(INTDIR)\vc??.idb"
 	-@erase "$(INTDIR)\winstub.obj"
@@ -86,8 +87,10 @@
 	"$(INTDIR)\if.obj" \
 	"$(INTDIR)\inet.obj" \
 	"$(INTDIR)\inet6.obj" \
+	"$(INTDIR)\inetx.obj" \
 	"$(INTDIR)\main.obj" \
 	"$(INTDIR)\route.obj" \
+	"$(INTDIR)\routex.obj" \
 	"$(INTDIR)\ffs.obj" \
 	"$(INTDIR)\winstub.obj"
 
@@ -116,10 +119,14 @@
 	-@erase "$(INTDIR)\inet.sbr"
 	-@erase "$(INTDIR)\inet6.obj"
 	-@erase "$(INTDIR)\inet6.sbr"
+	-@erase "$(INTDIR)\inetx.obj"
+	-@erase "$(INTDIR)\inetx.sbr"
 	-@erase "$(INTDIR)\main.obj"
 	-@erase "$(INTDIR)\main.sbr"
 	-@erase "$(INTDIR)\route.obj"
 	-@erase "$(INTDIR)\route.sbr"
+	-@erase "$(INTDIR)\routex.obj"
+	-@erase "$(INTDIR)\routex.sbr"
 	-@erase "$(INTDIR)\ffs.obj"
 	-@erase "$(INTDIR)\ffs.sbr"
 	-@erase "$(INTDIR)\vc??.idb"
@@ -182,8 +189,10 @@
 	"$(INTDIR)\if.sbr" \
 	"$(INTDIR)\inet.sbr" \
 	"$(INTDIR)\inet6.sbr" \
+	"$(INTDIR)\inetx.sbr" \
 	"$(INTDIR)\main.sbr" \
 	"$(INTDIR)\route.sbr" \
+	"$(INTDIR)\routex.sbr" \
 	"$(INTDIR)\ffs.sbr" \
 	"$(INTDIR)\winstub.sbr"
 
@@ -198,8 +207,10 @@
 	"$(INTDIR)\if.obj" \
 	"$(INTDIR)\inet.obj" \
 	"$(INTDIR)\inet6.obj" \
+	"$(INTDIR)\inetx.obj" \
 	"$(INTDIR)\main.obj" \
 	"$(INTDIR)\route.obj" \
+	"$(INTDIR)\routex.obj" \
 	"$(INTDIR)\ffs.obj" \
 	"$(INTDIR)\winstub.obj"
 
@@ -283,6 +294,11 @@
 
 !ENDIF 
 
+SOURCE=..\..\apps\$(PROGNAME)\inetx.c
+
+"$(INTDIR)\inetx.obj"	"$(INTDIR)\inetx.sbr" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
 SOURCE=..\..\apps\$(PROGNAME)\main.c
 
 !IF  "$(CFG)" == "release"
@@ -319,6 +335,11 @@
 
 !ENDIF 
 
+SOURCE=..\..\apps\$(PROGNAME)\routex.c
+
+"$(INTDIR)\routex.obj"	"$(INTDIR)\routex.sbr" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
 SOURCE=..\..\apps\$(PROGNAME)\ffs.c
 
 !IF  "$(CFG)" == "release"
diff --git a/win32/snmpnetstat/snmpnetstat.dsp b/win32/snmpnetstat/snmpnetstat.dsp
old mode 100644
new mode 100755
index 25ec031..2eda575
--- a/win32/snmpnetstat/snmpnetstat.dsp
+++ b/win32/snmpnetstat/snmpnetstat.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpnetstat.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpnetstat.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpnetstat - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpnetstat.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpnetstat.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

@@ -84,6 +84,10 @@
 # Name "snmpnetstat - Win32 Debug"

 # Begin Source File

 

+SOURCE=..\..\apps\snmpnetstat\ffs.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\apps\snmpnetstat\if.c

 # End Source File

 # Begin Source File

@@ -96,6 +100,10 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\apps\snmpnetstat\inetx.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\apps\snmpnetstat\main.c

 # End Source File

 # Begin Source File

@@ -104,7 +112,7 @@
 # End Source File

 # Begin Source File

 

-SOURCE=..\..\apps\snmpnetstat\ffs.c

+SOURCE=..\..\apps\snmpnetstat\routex.c

 # End Source File

 # Begin Source File

 

diff --git a/win32/snmpset/snmpset.dsp b/win32/snmpset/snmpset.dsp
index fdeca30..ad0f509 100644
--- a/win32/snmpset/snmpset.dsp
+++ b/win32/snmpset/snmpset.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpset.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpset.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpset - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpset.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpset.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmpsm_init.h b/win32/snmpsm_init.h
index 8015ff6..c8a410b 100644
--- a/win32/snmpsm_init.h
+++ b/win32/snmpsm_init.h
@@ -1,2 +1 @@
-/* This file is automatically generated by configure.  Do not modify by hand. */
 init_usm();
diff --git a/win32/snmpsm_shutdown.h b/win32/snmpsm_shutdown.h
new file mode 100644
index 0000000..0e0c551
--- /dev/null
+++ b/win32/snmpsm_shutdown.h
@@ -0,0 +1 @@
+shutdown_usm();
diff --git a/win32/snmpstatus/snmpstatus.dsp b/win32/snmpstatus/snmpstatus.dsp
index 1b68373..e6a4100 100644
--- a/win32/snmpstatus/snmpstatus.dsp
+++ b/win32/snmpstatus/snmpstatus.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpstatus.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpstatus.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpstatus - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpstatus.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpstatus.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmptable/snmptable.dsp b/win32/snmptable/snmptable.dsp
index 75f964f..1dfc138 100644
--- a/win32/snmptable/snmptable.dsp
+++ b/win32/snmptable/snmptable.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmptable.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmptable.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmptable - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmptable.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmptable.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmptest/snmptest.dsp b/win32/snmptest/snmptest.dsp
index dfb0cf1..89c08e9 100644
--- a/win32/snmptest/snmptest.dsp
+++ b/win32/snmptest/snmptest.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmptest.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmptest.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmptest - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmptest.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmptest.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmptranslate/snmptranslate.dsp b/win32/snmptranslate/snmptranslate.dsp
index a3ebde5..c3eca02 100644
--- a/win32/snmptranslate/snmptranslate.dsp
+++ b/win32/snmptranslate/snmptranslate.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmptranslate.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmptranslate.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmptranslate - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmptranslate.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmptranslate.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmptrap/snmptrap.dsp b/win32/snmptrap/snmptrap.dsp
index 8d27ee1..c34ffd8 100644
--- a/win32/snmptrap/snmptrap.dsp
+++ b/win32/snmptrap/snmptrap.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmptrap.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmptrap.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmptrap - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmptrap.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmptrap.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmptrapd/Makefile.in b/win32/snmptrapd/Makefile.in
index dc4fe50..2fa5ccb 100644
--- a/win32/snmptrapd/Makefile.in
+++ b/win32/snmptrapd/Makefile.in
@@ -2,7 +2,6 @@
 CFG=
 OUTDIR=
 INTDIR=
-SSL=
 LINKTYPE=
 
 # Set to 1 to allow the building using the DLL version of SNMPLIB.
diff --git a/win32/snmptrapd/snmptrapd.dsp b/win32/snmptrapd/snmptrapd.dsp
index 503918a..9f49389 100644
--- a/win32/snmptrapd/snmptrapd.dsp
+++ b/win32/snmptrapd/snmptrapd.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmptrapd.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmptrapd.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmptrapd.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmptrapd - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmptrapd.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmptrapd.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmptrapd.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmpusm/snmpusm.dsp b/win32/snmpusm/snmpusm.dsp
index db43f2e..a1c0124 100644
--- a/win32/snmpusm/snmpusm.dsp
+++ b/win32/snmpusm/snmpusm.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpusm.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpusm.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpusm - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpusm.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpusm.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmpv3-security-includes.h b/win32/snmpv3-security-includes.h
new file mode 100644
index 0000000..c763cf8
--- /dev/null
+++ b/win32/snmpv3-security-includes.h
@@ -0,0 +1 @@
+#include <net-snmp/library/snmpusm.h>
diff --git a/win32/snmpvacm/snmpvacm.dsp b/win32/snmpvacm/snmpvacm.dsp
index 0856832..2fd53fd 100644
--- a/win32/snmpvacm/snmpvacm.dsp
+++ b/win32/snmpvacm/snmpvacm.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpvacm.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpvacm.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpvacm - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpvacm.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpvacm.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF 

 

diff --git a/win32/snmpwalk/snmpwalk.dsp b/win32/snmpwalk/snmpwalk.dsp
index 5d81957..67598f1 100644
--- a/win32/snmpwalk/snmpwalk.dsp
+++ b/win32/snmpwalk/snmpwalk.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpwalk.exe" /libpath:"../lib/release"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpwalk.exe" /libpath:"../lib/release"

 

 !ELSEIF  "$(CFG)" == "snmpwalk - Win32 Debug"

 

@@ -74,7 +74,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpwalk.exe" /pdbtype:sept /libpath:"../lib/debug"

+# ADD LINK32 advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpwalk.exe" /pdbtype:sept /libpath:"../lib/debug"

 

 !ENDIF